sampledSurface.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) 2016-2021 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::sampledSurface
29 
30 Group
31  grpUtilitiesFunctionObjects
32 
33 Description
34  An abstract class for surfaces with sampling.
35 
36  The constructors for the derived classes should generally start in a
37  'expired' condition (ie, needsUpdate() == true) and rely on a
38  subsequent call to the update() method to complete the initialization.
39  Delaying the final construction as late as possible allows the
40  construction of surfaces that may depend on intermediate calculation
41  results (eg, iso-surfaces) and also avoids the unnecessary
42  reconstruction of surfaces between sampling intervals.
43 
44  It is the responsibility of the caller to ensure that the surface
45  update() is called before the surface is used. The update() method
46  implementation should do nothing when the surface is already
47  up-to-date.
48 
49  Any sampler is assumed to work for the standard volume field types.
50  Some may also support surface fields.
51 
52  Dictionary entries:
53  \table
54  Property | Description | Required | Default
55  name | Alternative name | no |
56  enabled | Enable/disable the surface? | no | yes
57  interpolate | Interpolate to nodes instead of faces | no | false
58  invariant | Invariant with geometry change (use with caution!) | no | false
59  \endtable
60 
61 Note
62  The invariant switch is an advanced feature to declare that the surface
63  is unaffected by changes in the general mesh geometry. For example, if
64  sampling on a static patch while some other motion occurs elsewhere. If
65  used improperly, there is a significant possibility for problems
66  (caveat emptor).
67 
68 SourceFiles
69  sampledSurface.C
70  sampledSurfaceTemplates.C
71 
72 \*---------------------------------------------------------------------------*/
73 
74 #ifndef sampledSurface_H
75 #define sampledSurface_H
76 
77 #include "polySurface.H"
78 #include "surfMesh.H"
79 #include "typeInfo.H"
80 #include "runTimeSelectionTables.H"
81 #include "autoPtr.H"
82 #include "polyMesh.H"
83 #include "volFieldsFwd.H"
84 #include "surfaceFieldsFwd.H"
85 #include "surfaceMesh.H"
86 #include "interpolation.H"
87 
88 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
89 
90 namespace Foam
91 {
92 
93 /*---------------------------------------------------------------------------*\
94  Class sampledSurface Declaration
95 \*---------------------------------------------------------------------------*/
96 
97 class sampledSurface
98 :
99  public meshedSurf
100 {
101 public:
102 
103  // Public Static Data
104 
105  //- Class names for surface field types
106  static const wordList surfaceFieldTypes;
107 
108 
109 private:
110 
111  // Private Data
112 
113  //- The name of the sample surface
114  word name_;
115 
116  //- Reference to mesh
117  const polyMesh& mesh_;
118 
119  //- Should surface sampling be enabled?
120  bool enabled_;
121 
122  //- Geometry is invariant (never changes)
123  bool invariant_;
124 
125  //- Is point vs cell data
126  bool isPointData_;
127 
128  //- Total surface area (demand-driven)
129  mutable scalar area_;
130 
131 
132 protected:
133 
134  // Protected Member Functions
135 
136  //- Loop for sampling volume elements to faces.
137  // The defaultValue is used for invalid (negative) elements
138  template<class Type>
140  (
141  const interpolation<Type>& sampler,
142  const labelUList& elements,
143  const faceList& fcs,
144  const pointField& pts,
145  const Type& defaultValue = Type(Zero)
146  );
147 
148 
149  //- Loop for interpolating volume elements to face points.
150  template<class Type>
152  (
153  const interpolation<Type>& interpolator,
154  const labelUList& elements,
155  const faceList& fcs,
156  const pointField& pts
157  );
158 
159 
160  //- Create cell values by averaging the point values
161  template<class Type>
163  (
165  );
166 
167 
168  //- Additional cleanup when clearing the geometry
169  virtual void clearGeom() const;
170 
171  //- Construct null
172  explicit sampledSurface(const word& name, std::nullptr_t);
173 
174 
175 public:
176 
177  //- Runtime type information
178  TypeName("sampledSurface");
179 
180  //- Declare run-time constructor selection table
182  (
183  autoPtr,
185  word,
186  (
187  const word& name,
188  const polyMesh& mesh,
189  const dictionary& dict
190  ),
191  (name, mesh, dict)
192  );
193 
194 
195  //- PtrList read-construction helper
196  class iNew
197  {
198  //- Reference to the volume mesh
199  const polyMesh& mesh_;
200 
201  public:
202 
203  iNew(const polyMesh& mesh)
204  :
205  mesh_(mesh)
206  {}
207 
209  {
210  word name(is);
211  dictionary dict(is);
212 
213  return sampledSurface::New(name, mesh_, dict);
214  }
215  };
216 
217 
218  //- PtrList read-construction helper that captures dictionaries used
219  //- during creation.
221  {
222  //- Reference to the volume mesh
223  const polyMesh& mesh_;
224 
225  //- Captured (recorded) dictionaries
226  DynamicList<dictionary>& capture_;
227 
228  public:
229 
231  :
232  mesh_(mesh),
233  capture_(capture)
234  {}
235 
237  {
238  word name(is);
239  capture_.append(dictionary(is));
240 
241  return sampledSurface::New(name, mesh_, capture_.last());
242  }
243  };
244 
245 
246  // Constructors
247 
248  //- Construct from name, mesh
250  (
251  const word& name,
252  const polyMesh& mesh,
253  const bool interpolateToPoints = false
254  );
255 
256  //- Construct from dictionary
258  (
259  const word& name,
260  const polyMesh& mesh,
261  const dictionary& dict
262  );
263 
264  //- Clone
266  {
268  return nullptr;
269  }
270 
271 
272  // Selectors
273 
274  //- Return a reference to the selected surface
276  (
277  const word& name,
278  const polyMesh& mesh,
279  const dictionary& dict
280  );
281 
282 
283  //- Destructor - calls clearGeom()
284  virtual ~sampledSurface();
285 
286 
287  // Member Functions
288 
289  // Access
290 
291  //- Access to the underlying mesh
292  const polyMesh& mesh() const noexcept
293  {
294  return mesh_;
295  }
296 
297  //- Name of surface
298  const word& name() const noexcept
299  {
300  return name_;
301  }
302 
303  //- Surface is enabled
304  bool enabled() const noexcept
305  {
306  return enabled_;
307  }
308 
309  //- Surface is invariant with geometry change (caution)
310  bool invariant() const noexcept
311  {
312  return invariant_;
313  }
314 
315  //- Using interpolation to surface points
316  bool isPointData() const noexcept
317  {
318  return isPointData_;
319  }
320 
321  //- Change point/cell representation, may trigger an expire().
322  // \return old value
323  virtual bool isPointData(const bool on);
324 
325  //- Does the surface need an update?
326  virtual bool needsUpdate() const = 0;
327 
328  //- Mark the surface as needing an update.
329  // May also free up unneeded data.
330  // Return false if surface was already marked as expired.
331  virtual bool expire() = 0;
332 
333  //- Update the surface as required.
334  // Do nothing (and return false) if no update was required
335  virtual bool update() = 0;
336 
337  //- Points of surface
338  virtual const pointField& points() const = 0;
339 
340  //- Faces of surface
341  virtual const faceList& faces() const = 0;
342 
343  //- Face area vectors
344  virtual const vectorField& Sf() const = 0;
345 
346  //- Face area magnitudes
347  virtual const scalarField& magSf() const = 0;
348 
349  //- Face centres
350  virtual const vectorField& Cf() const = 0;
351 
352  //- The total surface area
353  scalar area() const;
354 
355  //- If element ids/order of the original surface are available
356  virtual bool hasFaceIds() const
357  {
358  return false;
359  }
360 
361 
362  // General registry storage (optional)
363 
364  //- Get surface from registry if available.
365  // \param obr The objectRegistry to use
366  // \param lookupName Optional lookup name, use surface name if empty
367  // \return surface or nullptr
369  (
370  const objectRegistry& obr,
371  word lookupName = ""
372  ) const;
373 
374  //- Copy surface into registry.
375  // \param obr The objectRegistry to use
376  // \param lookupName Optional lookup name, use surface name if empty
377  // \return surface or nullptr it surface should not be stored
379  (
381  word lookupName = ""
382  ) const;
383 
384  //- Remove surface from registry.
385  // \param obr The objectRegistry to use
386  // \param lookupName Optional lookup name, use surface name if empty
387  // \return True if surface existed and was removed
389  (
390  objectRegistry& obr,
391  word lookupName = ""
392  ) const;
393 
394  //- Copy/store sampled field onto registered surface (if it exists)
395  template<class Type, class GeoMeshType>
396  bool storeRegistryField
397  (
398  const objectRegistry& obr,
399  const word& fieldName,
400  const dimensionSet& dims,
401  const Field<Type>& values,
402  word lookupName = ""
403  ) const;
404 
405  //- Move/store sampled field onto registered surface (if it exists)
406  template<class Type, class GeoMeshType>
407  bool storeRegistryField
408  (
409  const objectRegistry& obr,
410  const word& fieldName,
411  const dimensionSet& dims,
413  word lookupName = ""
414  ) const;
415 
416 
417  // Specialized surfMesh storage (optional)
418 
419  //- Get surface from registry if available.
420  // \param lookupName Optional lookup name, use surface name if empty
421  // \return surface or nullptr
422  surfMesh* getSurfMesh(word lookupName = "") const;
423 
424  //- Copy surface into registry.
425  // \param lookupName Optional lookup name, use surface name if empty
426  // \return surface or nullptr it surface should not be stored
427  surfMesh* storeSurfMesh(word lookupName = "") const;
428 
429  //- Remove surface from registry.
430  // \param lookupName Optional lookup name, use surface name if empty
431  // \return True if surface existed and was removed
432  bool removeSurfMesh(word lookupName = "") const;
433 
434  //- Copy/store sampled Face field onto surfMesh (if it exists)
435  template<class Type, class GeoMeshType>
436  bool storeSurfMeshField
437  (
438  const word& fieldName,
439  const dimensionSet& dims,
440  const Field<Type>& values,
441  word lookupName = ""
442  ) const;
443 
444  //- Move/store sampled Face field onto surfMesh (if it exists)
445  template<class Type, class GeoMeshType>
446  bool storeSurfMeshField
447  (
448  const word& fieldName,
449  const dimensionSet& dims,
451  word lookupName = ""
452  ) const;
453 
454 
455  // Sample (faces)
456 
457  //- Sample volume field onto surface faces
458  virtual tmp<scalarField> sample
459  (
460  const interpolation<scalar>& sampler
461  ) const = 0;
462 
463  //- Sample volume field onto surface faces
464  virtual tmp<vectorField> sample
465  (
466  const interpolation<vector>& sampler
467  ) const = 0;
468 
469  //- Sample volume field onto surface faces
471  (
472  const interpolation<sphericalTensor>& sampler
473  ) const = 0;
474 
475  //- Sample volume field onto surface faces
477  (
478  const interpolation<symmTensor>& sampler
479  ) const = 0;
480 
481  //- Sample volume field onto surface faces
482  virtual tmp<tensorField> sample
483  (
484  const interpolation<tensor>& sampler
485  ) const = 0;
486 
487 
488  //- Can it sample surface-fields?
489  virtual bool withSurfaceFields() const;
490 
491 
492  //- Sample surface field onto surface
493  virtual tmp<scalarField> sample
494  (
495  const surfaceScalarField& sField
496  ) const;
497 
498  //- Sample surface field onto surface
499  virtual tmp<vectorField> sample
500  (
501  const surfaceVectorField& sField
502  ) const;
503 
504  //- Sample surface field onto surface
506  (
507  const surfaceSphericalTensorField& sField
508  ) const;
509 
510  //- Sample surface field onto surface
512  (
513  const surfaceSymmTensorField& sField
514  ) const;
515 
516  //- Sample surface field onto surface
517  virtual tmp<tensorField> sample
518  (
519  const surfaceTensorField& sField
520  ) const;
521 
522 
523  // Interpolate (points)
524 
525  //- Interpolate volume field onto surface points
527  (
528  const interpolation<scalar>& interpolator
529  ) const = 0;
530 
531  //- Interpolate volume field onto surface points
533  (
534  const interpolation<vector>& interpolator
535  ) const = 0;
536 
537  //- Interpolate volume field onto surface points
539  (
540  const interpolation<sphericalTensor>& interpolator
541  ) const = 0;
542 
543  //- Interpolate volume field onto surface points
545  (
546  const interpolation<symmTensor>& interpolator
547  ) const = 0;
548 
549  //- Interpolate volume field onto surface points
551  (
552  const interpolation<tensor>& interpolator
553  ) const = 0;
554 
555 
556  // Edit
557 
558  //- Rename
559  virtual void rename(const word& newName)
560  {
561  name_ = newName;
562  }
563 
564 
565  // Write
566 
567  //- Print information
568  virtual void print(Ostream& os, int level=0) const;
569 
570 
571  // Housekeeping
572 
573  //- Same as isPointData()
574  bool interpolate() const noexcept { return isPointData_; }
575 };
576 
577 
578 // Global Operators
579 
580 //- Ostream operator
581 Ostream& operator<<(Ostream& os, const sampledSurface& s);
582 
583 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
584 
585 } // End namespace Foam
586 
587 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
588 
589 #ifdef NoRepository
590  #include "sampledSurfaceTemplates.C"
591 #endif
592 
593 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
594 
595 #endif
596 
597 // ************************************************************************* //
Foam::sampledSurface::getRegistrySurface
polySurface * getRegistrySurface(const objectRegistry &obr, word lookupName="") const
Get surface from registry if available.
Definition: sampledSurfaceRegister.C:35
volFieldsFwd.H
Foam::sampledSurface::iNewCapture::iNewCapture
iNewCapture(const polyMesh &mesh, DynamicList< dictionary > &capture)
Definition: sampledSurface.H:254
Foam::sampledSurface::New
static autoPtr< sampledSurface > New(const word &name, const polyMesh &mesh, const dictionary &dict)
Return a reference to the selected surface.
Definition: sampledSurface.C:62
Foam::sampledSurface::iNewCapture::operator()
autoPtr< sampledSurface > operator()(Istream &is) const
Definition: sampledSurface.H:260
Foam::word
A class for handling words, derived from Foam::string.
Definition: word.H:65
s
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;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
Definition: gmvOutputSpray.H:25
Foam::sampledSurface::faces
virtual const faceList & faces() const =0
Faces of surface.
typeInfo.H
polySurface.H
Foam::sampledSurface::sampleOnFaces
static tmp< Field< Type > > sampleOnFaces(const interpolation< Type > &sampler, const labelUList &elements, const faceList &fcs, const pointField &pts, const Type &defaultValue=Type(Zero))
Loop for sampling volume elements to faces.
Foam::tmp
A class for managing temporary objects.
Definition: PtrList.H:61
Foam::Zero
static constexpr const zero Zero
Global zero (0)
Definition: zero.H:131
Foam::DynamicList
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
Definition: DynamicList.H:55
Foam::HashTableOps::values
List< T > values(const HashTable< T, Key, Hash > &tbl, const bool doSort=false)
List of values from HashTable, optionally sorted.
Definition: HashOps.H:149
Foam::sampledSurface::declareRunTimeSelectionTable
declareRunTimeSelectionTable(autoPtr, sampledSurface, word,(const word &name, const polyMesh &mesh, const dictionary &dict),(name, mesh, dict))
Declare run-time constructor selection table.
Foam::sampledSurface::hasFaceIds
virtual bool hasFaceIds() const
If element ids/order of the original surface are available.
Definition: sampledSurface.H:380
Foam::sampledSurface::removeRegistrySurface
bool removeRegistrySurface(objectRegistry &obr, word lookupName="") const
Remove surface from registry.
Definition: sampledSurfaceRegister.C:75
Foam::sampledSurface::area
scalar area() const
The total surface area.
Definition: sampledSurface.C:145
Foam::meshedSurf
Abstract definition of a meshed surface defined by faces and points.
Definition: meshedSurf.H:49
Foam::surfMesh
A surface mesh consisting of general polygon faces that has IO capabilities and a registry for storin...
Definition: surfMesh.H:63
interpolation.H
Foam::sampledSurface::invariant
bool invariant() const noexcept
Surface is invariant with geometry change (caution)
Definition: sampledSurface.H:334
Foam::sampledSurface::surfaceFieldTypes
static const wordList surfaceFieldTypes
Class names for surface field types.
Definition: sampledSurface.H:130
Foam::dimensionSet
Dimension set for the base types, which can be used to implement rigorous dimension checking for alge...
Definition: dimensionSet.H:108
polyMesh.H
Foam::sampledSurface::pointAverage
static tmp< GeometricField< Type, fvPatchField, volMesh > > pointAverage(const GeometricField< Type, pointPatchField, pointMesh > &pfld)
Create cell values by averaging the point values.
Foam::sampledSurface::magSf
virtual const scalarField & magSf() const =0
Face area magnitudes.
Foam::polyMesh
Mesh consisting of general polyhedral cells.
Definition: polyMesh.H:77
Foam::sampledSurface::sample
virtual tmp< scalarField > sample(const interpolation< scalar > &sampler) const =0
Sample volume field onto surface faces.
Foam::sampledSurface::expire
virtual bool expire()=0
Mark the surface as needing an update.
Foam::wordList
List< word > wordList
A List of words.
Definition: fileName.H:62
Foam::objectRegistry
Registry of regIOobjects.
Definition: objectRegistry.H:60
Foam::operator<<
Ostream & operator<<(Ostream &, const boundaryPatch &p)
Write boundaryPatch as dictionary entries (without surrounding braces)
Definition: boundaryPatch.C:83
NotImplemented
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
Definition: error.H:517
Foam::polySurface
A surface mesh consisting of general polygon faces and capable of holding fields.
Definition: polySurface.H:67
Foam::sampledSurface::points
virtual const pointField & points() const =0
Points of surface.
Foam::sampledSurface::interpolate
bool interpolate() const noexcept
Same as isPointData()
Definition: sampledSurface.H:598
Foam::Field< vector >
Foam::Istream
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
Definition: Istream.H:61
Foam::sampledSurface::rename
virtual void rename(const word &newName)
Rename.
Definition: sampledSurface.H:583
Foam::DynamicList::append
DynamicList< T, SizeMin > & append(const T &val)
Append an element to the end of this list.
Definition: DynamicListI.H:511
Foam::sampledSurface::iNew::operator()
autoPtr< sampledSurface > operator()(Istream &is) const
Definition: sampledSurface.H:232
Foam::sampledSurface::iNewCapture
Definition: sampledSurface.H:244
Foam::sampledSurface::storeRegistryField
bool storeRegistryField(const objectRegistry &obr, const word &fieldName, const dimensionSet &dims, const Field< Type > &values, word lookupName="") const
Copy/store sampled field onto registered surface (if it exists)
Definition: sampledSurfaceTemplates.C:182
Foam::sampledSurface::clone
autoPtr< sampledSurface > clone() const
Clone.
Definition: sampledSurface.H:289
Foam::sampledSurface
An abstract class for surfaces with sampling.
Definition: sampledSurface.H:121
Foam::sampledSurface::print
virtual void print(Ostream &os, int level=0) const
Print information.
Definition: sampledSurface.C:220
Foam::sampledSurface::iNew::iNew
iNew(const polyMesh &mesh)
Definition: sampledSurface.H:227
Foam::interpolation
Abstract base class for interpolation.
Definition: mappedPatchFieldBase.H:96
dict
dictionary dict
Definition: searchingEngine.H:14
Foam::dictionary
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Definition: dictionary.H:123
surfaceMesh.H
os
OBJstream os(runTime.globalPath()/outputName)
surfMesh.H
Foam::sampledSurface::name
const word & name() const noexcept
Name of surface.
Definition: sampledSurface.H:322
Foam::sampledSurface::isPointData
bool isPointData() const noexcept
Using interpolation to surface points.
Definition: sampledSurface.H:340
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::sampledSurface::Sf
virtual const vectorField & Sf() const =0
Face area vectors.
Foam::sampledSurface::enabled
bool enabled() const noexcept
Surface is enabled.
Definition: sampledSurface.H:328
Foam::sampledSurface::storeRegistrySurface
polySurface * storeRegistrySurface(objectRegistry &obr, word lookupName="") const
Copy surface into registry.
Definition: sampledSurfaceRegister.C:50
Foam::autoPtr
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Definition: HashPtrTable.H:53
Foam::sampledSurface::TypeName
TypeName("sampledSurface")
Runtime type information.
Foam::sampledSurface::sampleOnPoints
static tmp< Field< Type > > sampleOnPoints(const interpolation< Type > &interpolator, const labelUList &elements, const faceList &fcs, const pointField &pts)
Loop for interpolating volume elements to face points.
Foam::sampledSurface::withSurfaceFields
virtual bool withSurfaceFields() const
Can it sample surface-fields?
Definition: sampledSurface.C:164
runTimeSelectionTables.H
Macros to ease declaration of run-time selection tables.
Foam::sampledSurface::needsUpdate
virtual bool needsUpdate() const =0
Does the surface need an update?
Foam::List< word >
Foam::sampledSurface::removeSurfMesh
bool removeSurfMesh(word lookupName="") const
Remove surface from registry.
Definition: sampledSurfaceRegister.C:119
Foam::sampledSurface::iNew
PtrList read-construction helper.
Definition: sampledSurface.H:220
Foam::sampledSurface::mesh
const polyMesh & mesh() const noexcept
Access to the underlying mesh.
Definition: sampledSurface.H:316
Foam::UList< label >
Foam::sampledSurface::~sampledSurface
virtual ~sampledSurface()
Destructor - calls clearGeom()
Definition: sampledSurface.C:137
surfaceFieldsFwd.H
Foam::sampledSurface::getSurfMesh
surfMesh * getSurfMesh(word lookupName="") const
Get surface from registry if available.
Definition: sampledSurfaceRegister.C:85
Foam::sampledSurface::clearGeom
virtual void clearGeom() const
Additional cleanup when clearing the geometry.
Definition: sampledSurface.C:53
Foam::sampledSurface::update
virtual bool update()=0
Update the surface as required.
Foam::Ostream
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:56
sampledSurfaceTemplates.C
Foam::GeometricField
Generic GeometricField class.
Definition: areaFieldsFwd.H:53
Foam::sampledSurface::sampledSurface
sampledSurface(const word &name, std::nullptr_t)
Construct null.
Definition: sampledSurface.C:92
Foam::sampledSurface::Cf
virtual const vectorField & Cf() const =0
Face centres.
Foam::sampledSurface::storeSurfMeshField
bool storeSurfMeshField(const word &fieldName, const dimensionSet &dims, const Field< Type > &values, word lookupName="") const
Copy/store sampled Face field onto surfMesh (if it exists)
Definition: sampledSurfaceTemplates.C:230
autoPtr.H
Foam::sampledSurface::storeSurfMesh
surfMesh * storeSurfMesh(word lookupName="") const
Copy surface into registry.
Definition: sampledSurfaceRegister.C:96