cyclicAMIPolyPatch.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  Copyright (C) 2018-2020 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::cyclicAMIPolyPatch
29 
30 Description
31  Cyclic patch for Arbitrary Mesh Interface (AMI)
32 
33  Includes provision for updating the patch topology to enforce a 1-to-1
34  face match across the interface, based on the \c createAMIFaces flag.
35 
36  The manipulations are based on the reference:
37 
38  \verbatim
39  H.J. Aguerre, S. Márquez Damián, J.M. Gimenez, N.M.Nigro, Conservative
40  handling of arbitrary non-conformal interfaces using an efficient
41  supermesh, Journal of Computational Physics 335(15) 21-49. 2017.
42  https://doi.org/10.1016/j.jcp.2017.01.018.
43  \endverbatim
44 
45 SourceFiles
46  cyclicAMIPolyPatch.C
47 
48 \*---------------------------------------------------------------------------*/
49 
50 #ifndef cyclicAMIPolyPatch_H
51 #define cyclicAMIPolyPatch_H
52 
53 #include "coupledPolyPatch.H"
55 #include "polyBoundaryMesh.H"
56 #include "coupleGroupIdentifier.H"
57 #include "faceAreaWeightAMI.H"
58 
59 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
60 
61 namespace Foam
62 {
63 
64 /*---------------------------------------------------------------------------*\
65  Class cyclicAMIPolyPatch Declaration
66 \*---------------------------------------------------------------------------*/
67 
69 :
70  public coupledPolyPatch
71 {
72  // Private Member Functions
73 
74  //- Return normal of face at max distance from rotation axis
75  vector findFaceNormalMaxRadius(const pointField& faceCentres) const;
76 
77  void calcTransforms
78  (
79  const primitivePatch& half0,
80  const pointField& half0Ctrs,
81  const vectorField& half0Areas,
82  const pointField& half1Ctrs,
83  const vectorField& half1Areas
84  );
85 
86 
87 protected:
88 
89  // Protected data
90 
91  //- Name of other half
92  mutable word nbrPatchName_;
93 
94  //- Optional patchGroup to find neighbPatch
96 
97  //- Index of other half
98  mutable label nbrPatchID_;
99 
100 
101  // Transformations
102 
103  // For rotation
104 
105  //- Axis of rotation for rotational cyclics
107 
108  //- Point on axis of rotation for rotational cyclics
110 
111  //- Flag to show whether the rotation angle is defined
113 
114  //- Rotation angle
115  scalar rotationAngle_;
116 
117 
118  // For translation
119 
120  //- Translation vector
122 
123 
124  //- AMI interpolation class
126 
127  //- Dictionary used during projection surface construction
128  const dictionary surfDict_;
129 
130  //- Projection surface
132 
133 
134  // Change of topology as AMI is updated
135 
136  //- Flag to indicate that new AMI faces will created
137  // Set by the call to changeTopology
138  mutable bool createAMIFaces_;
139 
140  //- Move face centres (default = no)
141  bool moveFaceCentres_;
142 
143  mutable bool updatingAMI_;
144 
146 
148 
149  //- Temporary storage for AMI face areas
150  mutable vectorField faceAreas0_;
151 
152  //- Temporary storage for AMI face centres
153  mutable vectorField faceCentres0_;
154 
155 
156  // Protected Member Functions
157 
158  // Topology change
159 
160  //- Collect faces to remove in the topoChange container
161  virtual bool removeAMIFaces(polyTopoChange& topoChange);
162 
163  //- Collect faces to add in the topoChange container
164  virtual bool addAMIFaces(polyTopoChange& topoChange);
165 
166  //- Set properties of newly inserted faces after topological changes
167  virtual void setAMIFaces();
168 
169  //- Helper to re-apply the geometric scaling lost during mesh
170  //- updates
171  virtual void restoreScaledGeometry();
172 
173 
174  //- Create and return pointer to the projection surface
175  const autoPtr<searchableSurface>& surfPtr() const;
176 
177  //- Reset the AMI interpolator, supply patch points
178  virtual void resetAMI(const UList<point>& points) const;
179 
180  //- Reset the AMI interpolator, use current patch points
181  virtual void resetAMI() const;
182 
183  //- Recalculate the transformation tensors
184  virtual void calcTransforms();
185 
186  //- Initialise the calculation of the patch geometry
187  virtual void initGeometry(PstreamBuffers&);
188 
189  //- Calculate the patch geometry
190  virtual void calcGeometry(PstreamBuffers&);
191 
192  //- Initialise the patches for moving points
193  virtual void initMovePoints(PstreamBuffers& pBufs, const pointField&);
194 
195  //- Correct patches after moving points
196  virtual void movePoints(PstreamBuffers& pBufs, const pointField&);
197 
198  //- Initialise the update of the patch topology
199  virtual void initUpdateMesh(PstreamBuffers&);
200 
201  //- Update of the patch topology
202  virtual void updateMesh(PstreamBuffers&);
203 
204  //- Clear geometry
205  virtual void clearGeom();
206 
207 
208 public:
209 
210  //- Runtime type information
211  TypeName("cyclicAMI");
212 
213 
214  // Constructors
215 
216  //- Construct from (base coupled patch) components
218  (
219  const word& name,
220  const label size,
221  const label start,
222  const label index,
223  const polyBoundaryMesh& bm,
224  const word& patchType,
226  const word& defaultAMIMethod = faceAreaWeightAMI::typeName
227  );
228 
229  //- Construct from dictionary
231  (
232  const word& name,
233  const dictionary& dict,
234  const label index,
235  const polyBoundaryMesh& bm,
236  const word& patchType,
237  const word& defaultAMIMethod = faceAreaWeightAMI::typeName
238  );
239 
240  //- Construct as copy, resetting the boundary mesh
242 
243  //- Construct given the original patch and resetting the
244  // face list and boundary mesh information
246  (
247  const cyclicAMIPolyPatch& pp,
248  const polyBoundaryMesh& bm,
249  const label index,
250  const label newSize,
251  const label newStart,
252  const word& nbrPatchName
253  );
254 
255  //- Construct given the original patch and a map
257  (
258  const cyclicAMIPolyPatch& pp,
259  const polyBoundaryMesh& bm,
260  const label index,
261  const labelUList& mapAddressing,
262  const label newStart
263  );
264 
265 
266  //- Construct and return a clone, resetting the boundary mesh
267  virtual autoPtr<polyPatch> clone(const polyBoundaryMesh& bm) const
268  {
270  }
271 
272  //- Construct and return a clone, resetting the face list
273  // and boundary mesh
275  (
276  const polyBoundaryMesh& bm,
277  const label index,
278  const label newSize,
279  const label newStart
280  ) const
281  {
282  return autoPtr<polyPatch>
283  (
285  (
286  *this,
287  bm,
288  index,
289  newSize,
290  newStart,
292  )
293  );
294  }
295 
296  //- Construct and return a clone, resetting the face list
297  // and boundary mesh
299  (
300  const polyBoundaryMesh& bm,
301  const label index,
302  const labelUList& mapAddressing,
303  const label newStart
304  ) const
305  {
306  return autoPtr<polyPatch>
307  (
309  (
310  *this,
311  bm,
312  index,
313  mapAddressing,
314  newStart
315  )
316  );
317  }
318 
319 
320  //- Destructor
321  virtual ~cyclicAMIPolyPatch() = default;
322 
323 
324  // Member Functions
325 
326  // Access
327 
328  //- Tolerance used e.g. for area calculations/limits
329  static const scalar tolerance_;
330 
331  //- Flag to indicate whether the AMI can be reset
332  inline bool canResetAMI() const;
333 
334  //- Return access to the createAMIFaces flag
335  inline bool createAMIFaces() const;
336 
337  //- Return access to the updated flag
338  inline bool updatingAMI() const;
339 
340  //- Return true if this patch changes the mesh topology
341  // True when createAMIFaces is true
342  virtual bool changeTopology() const;
343 
344  //- Set topology changes in the polyTopoChange object
345  virtual bool setTopology(polyTopoChange& topoChange);
346 
347  //- Is patch 'coupled'. Note that on AMI the geometry is not
348  //- coupled but the fields are!
349  virtual bool coupled() const
350  {
351  return false;
352  }
353 
354  //- Neighbour patch name
355  inline const word& neighbPatchName() const;
356 
357  //- Neighbour patch ID
358  virtual label neighbPatchID() const;
359 
360  //- Does this side own the patch?
361  virtual bool owner() const;
362 
363  //- Return a reference to the neighbour patch
364  virtual const cyclicAMIPolyPatch& neighbPatch() const;
365 
366  //- Return a reference to the AMI interpolator
367  const AMIPatchToPatchInterpolation& AMI() const;
368 
369  //- Helper function to return the weights
370  inline const scalarListList& weights() const;
371 
372  //- Helper function to return the weights sum
373  inline const scalarField& weightsSum() const;
374 
375  //- Return true if applying the low weight correction
376  bool applyLowWeightCorrection() const;
377 
378  //- Return access to the initial face areas
379  // Used for topology change
380  inline vectorField& faceAreas0() const;
381 
382  //- Return access to the initial face centres
383  // Used for topology change
384  inline vectorField& faceCentres0() const;
385 
386 
387  // Transformations
388 
389  //- Axis of rotation for rotational cyclic AMI
390  inline const vector& rotationAxis() const;
391 
392  //- Point on axis of rotation for rotational cyclic AMI
393  inline const point& rotationCentre() const;
394 
395  //- Translation vector for translational cyclic AMI
396  inline const vector& separationVector() const;
397 
398  //- Transform patch-based positions from nbr side to this side
399  virtual void transformPosition(pointField&) const;
400 
401  //- Transform a patch-based position from nbr side to this side
402  virtual void transformPosition
403  (
404  point& l,
405  const label facei
406  ) const;
407 
408  //- Transform a patch-based position from this side to nbr side
409  virtual void reverseTransformPosition
410  (
411  point& l,
412  const label facei
413  ) const;
414 
415  //- Transform a patch-based direction from this side to nbr side
416  virtual void reverseTransformDirection
417  (
418  vector& d,
419  const label facei
420  ) const;
421 
422 
423  // Interpolations
424 
425  //- Interpolate field
426  template<class Type>
428  (
429  const Field<Type>& fld,
430  const UList<Type>& defaultValues = UList<Type>()
431  ) const;
432 
433  //- Interpolate tmp field
434  template<class Type>
436  (
437  const tmp<Field<Type>>& tFld,
438  const UList<Type>& defaultValues = UList<Type>()
439  ) const;
440 
441  //- Low-level interpolate List
442  template<class Type, class CombineOp>
443  void interpolate
444  (
445  const UList<Type>& fld,
446  const CombineOp& cop,
447  List<Type>& result,
448  const UList<Type>& defaultValues = UList<Type>()
449  ) const;
450 
451 
452  //- Calculate the patch geometry
453  virtual void calcGeometry
454  (
455  const primitivePatch& referPatch,
456  const pointField& thisCtrs,
457  const vectorField& thisAreas,
458  const pointField& thisCc,
459  const pointField& nbrCtrs,
460  const vectorField& nbrAreas,
461  const pointField& nbrCc
462  );
463 
464  //- Initialize ordering for primitivePatch. Does not
465  //- refer to *this (except for name() and type() etc.)
466  virtual void initOrder
467  (
469  const primitivePatch&
470  ) const;
471 
472  //- Return new ordering for primitivePatch.
473  // Ordering is -faceMap: for every face
474  // index of the new face -rotation:for every new face the clockwise
475  // shift of the original face. Return false if nothing changes
476  // (faceMap is identity, rotation is 0), true otherwise.
477  virtual bool order
478  (
480  const primitivePatch&,
482  labelList& rotation
483  ) const;
484 
485  //- Return face index on neighbour patch which shares point p
486  //- following trajectory vector n
487  label pointFace
488  (
489  const label facei,
490  const vector& n,
491  point& p
492  ) const;
493 
494  //- Write the polyPatch data as a dictionary
495  virtual void write(Ostream&) const;
496 };
497 
498 
499 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
500 
501 } // End namespace Foam
502 
503 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
504 
505 #include "cyclicAMIPolyPatchI.H"
506 
507 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
508 
509 #ifdef NoRepository
511 #endif
512 
513 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
514 
515 #endif
516 
517 // ************************************************************************* //
Foam::coupleGroupIdentifier
Encapsulates using "patchGroups" to specify coupled patch.
Definition: coupleGroupIdentifier.H:58
Foam::cyclicAMIPolyPatch::order
virtual bool order(PstreamBuffers &, const primitivePatch &, labelList &faceMap, labelList &rotation) const
Return new ordering for primitivePatch.
Definition: cyclicAMIPolyPatch.C:1040
p
volScalarField & p
Definition: createFieldRefs.H:8
Foam::faceMap
Pair< int > faceMap(const label facePi, const face &faceP, const label faceNi, const face &faceN)
Definition: blockMeshMergeTopological.C:94
Foam::cyclicAMIPolyPatch::resetAMI
virtual void resetAMI() const
Reset the AMI interpolator, use current patch points.
Definition: cyclicAMIPolyPatch.C:323
Foam::cyclicAMIPolyPatch::owner
virtual bool owner() const
Does this side own the patch?
Definition: cyclicAMIPolyPatch.C:843
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:62
Foam::polyBoundaryMesh
A polyBoundaryMesh is a polyPatch list with additional search methods and registered IO.
Definition: polyBoundaryMesh.H:62
Foam::cyclicAMIPolyPatch::updatingAMI_
bool updatingAMI_
Definition: cyclicAMIPolyPatch.H:142
Foam::cyclicAMIPolyPatch::nbrPatchName_
word nbrPatchName_
Name of other half.
Definition: cyclicAMIPolyPatch.H:91
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:59
Foam::cyclicAMIPolyPatch::initOrder
virtual void initOrder(PstreamBuffers &, const primitivePatch &) const
Definition: cyclicAMIPolyPatch.C:1032
Foam::cyclicAMIPolyPatch::changeTopology
virtual bool changeTopology() const
Return true if this patch changes the mesh topology.
Definition: cyclicAMIPolyPatchTopologyChange.C:647
Foam::cyclicAMIPolyPatch::rotationCentre_
point rotationCentre_
Point on axis of rotation for rotational cyclics.
Definition: cyclicAMIPolyPatch.H:108
Foam::cyclicAMIPolyPatch::initGeometry
virtual void initGeometry(PstreamBuffers &)
Initialise the calculation of the patch geometry.
Definition: cyclicAMIPolyPatch.C:436
Foam::cyclicAMIPolyPatch::setAMIFaces
virtual void setAMIFaces()
Set properties of newly inserted faces after topological changes.
Definition: cyclicAMIPolyPatchTopologyChange.C:261
coupleGroupIdentifier.H
Foam::PstreamBuffers
Buffers for inter-processor communications streams (UOPstream, UIPstream).
Definition: PstreamBuffers.H:88
Foam::cyclicAMIPolyPatch::reverseTransformPosition
virtual void reverseTransformPosition(point &l, const label facei) const
Transform a patch-based position from this side to nbr side.
Definition: cyclicAMIPolyPatch.C:961
Foam::polyTopoChange
Direct mesh changes based on v1.3 polyTopoChange syntax.
Definition: polyTopoChange.H:99
Foam::cyclicAMIPolyPatch::surfDict_
const dictionary surfDict_
Dictionary used during projection surface construction.
Definition: cyclicAMIPolyPatch.H:127
Foam::cyclicAMIPolyPatch::weights
const scalarListList & weights() const
Helper function to return the weights.
Definition: cyclicAMIPolyPatchI.H:61
Foam::cyclicAMIPolyPatch::surfPtr
const autoPtr< searchableSurface > & surfPtr() const
Create and return pointer to the projection surface.
Definition: cyclicAMIPolyPatch.C:292
Foam::cyclicAMIPolyPatch::coupleGroup_
const coupleGroupIdentifier coupleGroup_
Optional patchGroup to find neighbPatch.
Definition: cyclicAMIPolyPatch.H:94
Foam::cyclicAMIPolyPatch::tolerance_
static const scalar tolerance_
Tolerance used e.g. for area calculations/limits.
Definition: cyclicAMIPolyPatch.H:328
cyclicAMIPolyPatchTemplates.C
Foam::coupledPolyPatch
The coupledPolyPatch is an abstract base class for patches that couple regions of the computational d...
Definition: coupledPolyPatch.H:53
Foam::cyclicAMIPolyPatch::nbrPatchID_
label nbrPatchID_
Index of other half.
Definition: cyclicAMIPolyPatch.H:97
Foam::cyclicAMIPolyPatch::separationVector
const vector & separationVector() const
Translation vector for translational cyclic AMI.
Definition: cyclicAMIPolyPatchI.H:106
Foam::cyclicAMIPolyPatch::initMovePoints
virtual void initMovePoints(PstreamBuffers &pBufs, const pointField &)
Initialise the patches for moving points.
Definition: cyclicAMIPolyPatch.C:460
Foam::cyclicAMIPolyPatch::coupled
virtual bool coupled() const
Definition: cyclicAMIPolyPatch.H:348
Foam::cyclicAMIPolyPatch::updateMesh
virtual void updateMesh(PstreamBuffers &)
Update of the patch topology.
Definition: cyclicAMIPolyPatch.C:532
Foam::cyclicAMIPolyPatch::canResetAMI
bool canResetAMI() const
Flag to indicate whether the AMI can be reset.
Definition: cyclicAMIPolyPatchI.H:31
n
label n
Definition: TABSMDCalcMethod2.H:31
Foam::cyclicAMIPolyPatch::transformPosition
virtual void transformPosition(pointField &) const
Transform patch-based positions from nbr side to this side.
Definition: cyclicAMIPolyPatch.C:887
coupledPolyPatch.H
Foam::cyclicAMIPolyPatch::weightsSum
const scalarField & weightsSum() const
Helper function to return the weights sum.
Definition: cyclicAMIPolyPatchI.H:72
Foam::cyclicAMIPolyPatch::separationVector_
vector separationVector_
Translation vector.
Definition: cyclicAMIPolyPatch.H:120
Foam::cyclicAMIPolyPatch::calcGeometry
virtual void calcGeometry(PstreamBuffers &)
Calculate the patch geometry.
Definition: cyclicAMIPolyPatch.C:453
Foam::Field< vector >
Foam::cyclicAMIPolyPatch::write
virtual void write(Ostream &) const
Write the polyPatch data as a dictionary.
Definition: cyclicAMIPolyPatch.C:1104
Foam::cyclicAMIPolyPatch::faceAreas0_
vectorField faceAreas0_
Temporary storage for AMI face areas.
Definition: cyclicAMIPolyPatch.H:149
Foam::cyclicAMIPolyPatch::AMIPtr_
autoPtr< AMIPatchToPatchInterpolation > AMIPtr_
AMI interpolation class.
Definition: cyclicAMIPolyPatch.H:124
Foam::cyclicAMIPolyPatch::pointFace
label pointFace(const label facei, const vector &n, point &p) const
Definition: cyclicAMIPolyPatch.C:1058
Foam::cyclicAMIPolyPatch::movePoints
virtual void movePoints(PstreamBuffers &pBufs, const pointField &)
Correct patches after moving points.
Definition: cyclicAMIPolyPatch.C:496
Foam::cyclicAMIPolyPatch::removeAMIFaces
virtual bool removeAMIFaces(polyTopoChange &topoChange)
Collect faces to remove in the topoChange container.
Definition: cyclicAMIPolyPatchTopologyChange.C:82
Foam::coupledPolyPatch::UNKNOWN
Definition: coupledPolyPatch.H:61
Foam::cyclicAMIPolyPatch::setTopology
virtual bool setTopology(polyTopoChange &topoChange)
Set topology changes in the polyTopoChange object.
Definition: cyclicAMIPolyPatchTopologyChange.C:657
Foam::cyclicAMIPolyPatch::TypeName
TypeName("cyclicAMI")
Runtime type information.
Foam::cyclicAMIPolyPatch::updatingAMI
bool updatingAMI() const
Return access to the updated flag.
Definition: cyclicAMIPolyPatchI.H:43
fld
gmvFile<< "tracers "<< particles.size()<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().x()<< ' ';}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().y()<< ' ';}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().z()<< ' ';}gmvFile<< nl;for(const word &name :lagrangianScalarNames){ IOField< scalar > fld(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
Definition: gmvOutputLagrangian.H:23
Foam::cyclicAMIPolyPatch::interpolate
tmp< Field< Type > > interpolate(const Field< Type > &fld, const UList< Type > &defaultValues=UList< Type >()) const
Interpolate field.
Foam::cyclicAMIPolyPatch::calcTransforms
virtual void calcTransforms()
Recalculate the transformation tensors.
Definition: cyclicAMIPolyPatch.C:400
Foam::cyclicAMIPolyPatch::rotationAxis_
vector rotationAxis_
Axis of rotation for rotational cyclics.
Definition: cyclicAMIPolyPatch.H:105
dict
dictionary dict
Definition: searchingEngine.H:14
Foam::cyclicAMIPolyPatch::rotationAngle_
scalar rotationAngle_
Rotation angle.
Definition: cyclicAMIPolyPatch.H:114
AMIPatchToPatchInterpolation.H
Foam::cyclicAMIPolyPatch::neighbPatchID
virtual label neighbPatchID() const
Neighbour patch ID.
Definition: cyclicAMIPolyPatch.C:807
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:121
Foam::cyclicAMIPolyPatch::neighbPatch
virtual const cyclicAMIPolyPatch & neighbPatch() const
Return a reference to the neighbour patch.
Definition: cyclicAMIPolyPatch.C:849
Foam::cyclicAMIPolyPatch::createAMIFaces
bool createAMIFaces() const
Return access to the createAMIFaces flag.
Definition: cyclicAMIPolyPatchI.H:37
Foam::PrimitivePatch::points
const Field< point_type > & points() const
Return reference to global points.
Definition: PrimitivePatch.H:305
Foam::cyclicAMIPolyPatch::cyclicAMIPolyPatch
cyclicAMIPolyPatch(const word &name, const label size, const label start, const label index, const polyBoundaryMesh &bm, const word &patchType, const transformType transform=UNKNOWN, const word &defaultAMIMethod=faceAreaWeightAMI::typeName)
Construct from (base coupled patch) components.
Definition: cyclicAMIPolyPatch.C:557
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::cyclicAMIPolyPatch::rotationAngleDefined_
bool rotationAngleDefined_
Flag to show whether the rotation angle is defined.
Definition: cyclicAMIPolyPatch.H:111
Foam::cyclicAMIPolyPatch::srcFaceIDs_
labelListList srcFaceIDs_
Definition: cyclicAMIPolyPatch.H:144
Foam::polyPatch::start
label start() const
Return start label of this patch in the polyMesh face list.
Definition: polyPatch.H:312
Foam::coupledPolyPatch::transform
virtual transformType transform() const
Type of transform.
Definition: coupledPolyPatch.H:258
cyclicAMIPolyPatchI.H
Foam::cyclicAMIPolyPatch::moveFaceCentres_
bool moveFaceCentres_
Move face centres (default = no)
Definition: cyclicAMIPolyPatch.H:140
Foam::cyclicAMIPolyPatch::rotationAxis
const vector & rotationAxis() const
Axis of rotation for rotational cyclic AMI.
Definition: cyclicAMIPolyPatchI.H:94
Foam::autoPtr
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: HashPtrTable.H:53
Foam::cyclicAMIPolyPatch::AMI
const AMIPatchToPatchInterpolation & AMI() const
Return a reference to the AMI interpolator.
Definition: cyclicAMIPolyPatch.C:856
Foam::cyclicAMIPolyPatch::clone
virtual autoPtr< polyPatch > clone(const polyBoundaryMesh &bm) const
Construct and return a clone, resetting the boundary mesh.
Definition: cyclicAMIPolyPatch.H:266
Foam::polyPatch::faceCentres
const vectorField::subField faceCentres() const
Return face centres.
Definition: polyPatch.C:313
faceAreaWeightAMI.H
Foam::cyclicAMIPolyPatch::applyLowWeightCorrection
bool applyLowWeightCorrection() const
Return true if applying the low weight correction.
Definition: cyclicAMIPolyPatch.C:874
Foam::cyclicAMIPolyPatch::initUpdateMesh
virtual void initUpdateMesh(PstreamBuffers &)
Initialise the update of the patch topology.
Definition: cyclicAMIPolyPatch.C:519
Foam::cyclicAMIPolyPatch::clearGeom
virtual void clearGeom()
Clear geometry.
Definition: cyclicAMIPolyPatch.C:541
Foam::Vector< scalar >
Foam::List< labelList >
Foam::cyclicAMIPolyPatch::reverseTransformDirection
virtual void reverseTransformDirection(vector &d, const label facei) const
Transform a patch-based direction from this side to nbr side.
Definition: cyclicAMIPolyPatch.C:999
Foam::cyclicAMIPolyPatch::addAMIFaces
virtual bool addAMIFaces(polyTopoChange &topoChange)
Collect faces to add in the topoChange container.
Definition: cyclicAMIPolyPatchTopologyChange.C:137
Foam::AMIInterpolation
Interpolation class dealing with transfer of data between two primitive patches with an arbitrary mes...
Definition: AMIInterpolation.H:79
Foam::UList
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
Definition: HashTable.H:103
Foam::cyclicAMIPolyPatch::neighbPatchName
const word & neighbPatchName() const
Neighbour patch name.
Definition: cyclicAMIPolyPatchI.H:49
Foam::cyclicAMIPolyPatch::faceCentres0_
vectorField faceCentres0_
Temporary storage for AMI face centres.
Definition: cyclicAMIPolyPatch.H:152
Foam::cyclicAMIPolyPatch::~cyclicAMIPolyPatch
virtual ~cyclicAMIPolyPatch()=default
Destructor.
polyBoundaryMesh.H
Foam::cyclicAMIPolyPatch::restoreScaledGeometry
virtual void restoreScaledGeometry()
Definition: cyclicAMIPolyPatchTopologyChange.C:35
Foam::cyclicAMIPolyPatch::surfPtr_
autoPtr< searchableSurface > surfPtr_
Projection surface.
Definition: cyclicAMIPolyPatch.H:130
Foam::cyclicAMIPolyPatch::rotationCentre
const point & rotationCentre() const
Point on axis of rotation for rotational cyclic AMI.
Definition: cyclicAMIPolyPatchI.H:100
Foam::cyclicAMIPolyPatch::createAMIFaces_
bool createAMIFaces_
Flag to indicate that new AMI faces will created.
Definition: cyclicAMIPolyPatch.H:137
Foam::Ostream
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:56
Foam::coupledPolyPatch::transformType
transformType
Definition: coupledPolyPatch.H:59
Foam::patchIdentifier::name
const word & name() const
The patch name.
Definition: patchIdentifier.H:134
Foam::patchIdentifier::index
label index() const
The index of this patch in the boundaryMesh.
Definition: patchIdentifier.H:158
Foam::cyclicAMIPolyPatch::tgtFaceIDs_
labelListList tgtFaceIDs_
Definition: cyclicAMIPolyPatch.H:146
Foam::cyclicAMIPolyPatch::faceAreas0
vectorField & faceAreas0() const
Return access to the initial face areas.
Definition: cyclicAMIPolyPatchI.H:83
Foam::PrimitivePatch
A list of faces which address into the list of points.
Definition: PrimitivePatch.H:85
Foam::cyclicAMIPolyPatch
Cyclic patch for Arbitrary Mesh Interface (AMI)
Definition: cyclicAMIPolyPatch.H:67
Foam::cyclicAMIPolyPatch::faceCentres0
vectorField & faceCentres0() const
Return access to the initial face centres.
Definition: cyclicAMIPolyPatchI.H:89