Transferred copyright to the OpenFOAM Foundation
[OpenFOAM-2.0.x.git] / src / lagrangian / molecularDynamics / potential / tetherPotential / basic / tetherPotential.H
blob6fdfca091e2d85d2c642298dfddf646d2158b979
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::tetherPotential
27 Description
29 SourceFiles
30     tetherPotential.C
31     tetherPotentialNew.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef tetherPotential_H
36 #define tetherPotential_H
38 #include "IOdictionary.H"
39 #include "typeInfo.H"
40 #include "runTimeSelectionTables.H"
41 #include "autoPtr.H"
42 #include "vector.H"
44 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46 namespace Foam
49 /*---------------------------------------------------------------------------*\
50                       Class tetherPotential Declaration
51 \*---------------------------------------------------------------------------*/
53 class tetherPotential
56 protected:
58     // Protected data
60         word name_;
61         dictionary tetherPotentialProperties_;
64     // Private Member Functions
66         //- Disallow copy construct
67         tetherPotential(const tetherPotential&);
69         //- Disallow default bitwise assignment
70         void operator=(const tetherPotential&);
73 public:
75     //- Runtime type information
76     TypeName("tetherPotential");
79     // Declare run-time constructor selection table
81         declareRunTimeSelectionTable
82         (
83             autoPtr,
84             tetherPotential,
85             dictionary,
86             (
87                 const word& name,
88                 const dictionary& tetherPotentialProperties
89             ),
90             (name, tetherPotentialProperties)
91         );
94     // Selectors
96         //- Return a reference to the selected viscosity model
97         static autoPtr<tetherPotential> New
98         (
99             const word& name,
100             const dictionary& tetherPotentialProperties
101         );
104     // Constructors
106         //- Construct from components
107         tetherPotential
108         (
109             const word& name,
110             const dictionary& tetherPotentialProperties
111         );
114     //- Destructor
115     virtual ~tetherPotential()
116     {}
119     // Member Functions
121         virtual scalar energy (const vector r) const = 0;
123         virtual vector force (const vector r) const = 0;
125         const dictionary& tetherPotentialProperties() const
126         {
127             return tetherPotentialProperties_;
128         }
130         //- Read tetherPotential dictionary
131         virtual bool read(const dictionary& tetherPotentialProperties) = 0;
135 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
137 } // End namespace Foam
139 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
141 #endif
143 // ************************************************************************* //