1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
5 \\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
7 -------------------------------------------------------------------------------
9 This file is part of OpenFOAM.
11 OpenFOAM is free software; you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by the
13 Free Software Foundation; either version 2 of the License, or (at your
14 option) any later version.
16 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 You should have received a copy of the GNU General Public License
22 along with OpenFOAM; if not, write to the Free Software Foundation,
23 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25 \*----------------------------------------------------------------------------*/
27 #include "tetherPotentialList.H"
29 // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
31 void Foam::tetherPotentialList::readTetherPotentialDict
33 const dictionary& tetherPotentialDict,
34 const List<word>& idList,
35 const List<label>& tetherIds
38 if (!tetherIds.size())
40 Info<< nl << "No tethered molecules found." << endl;
46 Info<< nl << "Building tether potentials." << endl;
48 idMap_ = List<label>(idList.size(), -1);
50 label tetherMapIndex = 0;
54 const label tetherId = tetherIds[t];
56 word tetherPotentialName = idList[tetherId];
58 if (!tetherPotentialDict.found(tetherPotentialName))
60 FatalErrorIn("tetherPotentialList::readTetherPotentialDict")
61 << "tether potential specification subDict "
62 << tetherPotentialName << " not found" << nl
72 tetherPotentialDict.subDict(tetherPotentialName)
76 idMap_[tetherId] = tetherMapIndex;
84 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
86 Foam::tetherPotentialList::tetherPotentialList()
88 PtrList<tetherPotential>(),
93 Foam::tetherPotentialList::tetherPotentialList
95 const dictionary& idListDict,
96 const dictionary& tetherPotentialDict,
97 const List<label>& tetherIds
100 PtrList<tetherPotential>(),
103 buildPotentials(idListDict, tetherPotentialDict, tetherIds);
107 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
109 Foam::tetherPotentialList::~tetherPotentialList()
113 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
115 void Foam::tetherPotentialList::buildPotentials
117 const dictionary& idListDict,
118 const dictionary& tetherPotentialDict,
119 const List<label>& tetherIds
122 setSize(tetherIds.size());
124 List<word> idList(idListDict.lookup("idList"));
126 readTetherPotentialDict(tetherPotentialDict, idList, tetherIds);
130 const Foam::tetherPotential& Foam::tetherPotentialList::tetherPotentialFunction
135 return (*this)[tetherPotentialIndex(a)];
139 Foam::scalar Foam::tetherPotentialList::force
145 scalar f = (*this)[tetherPotentialIndex(a)].force(rITMag);
151 Foam::scalar Foam::tetherPotentialList::energy
157 scalar e = (*this)[tetherPotentialIndex(a)].energy(rITMag);
163 // ************************************************************************* //