initial commit for version 1.5.x patch release
[OpenFOAM-1.5.x.git] / src / lagrangian / molecularDynamics / potential / pairPotential / pairPotentialList / pairPotentialList.H
blob4ae264d373b5078bc87b5b4786d2064cd4ba53ef
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
4    \\    /   O peration     |
5     \\  /    A nd           | Copyright (C) 1991-2008 OpenCFD Ltd.
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 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
19     for more details.
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 Class
26     Foam::pairPotentialList
28 Description
30 SourceFiles
31     pairPotentialListI.H
32     pairPotentialList.C
34 \*---------------------------------------------------------------------------*/
36 #ifndef pairPotentialList_H
37 #define pairPotentialList_H
39 #include "PtrList.H"
40 #include "word.H"
41 #include "pairPotential.H"
42 #include "polyMesh.H"
44 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 namespace Foam
49 /*---------------------------------------------------------------------------*\
50                            Class pairPotentialList Declaration
51 \*---------------------------------------------------------------------------*/
53 class pairPotentialList
55     public PtrList<pairPotential>
57     // Private data
59         List<word> idList_;
60         
61         scalar rCutMax_;
63         scalar rCutMaxSqr_;
65     // Private Member Functions
67         inline label pairPotentialIndex
68         (
69             const label a,
70             const label b
71         ) const;
73         void readPairPotentialDict
74         (
75             const dictionary& pairPotentialDict,
76             const polyMesh& mesh
77         );
79         //- Disallow default bitwise assignment
80         void operator=(const pairPotentialList&);
82         //- Disallow default bitwise copy construct
83         pairPotentialList(const pairPotentialList&);
85 public:
87     // Constructors
89         pairPotentialList();
91         //- Construct from idList and potental dictionaries
92         pairPotentialList
93         (
94             const dictionary& idListDict,
95             const dictionary& pairPotentialDict,
96             const polyMesh& mesh
97         );
99     // Destructor
101         ~pairPotentialList();
103     // Member Functions
104         
105         void buildPotentials
106         (
107             const dictionary& idListDict,
108             const dictionary& pairPotentialDict,
109             const polyMesh& mesh
110         );
112         // Access
114             inline const List<word>& idList() const;
116             inline label nIds() const;
118             inline scalar rCutMax() const;
120             inline scalar rCutMaxSqr() const;
122             const pairPotential& pairPotentialFunction
123             (
124                 const label a,
125                 const label b
126             ) const;
128             // Return true if rIJ is within rCut for this pair.
129             bool rCutSqr
130             (
131                 const label a,
132                 const label b,
133                 const scalar rIJMagSqr
134             ) const;
136             scalar rMin (const label a, const label b) const;
138             scalar dr (const label a, const label b) const;
140             scalar rCutSqr (const label a, const label b) const;
142             scalar rCut (const label a, const label b) const;
144             scalar force
145             (
146                 const label a,
147                 const label b,
148                 const scalar rIJMag
149             ) const;
151             scalar energy
152             (
153                 const label a,
154                 const label b,
155                 const scalar rIJMag
156             ) const;
160 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
162 } // End namespace Foam
164 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
166 #include "pairPotentialListI.H"
168 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
170 #endif
172 // ************************************************************************* //