Loading...
Searching...
No Matches
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{
48/*---------------------------------------------------------------------------*\
49 Class sixDoFRigidBodyDisplacementPointPatchVectorField Declaration
50\*---------------------------------------------------------------------------*/
51
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
111 const pointPatch&,
113 const dictionary&
114 );
115
116 //- Construct by mapping given patch field onto a new patch
118 (
120 const pointPatch&,
123 );
124
125 //- Construct as copy setting internal field reference
127 (
130 );
131
132 //- Return a clone
134 {
135 return pointPatchField<vector>::Clone(*this);
136 }
137
138 //- Construct and return a clone setting internal field reference
140 (
142 ) const
143 {
144 return pointPatchField<vector>::Clone(*this, iF);
145 }
146
147
148 // Member functions
149
150 // Mapping functions
151
152 //- Map (and resize as needed) from self given a mapping object
153 virtual void autoMap
154 (
155 const pointPatchFieldMapper&
156 );
158 //- Reverse map the given pointPatchField onto this pointPatchField
159 virtual void rmap
160 (
162 const labelList&
163 );
164
166 // Evaluation functions
167
168 //- Update the coefficients associated with the patch field
169 virtual void updateCoeffs();
170
171
172 //- Write
173 virtual void write(Ostream&) const;
174};
175
176
177// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
178
179} // End namespace Foam
180
181// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
182
183#endif
184
185// ************************************************************************* //
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:59
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition autoPtr.H:65
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition dictionary.H:133
fixedValuePointPatchField(const pointPatch &, const DimensionedField< vector, pointMesh > &)
Foam::pointPatchFieldMapper.
Abstract base class for point-mesh patch fields.
static autoPtr< pointPatchField< Type > > Clone(const DerivedPatchField &pf, Args &&... args)
Clone a patch field, optionally with internal field reference etc.
Basic pointPatch represents a set of points from the mesh.
Definition pointPatch.H:67
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
Return a clone.
sixDoFRigidBodyDisplacementPointPatchVectorField(const pointPatch &, const DimensionedField< vector, pointMesh > &)
Construct from patch and internal field.
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:66
Namespace for OpenFOAM.
List< label > labelList
A List of labels.
Definition List.H:62
vectorField pointField
pointField is a vectorField.
Vector< scalar > vector
Definition vector.H:57
runTime write()
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition typeInfo.H:68