points0MotionSolver.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) 2016 OpenFOAM Foundation
9  Copyright (C) 2016-2019 OpenCFD Ltd.
10 -------------------------------------------------------------------------------
11 License
12  This file is part of OpenFOAM.
13 
14  OpenFOAM is free software: you can redistribute it and/or modify it
15  under the terms of the GNU General Public License as published by
16  the Free Software Foundation, either version 3 of the License, or
17  (at your option) any later version.
18 
19  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
20  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
21  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
22  for more details.
23 
24  You should have received a copy of the GNU General Public License
25  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
26 
27 Class
28  Foam::points0MotionSolver
29 
30 Description
31  Virtual base class for displacement motion solvers, where the point
32  motion is relative to a set of fixed points (points0).
33 
34 SourceFiles
35  points0MotionSolver.C
36 
37 \*---------------------------------------------------------------------------*/
38 
39 #ifndef Foam_points0MotionSolver_H
40 #define Foam_points0MotionSolver_H
41 
42 #include "motionSolver.H"
43 #include "pointFields.H"
44 #include "pointIOField.H"
45 #include "zoneMotion.H"
46 
47 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
48 
49 namespace Foam
50 {
51 
52 // Forward Declarations
53 class mapPolyMesh;
54 
55 /*---------------------------------------------------------------------------*\
56  Class points0MotionSolver Declaration
57 \*---------------------------------------------------------------------------*/
58 
60 :
61  public motionSolver,
62  public zoneMotion
63 {
64 protected:
65 
66  // Protected Data
67 
68  //- Starting points
70 
71 
72  // Protected Member Functions
73 
74  //- No copy construct
76 
77  //- No copy assignment
78  void operator=(const points0MotionSolver&) = delete;
79 
80 
81 public:
82 
83  //- Runtime type information
84  TypeName("points0MotionSolver");
85 
86 
87  // Constructors
88 
89  //- Construct from mesh and dictionary
91  (
92  const polyMesh&,
93  const IOdictionary&,
94  const word& type
95  );
96 
97  //- Construct from mesh and dictionary
99  (
100  const polyMesh&,
101  const IOdictionary&,
102  const pointIOField& points0,
103  const word& type
104  );
105 
106 
107  //- Destructor
108  virtual ~points0MotionSolver() = default;
109 
110 
111  // Member Functions
112 
113  //- Return IO object for points0
114  static IOobject points0IO(const polyMesh& mesh);
115 
116  //- Return reference to the reference ('0') pointField
118  {
119  return points0_;
120  }
121 
122  //- Return reference to the reference ('0') pointField
123  const pointField& points0() const noexcept
124  {
125  return points0_;
126  }
127 
128  //- Update local data for geometry changes
129  virtual void movePoints(const pointField&);
131  //- Update local data for topology changes
132  virtual void updateMesh(const mapPolyMesh&);
133 };
134 
135 
136 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
137 
138 } // End namespace Foam
139 
140 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
141 
142 #endif
143 
144 // ************************************************************************* //
Virtual base class for mesh motion solver.
Definition: motionSolver.H:54
virtual ~points0MotionSolver()=default
Destructor.
void operator=(const points0MotionSolver &)=delete
No copy assignment.
Intermediate class for handling "zonified" motion. Can select motion for the entire mesh...
Definition: zoneMotion.H:66
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Definition: mapPolyMesh.H:157
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
Definition: IOdictionary.H:50
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
Definition: POSIX.C:799
static IOobject points0IO(const polyMesh &mesh)
Return IO object for points0.
vectorField pointField
pointField is a vectorField.
Definition: pointFieldFwd.H:38
A class for handling words, derived from Foam::string.
Definition: word.H:63
virtual void movePoints(const pointField &)
Update local data for geometry changes.
points0MotionSolver(const points0MotionSolver &)=delete
No copy construct.
virtual void updateMesh(const mapPolyMesh &)
Update local data for topology changes.
const direction noexcept
Definition: Scalar.H:258
Virtual base class for displacement motion solvers, where the point motion is relative to a set of fi...
pointIOField points0_
Starting points.
pointField & points0() noexcept
Return reference to the reference (&#39;0&#39;) pointField.
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:74
const polyMesh & mesh() const
Return reference to mesh.
Definition: motionSolver.H:165
Defines the attributes of an object for which implicit objectRegistry management is supported...
Definition: IOobject.H:172
TypeName("points0MotionSolver")
Runtime type information.
A primitive field of type <T> with automated input and output.
Namespace for OpenFOAM.