--- trunk/OOPSE/libmdtools/SimSetup.cpp 2003/04/02 22:19:03 443 +++ trunk/OOPSE/libmdtools/SimSetup.cpp 2003/04/07 20:06:31 469 @@ -66,6 +66,7 @@ void SimSetup::createSim( void ){ MakeStamps *the_stamps; Globals* the_globals; + ExtendedSystem* the_extendedsystem; int i, j; // get the stamps and globals; @@ -80,16 +81,37 @@ void SimSetup::createSim( void ){ // get the ones we know are there, yet still may need some work. n_components = the_globals->getNComponents(); strcpy( force_field, the_globals->getForceField() ); + + // get the ensemble and set up an extended system if we need it: strcpy( ensemble, the_globals->getEnsemble() ); + if( !strcasecmp( ensemble, "NPT" ) ) { + the_extendedsystem = new ExtendedSystem( simnfo ); + the_extendedsystem->setTargetTemp(the_globals->getTargetTemp()); + the_extendedsystem->setTargetPressure(the_globals->getTargetPressure()); + } else if ( !strcasecmp( ensemble, "NVT") ) { + the_extendedsystem = new ExtendedSystem( simnfo ); + the_extendedsystem->setTargetTemp(the_globals->getTargetTemp()); + } else if ( !strcasecmp( ensemble, "NVE") ) { + } else { + sprintf( painCave.errMsg, + "SimSetup Warning. Unrecognized Ensemble -> %s, " + "reverting to NVE for this simulation.\n", + ensemble ); + painCave.isFatal = 0; + simError(); + strcpy( ensemble, "NVE" ); + } strcpy( simnfo->ensemble, ensemble ); strcpy( simnfo->mixingRule, the_globals->getMixingRule() ); simnfo->usePBC = the_globals->getPBC(); - - - if( !strcmp( force_field, "TraPPE_Ex" ) ) the_ff = new TraPPE_ExFF(); - else if( !strcmp( force_field, "LJ" ) ) the_ff = new LJ_FF(); + int usesDipoles = 0; + if( !strcmp( force_field, "TraPPE_Ex" ) ){ + the_ff = new TraPPE_ExFF(); + usesDipoles = 1; + } + else if( !strcasecmp( force_field, "LJ" ) ) the_ff = new LJ_FF(); else{ sprintf( painCave.errMsg, "SimSetup Error. Unrecognized force field -> %s\n", @@ -460,11 +482,11 @@ void SimSetup::createSim( void ){ } simnfo->dielectric = the_globals->getDielectric(); } else { - if (simnfo->n_dipoles) { + if (usesDipoles) { if( !the_globals->haveECR() ){ sprintf( painCave.errMsg, - "SimSetup Warning: using default value of 1/2 the smallest" + "SimSetup Warning: using default value of 1/2 the smallest " "box length for the electrostaticCutoffRadius.\n" "I hope you have a very fast processor!\n"); painCave.isFatal = 0; @@ -480,7 +502,7 @@ void SimSetup::createSim( void ){ if( !the_globals->haveEST() ){ sprintf( painCave.errMsg, - "SimSetup Warning: using default value of 5% of the" + "SimSetup Warning: using default value of 5%% of the " "electrostaticCutoffRadius for the " "electrostaticSkinThickness\n" ); @@ -655,9 +677,21 @@ void SimSetup::createSim( void ){ // new AllLong( simnfo ); - if( !strcmp( force_field, "TraPPE_Ex" ) ) new Symplectic( simnfo, the_ff ); - if( !strcmp( force_field, "LJ" ) ) new Verlet( *simnfo, the_ff ); + if( !strcmp( force_field, "TraPPE_Ex" ) ){ + new Symplectic(simnfo, the_ff, the_extendedsystem); + std::cerr << "called new Symplecic\n"; + fprintf( stderr, "called new Symplectic. stderr\n" ); + } + else if( !strcmp( force_field, "LJ" ) ){ + new Verlet( *simnfo, the_ff, the_extendedsystem ); + std::cerr << "called new Verlet\n"; + fprintf( stderr, "called new Verlet. stderr\n" ); + } + else { + std::cerr << "I'm a bug.\n"; + fprintf( stderr, "Ima bug. stderr %s\n", force_field); + } #ifdef IS_MPI mpiSim->mpiRefresh(); #endif