processorPointPatchField.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 | 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 Class
25  Foam::processorPointPatchField
26 
27 Description
28  Foam::processorPointPatchField
29 
30 SourceFiles
31  processorPointPatchField.C
32 
33 \*---------------------------------------------------------------------------*/
34 
35 #ifndef processorPointPatchField_H
36 #define processorPointPatchField_H
37 
38 #include "coupledPointPatchField.H"
39 #include "processorPointPatch.H"
40 
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
42 
43 namespace Foam
44 {
45 
46 /*---------------------------------------------------------------------------*\
47  Class processorPointPatchField Declaration
48 \*---------------------------------------------------------------------------*/
49 
50 template<class Type>
52 :
53  public coupledPointPatchField<Type>
54 {
55  // Private data
56 
57  //- Local reference to processor patch
58  const processorPointPatch& procPatch_;
59 
60 public:
61 
62  //- Runtime type information
63  TypeName(processorPointPatch::typeName_());
64 
65 
66  // Constructors
67 
68  //- Construct from patch and internal field
70  (
71  const pointPatch&,
73  );
74 
75  //- Construct from patch, internal field and dictionary
77  (
78  const pointPatch&,
80  const dictionary&
81  );
82 
83  //- Construct by mapping given patchField<Type> onto a new patch
85  (
87  const pointPatch&,
90  );
91 
92  //- Construct and return a clone
93  virtual autoPtr<pointPatchField<Type> > clone() const
94  {
96  (
98  (
99  *this
100  )
101  );
102  }
103 
104  //- Construct as copy setting internal field reference
106  (
109  );
110 
111  //- Construct and return a clone setting internal field reference
113  (
115  ) const
116  {
118  (
120  (
121  *this,
122  iF
123  )
124  );
125  }
126 
127 
128  //- Destructor
129  virtual ~processorPointPatchField();
130 
131 
132  // Member functions
133 
134  // Access
135 
136  //- Return true if running parallel
137  virtual bool coupled() const
138  {
139  if (Pstream::parRun())
140  {
141  return true;
142  }
143  else
144  {
145  return false;
146  }
147  }
148 
149  //- Does the patch field perform the transformation
150  virtual bool doTransform() const
151  {
152  return
153  !(
154  procPatch_.procPolyPatch().parallel()
155  || pTraits<Type>::rank == 0
156  );
157  }
158 
159 
160  //- Constraint handling
161 
162  //- Return the constraint type this pointPatchField implements
163  virtual const word& constraintType() const
164  {
165  return type();
166  }
167 
168 
169  // Evaluation functions
170 
171  //- Evaluate the patch field
172  virtual void evaluate
173  (
174  const Pstream::commsTypes commsType=Pstream::blocking
175  )
176  {}
177 
178  //- Assume processor patch always collocated
179  virtual void swapAddSeparated
180  (
181  const Pstream::commsTypes commsType,
182  Field<Type>&
183  ) const
184  {}
185 };
186 
187 
188 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
189 
190 } // End namespace Foam
191 
192 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
193 
194 #ifdef NoRepository
195 # include "processorPointPatchField.C"
196 #endif
197 
198 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
199 
200 #endif
201 
202 // ************************************************************************* //
static bool & parRun()
Is this a parallel run?
Definition: UPstream.H:380
Basic pointPatch represents a set of points from the mesh.
Definition: pointPatch.H:56
Processor patch boundary needs to be such that the ordering of points in the patch is the same on bot...
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
A Coupled boundary condition for pointField.
virtual autoPtr< pointPatchField< Type > > clone() const
Construct and return a clone.
virtual void evaluate(const Pstream::commsTypes commsType=Pstream::blocking)
Evaluate the patch field.
A class for handling words, derived from string.
Definition: word.H:59
processorPointPatchField(const pointPatch &, const DimensionedField< Type, pointMesh > &)
Construct from patch and internal field.
const processorPolyPatch & procPolyPatch() const
Return the underlying processorPolyPatch.
A list of keyword definitions, which are a keyword followed by any number of values (e...
Definition: dictionary.H:137
Namespace for OpenFOAM.
virtual bool coupled() const
Return true if running parallel.
virtual bool parallel() const
Are the cyclic planes parallel.
commsTypes
Types of communications.
Definition: UPstream.H:64
virtual const word & constraintType() const
Constraint handling.
Pre-declare SubField and related Field type.
Definition: Field.H:57
TypeName(processorPointPatch::typeName_())
Runtime type information.
fileName::Type type(const fileName &)
Return the file type: DIRECTORY or FILE.
Definition: POSIX.C:589
Foam::pointPatchFieldMapper.
virtual void swapAddSeparated(const Pstream::commsTypes commsType, Field< Type > &) const
Assume processor patch always collocated.
Foam::processorPointPatchField.
Traits class for primitives.
Definition: pTraits.H:50
virtual ~processorPointPatchField()
Destructor.
virtual bool doTransform() const
Does the patch field perform the transformation.
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
Definition: PtrList.H:117