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 676 by tim, Mon Aug 11 19:40:06 2003 UTC vs.
Revision 693 by tim, Wed Aug 13 19:21:53 2003 UTC

# Line 5 | Line 5
5   #include <string>
6  
7   #include "SimSetup.hpp"
8 + #include "ReadWrite.hpp"
9   #include "parse_me.h"
10   #include "Integrator.hpp"
11   #include "simError.h"
# Line 96 | Line 97 | void SimSetup::createSim(void){
97    int i, j, k, globalAtomIndex;
98    
99    // gather all of the information from the Bass file
100 <  
100 >
101    gatherInfo();
102  
103    // creation of complex system objects
# Line 104 | Line 105 | void SimSetup::createSim(void){
105    sysObjectsCreation();
106  
107    // check on the post processing info
108 <  
108 >
109    finalInfoCheck();
110  
111    // initialize the system coordinates
# Line 888 | Line 889 | void SimSetup::initSystemCoords( void ){
889   void SimSetup::initSystemCoords( void ){
890    int i;
891    
892 <  std::cerr << "Setting atom Coords\n";
892 >  char* inName;
893  
894 +
895    (info[0].getConfiguration())->createArrays( info[0].n_atoms );
896    
897    for(i=0; i<info[0].n_atoms; i++) info[0].atoms[i]->setCoords();
# Line 900 | Line 902 | void SimSetup::initSystemCoords( void ){
902   #ifdef IS_MPI // is_mpi
903      if( worldRank == 0 ){
904   #endif //is_mpi
905 <      fileInit = new InitializeFromFile( globals->getInitialConfig() );
905 >      inName = globals->getInitialConfig();
906 >      double* tempDouble = new double[1000000];
907 >      fileInit = new InitializeFromFile( inName );
908   #ifdef IS_MPI
909      }else fileInit = new InitializeFromFile( NULL );
910   #endif
# Line 1033 | Line 1037 | void SimSetup::sysObjectsCreation( void ){
1037    int i,k;
1038    
1039    // create the forceField
1040 <  
1040 >
1041    createFF();
1042  
1043    // extract componentList
# Line 1051 | Line 1055 | void SimSetup::sysObjectsCreation( void ){
1055   #endif //is_mpi
1056    
1057    // create the atom and SRI arrays. Also initialize Molecule Stamp ID's
1058 <  
1058 >
1059    makeSysArrays();
1060  
1061    // make and initialize the molecules (all but atomic coordinates)
1062 <  
1062 >
1063    makeMolecules();
1064    
1065    for(k=0; k<nInfo; k++){
# Line 1358 | Line 1362 | void SimSetup::makeIntegrator( void ){
1362      switch( ensembleCase ){
1363        
1364      case NVE_ENS:
1365 <        if (haveZConstraint){
1366 <         setupZConstraint();
1365 >        if (globals->haveZconstraints()){
1366 >         setupZConstraint(info[k]);
1367             new ZConstraint<NVE<RealIntegrator> >( &(info[k]), the_ff );
1368          }
1369  
# Line 1368 | Line 1372 | void SimSetup::makeIntegrator( void ){
1372        break;
1373        
1374      case NVT_ENS:
1375 <        if (haveZConstraint){
1376 <         setupZConstraint();
1375 >        if (globals->haveZconstraints()){
1376 >         setupZConstraint(info[k]);
1377             myNVT = new ZConstraint<NVT<RealIntegrator> >( &(info[k]), the_ff );
1378          }
1379          else
# Line 1390 | Line 1394 | void SimSetup::makeIntegrator( void ){
1394        break;
1395        
1396      case NPTi_ENS:
1397 <        if (haveZConstraint){
1398 <         setupZConstraint();
1397 >        if (globals->haveZconstraints()){
1398 >         setupZConstraint(info[k]);
1399             myNPTi = new ZConstraint<NPTi<RealIntegrator> >( &(info[k]), the_ff );
1400          }
1401          else
# Line 1431 | Line 1435 | void SimSetup::makeIntegrator( void ){
1435        break;
1436        
1437      case NPTf_ENS:
1438 <        if (haveZConstraint){
1439 <         setupZConstraint();
1438 >        if (globals->haveZconstraints()){
1439 >         setupZConstraint(info[k]);
1440             myNPTf = new ZConstraint<NPTf<RealIntegrator> >( &(info[k]), the_ff );
1441          }
1442          else
# Line 1472 | Line 1476 | void SimSetup::makeIntegrator( void ){
1476        break;
1477        
1478      case NPTim_ENS:
1479 <        if (haveZConstraint){
1480 <         setupZConstraint();
1479 >        if (globals->haveZconstraints()){
1480 >         setupZConstraint(info[k]);
1481             myNPTim = new ZConstraint<NPTim<RealIntegrator> >( &(info[k]), the_ff );
1482          }
1483          else
# Line 1513 | Line 1517 | void SimSetup::makeIntegrator( void ){
1517        break;
1518        
1519      case NPTfm_ENS:
1520 <        if (haveZConstraint){
1521 <         setupZConstraint();
1520 >        if (globals->haveZconstraints()){
1521 >         setupZConstraint(info[k]);
1522             myNPTfm = new ZConstraint<NPTfm<RealIntegrator> >( &(info[k]), the_ff );
1523          }
1524          else
# Line 1589 | Line 1593 | void SimSetup::setupZConstraint()
1593  
1594   }
1595  
1596 < void SimSetup::setupZConstraint()
1596 > void SimSetup::setupZConstraint(SimInfo& theInfo)
1597   {
1598 <  int k;
1599 <
1600 <  for(k=0; k<nInfo; k++){
1601 <    
1598 <    if(globals->haveZConsTime()){  
1598 >    int nZConstraints;
1599 >    ZconStamp** zconStamp;
1600 >        
1601 >    if(globals->haveZconstraintTime()){  
1602        
1603        //add sample time of z-constraint  into SimInfo's property list                    
1604        DoubleData* zconsTimeProp = new DoubleData();
1605 <      zconsTimeProp->setID("zconstime");
1606 <      zconsTimeProp->setData(globals->getZConsTime());
1607 <      info[k].addProperty(zconsTimeProp);
1605 >      zconsTimeProp->setID(ZCONSTIME_ID);
1606 >      zconsTimeProp->setData(globals->getZconsTime());
1607 >      theInfo.addProperty(zconsTimeProp);
1608      }
1609      else{
1610        sprintf( painCave.errMsg,
# Line 1610 | Line 1613 | void SimSetup::setupZConstraint()
1613        painCave.isFatal = 1;
1614        simError();      
1615      }
1616 <    
1617 <    if(globals->haveIndexOfAllZConsMols()){
1618 <
1619 <      //add index of z-constraint molecules into SimInfo's property list
1620 <      vector<int> tempIndex = globals->getIndexOfAllZConsMols();
1621 <      
1622 <      //sort the index
1623 <      sort(tempIndex.begin(), tempIndex.end());
1624 <      
1625 <      IndexData* zconsIndex = new IndexData();
1626 <      zconsIndex->setID("zconsindex");
1627 <      zconsIndex->setIndexData(tempIndex);
1628 <      info[k].addProperty(zconsIndex);
1616 >
1617 >    //
1618 >    nZConstraints = globals->getNzConstraints();
1619 >    theInfo.nZconstraints = nZConstraints;
1620 >        
1621 >    zconStamp = globals->getZconStamp();
1622 >    ZConsParaItem tempParaItem;
1623 >
1624 >    ZConsParaData* zconsParaData = new ZConsParaData();
1625 >    zconsParaData->setID(ZCONSPARADATA_ID);
1626 >  
1627 >    for(int i = 0; i < nZConstraints; i++){
1628 >    tempParaItem.havingZPos = zconStamp[i]->haveZpos();
1629 >    tempParaItem.zPos = zconStamp[i]->getZpos();
1630 >    tempParaItem.zconsIndex = zconStamp[i]->getMolIndex();
1631 >    tempParaItem.kRatio = zconStamp[i]->getKratio();
1632 >
1633 >    zconsParaData->addItem(tempParaItem);
1634      }
1635 <    else{
1636 <      sprintf( painCave.errMsg,
1637 <               "SimSetup error: If you use an ZConstraint\n"
1638 <               " , you must set index of z-constraint molecules.\n");
1639 <      painCave.isFatal = 1;
1640 <      simError();    
1641 <      
1635 >
1636 >    //sort the parameters by index of molecules
1637 >    zconsParaData->sortByIndex();
1638 >        
1639 >    //push data into siminfo, therefore, we can retrieve later
1640 >    theInfo.addProperty(zconsParaData);
1641 >
1642 >    //push zconsTol into siminfo, if user does not specify
1643 >    //value for zconsTol, a default value will be used
1644 >    DoubleData* zconsTol = new DoubleData();
1645 >    zconsTol->setID(ZCONSTOL_ID);
1646 >    if(globals->haveZconsTol()){
1647 >      zconsTol->setData(globals->getZconsTol());
1648      }
1649 <    
1649 >         else{
1650 >                double defaultZConsTol = 1E-6;
1651 >      sprintf( painCave.errMsg,
1652 >               "ZConstraint Waring: Tolerance for z-constraint methodl is not specified\n"
1653 >               " , default value %f is used.\n", defaultZConsTol);
1654 >      painCave.isFatal = 0;
1655 >      simError();      
1656 >
1657 >      zconsTol->setData(defaultZConsTol);
1658 >         }
1659 >    theInfo.addProperty(zconsTol);
1660 >        
1661      //Determine the name of ouput file and add it into SimInfo's property list
1662      //Be careful, do not use inFileName, since it is a pointer which
1663      //point to a string at master node, and slave nodes do not contain that string
1664      
1665 <    string zconsOutput(info[k].finalName);
1665 >    string zconsOutput(theInfo.finalName);
1666      
1667      zconsOutput = zconsOutput.substr(0, zconsOutput.rfind(".")) + ".fz";
1668      
1669      StringData* zconsFilename = new StringData();
1670 <    zconsFilename->setID("zconsfilename");
1670 >    zconsFilename->setID(ZCONSFILENAME_ID);
1671      zconsFilename->setData(zconsOutput);
1672      
1673 <    info[k].addProperty(zconsFilename);      
1649 <  }
1673 >    theInfo.addProperty(zconsFilename);      
1674   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines