ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libBASS/Globals.cpp
(Generate patch)

Comparing trunk/OOPSE/libBASS/Globals.cpp (file contents):
Revision 855 by mmeineke, Thu Nov 6 22:01:37 2003 UTC vs.
Revision 1181 by chrisfen, Thu May 20 20:27:26 2004 UTC

# Line 17 | Line 17
17   */
18  
19   //required parameters
20 < #define G_FORCEFIELD  1
21 < #define G_NCOMPONENTS 2
22 < #define G_TARGETTEMP  3
23 < #define G_ENSEMBLE    4
24 < #define G_DT          5
25 < #define G_RUNTIME     6
20 > #define G_FORCEFIELD         1
21 > #define G_NCOMPONENTS        2
22 > #define G_TARGETTEMP         3
23 > #define G_ENSEMBLE           4
24 > #define G_DT                 5
25 > #define G_RUNTIME            6
26  
27   //optional parameters
28 < #define G_INITIALCONFIG   7
29 < #define G_FINALCONFIG     8
30 < #define G_NMOL            9
31 < #define G_DENSITY        10
32 < #define G_BOX            11
33 < #define G_BOXX           12
34 < #define G_BOXY           13
35 < #define G_BOXZ           14
36 < #define G_SAMPLETIME     15
37 < #define G_STATUSTIME     16
38 < #define G_ECR            17
39 < #define G_DIELECTRIC     18
40 < #define G_TEMPSET        19
41 < #define G_THERMALTIME    20
42 < #define G_USEPBC         21
43 < #define G_MIXINGRULE     22
44 < #define G_EST            23
45 < #define G_USERF          24
46 < #define G_TARGETPRESSURE 25
47 < #define G_TAUTHERMOSTAT  26
48 < #define G_TAUBAROSTAT    27
49 < #define G_ZCONSTIME      28
50 < #define G_NZCONSTRAINTS  29
51 < #define G_ZCONSTOL       30
52 < #define G_ZCONSFORCEPOLICY 31
53 < #define G_SEED           32
54 < #define G_RESETTIME      33
55 < #define G_USEINITTIME    34
56 < #define G_USEINIT_XS_STATE 35
28 > #define G_INITIALCONFIG      7
29 > #define G_FINALCONFIG        8
30 > #define G_NMOL               9
31 > #define G_DENSITY           10
32 > #define G_BOX               11
33 > #define G_BOXX              12
34 > #define G_BOXY              13
35 > #define G_BOXZ              14
36 > #define G_SAMPLETIME        15
37 > #define G_STATUSTIME        16
38 > #define G_RCUT              17
39 > #define G_RSW               18
40 > #define G_DIELECTRIC        19
41 > #define G_TEMPSET           20
42 > #define G_THERMALTIME       21
43 > #define G_USEPBC            22
44 > #define G_MIXINGRULE        23
45 > #define G_USERF             24
46 > #define G_TARGETPRESSURE    25
47 > #define G_TAUTHERMOSTAT     26
48 > #define G_TAUBAROSTAT       27
49 > #define G_ZCONSTIME         28
50 > #define G_NZCONSTRAINTS     29
51 > #define G_ZCONSTOL          30
52 > #define G_ZCONSFORCEPOLICY  31
53 > #define G_SEED              32
54 > #define G_RESETTIME         33
55 > #define G_USEINITTIME       34
56 > #define G_USEINIT_XS_STATE  35
57   #define G_ORTHOBOXTOLERANCE 36
58 + #define G_MINIMIZER         37
59 + #define G_MIN_MAXITER       38
60 + #define G_MIN_WRITEFRQ      39
61 + #define G_MIN_STEPSIZE      40
62 + #define G_MIN_FTOL          41
63 + #define G_MIN_GTOL          42
64 + #define G_MIN_LSTOL         43
65 + #define G_MIN_LSMAXITER     44
66 + #define G_ZCONSGAP          45
67 + #define G_ZCONSFIXTIME      46
68 + #define G_ZCONSUSINGSMD     47
69 + #define G_THERM_INT_LAMBDA  48
70 + #define G_THERM_INT_K       49
71  
59
72   Globals::Globals(){
73    
74    int i;
# Line 88 | Line 100 | Globals::Globals(){
100    addHash( "sampleTime",    G_SAMPLETIME );
101    addHash( "resetTime",     G_RESETTIME );
102    addHash( "statusTime",    G_STATUSTIME );
103 <  addHash( "electrostaticCutoffRadius",            G_ECR );
103 >  addHash( "cutoffRadius",  G_RCUT );
104 >  addHash( "switchingRadius",  G_RSW );
105    addHash( "dielectric",    G_DIELECTRIC );
106    addHash( "tempSet",       G_TEMPSET );
107    addHash( "thermalTime",   G_THERMALTIME );
108    addHash( "mixingRule",    G_MIXINGRULE);
109    addHash( "usePeriodicBoundaryConditions",        G_USEPBC);
97  addHash( "electrostaticSkinThickness",           G_EST );
110    addHash( "useReactionField",                     G_USERF );
111    addHash( "targetPressure",                       G_TARGETPRESSURE);
112    addHash( "tauThermostat",                        G_TAUTHERMOSTAT);
# Line 107 | Line 119 | Globals::Globals(){
119    addHash( "useInitialTime",                       G_USEINITTIME);
120    addHash( "useInitialExtendedSystemState",        G_USEINIT_XS_STATE);
121    addHash( "orthoBoxTolerance",                    G_ORTHOBOXTOLERANCE);
122 <        
123 <        
124 <  // define some default values
122 >  addHash( "minimizer", G_MINIMIZER);
123 >  addHash( "minMaxIter", G_MIN_MAXITER);
124 >  addHash( "minWriteFrq", G_MIN_WRITEFRQ);
125 >  addHash( "minStepSize", G_MIN_STEPSIZE);
126 >  addHash( "minFTol", G_MIN_FTOL);
127 >  addHash( "minGTol", G_MIN_GTOL);
128 >  addHash( "minLSTol", G_MIN_LSTOL);
129 >  addHash( "minLSMaxIter", G_MIN_LSMAXITER);
130 >  addHash( "zconsGap", G_ZCONSGAP);
131 >  addHash( "zconsFixtime", G_ZCONSFIXTIME);
132 >  addHash( "zconsUsingSMD", G_ZCONSUSINGSMD);
133 >  addHash( "thermodynamicIntegrationLambda", G_THERM_INT_LAMBDA);
134 >  addHash( "thermodynamicIntegrationK", G_THERM_INT_K);
135  
136    strcpy( mixingRule,"standard");  //default mixing rules to standard.
137    usePBC = 1; //default  periodic boundry conditions to on
138    useRF  = 0;
139 <  useInitTime = 1; // default to pull init time from the init file
140 <  useInitXSstate = 1; // default to pull the extended state from the init file
139 >  useInitTime = 0; // default to pull init time from the init file
140 >  useInitXSstate = 0; // default to pull the extended state from the init file
141    orthoBoxTolerance = 1E-6;
142  
143    have_force_field =  0;
# Line 138 | Line 160 | Globals::Globals(){
160    have_status_time =    0;
161    have_reset_time =     0;
162    have_thermal_time =   0;
163 <  have_ecr =            0;
163 >  have_rcut =           0;
164 >  have_rsw =            0;
165    have_dielectric =     0;
166    have_tempSet =        0;
144  have_est =            0;
167    have_target_pressure =0;
168    have_q_mass =         0;
169    have_tau_thermostat = 0;
# Line 150 | Line 172 | Globals::Globals(){
172    have_n_zConstraints = 0;
173    have_zConstraints   = 0;
174    have_zcons_tol = 0;
175 +  have_zcons_gap = 0;
176 +  have_zcons_fixtime = 0;
177 +  have_zcons_using_smd = 0;  
178    have_seed = 0;
179 +  have_minimizer = 0;
180 +  have_minimizer_maxiteration = 0;
181 +  have_minimizer_writefrq = 0;
182 +  have_minimizer_stepsize = 0;
183 +  have_minimizer_ftol = 0;
184 +  have_minimizer_gtol = 0;
185 +  have_minimizer_ls_tol = 0;
186 +  have_minimizer_ls_maxiteration = 0;
187  
188   }
189  
# Line 829 | Line 862 | int Globals::globalAssign( event* the_event ){
862        }
863        break;
864        
865 <    case G_ECR:
865 >    case G_RCUT:
866        switch( the_type ){
867          
868        case STRING:
869          the_event->err_msg =
870 <          strdup( "Global error. electrostaticCutoffRadius is not a double or int.\n" );
870 >          strdup( "Global error. cutoffRadius is not a double or int.\n" );
871          return 0;
872          break;
873          
874        case DOUBLE:
875 <        ecr = the_event->evt.asmt.rhs.dval;
876 <        have_ecr = 1;
875 >        rcut = the_event->evt.asmt.rhs.dval;
876 >        have_rcut = 1;
877          return 1;
878          break;
879          
880        case INT:
881 <        ecr = (double)the_event->evt.asmt.rhs.ival;
882 <        have_ecr = 1;
881 >        rcut = (double)the_event->evt.asmt.rhs.ival;
882 >        have_rcut = 1;
883          return 1;
884          break;
885          
886        default:
887          the_event->err_msg =
888 <          strdup( "Global error. electrostaticCutoffRadius unrecognized.\n" );
888 >          strdup( "Global error. cutoffRadius unrecognized.\n" );
889          return 0;
890          break;
891        }
892        break;
893  
894 <    case G_EST:
894 >    case G_RSW:
895        switch( the_type ){
896          
897        case STRING:
898          the_event->err_msg =
899 <          strdup( "Global error. electrostaticSkinThickness is not a double or int.\n" );
899 >          strdup( "Global error. switchingRadius is not a double or int.\n" );
900          return 0;
901          break;
902          
903        case DOUBLE:
904 <        est = the_event->evt.asmt.rhs.dval;
905 <        have_est = 1;
904 >        rsw = the_event->evt.asmt.rhs.dval;
905 >        have_rsw = 1;
906          return 1;
907          break;
908          
909        case INT:
910 <        est = (double)the_event->evt.asmt.rhs.ival;
911 <        have_est = 1;
910 >        rsw = (double)the_event->evt.asmt.rhs.ival;
911 >        have_rsw = 1;
912          return 1;
913          break;
914          
915        default:
916          the_event->err_msg =
917 <          strdup( "Global error. electrostaticSkinThickness unrecognized.\n" );
917 >          strdup( "Global error. switchingRadius unrecognized.\n" );
918          return 0;
919          break;
920        }
# Line 1185 | Line 1218 | int Globals::globalAssign( event* the_event ){
1218            strdup( "Global error. zconsForcePolicy unrecognized.\n" );
1219          return 0;
1220          break;
1221 +      }
1222 +      break;
1223 +      
1224 +    case G_ZCONSGAP:
1225 +      switch( the_type ){
1226 +  
1227 +      case STRING:
1228 +        the_event->err_msg =
1229 +          strdup( "Global error. zcons_gap is not a double or int.\n" );
1230 +        return 0;
1231 +        break;
1232 +  
1233 +      case DOUBLE:
1234 +        zcons_gap = the_event->evt.asmt.rhs.dval;
1235 +        have_zcons_gap= 1;
1236 +        return 1;
1237 +        break;
1238 +  
1239 +      case INT:
1240 +        zcons_gap= (double)the_event->evt.asmt.rhs.ival;
1241 +        have_zcons_gap= 1;
1242 +        return 1;
1243 +        break;
1244 +  
1245 +      default:
1246 +        the_event->err_msg =
1247 +          strdup( "Global error. zcons_gap unrecognized.\n" );
1248 +        return 0;
1249 +        break;
1250 +      }
1251 +      break;
1252 +
1253 +    case G_ZCONSFIXTIME:
1254 +      switch( the_type ){
1255 +  
1256 +      case STRING:
1257 +        the_event->err_msg =
1258 +          strdup( "Global error. zcons_fixtime is not a double or int.\n" );
1259 +        return 0;
1260 +        break;
1261 +  
1262 +      case DOUBLE:
1263 +        zcons_fixtime= the_event->evt.asmt.rhs.dval;
1264 +        have_zcons_fixtime= 1;
1265 +        return 1;
1266 +        break;
1267 +  
1268 +      case INT:
1269 +        zcons_fixtime= (double)the_event->evt.asmt.rhs.ival;
1270 +        have_zcons_fixtime= 1;
1271 +        return 1;
1272 +        break;
1273 +  
1274 +      default:
1275 +        the_event->err_msg =
1276 +          strdup( "Global error. zcons_fixtime unrecognized.\n" );
1277 +        return 0;
1278 +        break;
1279 +      }
1280 +      break;
1281 +
1282 +    case G_ZCONSUSINGSMD:
1283 +      switch( the_type ){
1284 +  
1285 +      case STRING:
1286 +        the_event->err_msg =
1287 +          strdup( "Global error. zcons_fixtime is not an  int.\n" );
1288 +        return 0;
1289 +        break;
1290 +  
1291 +      case DOUBLE:
1292 +        the_event->err_msg =
1293 +          strdup( "Global error. zcons_fixtime is not an  int.\n" );
1294 +        return 0;
1295 +        break;
1296 +  
1297 +      case INT:
1298 +        zcons_using_smd= the_event->evt.asmt.rhs.ival;
1299 +        have_zcons_using_smd= 1;
1300 +        return 1;
1301 +        break;
1302 +  
1303 +      default:
1304 +        the_event->err_msg =
1305 +          strdup( "Global error. zcons_usingsmd unrecognized.\n" );
1306 +        return 0;
1307 +        break;
1308 +      }
1309 +      break;
1310 +      
1311 +    case G_MINIMIZER:
1312 +      switch( the_type ){
1313 +
1314 +      case STRING:
1315 +        strcpy(minimizer_name, the_event->evt.asmt.rhs.sval);
1316 +
1317 +        for(int i = 0; zconsForcePolicy[i] != '\0'; i++){
1318 +          zconsForcePolicy[i] = toupper(zconsForcePolicy[i]);
1319 +        }
1320 +        have_minimizer= 1;
1321 +        return 1;
1322 +        break;
1323 +        
1324 +      case DOUBLE:
1325 +        the_event->err_msg =
1326 +          strdup( "Global error. minimizer_name is not a double or int.\n" );
1327 +        return 0;
1328 +        break;
1329 +        
1330 +      case INT:
1331 +        the_event->err_msg =
1332 +          strdup( "Global error. minimizer_name is not a double or int.\n" );
1333 +        return 0;
1334 +        break;
1335 +        
1336 +      default:
1337 +        the_event->err_msg =
1338 +          strdup( "Global error. minimizer_name unrecognized.\n" );
1339 +        return 0;
1340 +        break;
1341 +      }
1342 +      break;
1343 +
1344 +    case G_MIN_MAXITER:
1345 +      switch( the_type ){
1346 +
1347 +      case STRING:
1348 +        the_event->err_msg =
1349 +          strdup( "Global error. minimizer_maxiteration is not a double or int.\n" );
1350 +        return 1;
1351 +        break;
1352 +        
1353 +      case DOUBLE:
1354 +        minimizer_maxiteration = the_event->evt.asmt.rhs.dval;
1355 +        have_minimizer_maxiteration = 1;
1356 +        return 1;
1357 +        break;
1358 +        
1359 +      case INT:
1360 +        minimizer_maxiteration = the_event->evt.asmt.rhs.ival;
1361 +        have_minimizer_maxiteration = 1;
1362 +        return 1;
1363 +        break;
1364 +        
1365 +      default:
1366 +        the_event->err_msg =
1367 +          strdup( "Global error. minimizer_maxiteration unrecognized.\n" );
1368 +        return 0;
1369 +        break;
1370        }
1371        break;
1372 +      
1373 +    case G_MIN_WRITEFRQ:
1374 +      switch( the_type ){
1375 +
1376 +      case STRING:
1377 +        the_event->err_msg =
1378 +          strdup( "Global error. minimizer_writefrq is not a double or int.\n" );
1379 +        return 1;
1380 +        break;
1381 +        
1382 +      case DOUBLE:
1383 +        minimizer_writefrq= the_event->evt.asmt.rhs.dval;
1384 +        have_minimizer_writefrq = 1;
1385 +        return 1;
1386 +        break;
1387 +        
1388 +      case INT:
1389 +        minimizer_writefrq= the_event->evt.asmt.rhs.ival;
1390 +        have_minimizer_writefrq = 1;
1391 +        return 1;
1392 +        break;
1393 +        
1394 +      default:
1395 +        the_event->err_msg =
1396 +          strdup( "Global error. minimizer_writefrq unrecognized.\n" );
1397 +        return 0;
1398 +        break;
1399 +      }
1400 +      break;
1401 +
1402 +    case G_MIN_STEPSIZE:
1403 +      switch( the_type ){
1404 +
1405 +      case STRING:
1406 +        the_event->err_msg =
1407 +          strdup( "Global error. minimizer_resetfrq is not a double or int.\n" );
1408 +        return 1;
1409 +        break;
1410 +        
1411 +      case DOUBLE:
1412 +        minimizer_stepsize= the_event->evt.asmt.rhs.dval;
1413 +        have_minimizer_stepsize = 1;
1414 +        return 1;
1415 +        break;
1416 +        
1417 +      case INT:
1418 +        minimizer_stepsize= the_event->evt.asmt.rhs.ival;
1419 +        have_minimizer_stepsize = 1;
1420 +        return 1;
1421 +        break;
1422 +        
1423 +      default:
1424 +        the_event->err_msg =
1425 +          strdup( "Global error. minimizer_resetfrq unrecognized.\n" );
1426 +        return 0;
1427 +        break;
1428 +      }
1429 +      break;      
1430 +
1431 +    case G_MIN_FTOL:
1432 +      switch( the_type ){
1433 +
1434 +      case STRING:
1435 +        the_event->err_msg =
1436 +          strdup( "Global error. minimizer_ftol is not a double or int.\n" );
1437 +        return 1;
1438 +        break;
1439 +        
1440 +      case DOUBLE:
1441 +        minimizer_ftol= the_event->evt.asmt.rhs.dval;
1442 +        have_minimizer_ftol = 1;
1443 +        return 1;
1444 +        break;
1445 +        
1446 +      case INT:
1447 +        minimizer_ftol= the_event->evt.asmt.rhs.ival;
1448 +        have_minimizer_ftol = 1;
1449 +        return 1;
1450 +        break;
1451 +        
1452 +      default:
1453 +        the_event->err_msg =
1454 +          strdup( "Global error. minimizer_ftol unrecognized.\n" );
1455 +        return 0;
1456 +        break;
1457 +      }
1458 +      break;
1459 +      
1460 +    case G_MIN_GTOL:
1461 +      switch( the_type ){
1462 +
1463 +      case STRING:
1464 +        the_event->err_msg =
1465 +          strdup( "Global error. minimizer_gtol is not a double or int.\n" );
1466 +        return 1;
1467 +        break;
1468 +        
1469 +      case DOUBLE:
1470 +        minimizer_gtol= the_event->evt.asmt.rhs.dval;
1471 +        have_minimizer_gtol = 1;
1472 +        return 1;
1473 +        break;
1474 +        
1475 +      case INT:
1476 +        minimizer_gtol= the_event->evt.asmt.rhs.ival;
1477 +        have_minimizer_gtol = 1;
1478 +        return 1;
1479 +        break;
1480 +        
1481 +      default:
1482 +        the_event->err_msg =
1483 +          strdup( "Global error. minimizer_gtol unrecognized.\n" );
1484 +        return 0;
1485 +        break;
1486 +      }
1487 +      break;
1488 +      
1489 +    case G_MIN_LSMAXITER:
1490 +      switch( the_type ){
1491 +
1492 +      case STRING:
1493 +        the_event->err_msg =
1494 +          strdup( "Global error. minimizer_ls_maxiteration is not a double or int.\n" );
1495 +        return 1;
1496 +        break;
1497 +        
1498 +      case DOUBLE:
1499 +        minimizer_ls_maxiteration = the_event->evt.asmt.rhs.dval;
1500 +        have_minimizer_ls_maxiteration = 1;
1501 +        return 1;
1502 +        break;
1503 +        
1504 +      case INT:
1505 +        minimizer_ls_maxiteration = the_event->evt.asmt.rhs.ival;
1506 +        have_minimizer_ls_maxiteration = 1;
1507 +        return 1;
1508 +        break;
1509 +        
1510 +      default:
1511 +        the_event->err_msg =
1512 +          strdup( "Global error. minimizer_ls_maxiteration unrecognized.\n" );
1513 +        return 0;
1514 +        break;
1515 +      }
1516 +      break;      
1517 +
1518 +    case G_MIN_LSTOL:
1519 +      switch( the_type ){
1520 +
1521 +      case STRING:
1522 +        the_event->err_msg =
1523 +          strdup( "Global error. minimizer_ls_tol is not a double or int.\n" );
1524 +        return 1;
1525 +        break;
1526 +        
1527 +      case DOUBLE:
1528 +        minimizer_ls_tol= the_event->evt.asmt.rhs.dval;
1529 +        have_minimizer_ls_tol = 1;
1530 +        return 1;
1531 +        break;
1532 +        
1533 +      case INT:
1534 +        minimizer_ls_tol= the_event->evt.asmt.rhs.ival;
1535 +        have_minimizer_ls_tol = 1;
1536 +        return 1;
1537 +        break;
1538 +        
1539 +      default:
1540 +        the_event->err_msg =
1541 +          strdup( "Global error. minimizer_ls_tol unrecognized.\n" );
1542 +        return 0;
1543 +        break;
1544 +      }
1545 +      break;
1546 +      
1547        // add more token cases here.
1548      case G_SEED:
1549        switch( the_type ){
# Line 1217 | Line 1574 | int Globals::globalAssign( event* the_event ){
1574          break;
1575        }
1576        break;
1577 +
1578 +    case G_THERM_INT_LAMBDA:
1579 +      switch( the_type ){
1580 +        
1581 +      case STRING:
1582 +        the_event->err_msg =
1583 +          strdup( "Global error. thermodynamicIntegrationLambda is not a double or int.\n" );
1584 +        return 1;
1585 +        break;
1586 +        
1587 +      case DOUBLE:
1588 +        thermodynamic_integration_lambda = the_event->evt.asmt.rhs.dval;
1589 +        have_thermodynamic_integration_lambda = 1;
1590 +        return 1;
1591 +        break;
1592 +        
1593 +      case INT:
1594 +        thermodynamic_integration_lambda = (double)the_event->evt.asmt.rhs.dval;
1595 +        have_thermodynamic_integration_lambda = 1;
1596 +        return 1;
1597 +        break;
1598 +        
1599 +      default:
1600 +        the_event->err_msg =
1601 +          strdup( "Global error. thermodynamicIntegrationLambda unrecognized.\n" );
1602 +        return 0;
1603 +        break;
1604 +      }
1605 +      break;      
1606 +
1607 +    case G_THERM_INT_K:
1608 +      switch( the_type ){
1609 +        
1610 +      case STRING:
1611 +        the_event->err_msg =
1612 +          strdup( "Global error. thermodynamicIntegrationK is not a double or int.\n" );
1613 +        return 1;
1614 +        break;
1615 +        
1616 +      case DOUBLE:
1617 +        thermodynamic_integration_k = the_event->evt.asmt.rhs.dval;
1618 +        have_thermodynamic_integration_k = 1;
1619 +        return 1;
1620 +        break;
1621 +        
1622 +      case INT:
1623 +        thermodynamic_integration_k = (double)the_event->evt.asmt.rhs.dval;
1624 +        have_thermodynamic_integration_k = 1;
1625 +        return 1;
1626 +        break;
1627 +        
1628 +      default:
1629 +        the_event->err_msg =
1630 +          strdup( "Global error. thermodynamicIntegrationK unrecognized.\n" );
1631 +        return 0;
1632 +        break;
1633 +      }
1634 +      break;      
1635        // add more token cases here.
1636  
1637      }
# Line 1279 | Line 1694 | char* Globals::checkMe( void ){
1694      have_err= 1;
1695    }
1696    
1697 <  if( !have_ensemble ){
1698 <    strcat( err, "\t->ensemble\n" );
1699 <    have_err= 1;
1700 <  }
1697 >  if(!have_minimizer)
1698 >    if( !have_ensemble ){
1699 >      strcat( err, "\t->ensemble\n" );
1700 >      have_err= 1;
1701 >    }
1702    
1703    if( !have_dt ){
1704      strcat( err, "\t->dt\n" );

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines