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 1180 by chrisfen, Thu May 20 20:24:07 2004 UTC vs.
Revision 1203 by gezelter, Thu May 27 18:59:17 2004 UTC

# Line 950 | Line 950 | void SimSetup::gatherInfo(void){
950      info[i].orthoTolerance = globals->getOrthoBoxTolerance();
951  
952      // check for thermodynamic integration
953 <    if (globals->haveThermIntLambda() && globals->haveThermIntK()) {
954 <      info[i].thermIntLambda = globals->getThermIntLambda();
955 <      info[i].thermIntK = globals->getThermIntK();
956 <      info[i].useThermInt = 1;
957 <      
958 <      Restraints *myRestraint = new Restraints(tot_nmol, info[i].thermIntLambda, info[i].thermIntK);
959 <      info[i].restraint = myRestraint;
953 >    if (globals->getUseThermInt()) {
954 >      if (globals->haveThermIntLambda() && globals->haveThermIntK()) {
955 >        info[i].useThermInt = globals->getUseThermInt();
956 >        info[i].thermIntLambda = globals->getThermIntLambda();
957 >        info[i].thermIntK = globals->getThermIntK();
958 >        
959 >        Restraints *myRestraint = new Restraints(tot_nmol, info[i].thermIntLambda, info[i].thermIntK);
960 >        info[i].restraint = myRestraint;
961 >      }
962 >      else {
963 >        sprintf(painCave.errMsg,
964 >                "SimSetup Error:\n"
965 >                "\tKeyword useThermInt was set to 'true' but\n"
966 >                "\tthermodynamicIntegrationLambda (and/or\n"
967 >                "\tthermodynamicIntegrationK) was not specified.\n"
968 >                "\tPlease provide a lambda value and k value in your .bass file.\n");
969 >        painCave.isFatal = 1;
970 >        simError();    
971 >      }
972      }
973 +    else if(globals->haveThermIntLambda() || globals->haveThermIntK()){
974 +        sprintf(painCave.errMsg,
975 +                "SimSetup Warning: If you want to use Thermodynamic\n"
976 +                "\tIntegration, set useThermInt to 'true' in your .bass file.\n"
977 +                "\tThe useThermInt keyword is 'false' by default, so your\n"
978 +                "\tlambda and/or k values are being ignored.\n");
979 +        painCave.isFatal = 0;
980 +        simError();  
981 +    }
982    }
983    
984    //setup seed for random number generator
# Line 1429 | Line 1450 | void SimSetup::calcSysValues(void){
1450   }
1451  
1452   void SimSetup::calcSysValues(void){
1453 <  int i;
1453 >  int i, j;
1454 >  int ncutgroups, atomsingroups, ngroupsinstamp;
1455  
1456    int* molMembershipArray;
1457 +  CutoffGroupStamp* cg;
1458  
1459    tot_atoms = 0;
1460    tot_bonds = 0;
1461    tot_bends = 0;
1462    tot_torsions = 0;
1463    tot_rigid = 0;
1464 +  tot_groups = 0;
1465    for (i = 0; i < n_components; i++){
1466      tot_atoms += components_nmol[i] * comp_stamps[i]->getNAtoms();
1467      tot_bonds += components_nmol[i] * comp_stamps[i]->getNBonds();
1468      tot_bends += components_nmol[i] * comp_stamps[i]->getNBends();
1469      tot_torsions += components_nmol[i] * comp_stamps[i]->getNTorsions();
1470      tot_rigid += components_nmol[i] * comp_stamps[i]->getNRigidBodies();
1471 +
1472 +    ncutgroups = comp_stamps[i]->getNCutoffGroups();
1473 +    atomsingroups = 0;
1474 +    for (j=0; j < ncutgroups; j++) {
1475 +      cg = comp_stamps[i]->getCutoffGroup(j);
1476 +      atomsingroups += cg->getNMembers();
1477 +    }
1478 +    ngroupsinstamp = comp_stamps[i]->getNAtoms() - atomsingroups + ncutgroups;
1479 +    tot_groups += components_nmol[i] * ngroupsinstamp;    
1480    }
1481    
1482    tot_SRI = tot_bonds + tot_bends + tot_torsions;
# Line 1456 | Line 1489 | void SimSetup::calcSysValues(void){
1489      info[i].n_torsions = tot_torsions;
1490      info[i].n_SRI = tot_SRI;
1491      info[i].n_mol = tot_nmol;
1492 <
1492 >    info[i].ngroup = tot_groups;
1493      info[i].molMembershipArray = molMembershipArray;
1494    }
1495   }
# Line 1510 | Line 1543 | void SimSetup::mpiMolDivide(void){
1543    }
1544    local_SRI = local_bonds + local_bends + local_torsions;
1545  
1546 <  info[0].n_atoms = mpiSim->getMyNlocal();  
1546 >  info[0].n_atoms = mpiSim->getNAtomsLocal();  
1547    
1548  
1549    if (local_atoms != info[0].n_atoms){
# Line 1558 | Line 1591 | void SimSetup::makeSysArrays(void){
1591  
1592  
1593      molIndex = 0;
1594 <    for (i = 0; i < mpiSim->getTotNmol(); i++){
1594 >    for (i = 0; i < mpiSim->getNMolGlobal(); i++){
1595        if (mol2proc[i] == worldRank){
1596          the_molecules[molIndex].setStampID(molCompType[i]);
1597          the_molecules[molIndex].setMyIndex(molIndex);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines