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 422 by mmeineke, Thu Mar 27 19:21:42 2003 UTC vs.
Revision 586 by mmeineke, Wed Jul 9 22:14:06 2003 UTC

# Line 12 | Line 12 | SimSetup::SimSetup(){
12   #include "mpiSimulation.hpp"
13   #endif
14  
15 + // some defines for ensemble and Forcefield  cases
16 +
17 + #define NVE_ENS  0
18 + #define NVT_ENS  1
19 + #define NPTi_ENS 2
20 + #define NPTf_ENS 3
21 +
22 +
23 + #define FF_DUFF 0
24 + #define FF_LJ   1
25 +
26 +
27   SimSetup::SimSetup(){
28    stamps = new MakeStamps();
29    globals = new Globals();
# Line 66 | Line 78 | void SimSetup::createSim( void ){
78  
79    MakeStamps *the_stamps;
80    Globals* the_globals;
81 <  int i, j;
81 >  int i, j, k, globalAtomIndex;
82 >  
83 >  int ensembleCase;
84 >  int ffCase;
85 >  
86 >  ensembleCase = -1;
87 >  ffCase = -1;
88  
89    // get the stamps and globals;
90    the_stamps = stamps;
# Line 80 | Line 98 | void SimSetup::createSim( void ){
98    // get the ones we know are there, yet still may need some work.
99    n_components = the_globals->getNComponents();
100    strcpy( force_field, the_globals->getForceField() );
101 +
102 +  if( !strcasecmp( force_field, "DUFF" )) ffCase = FF_DUFF;
103 +  else if( !strcasecmp( force_field, "LJ" )) ffCase = FF_LJ;
104 +  else{
105 +    sprintf( painCave.errMsg,
106 +             "SimSetup Error. Unrecognized force field -> %s\n",
107 +             force_field );
108 +    painCave.isFatal = 1;
109 +    simError();
110 +  }
111 +
112 +  // get the ensemble:
113    strcpy( ensemble, the_globals->getEnsemble() );
114 +
115 +  if( !strcasecmp( ensemble, "NVE" ))      ensembleCase = NVE_ENS;
116 +  else if( !strcasecmp( ensemble, "NVT" )) ensembleCase = NVT_ENS;
117 +  else if( !strcasecmp( ensemble, "NPTi" ) || !strcasecmp( ensemble, "NPT") )
118 +    ensembleCase = NPTi_ENS;
119 +  else if( !strcasecmp( ensemble, "NPTf" )) ensembleCase = NPTf_ENS;
120 +  else{
121 +    sprintf( painCave.errMsg,
122 +             "SimSetup Warning. Unrecognized Ensemble -> %s, "
123 +             "reverting to NVE for this simulation.\n",
124 +             ensemble );
125 +    painCave.isFatal = 0;
126 +    simError();
127 +    strcpy( ensemble, "NVE" );
128 +    ensembleCase = NVE_ENS;
129 +  }  
130    strcpy( simnfo->ensemble, ensemble );
131  
132 +
133 + //   if( !strcasecmp( ensemble, "NPT" ) ) {
134 + //     the_extendedsystem = new ExtendedSystem( simnfo );
135 + //     the_extendedsystem->setTargetTemp(the_globals->getTargetTemp());
136 + //     if (the_globals->haveTargetPressure())
137 + //       the_extendedsystem->setTargetPressure(the_globals->getTargetPressure());
138 + //     else {
139 + //       sprintf( painCave.errMsg,
140 + //                "SimSetup error: If you use the constant pressure\n"
141 + //                "    ensemble, you must set targetPressure.\n"
142 + //                "    This was found in the BASS file.\n");
143 + //       painCave.isFatal = 1;
144 + //       simError();
145 + //     }
146 +
147 + //     if (the_globals->haveTauThermostat())
148 + //       the_extendedsystem->setTauThermostat(the_globals->getTauThermostat());
149 + //     else if (the_globals->haveQmass())
150 + //       the_extendedsystem->setQmass(the_globals->getQmass());
151 + //     else {
152 + //       sprintf( painCave.errMsg,
153 + //                "SimSetup error: If you use one of the constant temperature\n"
154 + //                "    ensembles, you must set either tauThermostat or qMass.\n"
155 + //                "    Neither of these was found in the BASS file.\n");
156 + //       painCave.isFatal = 1;
157 + //       simError();
158 + //     }
159 +
160 + //     if (the_globals->haveTauBarostat())
161 + //       the_extendedsystem->setTauBarostat(the_globals->getTauBarostat());
162 + //     else {
163 + //       sprintf( painCave.errMsg,
164 + //                "SimSetup error: If you use the constant pressure\n"
165 + //                "    ensemble, you must set tauBarostat.\n"
166 + //                "    This was found in the BASS file.\n");
167 + //       painCave.isFatal = 1;
168 + //       simError();
169 + //     }
170 +
171 + //   } else if ( !strcasecmp( ensemble, "NVT") ) {
172 + //     the_extendedsystem = new ExtendedSystem( simnfo );
173 + //     the_extendedsystem->setTargetTemp(the_globals->getTargetTemp());
174 +
175 + //     if (the_globals->haveTauThermostat())
176 + //       the_extendedsystem->setTauThermostat(the_globals->getTauThermostat());
177 + //     else if (the_globals->haveQmass())
178 + //       the_extendedsystem->setQmass(the_globals->getQmass());
179 + //     else {
180 + //       sprintf( painCave.errMsg,
181 + //                "SimSetup error: If you use one of the constant temperature\n"
182 + //                "    ensembles, you must set either tauThermostat or qMass.\n"
183 + //                "    Neither of these was found in the BASS file.\n");
184 + //       painCave.isFatal = 1;
185 + //       simError();
186 + //     }
187 +
188    strcpy( simnfo->mixingRule, the_globals->getMixingRule() );
189    simnfo->usePBC = the_globals->getPBC();
190            
191 +  int usesDipoles = 0;
192 +  switch( ffCase ){
193  
194 +  case FF_DUFF:
195 +    the_ff = new DUFF();
196 +    usesDipoles = 1;
197 +    break;
198  
199 <  if( !strcmp( force_field, "TraPPE" ) ) the_ff = new TraPPEFF();
200 <  else if( !strcmp( force_field, "DipoleTest" ) ) the_ff = new DipoleTestFF();
201 <  else if( !strcmp( force_field, "TraPPE_Ex" ) ) the_ff = new TraPPE_ExFF();
202 <  else if( !strcmp( force_field, "LJ" ) ) the_ff = new LJ_FF();
203 <  else{
199 >  case FF_LJ:
200 >    the_ff = new LJFF();
201 >    break;
202 >
203 >  default:
204      sprintf( painCave.errMsg,
205 <             "SimSetup Error. Unrecognized force field -> %s\n",
98 <             force_field );
205 >             "SimSetup Error. Unrecognized force field in case statement.\n");
206      painCave.isFatal = 1;
207      simError();
208    }
# Line 105 | Line 212 | void SimSetup::createSim( void ){
212    MPIcheckPoint();
213   #endif // is_mpi
214  
108  
109
215    // get the components and calculate the tot_nMol and indvidual n_mol
216    the_components = the_globals->getComponents();
217    components_nmol = new int[n_components];
# Line 230 | Line 335 | void SimSetup::createSim( void ){
335    simnfo->n_torsions = tot_torsions;
336    simnfo->n_SRI = tot_SRI;
337    simnfo->n_mol = tot_nmol;
233
338    
339 +  simnfo->molMembershipArray = new int[tot_atoms];
340 +
341   #ifdef IS_MPI
342  
343    // divide the molecules among processors here.
344    
345    mpiSim = new mpiSimulation( simnfo );
346    
241  
242
347    globalIndex = mpiSim->divideLabor();
348  
245
246
349    // set up the local variables
350    
351    int localMol, allMol;
# Line 258 | Line 360 | void SimSetup::createSim( void ){
360    local_bonds = 0;
361    local_bends = 0;
362    local_torsions = 0;
363 +  globalAtomIndex = 0;
364 +
365 +
366    for( i=0; i<n_components; i++ ){
367  
368      for( j=0; j<components_nmol[i]; j++ ){
369        
370 <      if( mol2proc[j] == worldRank ){
370 >      if( mol2proc[allMol] == worldRank ){
371          
372          local_atoms +=    comp_stamps[i]->getNAtoms();
373          local_bonds +=    comp_stamps[i]->getNBonds();
# Line 270 | Line 375 | void SimSetup::createSim( void ){
375          local_torsions += comp_stamps[i]->getNTorsions();
376          localMol++;
377        }      
378 <      allMol++;
378 >      for (k = 0; k < comp_stamps[i]->getNAtoms(); k++) {
379 >        simnfo->molMembershipArray[globalAtomIndex] = allMol;
380 >        globalAtomIndex++;
381 >      }
382 >
383 >      allMol++;      
384      }
385    }
386    local_SRI = local_bonds + local_bends + local_torsions;
387    
278
388    simnfo->n_atoms = mpiSim->getMyNlocal();  
389    
390    if( local_atoms != simnfo->n_atoms ){
# Line 318 | Line 427 | void SimSetup::createSim( void ){
427      
428      if(mol2proc[i] == worldRank ){
429        the_molecules[molIndex].setStampID( molCompType[i] );
430 +      the_molecules[molIndex].setMyIndex( molIndex );
431 +      the_molecules[molIndex].setGlobalIndex( i );
432        molIndex++;
433      }
434    }
# Line 325 | Line 436 | void SimSetup::createSim( void ){
436   #else // is_mpi
437    
438    molIndex = 0;
439 +  globalAtomIndex = 0;
440    for(i=0; i<n_components; i++){
441      for(j=0; j<components_nmol[i]; j++ ){
442        the_molecules[molIndex].setStampID( i );
443 +      the_molecules[molIndex].setMyIndex( molIndex );
444 +      the_molecules[molIndex].setGlobalIndex( molIndex );
445 +      for (k = 0; k < comp_stamps[i]->getNAtoms(); k++) {
446 +        simnfo->molMembershipArray[globalAtomIndex] = molIndex;
447 +        globalAtomIndex++;
448 +      }
449        molIndex++;
450      }
451    }
# Line 337 | Line 455 | void SimSetup::createSim( void ){
455  
456  
457    if( simnfo->n_SRI ){
458 +    
459      Exclude::createArray(simnfo->n_SRI);
460      the_excludes = new Exclude*[simnfo->n_SRI];
461 +    for( int ex=0; ex<simnfo->n_SRI; ex++) the_excludes[ex] = new Exclude(ex);
462      simnfo->globalExcludes = new int;
463 <    simnfo->n_exclude = tot_SRI;
463 >    simnfo->n_exclude = simnfo->n_SRI;
464    }
465    else{
466      
# Line 356 | Line 476 | void SimSetup::createSim( void ){
476    // set the arrays into the SimInfo object
477  
478    simnfo->atoms = the_atoms;
479 +  simnfo->molecules = the_molecules;
480    simnfo->nGlobalExcludes = 0;
481    simnfo->excludes = the_excludes;
482  
483  
484    // get some of the tricky things that may still be in the globals
485  
486 <  
486 >  double boxVector[3];
487    if( the_globals->haveBox() ){
488 <    simnfo->box_x = the_globals->getBox();
489 <    simnfo->box_y = the_globals->getBox();
490 <    simnfo->box_z = the_globals->getBox();
488 >    boxVector[0] = the_globals->getBox();
489 >    boxVector[1] = the_globals->getBox();
490 >    boxVector[2] = the_globals->getBox();
491 >    
492 >    simnfo->setBox( boxVector );
493    }
494    else if( the_globals->haveDensity() ){
495  
496      double vol;
497      vol = (double)tot_nmol / the_globals->getDensity();
498 <    simnfo->box_x = pow( vol, ( 1.0 / 3.0 ) );
499 <    simnfo->box_y = simnfo->box_x;
500 <    simnfo->box_z = simnfo->box_x;
498 >     boxVector[0] = pow( vol, ( 1.0 / 3.0 ) );
499 >     boxVector[1] = boxVector[0];
500 >     boxVector[2] = boxVector[0];
501 >
502 >    simnfo->setBox( boxVector );
503    }
504    else{
505      if( !the_globals->haveBoxX() ){
# Line 383 | Line 508 | void SimSetup::createSim( void ){
508        painCave.isFatal = 1;
509        simError();
510      }
511 <    simnfo->box_x = the_globals->getBoxX();
511 >    boxVector[0] = the_globals->getBoxX();
512  
513      if( !the_globals->haveBoxY() ){
514        sprintf( painCave.errMsg,
# Line 391 | Line 516 | void SimSetup::createSim( void ){
516        painCave.isFatal = 1;
517        simError();
518      }
519 <    simnfo->box_y = the_globals->getBoxY();
519 >    boxVector[1] = the_globals->getBoxY();
520  
521      if( !the_globals->haveBoxZ() ){
522        sprintf( painCave.errMsg,
# Line 399 | Line 524 | void SimSetup::createSim( void ){
524        painCave.isFatal = 1;
525        simError();
526      }
527 <    simnfo->box_z = the_globals->getBoxZ();
527 >    boxVector[2] = the_globals->getBoxZ();
528 >
529 >    simnfo->setBox( boxVector );
530    }
531  
532   #ifdef IS_MPI
# Line 429 | Line 556 | void SimSetup::createSim( void ){
556        painCave.isFatal = 0;
557        simError();
558        double smallest;
559 <      smallest = simnfo->box_x;
560 <      if (simnfo->box_y <= smallest) smallest = simnfo->box_y;
561 <      if (simnfo->box_z <= smallest) smallest = simnfo->box_z;
559 >      smallest = simnfo->boxLx;
560 >      if (simnfo->boxLy <= smallest) smallest = simnfo->boxLy;
561 >      if (simnfo->boxLz <= smallest) smallest = simnfo->boxLz;
562        simnfo->ecr = 0.5 * smallest;
563      } else {
564        simnfo->ecr        = the_globals->getECR();
# Line 459 | Line 586 | void SimSetup::createSim( void ){
586      }
587      simnfo->dielectric = the_globals->getDielectric();  
588    } else {
589 <    if (simnfo->n_dipoles) {
589 >    if (usesDipoles) {
590        
591        if( !the_globals->haveECR() ){
592          sprintf( painCave.errMsg,
593 <                 "SimSetup Warning: using default value of 1/2 the smallest"
593 >                 "SimSetup Warning: using default value of 1/2 the smallest "
594                   "box length for the electrostaticCutoffRadius.\n"
595                   "I hope you have a very fast processor!\n");
596          painCave.isFatal = 0;
597          simError();
598          double smallest;
599 <        smallest = simnfo->box_x;
600 <        if (simnfo->box_y <= smallest) smallest = simnfo->box_y;
601 <        if (simnfo->box_z <= smallest) smallest = simnfo->box_z;
599 >        smallest = simnfo->boxLx;
600 >        if (simnfo->boxLy <= smallest) smallest = simnfo->boxLy;
601 >        if (simnfo->boxLz <= smallest) smallest = simnfo->boxLz;
602          simnfo->ecr = 0.5 * smallest;
603        } else {
604          simnfo->ecr        = the_globals->getECR();
# Line 479 | Line 606 | void SimSetup::createSim( void ){
606        
607        if( !the_globals->haveEST() ){
608          sprintf( painCave.errMsg,
609 <                 "SimSetup Warning: using default value of 5% of the"
609 >                 "SimSetup Warning: using default value of 5%% of the "
610                   "electrostaticCutoffRadius for the "
611                   "electrostaticSkinThickness\n"
612                   );
# Line 650 | Line 777 | void SimSetup::createSim( void ){
777    if( the_globals->haveTempSet() ) simnfo->setTemp = the_globals->getTempSet();
778  
779  
780 < //   // make the longe range forces and the integrator
780 >  // make the integrator
781 >  
782 >  
783 >  NVT*  myNVT = NULL;
784 >  NPTi* myNPTi = NULL;
785 >  NPTf* myNPTf = NULL;
786 >  switch( ensembleCase ){
787  
788 < //   new AllLong( simnfo );
788 >  case NVE_ENS:
789 >    new NVE( simnfo, the_ff );
790 >    break;
791  
792 <  if( !strcmp( force_field, "TraPPE" ) ) new Verlet( *simnfo, the_ff );
793 <  if( !strcmp( force_field, "DipoleTest" ) ) new Symplectic( simnfo, the_ff );
794 <  if( !strcmp( force_field, "TraPPE_Ex" ) ) new Symplectic( simnfo, the_ff );
795 <  if( !strcmp( force_field, "LJ" ) ) new Verlet( *simnfo, the_ff );
792 >  case NVT_ENS:
793 >    myNVT = new NVT( simnfo, the_ff );
794 >    myNVT->setTargetTemp(the_globals->getTargetTemp());
795 >
796 >    if (the_globals->haveTauThermostat())
797 >      myNVT->setTauThermostat(the_globals->getTauThermostat());
798 >
799 >    else {
800 >      sprintf( painCave.errMsg,
801 >               "SimSetup error: If you use the NVT\n"
802 >               "    ensemble, you must set tauThermostat.\n");
803 >      painCave.isFatal = 1;
804 >      simError();
805 >    }
806 >    break;
807 >
808 >  case NPTi_ENS:
809 >    myNPTi = new NPTi( simnfo, the_ff );
810 >    myNPTi->setTargetTemp( the_globals->getTargetTemp());
811 >
812 >    if (the_globals->haveTargetPressure())
813 >      myNPTi->setTargetPressure(the_globals->getTargetPressure());
814 >    else {
815 >      sprintf( painCave.errMsg,
816 >               "SimSetup error: If you use a constant pressure\n"
817 >               "    ensemble, you must set targetPressure in the BASS file.\n");
818 >      painCave.isFatal = 1;
819 >      simError();
820 >    }
821 >    
822 >    if( the_globals->haveTauThermostat() )
823 >      myNPTi->setTauThermostat( the_globals->getTauThermostat() );
824 >    else{
825 >      sprintf( painCave.errMsg,
826 >               "SimSetup error: If you use an NPT\n"
827 >               "    ensemble, you must set tauThermostat.\n");
828 >      painCave.isFatal = 1;
829 >      simError();
830 >    }
831 >
832 >    if( the_globals->haveTauBarostat() )
833 >      myNPTi->setTauBarostat( the_globals->getTauBarostat() );
834 >    else{
835 >      sprintf( painCave.errMsg,
836 >               "SimSetup error: If you use an NPT\n"
837 >               "    ensemble, you must set tauBarostat.\n");
838 >      painCave.isFatal = 1;
839 >      simError();
840 >    }
841 >    break;
842 >
843 >  case NPTf_ENS:
844 >    myNPTf = new NPTf( simnfo, the_ff );
845 >    myNPTf->setTargetTemp( the_globals->getTargetTemp());
846 >
847 >    if (the_globals->haveTargetPressure())
848 >      myNPTf->setTargetPressure(the_globals->getTargetPressure());
849 >    else {
850 >      sprintf( painCave.errMsg,
851 >               "SimSetup error: If you use a constant pressure\n"
852 >               "    ensemble, you must set targetPressure in the BASS file.\n");
853 >      painCave.isFatal = 1;
854 >      simError();
855 >    }    
856  
857 +    if( the_globals->haveTauThermostat() )
858 +      myNPTf->setTauThermostat( the_globals->getTauThermostat() );
859 +    else{
860 +      sprintf( painCave.errMsg,
861 +               "SimSetup error: If you use an NPT\n"
862 +               "    ensemble, you must set tauThermostat.\n");
863 +      painCave.isFatal = 1;
864 +      simError();
865 +    }
866  
867 +    if( the_globals->haveTauBarostat() )
868 +      myNPTf->setTauBarostat( the_globals->getTauBarostat() );
869 +    else{
870 +      sprintf( painCave.errMsg,
871 +               "SimSetup error: If you use an NPT\n"
872 +               "    ensemble, you must set tauBarostat.\n");
873 +      painCave.isFatal = 1;
874 +      simError();
875 +    }
876 +    break;
877 +    
878 +    
879  
880 +  default:
881 +    sprintf( painCave.errMsg,
882 +             "SimSetup Error. Unrecognized ensemble in case statement.\n");
883 +    painCave.isFatal = 1;
884 +    simError();
885 +  }
886 +
887 +
888 + #ifdef IS_MPI
889 +  mpiSim->mpiRefresh();
890 + #endif
891 +
892    // initialize the Fortran
893 <  
893 >
894 >
895    simnfo->refreshSim();
896    
897    if( !strcmp( simnfo->mixingRule, "standard") ){
# Line 699 | Line 928 | void SimSetup::makeMolecules( void ){
928    BondStamp* currentBond;
929    BendStamp* currentBend;
930    TorsionStamp* currentTorsion;
931 +
932 +  bond_pair* theBonds;
933 +  bend_set* theBends;
934 +  torsion_set* theTorsions;
935 +
936    
937    //init the forceField paramters
938  
939    the_ff->readParams();
940  
941    
942 <  // init the molecules
942 >  // init the atoms
943  
944 +  double ux, uy, uz, u, uSqr;
945 +  
946    atomOffset = 0;
947    excludeOffset = 0;
948    for(i=0; i<simnfo->n_mol; i++){
# Line 723 | Line 959 | void SimSetup::makeMolecules( void ){
959      info.myExcludes = &the_excludes[excludeOffset];
960      info.myBonds = new Bond*[info.nBonds];
961      info.myBends = new Bend*[info.nBends];
962 <    info.myTorsions = new Torsions*[info.nTorsions];
962 >    info.myTorsions = new Torsion*[info.nTorsions];
963  
964      theBonds = new bond_pair[info.nBonds];
965      theBends = new bend_set[info.nBends];
# Line 733 | Line 969 | void SimSetup::makeMolecules( void ){
969      
970      for(j=0; j<info.nAtoms; j++){
971        
972 <      currentAtom = theComponents[stampID]->getAtom( j );
972 >      currentAtom = comp_stamps[stampID]->getAtom( j );
973        if( currentAtom->haveOrientation() ){
974          
975          dAtom = new DirectionalAtom(j + atomOffset);
# Line 774 | Line 1010 | void SimSetup::makeMolecules( void ){
1010        theBonds[j].a = currentBond->getA() + atomOffset;
1011        theBonds[j].b = currentBond->getB() + atomOffset;
1012  
1013 <      exI = theBonds[i].a;
1014 <      exJ = theBonds[i].b;
1013 >      exI = theBonds[j].a;
1014 >      exJ = theBonds[j].b;
1015  
1016        // exclude_I must always be the smaller of the pair
1017        if( exI > exJ ){
# Line 791 | Line 1027 | void SimSetup::makeMolecules( void ){
1027        
1028        the_excludes[j+excludeOffset]->setPair( exI, exJ );
1029   #else  // isn't MPI
1030 +
1031        the_excludes[j+excludeOffset]->setPair( (exI+1), (exJ+1) );
1032   #endif  //is_mpi
1033      }
# Line 806 | Line 1043 | void SimSetup::makeMolecules( void ){
1043            
1044        if( currentBend->haveExtras() ){
1045              
1046 <        extras = current_bend->getExtras();
1046 >        extras = currentBend->getExtras();
1047          current_extra = extras;
1048              
1049          while( current_extra != NULL ){
# Line 828 | Line 1065 | void SimSetup::makeMolecules( void ){
1065                
1066              default:
1067                sprintf( painCave.errMsg,
1068 <                       "SimSetup Error: ghostVectorSource was neiter a "
1068 >                       "SimSetup Error: ghostVectorSource was neither a "
1069                         "double nor an int.\n"
1070                         "-->Bend[%d] in %s\n",
1071                         j, comp_stamps[stampID]->getID() );
# Line 922 | Line 1159 | void SimSetup::makeMolecules( void ){
1159  
1160  
1161      the_molecules[i].initialize( info );
1162 +
1163 +
1164      atomOffset += info.nAtoms;
1165 +    delete[] theBonds;
1166 +    delete[] theBends;
1167 +    delete[] theTorsions;
1168    }
1169  
1170 + #ifdef IS_MPI
1171 +  sprintf( checkPointMsg, "all molecules initialized succesfully" );
1172 +  MPIcheckPoint();
1173 + #endif // is_mpi
1174 +
1175    // clean up the forcefield
1176    the_ff->calcRcut();
1177    the_ff->cleanMe();
1178 +
1179   }
1180  
1181   void SimSetup::initFromBass( void ){
# Line 949 | Line 1197 | void SimSetup::initFromBass( void ){
1197      have_extra =1;
1198  
1199      n_cells = (int)temp3 - 1;
1200 <    cellx = simnfo->box_x / temp3;
1201 <    celly = simnfo->box_y / temp3;
1202 <    cellz = simnfo->box_z / temp3;
1200 >    cellx = simnfo->boxLx / temp3;
1201 >    celly = simnfo->boxLy / temp3;
1202 >    cellz = simnfo->boxLz / temp3;
1203      n_extra = tot_nmol - ( 4 * n_cells * n_cells * n_cells );
1204      temp1 = ((double)n_extra) / ( pow( temp3, 3.0 ) - pow( n_cells, 3.0 ) );
1205      n_per_extra = (int)ceil( temp1 );
# Line 966 | Line 1214 | void SimSetup::initFromBass( void ){
1214    }
1215    else{
1216      n_cells = (int)temp3;
1217 <    cellx = simnfo->box_x / temp3;
1218 <    celly = simnfo->box_y / temp3;
1219 <    cellz = simnfo->box_z / temp3;
1217 >    cellx = simnfo->boxLx / temp3;
1218 >    celly = simnfo->boxLy / temp3;
1219 >    cellz = simnfo->boxLz / temp3;
1220    }
1221  
1222    current_mol = 0;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines