--- trunk/OOPSE/libBASS/Globals.cpp 2004/01/19 16:08:21 957 +++ trunk/OOPSE/libBASS/Globals.cpp 2004/03/16 19:22:56 1091 @@ -56,8 +56,17 @@ #define G_USEINIT_XS_STATE 35 #define G_ORTHOBOXTOLERANCE 36 #define G_LJRCUT 37 +#define G_MINIMIZER 38 +#define G_MIN_MAXITER 39 +#define G_MIN_WRITEFRQ 40 +#define G_MIN_STEPSIZE 41 +#define G_MIN_FTOL 42 +#define G_MIN_GTOL 43 +#define G_MIN_LSTOL 44 +#define G_MIN_LSMAXITER 45 +#define G_ZCONSGAP 46 +#define G_ZCONSFIXTIME 47 - Globals::Globals(){ int i; @@ -109,9 +118,16 @@ Globals::Globals(){ addHash( "useInitialExtendedSystemState", G_USEINIT_XS_STATE); addHash( "orthoBoxTolerance", G_ORTHOBOXTOLERANCE); addHash( "LJrcut", G_LJRCUT); - - - // define some default values + addHash( "minimizer", G_MINIMIZER); + addHash( "minMaxIter", G_MIN_MAXITER); + addHash( "minWriteFrq", G_MIN_WRITEFRQ); + addHash( "minStepSize", G_MIN_STEPSIZE); + addHash( "minFTol", G_MIN_FTOL); + addHash( "minGTol", G_MIN_GTOL); + addHash( "minLSTol", G_MIN_LSTOL); + addHash( "minLSMaxIter", G_MIN_LSMAXITER); + addHash( "zconsGap", G_ZCONSGAP); + addHash( "zconsFixtime", G_ZCONSFIXTIME); strcpy( mixingRule,"standard"); //default mixing rules to standard. usePBC = 1; //default periodic boundry conditions to on @@ -1217,8 +1233,303 @@ int Globals::globalAssign( event* the_event ){ strdup( "Global error. zconsForcePolicy unrecognized.\n" ); return 0; break; + } + break; + + case G_ZCONSGAP: + switch( the_type ){ + + case STRING: + the_event->err_msg = + strdup( "Global error. zcons_gap is not a double or int.\n" ); + return 0; + break; + + case DOUBLE: + zcons_gap = the_event->evt.asmt.rhs.dval; + have_zcons_gap= 1; + return 1; + break; + + case INT: + zcons_gap= (double)the_event->evt.asmt.rhs.ival; + have_zcons_gap= 1; + return 1; + break; + + default: + the_event->err_msg = + strdup( "Global error. zcons_gap unrecognized.\n" ); + return 0; + break; + } + break; + + case G_ZCONSFIXTIME: + switch( the_type ){ + + case STRING: + the_event->err_msg = + strdup( "Global error. zcons_fixtime is not a double or int.\n" ); + return 0; + break; + + case DOUBLE: + zcons_fixtime= the_event->evt.asmt.rhs.dval; + have_zcons_fixtime= 1; + return 1; + break; + + case INT: + zcons_fixtime= (double)the_event->evt.asmt.rhs.ival; + have_zcons_fixtime= 1; + return 1; + break; + + default: + the_event->err_msg = + strdup( "Global error. zcons_fixtime unrecognized.\n" ); + return 0; + break; + } + break; + + case G_MINIMIZER: + switch( the_type ){ + + case STRING: + strcpy(minimizer_name, the_event->evt.asmt.rhs.sval); + + for(int i = 0; zconsForcePolicy[i] != '\0'; i++){ + zconsForcePolicy[i] = toupper(zconsForcePolicy[i]); + } + have_minimizer= 1; + return 1; + break; + + case DOUBLE: + the_event->err_msg = + strdup( "Global error. minimizer_name is not a double or int.\n" ); + return 0; + break; + + case INT: + the_event->err_msg = + strdup( "Global error. minimizer_name is not a double or int.\n" ); + return 0; + break; + + default: + the_event->err_msg = + strdup( "Global error. minimizer_name unrecognized.\n" ); + return 0; + break; } break; + + case G_MIN_MAXITER: + switch( the_type ){ + + case STRING: + the_event->err_msg = + strdup( "Global error. minimizer_maxiteration is not a double or int.\n" ); + return 1; + break; + + case DOUBLE: + minimizer_maxiteration = the_event->evt.asmt.rhs.dval; + have_minimizer_maxiteration = 1; + return 1; + break; + + case INT: + minimizer_maxiteration = the_event->evt.asmt.rhs.ival; + have_minimizer_maxiteration = 1; + return 1; + break; + + default: + the_event->err_msg = + strdup( "Global error. minimizer_maxiteration unrecognized.\n" ); + return 0; + break; + } + break; + + case G_MIN_WRITEFRQ: + switch( the_type ){ + + case STRING: + the_event->err_msg = + strdup( "Global error. minimizer_writefrq is not a double or int.\n" ); + return 1; + break; + + case DOUBLE: + minimizer_writefrq= the_event->evt.asmt.rhs.dval; + have_minimizer_writefrq = 1; + return 1; + break; + + case INT: + minimizer_writefrq= the_event->evt.asmt.rhs.ival; + have_minimizer_writefrq = 1; + return 1; + break; + + default: + the_event->err_msg = + strdup( "Global error. minimizer_writefrq unrecognized.\n" ); + return 0; + break; + } + break; + + case G_MIN_STEPSIZE: + switch( the_type ){ + + case STRING: + the_event->err_msg = + strdup( "Global error. minimizer_resetfrq is not a double or int.\n" ); + return 1; + break; + + case DOUBLE: + minimizer_stepsize= the_event->evt.asmt.rhs.dval; + have_minimizer_stepsize = 1; + return 1; + break; + + case INT: + minimizer_stepsize= the_event->evt.asmt.rhs.ival; + have_minimizer_stepsize = 1; + return 1; + break; + + default: + the_event->err_msg = + strdup( "Global error. minimizer_resetfrq unrecognized.\n" ); + return 0; + break; + } + break; + + case G_MIN_FTOL: + switch( the_type ){ + + case STRING: + the_event->err_msg = + strdup( "Global error. minimizer_ftol is not a double or int.\n" ); + return 1; + break; + + case DOUBLE: + minimizer_ftol= the_event->evt.asmt.rhs.dval; + have_minimizer_ftol = 1; + return 1; + break; + + case INT: + minimizer_ftol= the_event->evt.asmt.rhs.ival; + have_minimizer_ftol = 1; + return 1; + break; + + default: + the_event->err_msg = + strdup( "Global error. minimizer_ftol unrecognized.\n" ); + return 0; + break; + } + break; + + case G_MIN_GTOL: + switch( the_type ){ + + case STRING: + the_event->err_msg = + strdup( "Global error. minimizer_gtol is not a double or int.\n" ); + return 1; + break; + + case DOUBLE: + minimizer_gtol= the_event->evt.asmt.rhs.dval; + have_minimizer_gtol = 1; + return 1; + break; + + case INT: + minimizer_gtol= the_event->evt.asmt.rhs.ival; + have_minimizer_gtol = 1; + return 1; + break; + + default: + the_event->err_msg = + strdup( "Global error. minimizer_gtol unrecognized.\n" ); + return 0; + break; + } + break; + + case G_MIN_LSMAXITER: + switch( the_type ){ + + case STRING: + the_event->err_msg = + strdup( "Global error. minimizer_ls_maxiteration is not a double or int.\n" ); + return 1; + break; + + case DOUBLE: + minimizer_ls_maxiteration = the_event->evt.asmt.rhs.dval; + have_minimizer_ls_maxiteration = 1; + return 1; + break; + + case INT: + minimizer_ls_maxiteration = the_event->evt.asmt.rhs.ival; + have_minimizer_ls_maxiteration = 1; + return 1; + break; + + default: + the_event->err_msg = + strdup( "Global error. minimizer_ls_maxiteration unrecognized.\n" ); + return 0; + break; + } + break; + + case G_MIN_LSTOL: + switch( the_type ){ + + case STRING: + the_event->err_msg = + strdup( "Global error. minimizer_ls_tol is not a double or int.\n" ); + return 1; + break; + + case DOUBLE: + minimizer_ls_tol= the_event->evt.asmt.rhs.dval; + have_minimizer_ls_tol = 1; + return 1; + break; + + case INT: + minimizer_ls_tol= the_event->evt.asmt.rhs.ival; + have_minimizer_ls_tol = 1; + return 1; + break; + + default: + the_event->err_msg = + strdup( "Global error. minimizer_ls_tol unrecognized.\n" ); + return 0; + break; + } + break; + // add more token cases here. case G_SEED: switch( the_type ){ @@ -1310,11 +1621,13 @@ char* Globals::checkMe( void ){ strcat( err, "\t->targetTemp\n" ); have_err= 1; } + - if( !have_ensemble ){ - strcat( err, "\t->ensemble\n" ); - have_err= 1; - } + if(!have_minimizer) + if( !have_ensemble ){ + strcat( err, "\t->ensemble\n" ); + have_err= 1; + } if( !have_dt ){ strcat( err, "\t->dt\n" );