37 sizes[0] =
mesh.nCells();
38 sizes[1] =
mesh.nPoints();
54 volumeCell_(
mesh.V()),
68 volumeDual_[triIs[0]] += v;
69 volumeDual_[triIs[1]] += v;
70 volumeDual_[triIs[2]] += v;
74 mesh.globalData().syncPointData
90 volumeCell_(am.volumeCell_),
91 volumeDual_(am.volumeDual_),
102 this->mesh_.globalData().syncPointData
123 dataCell_[tetIs.
cell()] +=
125 / (0.25*volumeCell_[tetIs.
cell()]);
127 for (label i = 0; i < 3; ++i)
129 dataDual_[triIs[i]] +=
131 / (0.25*volumeDual_[triIs[i]]);
163 const label celli(tetIs.
cell());
171 this->mesh_.points()[triIs[0]] - this->mesh_.C()[celli],
172 this->mesh_.points()[triIs[1]] - this->mesh_.C()[celli],
173 this->mesh_.points()[triIs[2]] - this->mesh_.C()[celli]
178 const vector t( -
T.T().x() -
T.T().y() -
T.T().z());
187 const Type
s(dataCell_[celli]);
189 return (
T & S) + (t*
s);
tmp< Field< Type > > primitiveField() const
Return an internal field of the average.
Type interpolate(const barycentric &coordinates, const tetIndices &tetIs) const
Interpolate.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
dimensionedSphericalTensor inv(const dimensionedSphericalTensor &dt)
Dual(const IOobject &io, const dictionary &dict, const fvMesh &mesh)
Constructors.
tetPointRef tet(const polyMesh &mesh) const
The tet geometry for this tet, where point0 is the cell centre.
TypeGrad interpolateGrad(const barycentric &coordinates, const tetIndices &tetIs) const
Interpolate gradient.
A field of fields is a PtrList of fields with reference counting.
static List< tetIndices > cellTetIndices(const polyMesh &mesh, label cI)
Return the tet decomposition of the given cell, see.
#define forAll(list, i)
Loop across all elements in list.
Generic templated field type.
label cell() const noexcept
Return the cell index.
A triangular face using a FixedList of labels corresponding to mesh vertices.
scalar mag() const
Return volume.
Base class for lagrangian averaging methods.
Storage and named access for the indices of a tet which is part of the decomposition of a cell...
const fvMesh & mesh_
The mesh on which the averaging is to be done.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
Dual-mesh lagrangian averaging procedure.
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
AveragingMethod< Type >::TypeGrad TypeGrad
Public typedefs.
PtrList< coordinateSystem > coordinates(solidRegions.size())
virtual void average()
Calculate the average.
Mesh data needed to do the Finite Volume discretisation.
void average()
Calculate the average.
const volVectorField & C() const
Return cell centres as volVectorField.
List< label > labelList
A List of labels.
IOobject io("surfaceFilmProperties", mesh.time().constant(), mesh, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE, IOobject::NO_REGISTER)
A class for managing temporary objects.
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))
Tensor of scalars, i.e. Tensor<scalar>.
Defines the attributes of an object for which implicit objectRegistry management is supported...
triFace faceTriIs(const polyMesh &mesh, const bool warn=true) const
The indices corresponding to the tri on the face for this tet. The normal of the tri points out of th...
void add(const barycentric &coordinates, const tetIndices &tetIs, const Type &value)
Member Functions.
static constexpr const zero Zero
Global zero (0)