sixDoFRigidBodyDisplacementPointPatchVectorField.H
Go to the documentation of this file.
1/*---------------------------------------------------------------------------*\
2 ========= |
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4 \\ / O peration |
5 \\ / A nd | www.openfoam.com
6 \\/ M anipulation |
7-------------------------------------------------------------------------------
8 Copyright (C) 2011-2016 OpenFOAM Foundation
9-------------------------------------------------------------------------------
10License
11 This file is part of OpenFOAM.
12
13 OpenFOAM is free software: you can redistribute it and/or modify it
14 under the terms of the GNU General Public License as published by
15 the Free Software Foundation, either version 3 of the License, or
16 (at your option) any later version.
17
18 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25
26Class
27 Foam::sixDoFRigidBodyDisplacementPointPatchVectorField
28
29Description
30 Foam::sixDoFRigidBodyDisplacementPointPatchVectorField
31
32SourceFiles
33 sixDoFRigidBodyDisplacementPointPatchVectorField.C
34
35\*---------------------------------------------------------------------------*/
36
37#ifndef sixDoFRigidBodyDisplacementPointPatchVectorField_H
38#define sixDoFRigidBodyDisplacementPointPatchVectorField_H
39
42
43// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44
45namespace Foam
46{
47
48/*---------------------------------------------------------------------------*\
49 Class sixDoFRigidBodyDisplacementPointPatchVectorField Declaration
50\*---------------------------------------------------------------------------*/
53:
54 public fixedValuePointPatchField<vector>
55{
56 // Private data
57
58 //- Six dof motion object
60
61 //- Initial positions of points on the patch
62 pointField initialPoints_;
63
64 //- Reference density required by the forces object for
65 // incompressible calculations, required if rho == rhoInf
66 scalar rhoInf_;
67
68 //- Name of density field, optional unless used for an
69 // incompressible simulation, when this needs to be specified
70 // as rhoInf
71 word rhoName_;
72
73 //- State of gravity lookup:
74 // -1 = not determined yet, as the BC may be instantiated before g has
75 // been read into the db yet. Determination deferred until first
76 // call to updateCoeffs. A g keyword was not supplied to the
77 // dictionary.
78 // -2 = as for -1, but a gravity value was specified in the dictionary,
79 // specifying a value in the dictionary is considered a fatal
80 // error if g is available from the db.
81 // 0 = Use this boundary condition's own value of gravity, as not
82 // available from the db.
83 // 1 = Lookup gravity from db.
84 label lookupGravity_;
85
86 //- Gravity vector to store when not available from the db
87 vector g_;
88
89 //- Current time index (used for updating)
90 label curTimeIndex_;
91
92
93public:
94
95 //- Runtime type information
96 TypeName("sixDoFRigidBodyDisplacement");
97
98
99 // Constructors
100
101 //- Construct from patch and internal field
103 (
104 const pointPatch&,
106 );
107
108 //- Construct from patch, internal field and dictionary
110 (
111 const pointPatch&,
113 const dictionary&
114 );
115
116 //- Construct by mapping given patchField<vector> onto a new patch
118 (
120 const pointPatch&,
123 );
124
125 //- Construct and return a clone
127 {
129 (
131 (
132 *this
133 )
134 );
135 }
136
137 //- Construct as copy setting internal field reference
139 (
142 );
143
144 //- Construct and return a clone setting internal field reference
146 (
148 ) const
149 {
151 (
153 (
154 *this,
155 iF
156 )
157 );
158 }
159
160
161 // Member functions
162
163 // Mapping functions
164
165 //- Map (and resize as needed) from self given a mapping object
166 virtual void autoMap
167 (
169 );
170
171 //- Reverse map the given pointPatchField onto this pointPatchField
172 virtual void rmap
173 (
175 const labelList&
176 );
177
178
179 // Evaluation functions
180
181 //- Update the coefficients associated with the patch field
182 virtual void updateCoeffs();
183
184
185 //- Write
186 virtual void write(Ostream&) const;
187};
188
189
190// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
191
192} // End namespace Foam
193
194// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
195
196#endif
197
198// ************************************************************************* //
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:62
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: autoPtr.H:66
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
A FixedValue boundary condition for pointField.
Foam::pointPatchFieldMapper.
Abstract base class for point-mesh patch fields.
Basic pointPatch represents a set of points from the mesh.
Definition: pointPatch.H:64
virtual void autoMap(const pointPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
TypeName("sixDoFRigidBodyDisplacement")
Runtime type information.
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
virtual void rmap(const pointPatchField< vector > &, const labelList &)
Reverse map the given pointPatchField onto this pointPatchField.
virtual autoPtr< pointPatchField< vector > > clone() const
Construct and return a clone.
virtual autoPtr< pointPatchField< vector > > clone(const DimensionedField< vector, pointMesh > &iF) const
Construct and return a clone setting internal field reference.
Six degree of freedom motion for a rigid body.
A class for handling words, derived from Foam::string.
Definition: word.H:68
Namespace for OpenFOAM.
runTime write()
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition: typeInfo.H:73