32 void Foam::pairPotentialList::readPairPotentialDict
34 const List<word>& idList,
35 const dictionary& pairPotentialDict,
39 Info<<
nl <<
"Building pair potentials." <<
endl;
43 for (label a = 0; a < nIds_; ++a)
47 for (label
b = a;
b < nIds_; ++
b)
51 word pairPotentialName;
55 if (pairPotentialDict.found(idA +
"-" + idB))
57 pairPotentialName = idA +
"-" + idB;
62 <<
"Pair pairPotential specification subDict "
63 << idA <<
"-" << idB <<
" not found"
69 if (pairPotentialDict.found(idA +
"-" + idB))
71 pairPotentialName = idA +
"-" + idB;
74 else if (pairPotentialDict.found(idB +
"-" + idA))
76 pairPotentialName = idB +
"-" + idA;
82 <<
"Pair pairPotential specification subDict "
83 << idA <<
"-" << idB <<
" or "
84 << idB <<
"-" << idA <<
" not found"
90 pairPotentialDict.found(idA+
"-"+idB)
91 && pairPotentialDict.found(idB+
"-"+idA)
95 <<
"Pair pairPotential specification subDict "
96 << idA <<
"-" << idB <<
" and "
97 << idB <<
"-" << idA <<
" found multiple definition"
104 pairPotentialIndex(a,
b),
108 pairPotentialDict.subDict(pairPotentialName)
112 if ((*
this)[pairPotentialIndex(a,
b)].rCut() > rCutMax_)
114 rCutMax_ = (*this)[pairPotentialIndex(a,
b)].rCut();
117 if ((*
this)[pairPotentialIndex(a,
b)].writeTables())
119 OFstream ppTabFile(mesh.time().path()/pairPotentialName);
123 !(*
this)[pairPotentialIndex(a,
b)].writeEnergyAndForceTables
129 FatalErrorIn(
"pairPotentialList::readPairPotentialDict")
130 <<
"Failed writing to "
131 << ppTabFile.name() <<
nl
138 if (!pairPotentialDict.found(
"electrostatic"))
141 <<
"Pair pairPotential specification subDict electrostatic"
148 pairPotentialDict.subDict(
"electrostatic")
151 if (electrostaticPotential_->
rCut() > rCutMax_)
153 rCutMax_ = electrostaticPotential_->
rCut();
158 OFstream ppTabFile(mesh.time().path()/
"electrostatic");
162 FatalErrorIn(
"pairPotentialList::readPairPotentialDict")
163 <<
"Failed writing to "
164 << ppTabFile.name() <<
nl
169 rCutMaxSqr_ = rCutMax_*rCutMax_;
190 buildPotentials(idList, pairPotentialDict, mesh);
211 nIds_ = idList.
size();
213 readPairPotentialDict(idList, pairPotentialDict, mesh);
223 return (*
this)[pairPotentialIndex(a, b)];
229 if (rIJMagSqr < rCutMaxSqr_)
244 const scalar rIJMagSqr
247 if (rIJMagSqr < rCutSqr(a, b))
264 return (*
this)[pairPotentialIndex(a, b)].rMin();
274 return (*
this)[pairPotentialIndex(a, b)].dr();
284 return (*
this)[pairPotentialIndex(a, b)].rCutSqr();
294 return (*
this)[pairPotentialIndex(a, b)].rCut();
305 scalar
f = (*this)[pairPotentialIndex(a, b)].force(rIJMag);
318 scalar
e = (*this)[pairPotentialIndex(a, b)].energy(rIJMag);