Diploma Thesis Percolation Simulation C++ Sourcecode Documentation |
00001 // results.h 00002 // 00003 // last change: 22.12.2000 00004 // 00005 00006 namespace results { 00007 using namespace statistics; 00008 00009 00010 class one_result { 00011 public: 00012 LONGBITS spcl_dirs; 00013 NUMBER numberof_cl; 00014 NUMBER biggest_clsz; 00015 REAL mean_clsz; 00016 REAL mean_clsz2; 00017 clock_t last_counttime; 00018 string throwtime; 00019 string counttime; 00020 00021 one_result(){}; 00022 one_result(LONGBITS SPCL_DIR, NUMBER NUMBEROF_CL, 00023 NUMBER BIGGEST_CLSZ, REAL MEAN_CLSZ,REAL MEAN_CLSZ2, 00024 clock_t LAST_COUNTTIME, 00025 string& THROWTIME, string& COUNTTIME); 00026 bool percolate(int direction); 00027 bool percolate(); 00028 bool perc_lr(); 00029 bool perc_tb(); 00030 bool perc_all_dirs(int dim); 00031 00032 // friend void my_fprintf(FILE* outFile, one_result last, NUMBER N, int dim, COORDFLOAT L); 00033 // friend void my_fprintf_nothing(FILE* outFile); 00034 00035 }; 00036 00037 one_result::one_result(LONGBITS SPCL_DIRS, 00038 NUMBER NUMBEROF_CL, 00039 NUMBER BIGGEST_CLSZ, 00040 REAL MEAN_CLSZ, 00041 REAL MEAN_CLSZ2, 00042 clock_t LAST_COUNTTIME, 00043 string& THROWTIME, 00044 string& COUNTTIME) 00045 { 00046 spcl_dirs=SPCL_DIRS; 00047 numberof_cl=NUMBEROF_CL; 00048 biggest_clsz=BIGGEST_CLSZ; 00049 mean_clsz=MEAN_CLSZ; 00050 mean_clsz2=MEAN_CLSZ2; 00051 last_counttime=LAST_COUNTTIME; 00052 counttime=COUNTTIME; 00053 throwtime=THROWTIME; 00054 } 00055 00056 bool one_result::percolate(int direction){ 00057 manipdata<LONGBITS> *m=NULL; 00058 return (1 == m->bit_notzero(spcl_dirs,(LONGBITS)direction)); 00059 } 00060 bool one_result::percolate(){ 00061 manipdata<LONGBITS> *m=NULL; 00062 return (1 == m->notzero(spcl_dirs,(LONGBITS)42)); 00063 } 00064 bool one_result::perc_lr(){ 00065 manipdata<LONGBITS> *m=NULL; 00066 return (1 == m->bit_notzero(spcl_dirs,1)); 00067 } 00068 bool one_result::perc_tb(){ 00069 manipdata<LONGBITS> *m=NULL; 00070 return (1 == m->bit_notzero(spcl_dirs,2)); 00071 } 00072 bool one_result::perc_all_dirs(int dim){ 00073 manipdata<LONGBITS> *m=NULL; 00074 return (1 == m->allbits_notzero(spcl_dirs,(LONGBITS)dim)); 00075 } 00076 00077 00078 // END OF CLASS one_result 00079 00080 00081 class all_results { 00082 public: 00083 NUMBER N; 00084 int dim; 00085 bool new_result; 00086 one_result last; 00087 00088 std::list<LONGBITS> L_spcl_dirs; 00089 std::list<NUMBER> L_numberof_cl; 00090 std::list<NUMBER> L_biggest_clsz; 00091 std::list<REAL> L_mean_clsz; 00092 std::list<REAL> L_mean_clsz2; 00093 muvarskewkurt<REAL> spcl_cum; 00094 muvarskewkurt<REAL> spcl_lr_cum; 00095 muvarskewkurt<REAL> spcl_tb_cum; 00096 muvarskewkurt<REAL> spcl_alldirs_cum; 00097 muvarskewkurt<REAL> numberof_cl; 00098 muvarskewkurt<REAL> biggest_clsz; 00099 muvarskewkurt<REAL> mean_clsz; 00100 muvarskewkurt<REAL> mean_clsz2; 00101 COUNTER loop_no; 00102 clock_t sum_time; 00103 clock_t sum_spsearch_time; 00104 00105 all_results(){}; 00106 all_results(NUMBER N_, int dim_); 00107 void set_N_and_dim(all_results* res, COUNTER ff_steps,NUMBER N,int dim); 00108 00109 void add_result(one_result& one); // a new result is added to the lists 00110 void no_result(); // no new result added 00111 void delete_lists(); 00112 void compute_averages(); 00113 }; 00114 00115 all_results::all_results(NUMBER N_, int dim_){ 00116 N=N_; 00117 dim=dim_; 00118 new_result=false; 00119 loop_no=0; 00120 sum_time=0; 00121 sum_spsearch_time=0; 00122 } 00123 00124 void set_N_and_dim(all_results* array, COUNTER size,NUMBER N,int dim){ 00125 for (COUNTER i=0; i<=size;i++){ 00126 array[i]=all_results(N,dim); 00127 } 00128 } 00129 00130 void all_results::add_result(one_result& one){ 00131 new_result=true; 00132 loop_no++; 00133 last=one; 00134 L_spcl_dirs.push_back (one.spcl_dirs); 00135 L_numberof_cl.push_back (one.numberof_cl); 00136 L_biggest_clsz.push_back(one.biggest_clsz); 00137 L_mean_clsz.push_back (one.mean_clsz); 00138 L_mean_clsz2.push_back (one.mean_clsz2); 00139 } 00140 void all_results::no_result(){ 00141 new_result=false; 00142 } 00143 00144 void all_results::delete_lists(){ 00145 L_spcl_dirs.clear(); 00146 L_numberof_cl.clear(); 00147 L_biggest_clsz.clear(); 00148 L_mean_clsz.clear(); 00149 L_mean_clsz2.clear(); 00150 } 00151 00152 void all_results::compute_averages(){ 00153 REAL dummy=1.0; // for calculate_moments result type 00154 spcl_cum =calculate_moments<REAL,LONGBITS>(&manipdata<LONGBITS>::notzero, (LONGBITS)42, L_spcl_dirs, dummy); 00155 spcl_lr_cum =calculate_moments<REAL,LONGBITS>(&manipdata<LONGBITS>::bit_notzero, (LONGBITS)1, L_spcl_dirs, dummy); 00156 spcl_tb_cum =calculate_moments<REAL,LONGBITS>(&manipdata<LONGBITS>::bit_notzero, (LONGBITS)2, L_spcl_dirs, dummy); 00157 spcl_alldirs_cum=calculate_moments<REAL,LONGBITS> 00158 (&manipdata<LONGBITS>::allbits_notzero,(LONGBITS)dim, L_spcl_dirs, dummy); 00159 00160 numberof_cl =calculate_moments<REAL,NUMBER>(&manipdata<NUMBER>::linear, (NUMBER)42, L_numberof_cl, dummy); 00161 biggest_clsz=calculate_moments<REAL,NUMBER>(&manipdata<NUMBER>::linear, (NUMBER)42, L_biggest_clsz, dummy); 00162 mean_clsz =calculate_moments<REAL,REAL>(&manipdata<REAL>::linear, (REAL)42, L_mean_clsz, dummy); 00163 mean_clsz2 =calculate_moments<REAL,REAL>(&manipdata<REAL>::linear, (REAL)42, L_mean_clsz2, dummy); 00164 } 00165 00166 00167 00168 00169 } // end of namespace results
Diploma Thesis Sourcecode
Documentation check out the text and the executable binaries |