BUG: UListIO: byteSize overflowing on really big faceLists
[OpenFOAM-2.0.x.git] / src / lagrangian / molecularDynamics / potential / pairPotential / pairPotentialList / pairPotentialList.H
blob0270a03ce89bfbc709feb4d3c13f8b96ceaac952
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
6      \\/     M anipulation  |
7 -------------------------------------------------------------------------------
8 License
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
13     the Free Software Foundation, either version 3 of the License, or
14     (at your 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
19     for more details.
21     You should have received a copy of the GNU General Public License
22     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::pairPotentialList
27 Description
29 SourceFiles
30     pairPotentialListI.H
31     pairPotentialList.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef pairPotentialList_H
36 #define pairPotentialList_H
38 #include "PtrList.H"
39 #include "word.H"
40 #include "pairPotential.H"
41 #include "polyMesh.H"
43 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
45 namespace Foam
48 /*---------------------------------------------------------------------------*\
49                       Class pairPotentialList Declaration
50 \*---------------------------------------------------------------------------*/
52 class pairPotentialList
54     public PtrList<pairPotential>
56     // Private data
58         label nIds_;
60         scalar rCutMax_;
62         scalar rCutMaxSqr_;
64         autoPtr<pairPotential> electrostaticPotential_;
67     // Private Member Functions
69         inline label pairPotentialIndex
70         (
71             const label a,
72             const label b
73         ) const;
75         void readPairPotentialDict
76         (
77             const List<word>& idList,
78             const dictionary& pairPotentialDict,
79             const polyMesh& mesh
80         );
82         //- Disallow default bitwise assignment
83         void operator=(const pairPotentialList&);
85         //- Disallow default bitwise copy construct
86         pairPotentialList(const pairPotentialList&);
89 public:
91     // Constructors
93         pairPotentialList();
95         //- Construct from idList and potental dictionaries
96         pairPotentialList
97         (
98             const List<word>& idList,
99             const dictionary& pairPotentialDict,
100             const polyMesh& mesh
101         );
104     //- Destructor
105     ~pairPotentialList();
108     // Member Functions
110         void buildPotentials
111         (
112             const List<word>& idList,
113             const dictionary& pairPotentialDict,
114             const polyMesh& mesh
115         );
118         // Access
120             inline scalar rCutMax() const;
122             inline scalar rCutMaxSqr() const;
124             bool rCutMaxSqr(scalar rIJMagSqr) const;
126             const pairPotential& pairPotentialFunction
127             (
128                 const label a,
129                 const label b
130             ) const;
132             // Return true if rIJ is within rCut for this pair.
133             bool rCutSqr
134             (
135                 const label a,
136                 const label b,
137                 const scalar rIJMagSqr
138             ) const;
140             scalar rMin(const label a, const label b) const;
142             scalar dr(const label a, const label b) const;
144             scalar rCutSqr(const label a, const label b) const;
146             scalar rCut(const label a, const label b) const;
148             scalar force
149             (
150                 const label a,
151                 const label b,
152                 const scalar rIJMag
153             ) const;
155             scalar energy
156             (
157                 const label a,
158                 const label b,
159                 const scalar rIJMag
160             ) const;
162             inline const pairPotential& electrostatic() const;
166 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
168 } // End namespace Foam
170 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
172 #include "pairPotentialListI.H"
174 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
176 #endif
178 // ************************************************************************* //