# | Line 87 | Line 87 | void SimSetup::createSim( void ){ | |
---|---|---|
87 | if( !strcasecmp( ensemble, "NPT" ) ) { | |
88 | the_extendedsystem = new ExtendedSystem( simnfo ); | |
89 | the_extendedsystem->setTargetTemp(the_globals->getTargetTemp()); | |
90 | < | the_extendedsystem->setTargetPressure(the_globals->getTargetPressure()); |
90 | > | if (the_globals->haveTargetPressure()) |
91 | > | the_extendedsystem->setTargetPressure(the_globals->getTargetPressure()); |
92 | > | else { |
93 | > | sprintf( painCave.errMsg, |
94 | > | "SimSetup error: If you use the constant pressure\n" |
95 | > | " ensemble, you must set targetPressure.\n" |
96 | > | " This was found in the BASS file.\n"); |
97 | > | painCave.isFatal = 1; |
98 | > | simError(); |
99 | > | } |
100 | > | |
101 | > | if (the_globals->haveTauThermostat()) |
102 | > | the_extendedsystem->setTauThermostat(the_globals->getTauThermostat()); |
103 | > | else if (the_globals->haveQmass()) |
104 | > | the_extendedsystem->setQmass(the_globals->getQmass()); |
105 | > | else { |
106 | > | sprintf( painCave.errMsg, |
107 | > | "SimSetup error: If you use one of the constant temperature\n" |
108 | > | " ensembles, you must set either tauThermostat or qMass.\n" |
109 | > | " Neither of these was found in the BASS file.\n"); |
110 | > | painCave.isFatal = 1; |
111 | > | simError(); |
112 | > | } |
113 | > | |
114 | > | if (the_globals->haveTauBarostat()) |
115 | > | the_extendedsystem->setTauBarostat(the_globals->getTauBarostat()); |
116 | > | else { |
117 | > | sprintf( painCave.errMsg, |
118 | > | "SimSetup error: If you use the constant pressure\n" |
119 | > | " ensemble, you must set tauBarostat.\n" |
120 | > | " This was found in the BASS file.\n"); |
121 | > | painCave.isFatal = 1; |
122 | > | simError(); |
123 | > | } |
124 | > | |
125 | } else if ( !strcasecmp( ensemble, "NVT") ) { | |
126 | the_extendedsystem = new ExtendedSystem( simnfo ); | |
127 | the_extendedsystem->setTargetTemp(the_globals->getTargetTemp()); | |
128 | + | |
129 | + | if (the_globals->haveTauThermostat()) |
130 | + | the_extendedsystem->setTauThermostat(the_globals->getTauThermostat()); |
131 | + | else if (the_globals->haveQmass()) |
132 | + | the_extendedsystem->setQmass(the_globals->getQmass()); |
133 | + | else { |
134 | + | sprintf( painCave.errMsg, |
135 | + | "SimSetup error: If you use one of the constant temperature\n" |
136 | + | " ensembles, you must set either tauThermostat or qMass.\n" |
137 | + | " Neither of these was found in the BASS file.\n"); |
138 | + | painCave.isFatal = 1; |
139 | + | simError(); |
140 | + | } |
141 | + | |
142 | } else if ( !strcasecmp( ensemble, "NVE") ) { | |
143 | } else { | |
144 | sprintf( painCave.errMsg, | |
# | Line 106 | Line 154 | void SimSetup::createSim( void ){ | |
154 | strcpy( simnfo->mixingRule, the_globals->getMixingRule() ); | |
155 | simnfo->usePBC = the_globals->getPBC(); | |
156 | ||
157 | < | if( !strcmp( force_field, "TraPPE_Ex" ) ) the_ff = new TraPPE_ExFF(); |
157 | > | int usesDipoles = 0; |
158 | > | if( !strcmp( force_field, "TraPPE_Ex" ) ){ |
159 | > | the_ff = new TraPPE_ExFF(); |
160 | > | usesDipoles = 1; |
161 | > | } |
162 | else if( !strcasecmp( force_field, "LJ" ) ) the_ff = new LJ_FF(); | |
163 | else{ | |
164 | sprintf( painCave.errMsg, | |
# | Line 276 | Line 328 | void SimSetup::createSim( void ){ | |
328 | ||
329 | for( j=0; j<components_nmol[i]; j++ ){ | |
330 | ||
331 | < | if( mol2proc[j] == worldRank ){ |
331 | > | if( mol2proc[allMol] == worldRank ){ |
332 | ||
333 | local_atoms += comp_stamps[i]->getNAtoms(); | |
334 | local_bonds += comp_stamps[i]->getNBonds(); | |
# | Line 333 | Line 385 | void SimSetup::createSim( void ){ | |
385 | if(mol2proc[i] == worldRank ){ | |
386 | the_molecules[molIndex].setStampID( molCompType[i] ); | |
387 | the_molecules[molIndex].setMyIndex( molIndex ); | |
388 | + | the_molecules[molIndex].setGlobalIndex( i ); |
389 | molIndex++; | |
390 | } | |
391 | } | |
# | Line 344 | Line 397 | void SimSetup::createSim( void ){ | |
397 | for(j=0; j<components_nmol[i]; j++ ){ | |
398 | the_molecules[molIndex].setStampID( i ); | |
399 | the_molecules[molIndex].setMyIndex( molIndex ); | |
400 | + | the_molecules[molIndex].setGlobalIndex( molIndex ); |
401 | molIndex++; | |
402 | } | |
403 | } | |
# | Line 433 | Line 487 | void SimSetup::createSim( void ){ | |
487 | ||
488 | makeMolecules(); | |
489 | simnfo->identArray = new int[simnfo->n_atoms]; | |
490 | + | simnfo->molMembershipArray = new int[simnfo->n_atoms]; |
491 | for(i=0; i<simnfo->n_atoms; i++){ | |
492 | simnfo->identArray[i] = the_atoms[i]->getIdent(); | |
493 | } | |
494 | + | for(i=0; i< simnfo->n_mol; i++) { |
495 | + | the_molecules[i].atomicRollCall(simnfo->molMembershipArray); |
496 | + | } |
497 | ||
498 | if (the_globals->getUseRF() ) { | |
499 | simnfo->useReactionField = 1; | |
# | Line 478 | Line 536 | void SimSetup::createSim( void ){ | |
536 | } | |
537 | simnfo->dielectric = the_globals->getDielectric(); | |
538 | } else { | |
539 | < | if (simnfo->n_dipoles) { |
539 | > | if (usesDipoles) { |
540 | ||
541 | if( !the_globals->haveECR() ){ | |
542 | sprintf( painCave.errMsg, | |
543 | < | "SimSetup Warning: using default value of 1/2 the smallest" |
543 | > | "SimSetup Warning: using default value of 1/2 the smallest " |
544 | "box length for the electrostaticCutoffRadius.\n" | |
545 | "I hope you have a very fast processor!\n"); | |
546 | painCave.isFatal = 0; | |
# | Line 498 | Line 556 | void SimSetup::createSim( void ){ | |
556 | ||
557 | if( !the_globals->haveEST() ){ | |
558 | sprintf( painCave.errMsg, | |
559 | < | "SimSetup Warning: using default value of 5% of the" |
559 | > | "SimSetup Warning: using default value of 5%% of the " |
560 | "electrostaticCutoffRadius for the " | |
561 | "electrostaticSkinThickness\n" | |
562 | ); | |
# | Line 673 | Line 731 | void SimSetup::createSim( void ){ | |
731 | ||
732 | // new AllLong( simnfo ); | |
733 | ||
676 | – | if( !strcmp( force_field, "TraPPE_Ex" ) ) new Symplectic(simnfo, |
677 | – | the_ff, |
678 | – | the_extendedsystem); |
679 | – | if( !strcmp( force_field, "LJ" ) ) new Verlet( *simnfo, |
680 | – | the_ff, |
681 | – | the_extendedsystem ); |
734 | ||
735 | + | if( !strcmp( force_field, "TraPPE_Ex" ) ){ |
736 | + | new Symplectic(simnfo, the_ff, the_extendedsystem); |
737 | + | } |
738 | + | else if( !strcmp( force_field, "LJ" ) ){ |
739 | + | new Verlet( *simnfo, the_ff, the_extendedsystem ); |
740 | + | } |
741 | + | else { |
742 | + | std::cerr << "I'm a bug.\n"; |
743 | + | fprintf( stderr, "Ima bug. stderr %s\n", force_field); |
744 | + | } |
745 | #ifdef IS_MPI | |
746 | mpiSim->mpiRefresh(); | |
747 | #endif |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |