--- trunk/OOPSE/libBASS/Globals.cpp 2004/03/16 19:22:56 1091 +++ trunk/OOPSE/libBASS/Globals.cpp 2004/06/11 14:13:54 1260 @@ -35,13 +35,13 @@ #define G_BOXZ 14 #define G_SAMPLETIME 15 #define G_STATUSTIME 16 -#define G_ECR 17 -#define G_DIELECTRIC 18 -#define G_TEMPSET 19 -#define G_THERMALTIME 20 -#define G_USEPBC 21 -#define G_MIXINGRULE 22 -#define G_EST 23 +#define G_RCUT 17 +#define G_RSW 18 +#define G_DIELECTRIC 19 +#define G_TEMPSET 20 +#define G_THERMALTIME 21 +#define G_USEPBC 22 +#define G_MIXINGRULE 23 #define G_USERF 24 #define G_TARGETPRESSURE 25 #define G_TAUTHERMOSTAT 26 @@ -55,17 +55,22 @@ #define G_USEINITTIME 34 #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 +#define G_MINIMIZER 37 +#define G_MIN_MAXITER 38 +#define G_MIN_WRITEFRQ 39 +#define G_MIN_STEPSIZE 40 +#define G_MIN_FTOL 41 +#define G_MIN_GTOL 42 +#define G_MIN_LSTOL 43 +#define G_MIN_LSMAXITER 44 +#define G_ZCONSGAP 45 +#define G_ZCONSFIXTIME 46 +#define G_ZCONSUSINGSMD 47 +#define G_USE_SOLID_THERM_INT 48 +#define G_USE_LIQUID_THERM_INT 49 +#define G_THERM_INT_LAMBDA 50 +#define G_THERM_INT_K 51 +#define G_FORCEFIELD_VARIANT 52 Globals::Globals(){ @@ -98,13 +103,13 @@ Globals::Globals(){ addHash( "sampleTime", G_SAMPLETIME ); addHash( "resetTime", G_RESETTIME ); addHash( "statusTime", G_STATUSTIME ); - addHash( "electrostaticCutoffRadius", G_ECR ); + addHash( "cutoffRadius", G_RCUT ); + addHash( "switchingRadius", G_RSW ); addHash( "dielectric", G_DIELECTRIC ); addHash( "tempSet", G_TEMPSET ); addHash( "thermalTime", G_THERMALTIME ); addHash( "mixingRule", G_MIXINGRULE); addHash( "usePeriodicBoundaryConditions", G_USEPBC); - addHash( "electrostaticSkinThickness", G_EST ); addHash( "useReactionField", G_USERF ); addHash( "targetPressure", G_TARGETPRESSURE); addHash( "tauThermostat", G_TAUTHERMOSTAT); @@ -117,24 +122,31 @@ Globals::Globals(){ addHash( "useInitialTime", G_USEINITTIME); addHash( "useInitialExtendedSystemState", G_USEINIT_XS_STATE); addHash( "orthoBoxTolerance", G_ORTHOBOXTOLERANCE); - addHash( "LJrcut", G_LJRCUT); - 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); + 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); + addHash( "zconsUsingSMD", G_ZCONSUSINGSMD); + addHash( "useSolidThermInt", G_USE_SOLID_THERM_INT); + addHash( "useLiquidThermInt", G_USE_LIQUID_THERM_INT); + addHash( "thermodynamicIntegrationLambda", G_THERM_INT_LAMBDA); + addHash( "thermodynamicIntegrationK", G_THERM_INT_K); + addHash( "forceFieldVariant", G_FORCEFIELD_VARIANT); strcpy( mixingRule,"standard"); //default mixing rules to standard. usePBC = 1; //default periodic boundry conditions to on useRF = 0; - useInitTime = 1; // default to pull init time from the init file - useInitXSstate = 1; // default to pull the extended state from the init file + useInitTime = 0; // default to pull init time from the init file + useInitXSstate = 0; // default to pull the extended state from the init file orthoBoxTolerance = 1E-6; + useSolidThermInt = 0; // default solid-state thermodynamic integration to off + useLiquidThermInt = 0; // default liquid thermodynamic integration to off have_force_field = 0; have_n_components = 0; @@ -156,10 +168,10 @@ Globals::Globals(){ have_status_time = 0; have_reset_time = 0; have_thermal_time = 0; - have_ecr = 0; + have_rcut = 0; + have_rsw = 0; have_dielectric = 0; have_tempSet = 0; - have_est = 0; have_target_pressure =0; have_q_mass = 0; have_tau_thermostat = 0; @@ -168,8 +180,21 @@ Globals::Globals(){ have_n_zConstraints = 0; have_zConstraints = 0; have_zcons_tol = 0; + have_zcons_gap = 0; + have_zcons_fixtime = 0; + have_zcons_using_smd = 0; have_seed = 0; - have_ljrcut = 0; + have_minimizer = 0; + have_minimizer_maxiteration = 0; + have_minimizer_writefrq = 0; + have_minimizer_stepsize = 0; + have_minimizer_ftol = 0; + have_minimizer_gtol = 0; + have_minimizer_ls_tol = 0; + have_minimizer_ls_maxiteration = 0; + have_thermodynamic_integration_lambda = 0; + have_thermodynamic_integration_k = 0; + have_forcefield_variant = 0; } @@ -847,89 +872,60 @@ int Globals::globalAssign( event* the_event ){ break; } break; - - case G_LJRCUT: - switch( the_type ){ - - case STRING: - the_event->err_msg = - strdup( "Global error. LJrcut is not a double or int.\n" ); - return 0; - break; - - case DOUBLE: - LJrcut = the_event->evt.asmt.rhs.dval; - have_ljrcut = 1; - return 1; - break; - - case INT: - LJrcut = (double)the_event->evt.asmt.rhs.ival; - have_ljrcut = 1; - return 1; - break; - - default: - the_event->err_msg = - strdup( "Global error. LJrcut unrecognized.\n" ); - return 0; - break; - } - break; - case G_ECR: + case G_RCUT: switch( the_type ){ case STRING: the_event->err_msg = - strdup( "Global error. electrostaticCutoffRadius is not a double or int.\n" ); + strdup( "Global error. cutoffRadius is not a double or int.\n" ); return 0; break; case DOUBLE: - ecr = the_event->evt.asmt.rhs.dval; - have_ecr = 1; + rcut = the_event->evt.asmt.rhs.dval; + have_rcut = 1; return 1; break; case INT: - ecr = (double)the_event->evt.asmt.rhs.ival; - have_ecr = 1; + rcut = (double)the_event->evt.asmt.rhs.ival; + have_rcut = 1; return 1; break; default: the_event->err_msg = - strdup( "Global error. electrostaticCutoffRadius unrecognized.\n" ); + strdup( "Global error. cutoffRadius unrecognized.\n" ); return 0; break; } break; - case G_EST: + case G_RSW: switch( the_type ){ case STRING: the_event->err_msg = - strdup( "Global error. electrostaticSkinThickness is not a double or int.\n" ); + strdup( "Global error. switchingRadius is not a double or int.\n" ); return 0; break; case DOUBLE: - est = the_event->evt.asmt.rhs.dval; - have_est = 1; + rsw = the_event->evt.asmt.rhs.dval; + have_rsw = 1; return 1; break; case INT: - est = (double)the_event->evt.asmt.rhs.ival; - have_est = 1; + rsw = (double)the_event->evt.asmt.rhs.ival; + have_rsw = 1; return 1; break; default: the_event->err_msg = - strdup( "Global error. electrostaticSkinThickness unrecognized.\n" ); + strdup( "Global error. switchingRadius unrecognized.\n" ); return 0; break; } @@ -1289,8 +1285,37 @@ int Globals::globalAssign( event* the_event ){ default: the_event->err_msg = strdup( "Global error. zcons_fixtime unrecognized.\n" ); + return 0; + break; + } + break; + + case G_ZCONSUSINGSMD: + switch( the_type ){ + + case STRING: + the_event->err_msg = + strdup( "Global error. zcons_fixtime is not an int.\n" ); + return 0; + break; + + case DOUBLE: + the_event->err_msg = + strdup( "Global error. zcons_fixtime is not an int.\n" ); return 0; break; + + case INT: + zcons_using_smd= the_event->evt.asmt.rhs.ival; + have_zcons_using_smd= 1; + return 1; + break; + + default: + the_event->err_msg = + strdup( "Global error. zcons_usingsmd unrecognized.\n" ); + return 0; + break; } break; @@ -1337,7 +1362,7 @@ int Globals::globalAssign( event* the_event ){ break; case DOUBLE: - minimizer_maxiteration = the_event->evt.asmt.rhs.dval; + minimizer_maxiteration = (int)the_event->evt.asmt.rhs.dval; have_minimizer_maxiteration = 1; return 1; break; @@ -1560,8 +1585,112 @@ int Globals::globalAssign( event* the_event ){ break; } break; - // add more token cases here. + + case G_USE_SOLID_THERM_INT: + if( the_type == STRING ){ + + if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) useSolidThermInt = 1; + else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) useSolidThermInt = 0; + else{ + the_event->err_msg = + strdup( "Global error. useSolidThermInt was not \"true\" or \"false\".\n" ); + return 0; + } + return 1; + } + + the_event->err_msg = + strdup( "Global error. useSolidThermInt was not \"true\" or \"false\".\n" ); + return 0; + break; + + case G_USE_LIQUID_THERM_INT: + if( the_type == STRING ){ + + if( !strcasecmp( "true", the_event->evt.asmt.rhs.sval )) useLiquidThermInt = 1; + else if( !strcasecmp( "false", the_event->evt.asmt.rhs.sval )) useLiquidThermInt = 0; + else{ + the_event->err_msg = + strdup( "Global error. useLiquidThermInt was not \"true\" or \"false\".\n" ); + return 0; + } + return 1; + } + + the_event->err_msg = + strdup( "Global error. useLiquidThermInt was not \"true\" or \"false\".\n" ); + return 0; + break; + case G_THERM_INT_LAMBDA: + switch( the_type ){ + + case STRING: + the_event->err_msg = + strdup( "Global error. thermodynamicIntegrationLambda is not a double or int.\n" ); + return 1; + break; + + case DOUBLE: + thermodynamic_integration_lambda = the_event->evt.asmt.rhs.dval; + have_thermodynamic_integration_lambda = 1; + return 1; + break; + + case INT: + thermodynamic_integration_lambda = (double)the_event->evt.asmt.rhs.dval; + have_thermodynamic_integration_lambda = 1; + return 1; + break; + + default: + the_event->err_msg = + strdup( "Global error. thermodynamicIntegrationLambda unrecognized.\n" ); + return 0; + break; + } + break; + + case G_THERM_INT_K: + switch( the_type ){ + + case STRING: + the_event->err_msg = + strdup( "Global error. thermodynamicIntegrationK is not a double or int.\n" ); + return 1; + break; + + case DOUBLE: + thermodynamic_integration_k = the_event->evt.asmt.rhs.dval; + have_thermodynamic_integration_k = 1; + return 1; + break; + + case INT: + thermodynamic_integration_k = (double)the_event->evt.asmt.rhs.dval; + have_thermodynamic_integration_k = 1; + return 1; + break; + + default: + the_event->err_msg = + strdup( "Global error. thermodynamicIntegrationK unrecognized.\n" ); + return 0; + break; + } + break; + case G_FORCEFIELD_VARIANT: + if( the_type == STRING ){ + strcpy( forcefield_variant, the_event->evt.asmt.rhs.sval ); + have_forcefield_variant = 1; + return 1; + } + + the_event->err_msg = + strdup( "Global error. forceFieldVariant was not a string assignment.\n" ); + return 0; + break; + // add more token cases here. } } @@ -1621,7 +1750,6 @@ char* Globals::checkMe( void ){ strcat( err, "\t->targetTemp\n" ); have_err= 1; } - if(!have_minimizer) if( !have_ensemble ){