AMIInterpolation.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-2017 OpenFOAM Foundation
9 Copyright (C) 2016-2021 OpenCFD Ltd.
10-------------------------------------------------------------------------------
11License
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
27Class
28 Foam::AMIInterpolation
29
30Description
31 Interpolation class dealing with transfer of data between two
32 primitive patches with an arbitrary mesh interface (AMI).
33
34 Based on the algorithm given in:
35
36 Conservative interpolation between volume meshes by local Galerkin
37 projection, Farrell PE and Maddison JR, 2011, Comput. Methods Appl.
38 Mech Engrg, Volume 200, Issues 1-4, pp 89-100
39
40 Interpolation requires that the two patches should have opposite
41 orientations (opposite normals). The 'reverseTarget' flag can be used to
42 reverse the orientation of the target patch.
43
44SourceFiles
45 AMIInterpolation.C
46 AMIInterpolationName.C
47 AMIInterpolationParallelOps.C
48
49\*---------------------------------------------------------------------------*/
50
51#ifndef AMIInterpolation_H
52#define AMIInterpolation_H
53
54#include "className.H"
55#include "searchableSurface.H"
56#include "treeBoundBoxList.H"
57#include "boolList.H"
58#include "primitivePatch.H"
59#include "faceAreaIntersect.H"
60#include "globalIndex.H"
61#include "ops.H"
62#include "refPtr.H"
63#include "Enum.H"
64#include "pointList.H"
65#include "indexedOctree.H"
67
69
70
71// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
72
73namespace Foam
74{
75
76/*---------------------------------------------------------------------------*\
77 Class AMIInterpolation Declaration
78\*---------------------------------------------------------------------------*/
81{
82public:
83
84 // Public data types
86 static bool cacheIntersections_;
87
88
89protected:
90
91 //- Local typedef to octree tree-type
93
94 // Protected data
95
96 //- Flag to indicate that the two patches must be matched/an overlap
97 //- exists between them
98 bool requireMatch_;
99
100 //- Flag to indicate that the two patches are co-directional and
101 //- that the orientation of the target patch should be reversed
102 const bool reverseTarget_;
103
104 //- Threshold weight below which interpolation is deactivated
105 const scalar lowWeightCorrection_;
106
107 //- Index of processor that holds all of both sides. -1 in all other
108 //- cases
109 label singlePatchProc_;
110
111
112 // Source patch
113
114 //- Source face areas
116
117 //- Addresses of target faces per source face
119
120 //- Weights of target faces per source face
122
123 //- Sum of weights of target faces per source face
125
126 //- Centroid of target faces per source face
128
129 //- Source patch points if input points are manipulated, e.g.
130 //- projected
132
133 //- Source patch using manipulated input points
135
136 //- Source map pointer - parallel running only
138
139
140
141 // Target patch
142
143 //- Target face areas
145
146 //- Addresses of source faces per target face
148
149 //- Weights of source faces per target face
151
152 //- Sum of weights of source faces per target face
154
155 //- Centroid of source faces per target face
157
158 //- Target patch points if input points are manipulated, e.g.
159 //- projected
161
162 //- Target patch using manipulated input points
164
165 //- Target map pointer - parallel running only
167
168 //- Up-to-date flag
169 bool upToDate_;
170
171
172 // Protected Member Functions
173
174 //- No copy assignment
175 void operator=(const AMIInterpolation&) = delete;
176
177
178 // Initialisation
179
180 //- Reset the octree for the patch face search
182 (
183 const primitivePatch& patch
184 ) const;
185
186 //- Calculate if patches are on multiple processors
187 label calcDistribution
188 (
189 const primitivePatch& srcPatch,
190 const primitivePatch& tgtPatch
191 ) const;
192
193 //- Project points to surface
195 (
196 const searchableSurface& surf,
197 pointField& pts
198 ) const;
199
200
201 // Access
202
203 //- Return the orginal src patch with optionally updated points
204 inline const primitivePatch& srcPatch0() const;
205
206 //- Return the orginal tgt patch with optionally updated points
207 inline const primitivePatch& tgtPatch0() const;
208
209
210 // Evaluation
211
212 //- Normalise the (area) weights - suppresses numerical error in
213 //- weights calculation
214 // NOTE: if area weights are incorrect by 'a significant amount'
215 // normalisation may stabilise the solution, but will introduce
216 // numerical error!
217 static void normaliseWeights
218 (
219 const scalarList& patchAreas,
220 const word& patchName,
221 const labelListList& addr,
222 scalarListList& wght,
223 scalarField& wghtSum,
224 const bool conformal,
225 const bool output,
226 const scalar lowWeightTol
227 );
228
229
230 // Constructor helpers
231
232 static void agglomerate
233 (
234 const autoPtr<mapDistribute>& targetMap,
235 const scalarList& fineSrcMagSf,
236 const labelListList& fineSrcAddress,
237 const scalarListList& fineSrcWeights,
238
239 const labelList& sourceRestrictAddressing,
240 const labelList& targetRestrictAddressing,
241
247 );
248
249
250public:
251
252 //- Runtime type information
253 TypeName("AMIInterpolation");
254
255 // Selection tables
256
257 //- Selection table for dictionary construction
259 (
260 autoPtr,
262 dict,
263 (
264 const dictionary& dict,
265 const bool reverseTarget
266 ),
267 (
268 dict,
270 )
271 );
272
273 //- Selection table for component-wise construction
275 (
276 autoPtr,
278 component,
279 (
280 const bool requireMatch,
281 const bool reverseTarget,
282 const scalar lowWeightCorrection
283 ),
284 (
288 )
289 );
290
291 //- Selector for dictionary
293 (
294 const word& modelName,
295 const dictionary& dict,
296 const bool reverseTarget = false
297 );
298
299 //- Selector for components
301 (
302 const word& modelName,
303 const bool requireMatch = true,
304 const bool reverseTarget = false,
305 const scalar lowWeightCorrection = -1
306 );
307
308
309 // Constructors
310
311 //- Construct from dictionary
313 (
314 const dictionary& dict,
315 const bool reverseTarget = false
316 );
317
318 //- Construct from components
320 (
321 const bool requireMatch = true,
322 const bool reverseTarget = false,
323 const scalar lowWeightCorrection = -1
324 );
325
326 //- Construct from agglomeration of AMIInterpolation. Agglomeration
327 //- passed in as new coarse size and addressing from fine from coarse
329 (
330 const AMIInterpolation& fineAMI,
331 const labelList& sourceRestrictAddressing,
332 const labelList& neighbourRestrictAddressing
333 );
334
335 //- Construct as copy
337
338 //- Construct and return a clone
339 virtual autoPtr<AMIInterpolation> clone() const
340 {
341 return autoPtr<AMIInterpolation>::New(*this);
342 }
343
344
345 //- Destructor
346 virtual ~AMIInterpolation() = default;
347
348
349 // Member Functions
350
351 // Access
352
353 //- Access to the up-to-date flag
354 inline bool upToDate() const;
355
356 //- Access to the up-to-date flag
357 inline bool& upToDate();
358
359 //- Access to the distributed flag
360 inline bool distributed() const;
361
362 //- Access to the requireMatch flag
363 inline bool requireMatch() const;
364
365 //- Access to the requireMatch flag
366 inline bool setRequireMatch(const bool flag);
367
368 //- Return true if requireMatch and lowWeightCorrectionin active
369 inline bool mustMatchFaces() const;
370
371 //- Access to the reverseTarget flag
372 inline bool reverseTarget() const;
373
374 //- Threshold weight below which interpolation is deactivated
375 inline scalar lowWeightCorrection() const;
376
377 //- Return true if employing a 'lowWeightCorrection'
378 inline bool applyLowWeightCorrection() const;
379
380 //- Set to -1, or the processor holding all faces (both sides) of
381 //- the AMI
382 inline label singlePatchProc() const;
383
384
385 // Source patch
386
387 //- Return const access to source patch face areas
388 inline const List<scalar>& srcMagSf() const;
389
390 //- Return access to source patch face areas
391 inline List<scalar>& srcMagSf();
392
393 //- Return const access to source patch addressing
394 inline const labelListList& srcAddress() const;
395
396 //- Return access to source patch addressing
397 inline labelListList& srcAddress();
398
399 //- Return const access to source patch weights
400 inline const scalarListList& srcWeights() const;
401
402 //- Return access to source patch weights
403 inline scalarListList& srcWeights();
404
405 //- Return const access to normalisation factor of source
406 //- patch weights (i.e. the sum before normalisation)
407 inline const scalarField& srcWeightsSum() const;
408
409 //- Return access to normalisation factor of source
410 //- patch weights (i.e. the sum before normalisation)
411 inline scalarField& srcWeightsSum();
412
413 //- Return const access to source patch face centroids
414 inline const pointListList& srcCentroids() const;
415
416 //- Return access to source patch face centroids
417 inline pointListList& srcCentroids();
418
419 //- Source map pointer - valid only if singlePatchProc = -1
420 //- This gets source data into a form to be consumed by
421 //- tgtAddress, tgtWeights
422 inline const mapDistribute& srcMap() const;
423
424
425 // Target patch
426
427 //- Return const access to target patch face areas
428 inline const List<scalar>& tgtMagSf() const;
429
430 //- Return access to target patch face areas
431 inline List<scalar>& tgtMagSf();
432
433 //- Return const access to target patch addressing
434 inline const labelListList& tgtAddress() const;
435
436 //- Return access to target patch addressing
437 inline labelListList& tgtAddress();
438
439 //- Return const access to target patch weights
440 inline const scalarListList& tgtWeights() const;
441
442 //- Return access to target patch weights
443 inline scalarListList& tgtWeights();
444
445 //- Return const access to normalisation factor of target
446 //- patch weights (i.e. the sum before normalisation)
447 inline const scalarField& tgtWeightsSum() const;
448
449 //- Return access to normalisation factor of target
450 //- patch weights (i.e. the sum before normalisation)
451 inline scalarField& tgtWeightsSum();
452
453 //- Target map pointer - valid only if singlePatchProc=-1.
454 //- This gets target data into a form to be consumed by
455 //- srcAddress, srcWeights
456 inline const mapDistribute& tgtMap() const;
457
458
459 // Manipulation
460
461 //- Update addressing, weights and (optional) centroids
462 virtual bool calculate
463 (
464 const primitivePatch& srcPatch,
465 const primitivePatch& tgtPatch,
466 const autoPtr<searchableSurface>& surfPtr = nullptr
467 );
468
469 //- Set the maps, addresses and weights from an external source
470 void reset
471 (
472 autoPtr<mapDistribute>&& srcToTgtMap,
473 autoPtr<mapDistribute>&& tgtToSrcMap,
478 );
479
480 //- Append additional addressing and weights
481 void append
482 (
483 const primitivePatch& srcPatch,
484 const primitivePatch& tgtPatch
485 );
486
487 //- Normalise the weights
488 void normaliseWeights(const bool conformal, const bool output);
489
490
491 // Evaluation
492
493 // Low-level
494
495 //- Interpolate from target to source with supplied op
496 //- to combine existing value with remote value and weight
497 template<class Type, class CombineOp>
499 (
500 const UList<Type>& fld,
501 const CombineOp& cop,
502 List<Type>& result,
503 const UList<Type>& defaultValues = UList<Type>::null()
504 ) const;
505
506 //- Interpolate from source to target with supplied op
507 //- to combine existing value with remote value and weight
508 template<class Type, class CombineOp>
510 (
511 const UList<Type>& fld,
512 const CombineOp& cop,
513 List<Type>& result,
514 const UList<Type>& defaultValues = UList<Type>::null()
515 ) const;
516
517
518 //- Interpolate from target to source with supplied op
519 template<class Type, class CombineOp>
521 (
522 const Field<Type>& fld,
523 const CombineOp& cop,
524 const UList<Type>& defaultValues = UList<Type>::null()
525 ) const;
526
527 //- Interpolate from target tmp field to source with supplied op
528 template<class Type, class CombineOp>
530 (
531 const tmp<Field<Type>>& tFld,
532 const CombineOp& cop,
533 const UList<Type>& defaultValues = UList<Type>::null()
534 ) const;
535
536 //- Interpolate from source to target with supplied op
537 template<class Type, class CombineOp>
539 (
540 const Field<Type>& fld,
541 const CombineOp& cop,
542 const UList<Type>& defaultValues = UList<Type>::null()
543 ) const;
544
545 //- Interpolate from source tmp field to target with supplied op
546 template<class Type, class CombineOp>
548 (
549 const tmp<Field<Type>>& tFld,
550 const CombineOp& cop,
551 const UList<Type>& defaultValues = UList<Type>::null()
552 ) const;
553
554 //- Interpolate from target to source
555 template<class Type>
557 (
558 const Field<Type>& fld,
559 const UList<Type>& defaultValues = UList<Type>::null()
560 ) const;
561
562 //- Interpolate from target tmp field
563 template<class Type>
565 (
566 const tmp<Field<Type>>& tFld,
567 const UList<Type>& defaultValues = UList<Type>::null()
568 ) const;
569
570 //- Interpolate from source to target
571 template<class Type>
573 (
574 const Field<Type>& fld,
575 const UList<Type>& defaultValues = UList<Type>::null()
576 ) const;
577
578 //- Interpolate from source tmp field
579 template<class Type>
581 (
582 const tmp<Field<Type>>& tFld,
583 const UList<Type>& defaultValues = UList<Type>::null()
584 ) const;
585
586
587 // Point intersections
588
589 //- Return source patch face index of point on target patch face
590 label srcPointFace
591 (
592 const primitivePatch& srcPatch,
593 const primitivePatch& tgtPatch,
594 const vector& n,
595 const label tgtFacei,
596 point& tgtPoint
597 )
598 const;
599
600 //- Return target patch face index of point on source patch face
601 label tgtPointFace
602 (
603 const primitivePatch& srcPatch,
604 const primitivePatch& tgtPatch,
605 const vector& n,
606 const label srcFacei,
607 point& srcPoint
608 )
609 const;
610
611
612 // Checks
613
614 //- Check if src addresses are present in tgt addresses and
615 //- viceversa
616 bool checkSymmetricWeights(const bool log) const;
617
618 //- Write face connectivity as OBJ file
620 (
621 const primitivePatch& srcPatch,
622 const primitivePatch& tgtPatch,
624 ) const;
625
626
627 // I-O
628
629 //- Write
630 virtual void write(Ostream& os) const;
631};
632
633
634// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
635
636} // End namespace Foam
637
638// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
639
640#include "AMIInterpolationI.H"
641
642// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
643
644#ifdef NoRepository
646#endif
647
648// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
649
650#endif
651
652// ************************************************************************* //
label n
Info<< nl<< "Wrote faMesh in vtk format: "<< writer.output().name()<< nl;}{ vtk::lineWriter writer(aMesh.points(), aMesh.edges(), fileName(aMesh.mesh().time().globalPath()/"finiteArea-edges"));writer.writeGeometry();writer.beginCellData(4);writer.writeProcIDs();{ Field< scalar > fld(faMeshTools::flattenEdgeField(aMesh.magLe(), true))
Interpolation class dealing with transfer of data between two primitive patches with an arbitrary mes...
const mapDistribute & srcMap() const
virtual autoPtr< AMIInterpolation > clone() const
Construct and return a clone.
refPtr< primitivePatch > tsrcPatch0_
Source patch using manipulated input points.
bool reverseTarget() const
Access to the reverseTarget flag.
bool mustMatchFaces() const
Return true if requireMatch and lowWeightCorrectionin active.
bool upToDate() const
Access to the up-to-date flag.
const scalarField & srcWeightsSum() const
labelListList srcAddress_
Addresses of target faces per source face.
tmp< Field< Type > > interpolateToSource(const tmp< Field< Type > > &tFld, const UList< Type > &defaultValues=UList< Type >::null()) const
Interpolate from target tmp field.
tmp< Field< Type > > interpolateToTarget(const tmp< Field< Type > > &tFld, const CombineOp &cop, const UList< Type > &defaultValues=UList< Type >::null()) const
Interpolate from source tmp field to target with supplied op.
bool distributed() const
Access to the distributed flag.
scalarList tgtMagSf_
Target face areas.
const mapDistribute & tgtMap() const
const scalarListList & tgtWeights() const
Return const access to target patch weights.
void projectPointsToSurface(const searchableSurface &surf, pointField &pts) const
Project points to surface.
const labelListList & srcAddress() const
Return const access to source patch addressing.
virtual ~AMIInterpolation()=default
Destructor.
autoPtr< mapDistribute > srcMapPtr_
Source map pointer - parallel running only.
const scalarField & tgtWeightsSum() const
tmp< Field< Type > > interpolateToTarget(const Field< Type > &fld, const UList< Type > &defaultValues=UList< Type >::null()) const
Interpolate from source to target.
treeDataPrimitivePatch< primitivePatch > treeType
Local typedef to octree tree-type.
virtual bool calculate(const primitivePatch &srcPatch, const primitivePatch &tgtPatch, const autoPtr< searchableSurface > &surfPtr=nullptr)
Update addressing, weights and (optional) centroids.
void interpolateToSource(const UList< Type > &fld, const CombineOp &cop, List< Type > &result, const UList< Type > &defaultValues=UList< Type >::null()) const
bool checkSymmetricWeights(const bool log) const
bool requireMatch() const
Access to the requireMatch flag.
const primitivePatch & tgtPatch0() const
Return the orginal tgt patch with optionally updated points.
void operator=(const AMIInterpolation &)=delete
No copy assignment.
bool upToDate_
Up-to-date flag.
declareRunTimeSelectionTable(autoPtr, AMIInterpolation, dict,(const dictionary &dict, const bool reverseTarget),(dict, reverseTarget))
Selection table for dictionary construction.
autoPtr< mapDistribute > tgtMapPtr_
Target map pointer - parallel running only.
declareRunTimeSelectionTable(autoPtr, AMIInterpolation, component,(const bool requireMatch, const bool reverseTarget, const scalar lowWeightCorrection),(requireMatch, reverseTarget, lowWeightCorrection))
Selection table for component-wise construction.
const scalarListList & srcWeights() const
Return const access to source patch weights.
static void agglomerate(const autoPtr< mapDistribute > &targetMap, const scalarList &fineSrcMagSf, const labelListList &fineSrcAddress, const scalarListList &fineSrcWeights, const labelList &sourceRestrictAddressing, const labelList &targetRestrictAddressing, scalarList &srcMagSf, labelListList &srcAddress, scalarListList &srcWeights, scalarField &srcWeightsSum, autoPtr< mapDistribute > &tgtMap)
static void normaliseWeights(const scalarList &patchAreas, const word &patchName, const labelListList &addr, scalarListList &wght, scalarField &wghtSum, const bool conformal, const bool output, const scalar lowWeightTol)
labelListList tgtAddress_
Addresses of source faces per target face.
label srcPointFace(const primitivePatch &srcPatch, const primitivePatch &tgtPatch, const vector &n, const label tgtFacei, point &tgtPoint) const
Return source patch face index of point on target patch face.
const scalar lowWeightCorrection_
Threshold weight below which interpolation is deactivated.
label calcDistribution(const primitivePatch &srcPatch, const primitivePatch &tgtPatch) const
Calculate if patches are on multiple processors.
pointListList srcCentroids_
Centroid of target faces per source face.
const pointListList & srcCentroids() const
Return const access to source patch face centroids.
static bool cacheIntersections_
void writeFaceConnectivity(const primitivePatch &srcPatch, const primitivePatch &tgtPatch, const labelListList &srcAddress) const
Write face connectivity as OBJ file.
tmp< Field< Type > > interpolateToTarget(const Field< Type > &fld, const CombineOp &cop, const UList< Type > &defaultValues=UList< Type >::null()) const
Interpolate from source to target with supplied op.
void reset(autoPtr< mapDistribute > &&srcToTgtMap, autoPtr< mapDistribute > &&tgtToSrcMap, labelListList &&srcAddress, scalarListList &&srcWeights, labelListList &&tgtAddress, scalarListList &&tgtWeights)
Set the maps, addresses and weights from an external source.
tmp< Field< Type > > interpolateToSource(const tmp< Field< Type > > &tFld, const CombineOp &cop, const UList< Type > &defaultValues=UList< Type >::null()) const
Interpolate from target tmp field to source with supplied op.
tmp< Field< Type > > interpolateToSource(const Field< Type > &fld, const CombineOp &cop, const UList< Type > &defaultValues=UList< Type >::null()) const
Interpolate from target to source with supplied op.
scalar lowWeightCorrection() const
Threshold weight below which interpolation is deactivated.
scalarField srcWeightsSum_
Sum of weights of target faces per source face.
refPtr< primitivePatch > ttgtPatch0_
Target patch using manipulated input points.
bool setRequireMatch(const bool flag)
Access to the requireMatch flag.
void append(const primitivePatch &srcPatch, const primitivePatch &tgtPatch)
Append additional addressing and weights.
autoPtr< indexedOctree< treeType > > createTree(const primitivePatch &patch) const
Reset the octree for the patch face search.
bool applyLowWeightCorrection() const
Return true if employing a 'lowWeightCorrection'.
scalarListList tgtWeights_
Weights of source faces per target face.
tmp< Field< Type > > interpolateToSource(const Field< Type > &fld, const UList< Type > &defaultValues=UList< Type >::null()) const
Interpolate from target to source.
pointListList tgtCentroids_
Centroid of source faces per target face.
scalarListList srcWeights_
Weights of target faces per source face.
const List< scalar > & srcMagSf() const
Return const access to source patch face areas.
label tgtPointFace(const primitivePatch &srcPatch, const primitivePatch &tgtPatch, const vector &n, const label srcFacei, point &srcPoint) const
Return target patch face index of point on source patch face.
scalarList srcMagSf_
Source face areas.
const primitivePatch & srcPatch0() const
Return the orginal src patch with optionally updated points.
tmp< Field< Type > > interpolateToTarget(const tmp< Field< Type > > &tFld, const UList< Type > &defaultValues=UList< Type >::null()) const
Interpolate from source tmp field.
scalarField tgtWeightsSum_
Sum of weights of source faces per target face.
const List< scalar > & tgtMagSf() const
Return const access to target patch face areas.
const labelListList & tgtAddress() const
Return const access to target patch addressing.
void interpolateToTarget(const UList< Type > &fld, const CombineOp &cop, List< Type > &result, const UList< Type > &defaultValues=UList< Type >::null()) const
static autoPtr< AMIInterpolation > New(const word &modelName, const dictionary &dict, const bool reverseTarget=false)
Selector for dictionary.
TypeName("AMIInterpolation")
Runtime type information.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:62
A list of faces which address into the list of points.
static autoPtr< Time > New()
Construct (dummy) Time - no functionObjects or libraries.
Definition: Time.C:717
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
Definition: UList.H:94
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: autoPtr.H:66
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:126
Class containing processor-to-processor mapping information.
A class for managing references or pointers (no reference counting)
Definition: refPtr.H:58
Base class of (analytical or triangulated) surface. Encapsulates all the search routines....
A class for managing temporary objects.
Definition: tmp.H:65
Encapsulation of data needed to search on PrimitivePatches.
A class for handling words, derived from Foam::string.
Definition: word.H:68
Macro definitions for declaring ClassName(), NamespaceName(), etc.
OBJstream os(runTime.globalPath()/outputName)
Namespace for OpenFOAM.
void component(FieldField< Field, typename FieldField< Field, Type >::cmptType > &sf, const FieldField< Field, Type > &f, const direction d)
dimensionedScalar log(const dimensionedScalar &ds)
static Ostream & output(Ostream &os, const IntRange< T > &range)
Definition: IntRanges.C:66
Various functors for unary and binary operations. Can be used for parallel combine-reduce operations ...
runTime write()
Macros to ease declaration of run-time selection tables.
#define declareRunTimeSelectionTable(ptrWrapper, baseType, argNames, argList, parList)
Declare a run-time selection (variables and adder classes)
dictionary dict
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.
Definition: typeInfo.H:73