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())
120 autoPtr<Ostream> ppTabFile
124 mesh.time().path()/pairPotentialName
130 !(*
this)[pairPotentialIndex(a, b)].writeEnergyAndForceTables
137 <<
"Failed writing to " 138 << ppTabFile().name() <<
nl 145 if (!pairPotentialDict.found(
"electrostatic"))
148 <<
"Pair pairPotential specification subDict electrostatic" 155 pairPotentialDict.subDict(
"electrostatic")
158 if (electrostaticPotential_->rCut() > rCutMax_)
160 rCutMax_ = electrostaticPotential_->rCut();
163 if (electrostaticPotential_->writeTables())
166 autoPtr<Ostream> ppTabFile
170 mesh.time().path()/
"electrostatic" 174 if (!electrostaticPotential_->writeEnergyAndForceTables(ppTabFile()))
177 <<
"Failed writing to " 178 << ppTabFile().name() <<
nl 183 rCutMaxSqr_ = rCutMax_*rCutMax_;
225 nIds_ = idList.
size();
227 readPairPotentialDict(idList, pairPotentialDict, mesh);
237 return (*
this)[pairPotentialIndex(a, b)];
243 if (rIJMagSqr < rCutMaxSqr_)
258 const scalar rIJMagSqr
278 return (*
this)[pairPotentialIndex(a, b)].rMin();
288 return (*
this)[pairPotentialIndex(a, b)].dr();
298 return (*
this)[pairPotentialIndex(a, b)].rCutSqr();
308 return (*
this)[pairPotentialIndex(a, b)].rCut();
319 scalar
f = (*this)[pairPotentialIndex(a, b)].force(rIJMag);
332 scalar
e = (*this)[pairPotentialIndex(a, b)].energy(rIJMag);
FvWallInfoData< WallInfo, label > label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
static autoPtr< pairPotential > New(const word &name, const dictionary &pairPotentialProperties)
Return a reference to the selected viscosity model.
A list of keyword definitions, which are a keyword followed by any number of values (e...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
void size(const label)
Override size to be inconsistent with allocated storage.
virtual bool mkDir(const fileName &, mode_t=0777) const =0
Make directory.
bool rCutSqr(const label a, const label b, const scalar rIJMagSqr) const
const dimensionedScalar b
Wien displacement law constant: default SI units: [m K].
Ostream & endl(Ostream &os)
Add newline and flush stream.
const pairPotential & pairPotentialFunction(const label a, const label b) const
const fileOperation & fileHandler()
Get current file handler.
errorManip< error > abort(error &err)
void setSize(const label)
Reset size of PtrList. If extending the PtrList, new entries are.
void buildPotentials(const List< word > &idList, const dictionary &pairPotentialDict, const polyMesh &mesh)
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
scalar rMin(const label a, const label b) const
const doubleScalar e
Elementary charge.
Mesh consisting of general polyhedral cells.
scalar dr(const label a, const label b) const
scalar rCut(const label a, const label b) const
~pairPotentialList()
Destructor.
scalar force(const label a, const label b, const scalar rIJMag) const
scalar rCutMaxSqr() const
scalar energy(const label a, const label b, const scalar rIJMag) const