symmetryPlanePointPatchField.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 | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2013-2016 OpenFOAM Foundation
9 -------------------------------------------------------------------------------
10 License
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 
26 \*---------------------------------------------------------------------------*/
27 
29 
30 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
31 
32 template<class Type>
34 (
35  const pointPatch& p,
37 )
38 :
40  symmetryPlanePatch_(refCast<const symmetryPlanePointPatch>(p))
41 {}
42 
43 
44 template<class Type>
46 (
47  const pointPatch& p,
49  const dictionary& dict
50 )
51 :
53  symmetryPlanePatch_(refCast<const symmetryPlanePointPatch>(p, dict))
54 {
55  if (!isType<symmetryPlanePointPatch>(p))
56  {
58  << "patch " << this->patch().index() << " not symmetry type. "
59  << "Patch type = " << p.type()
61  }
62 }
63 
64 
65 template<class Type>
67 (
68  const symmetryPlanePointPatchField<Type>& ptf,
69  const pointPatch& p,
70  const DimensionedField<Type, pointMesh>& iF,
71  const pointPatchFieldMapper& mapper
72 )
73 :
74  basicSymmetryPointPatchField<Type>(ptf, p, iF, mapper),
75  symmetryPlanePatch_(refCast<const symmetryPlanePointPatch>(p))
76 {
77  if (!isType<symmetryPlanePointPatch>(this->patch()))
78  {
80  << "Field type does not correspond to patch type for patch "
81  << this->patch().index() << "." << endl
82  << "Field type: " << typeName << endl
83  << "Patch type: " << this->patch().type()
85  }
86 }
87 
88 
89 template<class Type>
91 (
92  const symmetryPlanePointPatchField<Type>& ptf,
93  const DimensionedField<Type, pointMesh>& iF
94 )
95 :
96  basicSymmetryPointPatchField<Type>(ptf, iF),
97  symmetryPlanePatch_(ptf.symmetryPlanePatch_)
98 {}
99 
100 
101 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
102 
103 template<class Type>
105 (
106  const Pstream::commsTypes
107 )
108 {
109  vector nHat = symmetryPlanePatch_.n();
110 
111  tmp<Field<Type>> tvalues =
112  (
113  (
114  this->patchInternalField()
115  + transform(I - 2.0*sqr(nHat), this->patchInternalField())
116  )/2.0
117  );
118 
119  // Get internal field to insert values into
120  Field<Type>& iF = const_cast<Field<Type>&>(this->primitiveField());
121 
122  this->setInInternalField(iF, tvalues());
123 }
124 
125 
126 // ************************************************************************* //
dictionary dict
errorManipArg< error, int > exit(error &err, const int errNo=1)
Definition: errorManip.H:125
const pointPatch & patch() const noexcept
Return the patch.
commsTypes
Communications types.
Definition: UPstream.H:77
error FatalError
Error stream (stdout output on all processes), with additional &#39;FOAM FATAL ERROR&#39; header text and sta...
A list of keyword definitions, which are a keyword followed by a number of values (eg...
Definition: dictionary.H:129
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
Definition: error.H:608
A Symmetry boundary condition for pointField.
dimensionedSymmTensor sqr(const dimensionedVector &dv)
Type & refCast(U &obj)
A dynamic_cast (for references) to Type reference.
Definition: typeInfo.H:172
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:531
symmetryPlanePointPatchField(const pointPatch &, const DimensionedField< Type, pointMesh > &)
Construct from patch and internal field.
static const Identity< scalar > I
Definition: Identity.H:100
Generic templated field type.
Definition: Field.H:62
virtual void evaluate(const Pstream::commsTypes commsType=Pstream::commsTypes::buffered)
Update the patch field.
refinementData transform(const tensor &, const refinementData val)
No-op rotational transform for base types.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
Definition: error.H:637
Basic pointPatch represents a set of points from the mesh.
Definition: pointPatch.H:64
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
label index() const noexcept
The index of this patch in the boundaryMesh.
volScalarField & p
A class for managing temporary objects.
Definition: HashPtrTable.H:50
IOerror FatalIOError
Error stream (stdout output on all processes), with additional &#39;FOAM FATAL IO ERROR&#39; header text and ...