| 175 | 
  | 
      cutoffGroup = createCutoffGroup(mol, *fai, localIndexMan); | 
| 176 | 
  | 
      mol->addCutoffGroup(cutoffGroup); | 
| 177 | 
  | 
    } | 
| 178 | 
< | 
    //create constraints | 
| 178 | 
> | 
 | 
| 179 | 
> | 
    //create bonded constraintPairs: | 
| 180 | 
  | 
    createConstraintPair(mol); | 
| 181 | 
+ | 
 | 
| 182 | 
+ | 
    //create non-bonded constraintPairs | 
| 183 | 
+ | 
    for (int i = 0; i < molStamp->getNConstraints(); ++i) { | 
| 184 | 
+ | 
      ConstraintStamp* cStamp = molStamp->getConstraintStamp(i); | 
| 185 | 
+ | 
      Atom* atomA; | 
| 186 | 
+ | 
      Atom* atomB; | 
| 187 | 
+ | 
       | 
| 188 | 
+ | 
      atomA = mol->getAtomAt(cStamp->getA()); | 
| 189 | 
+ | 
      atomB = mol->getAtomAt(cStamp->getB()); | 
| 190 | 
+ | 
      assert( atomA && atomB ); | 
| 191 | 
+ | 
       | 
| 192 | 
+ | 
      RealType distance; | 
| 193 | 
+ | 
      bool printConstraintForce = false; | 
| 194 | 
+ | 
 | 
| 195 | 
+ | 
      if (!cStamp->haveConstrainedDistance()) { | 
| 196 | 
+ | 
        sprintf(painCave.errMsg, | 
| 197 | 
+ | 
                "Constraint Error: A non-bond constraint was specified\n" | 
| 198 | 
+ | 
                "\twithout providing a value for the constrainedDistance.\n"); | 
| 199 | 
+ | 
        painCave.isFatal = 1; | 
| 200 | 
+ | 
        simError();       | 
| 201 | 
+ | 
      } else { | 
| 202 | 
+ | 
        distance = cStamp->getConstrainedDistance(); | 
| 203 | 
+ | 
      } | 
| 204 | 
+ | 
 | 
| 205 | 
+ | 
      if (cStamp->havePrintConstraintForce()) { | 
| 206 | 
+ | 
        printConstraintForce = cStamp->getPrintConstraintForce(); | 
| 207 | 
+ | 
      } | 
| 208 | 
+ | 
     | 
| 209 | 
+ | 
      ConstraintElem* consElemA = new ConstraintElem(atomA); | 
| 210 | 
+ | 
      ConstraintElem* consElemB = new ConstraintElem(atomB); | 
| 211 | 
+ | 
      ConstraintPair* cPair = new ConstraintPair(consElemA, consElemB, distance, | 
| 212 | 
+ | 
                                                 printConstraintForce); | 
| 213 | 
+ | 
      mol->addConstraintPair(cPair); | 
| 214 | 
+ | 
    } | 
| 215 | 
+ | 
 | 
| 216 | 
+ | 
    // now create the constraint elements: | 
| 217 | 
+ | 
 | 
| 218 | 
  | 
    createConstraintElem(mol); | 
| 219 | 
  | 
     | 
| 220 | 
  | 
    // Does this molecule stamp define a total constrained charge value? | 
| 582 | 
  | 
    //add bond constraints | 
| 583 | 
  | 
    Molecule::BondIterator bi; | 
| 584 | 
  | 
    Bond* bond; | 
| 585 | 
+ | 
    ConstraintPair* cPair; | 
| 586 | 
+ | 
 | 
| 587 | 
  | 
    for (bond = mol->beginBond(bi); bond != NULL; bond = mol->nextBond(bi)) { | 
| 588 | 
  | 
         | 
| 589 | 
  | 
      BondType* bt = bond->getBondType(); | 
| 593 | 
  | 
 | 
| 594 | 
  | 
        ConstraintElem* consElemA = new ConstraintElem(bond->getAtomA()); | 
| 595 | 
  | 
        ConstraintElem* consElemB = new ConstraintElem(bond->getAtomB());             | 
| 596 | 
< | 
        ConstraintPair* consPair = new ConstraintPair(consElemA, consElemB, fbt->getEquilibriumBondLength()); | 
| 597 | 
< | 
        mol->addConstraintPair(consPair); | 
| 596 | 
> | 
        cPair = new ConstraintPair(consElemA, consElemB,  | 
| 597 | 
> | 
                                   fbt->getEquilibriumBondLength(), false); | 
| 598 | 
> | 
        mol->addConstraintPair(cPair); | 
| 599 | 
  | 
      } | 
| 600 | 
  | 
    } | 
| 601 | 
  | 
 | 
| 607 | 
  | 
    ConstraintPair* consPair; | 
| 608 | 
  | 
    Molecule::ConstraintPairIterator cpi; | 
| 609 | 
  | 
    std::set<StuntDouble*> sdSet; | 
| 610 | 
< | 
    for (consPair = mol->beginConstraintPair(cpi); consPair != NULL; consPair = mol->nextConstraintPair(cpi)) { | 
| 610 | 
> | 
    for (consPair = mol->beginConstraintPair(cpi); consPair != NULL;  | 
| 611 | 
> | 
         consPair = mol->nextConstraintPair(cpi)) { | 
| 612 | 
  | 
 | 
| 613 | 
  | 
      StuntDouble* sdA = consPair->getConsElem1()->getStuntDouble();             | 
| 614 | 
  | 
      if (sdSet.find(sdA) == sdSet.end()){ | 
| 615 | 
  | 
        sdSet.insert(sdA); | 
| 616 | 
  | 
        mol->addConstraintElem(new ConstraintElem(sdA)); | 
| 617 | 
  | 
      } | 
| 618 | 
< | 
 | 
| 618 | 
> | 
       | 
| 619 | 
  | 
      StuntDouble* sdB = consPair->getConsElem2()->getStuntDouble();             | 
| 620 | 
  | 
      if (sdSet.find(sdB) == sdSet.end()){ | 
| 621 | 
  | 
        sdSet.insert(sdB); | 
| 622 | 
  | 
        mol->addConstraintElem(new ConstraintElem(sdB)); | 
| 623 | 
< | 
      } | 
| 582 | 
< | 
         | 
| 623 | 
> | 
      }       | 
| 624 | 
  | 
    } | 
| 584 | 
– | 
 | 
| 625 | 
  | 
  } | 
| 586 | 
– | 
     | 
| 626 | 
  | 
} |