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 557 by mmeineke, Thu Jun 19 19:11:53 2003 UTC vs.
Revision 580 by gezelter, Wed Jul 9 13:56:36 2003 UTC

# Line 16 | Line 16
16  
17   #define NVE_ENS 0
18   #define NVT_ENS 1
19 < #define NPT_ENS 2
19 > #define NPTi_ENS 2
20 > #define NPTf_ENS 3
21  
22   #define FF_DUFF 0
23   #define FF_LJ   1
# Line 97 | Line 98 | void SimSetup::createSim( void ){
98    n_components = the_globals->getNComponents();
99    strcpy( force_field, the_globals->getForceField() );
100  
101 <  if( !strcasecmp( force_field, "DUFF" ))    ffCase = FF_DUFF;
101 >  if( !strcasecmp( force_field, "DUFF" )) ffCase = FF_DUFF;
102    else if( !strcasecmp( force_field, "LJ" )) ffCase = FF_LJ;
103    else{
104      sprintf( painCave.errMsg,
# Line 110 | Line 111 | void SimSetup::createSim( void ){
111    // get the ensemble:
112    strcpy( ensemble, the_globals->getEnsemble() );
113  
114 <  if( !strcasecmp( ensemble, "NVE" ))      ffCase = NVE_ENS;
115 <  else if( !strcasecmp( ensemble, "NVT" )) ffCase = NVT_ENS;
116 <  else if( !strcasecmp( ensemble, "NPT" )) ffCase = NPT_ENS;
114 >  if( !strcasecmp( ensemble, "NVE" ))      ensembleCase = NVE_ENS;
115 >  else if( !strcasecmp( ensemble, "NVT" )) ensembleCase = NVT_ENS;
116 >  else if( !strcasecmp( ensemble, "NPTi" ) || !strcasecmp( ensemble, "NPT") )
117 >    ensembleCase = NPTi_ENS;
118 >  else if( !strcasecmp( ensemble, "NPTf" )) ensembleCase = NPTf_ENS;
119    else{
120      sprintf( painCave.errMsg,
121               "SimSetup Warning. Unrecognized Ensemble -> %s, "
# Line 193 | Line 196 | void SimSetup::createSim( void ){
196      break;
197  
198    case FF_LJ:
199 <    the_ff = LJFF();
199 >    the_ff = new LJFF();
200      break;
201  
202    default:
# Line 479 | Line 482 | void SimSetup::createSim( void ){
482  
483    // get some of the tricky things that may still be in the globals
484  
485 <  
485 >  double boxVector[3];
486    if( the_globals->haveBox() ){
487 <    simnfo->box_x = the_globals->getBox();
488 <    simnfo->box_y = the_globals->getBox();
489 <    simnfo->box_z = the_globals->getBox();
487 >    boxVector[0] = the_globals->getBox();
488 >    boxVector[1] = the_globals->getBox();
489 >    boxVector[2] = the_globals->getBox();
490 >    
491 >    simnfo->setBox( boxVector );
492    }
493    else if( the_globals->haveDensity() ){
494  
495      double vol;
496      vol = (double)tot_nmol / the_globals->getDensity();
497 <    simnfo->box_x = pow( vol, ( 1.0 / 3.0 ) );
498 <    simnfo->box_y = simnfo->box_x;
499 <    simnfo->box_z = simnfo->box_x;
497 >     boxVector[0] = pow( vol, ( 1.0 / 3.0 ) );
498 >     boxVector[1] = boxVector[0];
499 >     boxVector[2] = boxVector[0];
500 >
501 >    simnfo->setBox( boxVector );
502    }
503    else{
504      if( !the_globals->haveBoxX() ){
# Line 500 | Line 507 | void SimSetup::createSim( void ){
507        painCave.isFatal = 1;
508        simError();
509      }
510 <    simnfo->box_x = the_globals->getBoxX();
510 >    boxVector[0] = the_globals->getBoxX();
511  
512      if( !the_globals->haveBoxY() ){
513        sprintf( painCave.errMsg,
# Line 508 | Line 515 | void SimSetup::createSim( void ){
515        painCave.isFatal = 1;
516        simError();
517      }
518 <    simnfo->box_y = the_globals->getBoxY();
518 >    boxVector[1] = the_globals->getBoxY();
519  
520      if( !the_globals->haveBoxZ() ){
521        sprintf( painCave.errMsg,
# Line 516 | Line 523 | void SimSetup::createSim( void ){
523        painCave.isFatal = 1;
524        simError();
525      }
526 <    simnfo->box_z = the_globals->getBoxZ();
526 >    boxVector[2] = the_globals->getBoxZ();
527 >
528 >    simnfo->setBox( boxVector );
529    }
530  
531   #ifdef IS_MPI
# Line 546 | Line 555 | void SimSetup::createSim( void ){
555        painCave.isFatal = 0;
556        simError();
557        double smallest;
558 <      smallest = simnfo->box_x;
559 <      if (simnfo->box_y <= smallest) smallest = simnfo->box_y;
560 <      if (simnfo->box_z <= smallest) smallest = simnfo->box_z;
558 >      smallest = simnfo->boxLx;
559 >      if (simnfo->boxLy <= smallest) smallest = simnfo->boxLy;
560 >      if (simnfo->boxLz <= smallest) smallest = simnfo->boxLz;
561        simnfo->ecr = 0.5 * smallest;
562      } else {
563        simnfo->ecr        = the_globals->getECR();
# Line 586 | Line 595 | void SimSetup::createSim( void ){
595          painCave.isFatal = 0;
596          simError();
597          double smallest;
598 <        smallest = simnfo->box_x;
599 <        if (simnfo->box_y <= smallest) smallest = simnfo->box_y;
600 <        if (simnfo->box_z <= smallest) smallest = simnfo->box_z;
598 >        smallest = simnfo->boxLx;
599 >        if (simnfo->boxLy <= smallest) smallest = simnfo->boxLy;
600 >        if (simnfo->boxLz <= smallest) smallest = simnfo->boxLz;
601          simnfo->ecr = 0.5 * smallest;
602        } else {
603          simnfo->ecr        = the_globals->getECR();
# Line 768 | Line 777 | void SimSetup::createSim( void ){
777  
778  
779    // make the integrator
780 +  
781 +  
782 +  NVT* myNVT = NULL;
783 +  switch( ensembleCase ){
784  
785 +  case NVE_ENS:
786 +    new NVE( simnfo, the_ff );
787 +    break;
788  
789 <  if( !strcmp( ensemble, "TraPPE_Ex" ) ){
790 <    new Symplectic(simnfo, the_ff, the_extendedsystem);
791 <  }
792 <  else if( !strcmp( force_field, "LJ" ) ){
793 <    new Verlet( *simnfo, the_ff, the_extendedsystem );
789 >  case NVT_ENS:
790 >    myNVT = new NVT( simnfo, the_ff );
791 >    myNVT->setTargetTemp(the_globals->getTargetTemp());
792 >
793 >    if (the_globals->haveTauThermostat())
794 >      myNVT->setTauThermostat(the_globals->getTauThermostat());
795 > //     else if (the_globals->haveQmass())
796 > //       myNVT->setQmass(the_globals->getQmass());
797 >    else {
798 >      sprintf( painCave.errMsg,
799 >               "SimSetup error: If you use the NVT\n"
800 >               "    ensemble, you must set either tauThermostat or qMass.\n"
801 >               "    Neither of these was found in the BASS file.\n");
802 >      painCave.isFatal = 1;
803 >      simError();
804 >    }
805 >    break;
806 >
807 >  default:
808 >    sprintf( painCave.errMsg,
809 >             "SimSetup Error. Unrecognized ensemble in case statement.\n");
810 >    painCave.isFatal = 1;
811 >    simError();
812    }
813 +
814  
815   #ifdef IS_MPI
816    mpiSim->mpiRefresh();
# Line 1089 | Line 1124 | void SimSetup::initFromBass( void ){
1124      have_extra =1;
1125  
1126      n_cells = (int)temp3 - 1;
1127 <    cellx = simnfo->box_x / temp3;
1128 <    celly = simnfo->box_y / temp3;
1129 <    cellz = simnfo->box_z / temp3;
1127 >    cellx = simnfo->boxLx / temp3;
1128 >    celly = simnfo->boxLy / temp3;
1129 >    cellz = simnfo->boxLz / temp3;
1130      n_extra = tot_nmol - ( 4 * n_cells * n_cells * n_cells );
1131      temp1 = ((double)n_extra) / ( pow( temp3, 3.0 ) - pow( n_cells, 3.0 ) );
1132      n_per_extra = (int)ceil( temp1 );
# Line 1106 | Line 1141 | void SimSetup::initFromBass( void ){
1141    }
1142    else{
1143      n_cells = (int)temp3;
1144 <    cellx = simnfo->box_x / temp3;
1145 <    celly = simnfo->box_y / temp3;
1146 <    cellz = simnfo->box_z / temp3;
1144 >    cellx = simnfo->boxLx / temp3;
1145 >    celly = simnfo->boxLy / temp3;
1146 >    cellz = simnfo->boxLz / temp3;
1147    }
1148  
1149    current_mol = 0;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines