pointMesh.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
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.
15 
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.
20 
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/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
26 #include "pointMesh.H"
27 #include "globalMeshData.H"
28 #include "pointMeshMapper.H"
29 #include "pointFields.H"
30 #include "MapGeometricFields.H"
31 #include "MapPointField.H"
32 
33 
34 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
35 
36 namespace Foam
37 {
38 
39 defineTypeNameAndDebug(pointMesh, 0);
40 
41 }
42 
43 // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
44 
45 void Foam::pointMesh::mapFields(const mapPolyMesh& mpm)
46 {
47  if (debug)
48  {
49  Pout<< "void pointMesh::mapFields(const mapPolyMesh&): "
50  << "Mapping all registered pointFields."
51  << endl;
52  }
53  // Create a mapper
54  const pointMeshMapper m(*this, mpm);
55 
56  MapGeometricFields<scalar, pointPatchField, pointMeshMapper, pointMesh>(m);
57  MapGeometricFields<vector, pointPatchField, pointMeshMapper, pointMesh>(m);
59  <
61  pointPatchField,
62  pointMeshMapper,
63  pointMesh
64  >(m);
65  MapGeometricFields<symmTensor, pointPatchField, pointMeshMapper, pointMesh>
66  (m);
67  MapGeometricFields<tensor, pointPatchField, pointMeshMapper, pointMesh>(m);
68 }
69 
70 
71 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
72 
73 Foam::pointMesh::pointMesh(const polyMesh& pMesh)
74 :
76  GeoMesh<polyMesh>(pMesh),
77  boundary_(*this, pMesh.boundaryMesh())
78 {
79  if (debug)
80  {
81  Pout<< "pointMesh::pointMesh(const polyMesh&): "
82  << "Constructing from polyMesh " << pMesh.name()
83  << endl;
84  }
85 
86  // Calculate the geometry for the patches (transformation tensors etc.)
87  boundary_.calcGeometry();
88 }
89 
90 
91 // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
92 
94 {
95  if (debug)
96  {
97  Pout<< "~pointMesh::pointMesh()"
98  << endl;
99  }
100 }
101 
102 
103 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
104 
106 {
107  if (debug)
108  {
109  Pout<< "pointMesh::movePoints(const pointField&): "
110  << "Moving points." << endl;
111  }
112 
114 
115  return true;
116 }
117 
118 
120 {
121  if (debug)
122  {
123  Pout<< "pointMesh::updateMesh(const mapPolyMesh&): "
124  << "Updating for topology changes." << endl;
125  Pout<< endl;
126  }
127  boundary_.updateMesh();
128 
129  // Map all registered point fields
130  mapFields(mpm);
131 }
132 
133 
134 // ************************************************************************* //
const pointField & points
void movePoints(const pointField &)
Correct polyBoundaryMesh after moving points.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Definition: mapPolyMesh.H:158
~pointMesh()
Destructor.
Definition: pointMesh.C:93
Addressing for all faces on surface of mesh. Can either be read from polyMesh or from triSurface...
Definition: boundaryMesh.H:59
void MapGeometricFields(const MeshMapper &mapper)
Generic Geometric field mapper.
SphericalTensor< scalar > sphericalTensor
SphericalTensor of scalars.
void updateMesh()
Correct polyBoundaryMesh after topology update.
Mesh representing a set of points created from polyMesh.
Definition: pointMesh.H:48
bool movePoints()
Move points.
Definition: pointMesh.C:105
Namespace for OpenFOAM.
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:251
void updateMesh(const mapPolyMesh &mpm)
Update the mesh corresponding to given map.
Definition: pointMesh.C:119
const word & name() const
Return name.
Definition: IOobject.H:260
Templated abstract base-class for optional mesh objects used to automate their allocation to the mesh...
Definition: MeshObject.H:81
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:74
Generic mesh wrapper used by volMesh, surfaceMesh, pointMesh etc.
Definition: GeoMesh.H:46
defineTypeNameAndDebug(combustionModel, 0)
prefixOSstream Pout(cout,"Pout")
Definition: IOstreams.H:53