Diploma Thesis Percolation Simulation C++ Sourcecode Documentation |
Compounds | |
class | cline_par |
Enumerations | |
enum | subprgs { NONE, FFC, FFS, NOC, OPT } |
Functions | |
int | commandname_position (char *argv0) |
void | cout_tail (char *wholename, int start) |
string | commandname_wo_path (char *argv0) |
void | cout_command_endl (int argc, char *argv[]) |
void | cout_command_wo_path (int argc, char *argv[]) |
void | show_commandline (int argc, char *argv[]) |
subprgs | subprg_name2enum (string name) |
ostream & | operator<< (ostream &os, subprgs s) |
void | show_commandline_options (char *argv0) |
void | out_subprgname (ostream &os, cline_par &p) |
ostream & | operator<< (ostream &os, cline_par p) |
string | get_first_word (char *parameters) |
bool | recognized_switch (int argc, char *argv[], cline_par ¶m) |
bool | percentage_ok (REAL percentage, REAL lower_N) |
bool | dimrange_ok (int dim1, int dim2) |
bool | Nrange_ok (REAL N1, NUMBER N2) |
bool | precision_ok (REAL prec) |
bool | atleast_ok (COUNTER a) |
bool | range_ok (cline_par p) |
int | enum2criterion (subprgs subprg) |
int | start_subprg (cline_par &p, clock_t &return_totaltime) |
Variables | |
const char | SLASH = '/' |
|
Definition at line 75 of file commandline.h. Referenced by enum2criterion(), operator<<(), and subprg_name2enum().
|
|
Definition at line 248 of file commandline.h. References COUNTER. Referenced by range_ok().
00248 {return (a>=1); } |
|
Definition at line 16 of file commandline.h. References SLASH. Referenced by cout_command_wo_path().
00016 { 00017 int name_pos=0; 00018 char* path_plus_name=argv0; 00019 int ch; 00020 for (ch=0; path_plus_name[ch]!=0;ch++){ 00021 if (path_plus_name[ch]==SLASH) name_pos=ch+1; 00022 } 00023 return name_pos; 00024 } |
|
Definition at line 33 of file commandline.h. References SLASH. Referenced by show_commandline_options().
00033 { 00034 int name_pos=0; 00035 char* path_plus_name=argv0; 00036 int ch; 00037 for (ch=0; path_plus_name[ch]!=0;ch++){ 00038 if (path_plus_name[ch]==SLASH) name_pos=ch+1; 00039 } 00040 string temp=""; 00041 for (ch=name_pos; argv0[ch]!=0;ch++){ 00042 temp+=argv0[ch]; 00043 } 00044 return temp; 00045 } |
|
Definition at line 48 of file commandline.h. Referenced by show_commandline().
00048 { 00049 int i; 00050 for (i=0;i<argc;i++){ 00051 cout <<i<<": "<<argv[i]<<endl; 00052 } 00053 } |
|
Definition at line 55 of file commandline.h. References commandname_position(), and cout_tail(). Referenced by main(), and show_commandline().
00055 { 00056 int name_pos=commandname_position(argv[0]); 00057 cout_tail(argv[0],name_pos); 00058 cout <<" "; 00059 int i; 00060 for (i=1;i<argc;i++){ 00061 cout <<argv[i]<<" "; 00062 } 00063 } |
|
Definition at line 26 of file commandline.h. Referenced by cout_command_wo_path().
00026 { 00027 int ch; 00028 for (ch=start; wholename[ch]!=0;ch++){ 00029 cout <<wholename[ch]; 00030 } 00031 } |
|
Definition at line 245 of file commandline.h. References MAXDIM. Referenced by range_ok().
00245 {return (dim1<=dim2 && dim1>0 && dim2<=MAXDIM);} |
|
Definition at line 279 of file commandline.h. References FFC, FFS, NOC, and subprgs. Referenced by start_subprg().
00279 { 00280 int criterion; 00281 switch (subprg) { 00282 case FFC: 00283 criterion=1; 00284 break; 00285 case FFS: 00286 criterion=2; 00287 break; 00288 case NOC: 00289 criterion=3; 00290 break; 00291 default: 00292 cout<<"unknown sub-programm, sorry. (Please write to cpp__at__AndreasKrueger__dot__de)\n"<<endl; 00293 return -1; 00294 } 00295 return criterion; 00296 } |
|
Definition at line 167 of file commandline.h. Referenced by recognized_switch().
00167 { 00168 int i=0; string first_word=""; 00169 bool foundend=false; 00170 while (!foundend && parameters[i]!='\0'){ 00171 if (parameters[i]!=' '){ 00172 first_word+=parameters[i]; 00173 } 00174 else{ 00175 foundend=true; 00176 } 00177 i++; 00178 } 00179 return first_word; 00180 } |
|
Definition at line 246 of file commandline.h. References MAXNUMBER, NUMBER, and REAL. Referenced by range_ok().
00246 { return (N1<=N2 && N1>=2 && N2<MAXNUMBER);} |
|
Definition at line 157 of file commandline.h. References commandline::cline_par::at_least, commandline::cline_par::computername, commandline::cline_par::criterion, FFC, FFS, commandline::cline_par::fromdim, commandline::cline_par::fromN, NOC, OPT, out_subprgname(), commandline::cline_par::percentOfSpheres, commandline::cline_par::precision, commandline::cline_par::subprg, commandline::cline_par::todim, and commandline::cline_par::toN.
00157 { 00158 out_subprgname(os,p); 00159 if (p.subprg==NOC) os<<p.percentOfSpheres<<"%"; 00160 if (p.subprg==FFC || p.subprg==FFS || p.subprg==NOC) { 00161 os <<" from "<<p.fromdim<<" to "<<p.todim<<" dim and N="<<p.fromN<<" to "<<p.toN; 00162 os <<" with target precision "<<p.precision*100<<"% and at least "<<p.at_least<<" runs."; 00163 } 00164 if (p.subprg==OPT) os<<p.criterion<<" on computer "<<p.computername; 00165 return os; 00166 } |
|
Definition at line 91 of file commandline.h. References FFC, FFS, NOC, OPT, and subprgs.
|
|
Definition at line 135 of file commandline.h. References FFC, FFS, NOC, OPT, and commandline::cline_par::subprg. Referenced by operator<<().
00135 { 00136 switch (p.subprg) { 00137 case FFC: 00138 os<<"find critical_fillingfactor"; 00139 break; 00140 00141 case FFS: 00142 os<<"find saturating_fillingfactor"; 00143 break; 00144 00145 case NOC: 00146 os<<"find fillingfactor where number-of-clusters="; 00147 break; 00148 00149 case OPT: 00150 os<<"find optimal number of cuts by checking wide range at " ; 00151 break; 00152 00153 default: 00154 os<<"unknown subprogramm"; 00155 } 00156 } |
|
Definition at line 242 of file commandline.h. References REAL. Referenced by range_ok().
00242 { 00243 REAL percent_step=100/lower_N; 00244 return (percentage>percent_step); } |
|
Definition at line 247 of file commandline.h. References REAL. Referenced by range_ok().
00247 {return (prec>0 && prec <1);}; |
|
Definition at line 250 of file commandline.h. References commandline::cline_par::at_least, atleast_ok(), dimrange_ok(), FFC, FFS, commandline::cline_par::fromdim, commandline::cline_par::fromN, MAXDIM, MAXNUMBER, NOC, Nrange_ok(), percentage_ok(), commandline::cline_par::percentOfSpheres, commandline::cline_par::precision, precision_ok(), commandline::cline_par::subprg, commandline::cline_par::todim, and commandline::cline_par::toN. Referenced by main().
00250 { 00251 bool ok=true; 00252 if (p.subprg==NOC){ 00253 if (!percentage_ok(p.percentOfSpheres,p.fromN)) { 00254 ok=false; 00255 cerr<<"ERROR: percentage not in allowed range (must be > 100/from_N and <100)"<<endl; 00256 } 00257 } 00258 if (p.subprg==FFC ||p.subprg==FFS ||p.subprg==NOC){ 00259 if (!dimrange_ok(p.fromdim, p.todim)) { 00260 ok=false; 00261 cerr<<"ERROR: dim not in allowed range (1 to "<<MAXDIM<<") or wrong order"<<endl; 00262 } 00263 if (!Nrange_ok(p.fromN, p.toN)) { 00264 ok=false; 00265 cerr<<"ERROR: N not in allowed range (2 to "<<MAXNUMBER<<") or wrong order"<<endl; 00266 } 00267 if (!precision_ok(p.precision)) { 00268 ok=false; 00269 cerr<<"ERROR: precision not in allowed range (must be >0 to 100%)"<<endl; 00270 } 00271 if (!atleast_ok(p.at_least)) { 00272 ok=false; 00273 cerr<<"ERROR: at_least-runs not in allowed range (must be >1)"<<endl; 00274 } 00275 } 00276 return ok; 00277 } |
|
Definition at line 183 of file commandline.h. References commandline::cline_par::at_least, commandline::cline_par::computername, commandline::cline_par::criterion, FFC, FFS, commandline::cline_par::fromdim, commandline::cline_par::fromN, get_first_word(), NOC, OPT, commandline::cline_par::percentOfSpheres, commandline::cline_par::precision, commandline::cline_par::subprg, subprg_name2enum(), commandline::cline_par::todim, and commandline::cline_par::toN. Referenced by main().
00183 { 00184 bool recog=false; 00185 if (argc==1) {return recog;} 00186 string fw=get_first_word(argv[1]); 00187 param.subprg= subprg_name2enum(fw); 00188 00189 switch (param.subprg) 00190 { 00191 case FFC: 00192 { 00193 if (argc!=8) break; 00194 param.fromdim=atoi(argv[2]); 00195 param.todim=atoi(argv[3]); 00196 param.fromN=atof(argv[4]); 00197 param.toN=atoi(argv[5]); 00198 param.precision=atof(argv[6])/100; // percent 00199 param.at_least=atoi(argv[7]); 00200 recog=true; 00201 } 00202 break; 00203 case FFS: 00204 { 00205 if (argc!=8) break; 00206 param.fromdim=atoi(argv[2]); 00207 param.todim=atoi(argv[3]); 00208 param.fromN=atof(argv[4]); 00209 param.toN=atoi(argv[5]); 00210 param.precision=atof(argv[6])/100; // percent 00211 param.at_least=atoi(argv[7]); 00212 recog=true; 00213 } 00214 break; 00215 case NOC: 00216 { 00217 if (argc!=9) break; 00218 param.percentOfSpheres=atof(argv[2]); 00219 param.fromdim=atoi(argv[3]); 00220 param.todim=atoi(argv[4]); 00221 param.fromN=atof(argv[5]); 00222 param.toN=atoi(argv[6]); 00223 param.precision=atof(argv[7])/100; // percent precision 00224 param.at_least=atoi(argv[8]); 00225 recog=true; 00226 } 00227 break; 00228 case OPT: 00229 { 00230 if (argc!=4) break; 00231 param.criterion=subprg_name2enum(string(argv[2])); 00232 param.computername=string(argv[3]); 00233 recog=true; 00234 } 00235 break; 00236 default: 00237 { } 00238 } 00239 return recog; // and parameters param, of course 00240 } |
|
Definition at line 65 of file commandline.h. References cout_command_endl(), and cout_command_wo_path().
00065 { 00066 cout <<"The whole commandline argv splits into -> "<<argc<<" <- parts:"<<endl; 00067 cout_command_endl(argc, argv); 00068 cout <<"minus the path, this gives:"<<endl; 00069 cout_command_wo_path(argc, argv); 00070 cout <<endl; 00071 } |
|
Definition at line 99 of file commandline.h. References commandname_wo_path(), FILEHEAD2, MAXDIM, and MAXNUMBER. Referenced by main().
00099 { 00100 cout<<"\n\nCommandline options:"<<endl; 00101 cout<<"--------------------"<<endl; 00102 cout<<"Please use these parameters:"<<endl; 00103 cout<<"0<percent<100\t\t= percent of number of spheres (for noc)"<<endl; 00104 cout<<"fromdim>0, todim<"<<MAXDIM+1<<"\t= dimensions intervall"<<endl; 00105 cout<<"fromN>1, toN<"<<MAXNUMBER+1<<"\t= intervall for spherenumber"<<endl; 00106 cout<<"0< precision <100\t= target precision wished in percent"<<endl; 00107 cout<<"0< minloops\t\t= at least so many averaging loops"<<endl; 00108 cout<<"for the following (at the moment only) three possible subprograms:"<<endl<<endl; 00109 cout<<"Find the critical fillingfactor (spanning cluster threshold)"<<endl; 00110 string name = commandname_wo_path(argv0); 00111 cout<<name<<" ffc fromdim todim fromN toN precision minloops"<<endl; 00112 cout<<"Find the saturating fillingfactor (all-spheres-in-one-cluster threshold)"<<endl; 00113 cout<<name<<" ffs fromdim todim fromN toN precision minloops"<<endl; 00114 cout<<"Find the fillingfactor where number-of-clusters=percent% * N"<<endl; 00115 cout<<name<<" noc percent fromdim todim fromN toN precision minloops"<<endl; 00116 cout<<" (Optimized especially for percent=1 and percent=90)"<<endl; 00117 cout<<"Check a wide range of cuts for speed:"<<endl; 00118 cout<<name<<" opt ffs/ffc computername"<<endl; 00119 00120 cout<<""<<endl; 00121 cout<<"N.B.: You have to create a data directory "<<FILEHEAD2<<endl<<endl; 00122 } |
|
Definition at line 298 of file commandline.h. References commandline::cline_par::at_least, commandline::cline_par::computername, commandline::cline_par::criterion, optimize::cuts_test_average_time(), enum2criterion(), ff::find_ff_with_criterion_scanning_N_and_dim(), ff::fillingfactor_functions::fn, commandline::cline_par::fromdim, commandline::cline_par::fromN, ff::load_stepfunctions(), ff::fillingfactor_functions::name, NUMBER, OPT, commandline::cline_par::percentOfSpheres, commandline::cline_par::precision, REAL, commandline::cline_par::subprg, ff::fillingfactor_functions::theory, commandline::cline_par::todim, and commandline::cline_par::toN. Referenced by main().
00298 { 00299 return_totaltime=clock(); 00300 00301 ff::fillingfactor_functions stepfn[ff::N_STEPFN+1]; ff::load_stepfunctions(stepfn); 00302 00303 int criterion; 00304 00305 if (p.subprg==OPT){ 00306 criterion=enum2criterion(p.criterion); 00307 optimize::cuts_test_average_time(criterion, 1, p.computername); 00308 return 0; 00309 } 00310 00311 criterion=enum2criterion(p.subprg); 00312 if (criterion==-1) { 00313 return_totaltime=0; 00314 return 1; 00315 } 00316 00317 bool (* stepfn_criterion)(REAL, ff::arguments1&) =stepfn[criterion].fn; 00318 REAL (* ff_guessed)(NUMBER,int,REAL) =stepfn[criterion].theory; 00319 string namecriterion =stepfn[criterion].name; 00320 00321 REAL percentage=100; // e.g. NOC90% -> where number-of-clusters=90% * N 00322 // here set to a dummy-value, if criterion=1 or 2 00323 if (criterion>2) { 00324 percentage=p.percentOfSpheres; 00325 char buffer[5]; sprintf(buffer, "", ""); 00326 if (percentage<10) sprintf(buffer, "%1.0f%c", percentage,'%'); 00327 else sprintf(buffer, "%2.0f%c", percentage,'%'); 00328 namecriterion+=buffer; 00329 } 00330 00331 ff::find_ff_with_criterion_scanning_N_and_dim(stepfn_criterion, percentage/100, namecriterion, 00332 ff_guessed, 00333 p.fromdim, p.todim, p.fromN, p.toN, 00334 p.precision, p.at_least); 00335 return_totaltime=clock()-return_totaltime; 00336 return 0; 00337 } |
|
Definition at line 83 of file commandline.h. References FFC, FFS, NOC, NONE, OPT, and subprgs. Referenced by recognized_switch().
|
|
Definition at line 13 of file commandline.h. Referenced by commandname_position(), and commandname_wo_path(). |
Diploma Thesis Sourcecode
Documentation check out the text and the executable binaries |