57 #ifndef Foam_vf_raySearchEngine_H 58 #define Foam_vf_raySearchEngine_H 277 #include "raySearchEngineI.H" const word patchGroup_
Name of patch group to identify participating patches.
static label closestPointIndex(const point &p0, const List< point > &pts)
coordSystem::cartesian createCoordSystem(const point &origin, const vector &dir) const
Create Cartesian co-ordinate system.
void operator=(const raySearchEngine &)=delete
No copy assignment.
void createGeometry()
Create patch geometry based on the original mesh.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
const mapDistribute & map() const
Parallel map.
globalIndex globalNumbering_
Global numbering.
List< pointField > allCf_
List of all face centres per processor.
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
labelList compactToGlobal_
Compact to global addressing.
List< labelField > allAgg_
List of all face agglomeration index per processor.
Generic GeometricField class.
bool agglomerate_
Agglomeration flag.
const fvMesh & mesh_
Reference to the mesh.
void compactAddressing(const mapDistribute &map, pointField &compactCf, vectorField &compactSf, List< List< vector >> &compactFineSf, List< List< point >> &compactFineCf, DynamicList< List< point >> &compactPoints, DynamicList< label > &compactPatchId) const
Create compact addressing.
const fvMesh & mesh() const noexcept
Reference to the mesh.
label nCoarseFace_
Number of coarse faces.
static autoPtr< raySearchEngine > New(const fvMesh &mesh, const dictionary &dict)
Selector.
void createAgglomeration(const IOobject &io)
Create patch geometry based on the agglomerated mesh.
A Cartesian coordinate system.
List< T > values(const HashTable< T, Key, Hash > &tbl, const bool doSort=false)
List of values from HashTable, optionally sorted.
Calculates a unique integer (label so might not have enough room - 2G max) for processor + local inde...
virtual ~raySearchEngine()=default
Destructor.
Mesh data needed to do the Finite Volume discretisation.
void interpolate(GeometricField< Type, fvPatchField, volMesh > &fld, const List< List< Type >> &values) const
Interpolate field.
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects...
tmp< pointField > createHemiPoints(const label nRayPerFace) const
Create a set of points describing a hemisphere.
A class for handling words, derived from Foam::string.
const List< pointField > & allCf() const noexcept
List of all face centres per processor.
static void check(const labelList &nVisibleFaceFaces)
label nFace_
Number of original faces.
const List< vectorField > & allSf() const noexcept
List of all face areas per processor.
Base class for ray search engines.
const List< labelField > & allAgg() const noexcept
List of all face agglomeration index per processor.
virtual void correct(labelListList &visibleFaceFaces) const
Correct.
const labelList & patchIDs() const noexcept
List of participating patch IDs.
autoPtr< mapDistribute > mapPtr_
Parallel map.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
List< vectorField > allSf_
List of all face areas per processor.
const labelList & compactToGlobal() const noexcept
Compact to global addressing.
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))
const globalIndex & globalNumbering() const noexcept
Global numbering.
label nParticipatingFaces() const
Number of participating faces.
Class containing processor-to-processor mapping information.
raySearchEngine(const raySearchEngine &)=delete
No copy construct.
Mesh data needed to do the Finite Volume discretisation.
scalarList patchAreas_
Patch areas.
declareRunTimeSelectionTable(autoPtr, raySearchEngine, mesh,(const fvMesh &mesh, const dictionary &dict),(mesh, dict))
Selection table.
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
autoPtr< singleCellFvMesh > agglomMeshPtr_
Agglomerated mesh representation.
Macros to ease declaration of run-time selection tables.
IOobject io("surfaceFilmProperties", mesh.time().constant(), mesh, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE, IOobject::NO_REGISTER)
A class for managing temporary objects.
static const label maxDynListLength
Defines the attributes of an object for which implicit objectRegistry management is supported...
const volScalarField & p0
labelList patchIDs_
List of participating patch IDs.
const scalarList & patchAreas() const noexcept
Patch areas.
virtual void shootRays(labelList &rayStartFaceOut, labelList &rayEndFaceOut) const =0
Shoot rays; returns lists of ray start and end faces.
void createParallelAddressing(labelList &rayEndFace) const
Create parallel addressing - map, compact-to-global.
TypeName("raySearchEngine")
Run-time type information.