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 621 by gezelter, Wed Jul 16 02:11:02 2003 UTC vs.
Revision 656 by mmeineke, Tue Jul 29 16:32:37 2003 UTC

# Line 24 | Line 24
24  
25   #define FF_DUFF 0
26   #define FF_LJ   1
27 + #define FF_EAM  2
28  
28
29   SimSetup::SimSetup(){
30 +  
31 +  isInfoArray = 0;
32 +  nInfo = 1;
33 +  
34    stamps = new MakeStamps();
35    globals = new Globals();
36    
37 +  
38   #ifdef IS_MPI
39    strcpy( checkPointMsg, "SimSetup creation successful" );
40    MPIcheckPoint();
# Line 40 | Line 45 | SimSetup::~SimSetup(){
45    delete stamps;
46    delete globals;
47   }
48 +
49 + void SimSetup::setSimInfo( SimInfo* the_info, int theNinfo ) {
50 +    info = the_info;
51 +    nInfo = theNinfo;
52 +    isInfoArray = 1;
53 +  }
54  
55 +
56   void SimSetup::parseFile( char* fileName ){
57  
58   #ifdef IS_MPI
# Line 586 | Line 598 | void SimSetup::gatherInfo( void ){
598  
599    if( !strcasecmp( force_field, "DUFF" )) ffCase = FF_DUFF;
600    else if( !strcasecmp( force_field, "LJ" )) ffCase = FF_LJ;
601 +  else if( !strcasecmp( force_field, "EAM" )) ffCase = FF_EAM;
602    else{
603      sprintf( painCave.errMsg,
604               "SimSetup Error. Unrecognized force field -> %s\n",
# Line 762 | Line 775 | void SimSetup::finalInfoCheck( void ){
775    MPI_Allreduce( &myUse, &usesDipoles, 1, MPI_INT, MPI_LOR, MPI_COMM_WORLD );
776   #endif //is_mpi
777  
778 +  double theEcr, theEst;
779  
780    if (globals->getUseRF() ) {
781      info->useReactionField = 1;
# Line 777 | Line 791 | void SimSetup::finalInfoCheck( void ){
791        smallest = info->boxL[0];
792        if (info->boxL[1] <= smallest) smallest = info->boxL[1];
793        if (info->boxL[2] <= smallest) smallest = info->boxL[2];
794 <      info->ecr = 0.5 * smallest;
794 >      theEcr = 0.5 * smallest;
795      } else {
796 <      info->ecr        = globals->getECR();
796 >      theEcr = globals->getECR();
797      }
798  
799      if( !globals->haveEST() ){
# Line 789 | Line 803 | void SimSetup::finalInfoCheck( void ){
803                 );
804        painCave.isFatal = 0;
805        simError();
806 <      info->est = 0.05 * info->ecr;
806 >      theEst = 0.05 * theEcr;
807      } else {
808 <      info->est        = globals->getEST();
808 >      theEst= globals->getEST();
809      }
810 +
811 +    info->setEcr( theEcr, theEst );
812      
813      if(!globals->haveDielectric() ){
814        sprintf( painCave.errMsg,
# Line 808 | Line 824 | void SimSetup::finalInfoCheck( void ){
824      if (usesDipoles) {
825        
826        if( !globals->haveECR() ){
827 <        sprintf( painCave.errMsg,
828 <                 "SimSetup Warning: using default value of 1/2 the smallest "
829 <                 "box length for the electrostaticCutoffRadius.\n"
830 <                 "I hope you have a very fast processor!\n");
831 <        painCave.isFatal = 0;
832 <        simError();
833 <        double smallest;
834 <        smallest = info->boxL[0];
835 <        if (info->boxL[1] <= smallest) smallest = info->boxL[1];
836 <        if (info->boxL[2] <= smallest) smallest = info->boxL[2];
837 <        info->ecr = 0.5 * smallest;
827 >        sprintf( painCave.errMsg,
828 >                 "SimSetup Warning: using default value of 1/2 the smallest "
829 >                 "box length for the electrostaticCutoffRadius.\n"
830 >                 "I hope you have a very fast processor!\n");
831 >        painCave.isFatal = 0;
832 >        simError();
833 >        double smallest;
834 >        smallest = info->boxL[0];
835 >        if (info->boxL[1] <= smallest) smallest = info->boxL[1];
836 >        if (info->boxL[2] <= smallest) smallest = info->boxL[2];
837 >        theEcr = 0.5 * smallest;
838        } else {
839 <        info->ecr        = globals->getECR();
839 >        theEcr = globals->getECR();
840        }
841        
842        if( !globals->haveEST() ){
843 <        sprintf( painCave.errMsg,
844 <                 "SimSetup Warning: using default value of 5%% of the "
845 <                 "electrostaticCutoffRadius for the "
846 <                 "electrostaticSkinThickness\n"
847 <                 );
848 <        painCave.isFatal = 0;
849 <        simError();
850 <        info->est = 0.05 * info->ecr;
843 >        sprintf( painCave.errMsg,
844 >                 "SimSetup Warning: using default value of 0.05 * the "
845 >                 "electrostaticCutoffRadius for the "
846 >                 "electrostaticSkinThickness\n"
847 >                 );
848 >        painCave.isFatal = 0;
849 >        simError();
850 >        theEst = 0.05 * theEcr;
851        } else {
852 <        info->est        = globals->getEST();
852 >        theEst= globals->getEST();
853        }
854 +
855 +      info->setEcr( theEcr, theEst );
856      }
857    }  
858  
# Line 857 | Line 875 | void SimSetup::initSystemCoords( void ){
875   #ifdef IS_MPI
876       }else fileInit = new InitializeFromFile( NULL );
877   #endif
878 <   fileInit->read_xyz( info ); // default velocities on
878 >   fileInit->readInit( info ); // default velocities on
879  
880     delete fileInit;
881   }
# Line 1025 | Line 1043 | void SimSetup::createFF( void ){
1043  
1044    case FF_LJ:
1045      the_ff = new LJFF();
1046 +    break;
1047 +
1048 +  case FF_EAM:
1049 +    the_ff = new EAM_FF();
1050      break;
1051  
1052    default:
# Line 1276 | Line 1298 | void SimSetup::makeIntegrator( void ){
1298  
1299   void SimSetup::makeIntegrator( void ){
1300  
1301 <  NVT*  myNVT = NULL;
1302 <  NPTi* myNPTi = NULL;
1303 <  NPTf* myNPTf = NULL;
1304 <  NPTim* myNPTim = NULL;
1305 <  NPTfm* myNPTfm = NULL;
1301 >  NVT<RealIntegrator>*  myNVT = NULL;
1302 >  NPTi<RealIntegrator>* myNPTi = NULL;
1303 >  NPTf<RealIntegrator>* myNPTf = NULL;
1304 >  NPTim<RealIntegrator>* myNPTim = NULL;
1305 >  NPTfm<RealIntegrator>* myNPTfm = NULL;
1306  
1307    switch( ensembleCase ){
1308  
1309    case NVE_ENS:
1310 <    new NVE( info, the_ff );
1310 >    new NVE<RealIntegrator>( info, the_ff );
1311      break;
1312  
1313    case NVT_ENS:
1314 <    myNVT = new NVT( info, the_ff );
1314 >    myNVT = new NVT<RealIntegrator>( info, the_ff );
1315      myNVT->setTargetTemp(globals->getTargetTemp());
1316  
1317      if (globals->haveTauThermostat())
# Line 1305 | Line 1327 | void SimSetup::makeIntegrator( void ){
1327      break;
1328  
1329    case NPTi_ENS:
1330 <    myNPTi = new NPTi( info, the_ff );
1330 >    myNPTi = new NPTi<RealIntegrator>( info, the_ff );
1331      myNPTi->setTargetTemp( globals->getTargetTemp() );
1332  
1333      if (globals->haveTargetPressure())
# Line 1340 | Line 1362 | void SimSetup::makeIntegrator( void ){
1362      break;
1363  
1364    case NPTf_ENS:
1365 <    myNPTf = new NPTf( info, the_ff );
1365 >    myNPTf = new NPTf<RealIntegrator>( info, the_ff );
1366      myNPTf->setTargetTemp( globals->getTargetTemp());
1367  
1368      if (globals->haveTargetPressure())
# Line 1375 | Line 1397 | void SimSetup::makeIntegrator( void ){
1397      break;
1398      
1399    case NPTim_ENS:
1400 <    myNPTim = new NPTim( info, the_ff );
1400 >    myNPTim = new NPTim<RealIntegrator>( info, the_ff );
1401      myNPTim->setTargetTemp( globals->getTargetTemp());
1402  
1403      if (globals->haveTargetPressure())
# Line 1410 | Line 1432 | void SimSetup::makeIntegrator( void ){
1432      break;
1433  
1434    case NPTfm_ENS:
1435 <    myNPTfm = new NPTfm( info, the_ff );
1435 >    myNPTfm = new NPTfm<RealIntegrator>( info, the_ff );
1436      myNPTfm->setTargetTemp( globals->getTargetTemp());
1437  
1438      if (globals->haveTargetPressure())

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines