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

Comparing trunk/OOPSE/libmdtools/SimSetup.cpp (file contents):
Revision 670 by mmeineke, Thu Aug 7 21:47:18 2003 UTC vs.
Revision 676 by tim, Mon Aug 11 19:40:06 2003 UTC

# Line 22 | Line 22
22   #define NPTf_ENS       3
23   #define NPTim_ENS      4
24   #define NPTfm_ENS      5
25 #define NVEZCONS_ENS   6
26 #define NVTZCONS_ENS   7
27 #define NPTiZCONS_ENS  8
28 #define NPTfZCONS_ENS  9
29 #define NPTimZCONS_ENS 10
30 #define NPTfmZCONS_ENS 11
25  
26   #define FF_DUFF 0
27   #define FF_LJ   1
# Line 639 | Line 633 | void SimSetup::gatherInfo( void ){
633    else if( !strcasecmp( ensemble, "NPTf" )) ensembleCase = NPTf_ENS;
634    else if( !strcasecmp( ensemble, "NPTim" )) ensembleCase = NPTim_ENS;
635    else if( !strcasecmp( ensemble, "NPTfm" )) ensembleCase = NPTfm_ENS;
642
643  else if( !strcasecmp( ensemble, "NVEZCONS")) ensembleCase = NVEZCONS_ENS;
644  else if( !strcasecmp( ensemble, "NVTZCONS"))  ensembleCase = NVTZCONS_ENS;
645  else if( !strcasecmp( ensemble, "NPTiZCONS") || !strcasecmp( ensemble, "NPTZCONS"))
646    ensembleCase = NPTiZCONS_ENS;
647  else if( !strcasecmp( ensemble, "NPTfZCONS"))  ensembleCase = NPTfZCONS_ENS;
648  else if( !strcasecmp( ensemble, "NPTimZCONS"))  ensembleCase = NPTimZCONS_ENS;
649  else if( !strcasecmp( ensemble, "NPTfmZCONS"))  ensembleCase = NPTfmZCONS_ENS;
650  
636    else{
637      sprintf( painCave.errMsg,
638               "SimSetup Warning. Unrecognized Ensemble -> %s, "
# Line 1367 | Line 1352 | void SimSetup::makeIntegrator( void ){
1352    NPTf<RealIntegrator>* myNPTf = NULL;
1353    NPTim<RealIntegrator>* myNPTim = NULL;
1354    NPTfm<RealIntegrator>* myNPTfm = NULL;
1370  ZConstraint<NVE<RealIntegrator> >* myNVEZCons = NULL;
1371  ZConstraint<NVT<RealIntegrator> >* myNVTZCons = NULL;
1372  ZConstraint<NPTi<RealIntegrator> >* myNPTiZCons = NULL;
1373  ZConstraint<NPTf<RealIntegrator> >* myNPTfZCons = NULL;
1374  ZConstraint<NPTim<RealIntegrator> >* myNPTimZCons = NULL;
1375  ZConstraint<NPTfm<RealIntegrator> >* myNPTfmZCons = NULL;
1355          
1356    for(k=0; k<nInfo; k++){
1357      
1358      switch( ensembleCase ){
1359        
1360      case NVE_ENS:
1361 <      new NVE<RealIntegrator>( &(info[k]), the_ff );
1361 >        if (haveZConstraint){
1362 >         setupZConstraint();
1363 >           new ZConstraint<NVE<RealIntegrator> >( &(info[k]), the_ff );
1364 >        }
1365 >
1366 >        else
1367 >        new NVE<RealIntegrator>( &(info[k]), the_ff );
1368        break;
1369        
1370      case NVT_ENS:
1371 <      myNVT = new NVT<RealIntegrator>( &(info[k]), the_ff );
1371 >        if (haveZConstraint){
1372 >         setupZConstraint();
1373 >           myNVT = new ZConstraint<NVT<RealIntegrator> >( &(info[k]), the_ff );
1374 >        }
1375 >        else
1376 >        myNVT = new NVT<RealIntegrator>( &(info[k]), the_ff );
1377 >
1378        myNVT->setTargetTemp(globals->getTargetTemp());
1379        
1380        if (globals->haveTauThermostat())
# Line 1399 | Line 1390 | void SimSetup::makeIntegrator( void ){
1390        break;
1391        
1392      case NPTi_ENS:
1393 <      myNPTi = new NPTi<RealIntegrator>( &(info[k]), the_ff );
1394 <      myNPTi->setTargetTemp( globals->getTargetTemp() );
1393 >        if (haveZConstraint){
1394 >         setupZConstraint();
1395 >           myNPTi = new ZConstraint<NPTi<RealIntegrator> >( &(info[k]), the_ff );
1396 >        }
1397 >        else
1398 >        myNPTi = new NPTi<RealIntegrator>( &(info[k]), the_ff );
1399 >
1400 >        myNPTi->setTargetTemp( globals->getTargetTemp() );
1401        
1402        if (globals->haveTargetPressure())
1403          myNPTi->setTargetPressure(globals->getTargetPressure());
# Line 1434 | Line 1431 | void SimSetup::makeIntegrator( void ){
1431        break;
1432        
1433      case NPTf_ENS:
1434 <      myNPTf = new NPTf<RealIntegrator>( &(info[k]), the_ff );
1434 >        if (haveZConstraint){
1435 >         setupZConstraint();
1436 >           myNPTf = new ZConstraint<NPTf<RealIntegrator> >( &(info[k]), the_ff );
1437 >        }
1438 >        else
1439 >        myNPTf = new NPTf<RealIntegrator>( &(info[k]), the_ff );
1440 >
1441        myNPTf->setTargetTemp( globals->getTargetTemp());
1442        
1443        if (globals->haveTargetPressure())
# Line 1469 | Line 1472 | void SimSetup::makeIntegrator( void ){
1472        break;
1473        
1474      case NPTim_ENS:
1475 <      myNPTim = new NPTim<RealIntegrator>( &(info[k]), the_ff );
1476 <      myNPTim->setTargetTemp( globals->getTargetTemp());
1475 >        if (haveZConstraint){
1476 >         setupZConstraint();
1477 >           myNPTim = new ZConstraint<NPTim<RealIntegrator> >( &(info[k]), the_ff );
1478 >        }
1479 >        else
1480 >        myNPTim = new NPTim<RealIntegrator>( &(info[k]), the_ff );
1481 >
1482 >        myNPTim->setTargetTemp( globals->getTargetTemp());
1483        
1484        if (globals->haveTargetPressure())
1485          myNPTim->setTargetPressure(globals->getTargetPressure());
# Line 1504 | Line 1513 | void SimSetup::makeIntegrator( void ){
1513        break;
1514        
1515      case NPTfm_ENS:
1516 <      myNPTfm = new NPTfm<RealIntegrator>( &(info[k]), the_ff );
1517 <      myNPTfm->setTargetTemp( globals->getTargetTemp());
1516 >        if (haveZConstraint){
1517 >         setupZConstraint();
1518 >           myNPTfm = new ZConstraint<NPTfm<RealIntegrator> >( &(info[k]), the_ff );
1519 >        }
1520 >        else
1521 >        myNPTfm = new NPTfm<RealIntegrator>( &(info[k]), the_ff );
1522 >
1523 >        myNPTfm->setTargetTemp( globals->getTargetTemp());
1524        
1525        if (globals->haveTargetPressure())
1526          myNPTfm->setTargetPressure(globals->getTargetPressure());
# Line 1529 | Line 1544 | void SimSetup::makeIntegrator( void ){
1544        
1545        if( globals->haveTauBarostat() )
1546          myNPTfm->setTauBarostat( globals->getTauBarostat() );
1532      else{
1533        sprintf( painCave.errMsg,
1534                 "SimSetup error: If you use an NPT\n"
1535                 "    ensemble, you must set tauBarostat.\n");
1536        painCave.isFatal = 1;
1537        simError();
1538      }
1539      break;
1540      
1541    case NVEZCONS_ENS:
1542      
1543      
1544      //setup index of z-constraint molecules, z-constraint sampel time
1545      //and z-constraint force output name. These parameter should be known
1546      //before constructing the z-constraint integrator
1547      setupZConstraint();
1548      
1549      myNVEZCons = new ZConstraint<NVE<RealIntegrator> >( &(info[k]), the_ff );
1550      
1551      break;
1552      
1553      
1554    case NVTZCONS_ENS:
1555      
1556      setupZConstraint();
1557      
1558      myNVTZCons = new ZConstraint<NVT<RealIntegrator> >( &(info[k]), the_ff );
1559      myNVTZCons->setTargetTemp(globals->getTargetTemp());
1560      
1561      if (globals->haveTauThermostat())
1562        myNVTZCons->setTauThermostat(globals->getTauThermostat());
1563      
1564      else {
1565        sprintf( painCave.errMsg,
1566                 "SimSetup error: If you use the NVT\n"
1567                 "    ensemble, you must set tauThermostat.\n");
1568        painCave.isFatal = 1;
1569        simError();
1570      }    
1571      break;    
1572      
1573    case NPTiZCONS_ENS:
1574      
1575      setupZConstraint();
1576      
1577      myNPTiZCons = new ZConstraint<NPTi<RealIntegrator> >( &(info[k]), the_ff );
1578      myNPTiZCons->setTargetTemp( globals->getTargetTemp() );
1579      
1580      if (globals->haveTargetPressure())
1581        myNPTiZCons->setTargetPressure(globals->getTargetPressure());
1582      else {
1583        sprintf( painCave.errMsg,
1584                 "SimSetup error: If you use a constant pressure\n"
1585                 "    ensemble, you must set targetPressure in the BASS file.\n");
1586        painCave.isFatal = 1;
1587        simError();
1588      }
1589      
1590      if( globals->haveTauThermostat() )
1591        myNPTiZCons->setTauThermostat( globals->getTauThermostat() );
1547        else{
1548          sprintf( painCave.errMsg,
1549                   "SimSetup error: If you use an NPT\n"
1595                 "    ensemble, you must set tauThermostat.\n");
1596        painCave.isFatal = 1;
1597        simError();
1598      }
1599      
1600      if( globals->haveTauBarostat() )
1601        myNPTiZCons->setTauBarostat( globals->getTauBarostat() );
1602      else{
1603        sprintf( painCave.errMsg,
1604                 "SimSetup error: If you use an NPT\n"
1550                   "    ensemble, you must set tauBarostat.\n");
1551          painCave.isFatal = 1;
1552          simError();
1608      }  
1609      
1610      break;
1611      
1612    case NPTfZCONS_ENS:
1613      
1614      setupZConstraint();
1615      
1616      myNPTfZCons = new ZConstraint<NPTf<RealIntegrator> >( &(info[k]), the_ff );
1617      myNPTfZCons->setTargetTemp( globals->getTargetTemp());
1618      
1619      if (globals->haveTargetPressure())
1620        myNPTfZCons->setTargetPressure(globals->getTargetPressure());
1621      else {
1622        sprintf( painCave.errMsg,
1623                 "SimSetup error: If you use a constant pressure\n"
1624                 "    ensemble, you must set targetPressure in the BASS file.\n");
1625        painCave.isFatal = 1;
1626        simError();
1627      }    
1628      
1629      if( globals->haveTauThermostat() )
1630        myNPTfZCons->setTauThermostat( globals->getTauThermostat() );
1631      else{
1632        sprintf( painCave.errMsg,
1633                 "SimSetup error: If you use an NPT\n"
1634                 "    ensemble, you must set tauThermostat.\n");
1635        painCave.isFatal = 1;
1636        simError();
1553        }
1638      
1639      if( globals->haveTauBarostat() )
1640        myNPTfZCons->setTauBarostat( globals->getTauBarostat() );
1641      else{
1642        sprintf( painCave.errMsg,
1643                 "SimSetup error: If you use an NPT\n"
1644                 "    ensemble, you must set tauBarostat.\n");
1645        painCave.isFatal = 1;
1646        simError();
1647      }  
1648      
1649      break;  
1650      
1651    case NPTimZCONS_ENS:
1652      
1653      setupZConstraint();
1654      
1655      myNPTimZCons = new ZConstraint<NPTim<RealIntegrator> >( &(info[k]), the_ff );
1656      myNPTimZCons->setTargetTemp( globals->getTargetTemp());
1657      
1658      if (globals->haveTargetPressure())
1659        myNPTimZCons->setTargetPressure(globals->getTargetPressure());
1660      else {
1661        sprintf( painCave.errMsg,
1662                 "SimSetup error: If you use a constant pressure\n"
1663                 "    ensemble, you must set targetPressure in the BASS file.\n");
1664        painCave.isFatal = 1;
1665        simError();
1666      }
1667      
1668      if( globals->haveTauThermostat() )
1669        myNPTimZCons->setTauThermostat( globals->getTauThermostat() );
1670      else{
1671        sprintf( painCave.errMsg,
1672                 "SimSetup error: If you use an NPT\n"
1673                 "    ensemble, you must set tauThermostat.\n");
1674        painCave.isFatal = 1;
1675        simError();
1676      }
1677      
1678      if( globals->haveTauBarostat() )
1679        myNPTimZCons->setTauBarostat( globals->getTauBarostat() );
1680      else{
1681        sprintf( painCave.errMsg,
1682                 "SimSetup error: If you use an NPT\n"
1683                 "    ensemble, you must set tauBarostat.\n");
1684        painCave.isFatal = 1;
1685        simError();
1686      }  
1687      
1554        break;
1555        
1690    case NPTfmZCONS_ENS:
1691      
1692      setupZConstraint();
1693      
1694      myNPTfmZCons = new ZConstraint<NPTfm<RealIntegrator> >( &(info[k]), the_ff );
1695      myNPTfmZCons->setTargetTemp( globals->getTargetTemp());
1696      
1697      if (globals->haveTargetPressure())
1698        myNPTfmZCons->setTargetPressure(globals->getTargetPressure());
1699      else {
1700        sprintf( painCave.errMsg,
1701                 "SimSetup error: If you use a constant pressure\n"
1702                 "    ensemble, you must set targetPressure in the BASS file.\n");
1703        painCave.isFatal = 1;
1704        simError();
1705      }
1706      
1707      if( globals->haveTauThermostat() )
1708        myNPTfmZCons->setTauThermostat( globals->getTauThermostat() );
1709      else{
1710        sprintf( painCave.errMsg,
1711                 "SimSetup error: If you use an NPT\n"
1712                 "    ensemble, you must set tauThermostat.\n");
1713        painCave.isFatal = 1;
1714        simError();
1715      }
1716      
1717      if( globals->haveTauBarostat() )
1718        myNPTfmZCons->setTauBarostat( globals->getTauBarostat() );
1719      else{
1720        sprintf( painCave.errMsg,
1721                 "SimSetup error: If you use an NPT\n"
1722                 "    ensemble, you must set tauBarostat.\n");
1723        painCave.isFatal = 1;
1724        simError();
1725      }    
1726      break;      
1727      
1728      
1729      
1556      default:
1557        sprintf( painCave.errMsg,
1558                 "SimSetup Error. Unrecognized ensemble in case statement.\n");

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines