50 if (curTimeIndex <
runTime.timeIndex())
52 curTimeIndex =
runTime.timeIndex();
87 const dictionary&
dict 94 "reconstructionScheme",
101 reconstructionSchemesCoeffs_(
dict),
109 IOobject::groupName(
"interfaceNormal",
alpha1.
group()),
113 dict.getOrDefault(
"writeFields",false)
114 ? IOobject::AUTO_WRITE
124 IOobject::groupName(
"interfaceCentre",
alpha1.
group()),
128 dict.getOrDefault(
"writeFields",false)
129 ? IOobject::AUTO_WRITE
135 interfaceCell_(alpha1_.
mesh().nCells(), false),
136 interfaceLabels_(0.2*alpha1_.
mesh().nCells()),
137 timeIndexAndIter_(0, 0)
154 forAll(interfaceCell_, celli)
156 if (interfaceCell_[celli])
158 if (
mag(normal_[celli]) != 0)
160 interfaceCellAddressing.set(celli);
161 vector n = -normal_[celli]/
mag(normal_[celli]);
163 scalar cutVal = (centre_[celli] -
mesh.
C()[celli]) &
n;
164 cellCut.calcSubCell(celli, cutVal,
n);
173 dynPts.
append(cellCut.facePoints());
179 labelList meshCells(interfaceCellAddressing.sortedToc());
183 faceList faces(std::move(dynFaces));
185 return interface(std::move(
pts), std::move(faces), std::move(meshCells));
Original code supplied by Henning Scheufler, DLR (2019)
const T & first() const noexcept
Access the first element.
Pair< label > timeIndexAndIter_
Store timeindex/iteration to avoid multiple reconstruction.
void size(const label n)
Older name for setAddressableSize.
A face is a list of labels corresponding to mesh vertices.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
dimensioned< vector > dimensionedVector
Dimensioned vector obtained from generic dimensioned type.
interfaceProperties interface(alpha1, U, thermo->transportPropertiesDict())
GeometricField< vector, fvPatchField, volMesh > volVectorField
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
#define forAll(list, i)
Loop across all elements in list.
constexpr const char *const group
Group name for atomic constants.
GeometricField< scalar, fvPatchField, volMesh > volScalarField
reconstructionSchemes(const reconstructionSchemes &)=delete
No copy construct.
List< face > faceList
List of faces.
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
vectorField pointField
pointField is a vectorField.
labelList identity(const label len, label start=0)
Return an identity map of the given length with (map[i] == i), works like std::iota() but returning a...
interface surface()
Generated interface surface points/faces.
void append(const T &val)
Copy append an element to the end of this list.
Class for cutting a cell, cellI, of an fvMesh, mesh_, at its intersection with an surface defined by ...
volScalarField & alpha1_
Reference to the VoF Field.
const Mesh & mesh() const noexcept
Return mesh.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
defineRunTimeSelectionTable(reactionRateFlameArea, dictionary)
defineTypeNameAndDebug(combustionModel, 0)
tmp< GeometricField< typename outerProduct< vector, Type >::type, fvPatchField, volMesh >> reconstruct(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
A bitSet stores bits (elements with only two states) in packed internal format and supports a variety...
const dimensionSet dimLength(0, 1, 0, 0, 0, 0, 0)
label nCells() const noexcept
Number of mesh cells.
Mesh data needed to do the Finite Volume discretisation.
bool alreadyReconstructed(bool forceUpdate=true) const
Is the interface already up-to-date?
const volVectorField & C() const
Return cell centres as volVectorField.
List< label > labelList
A List of labels.
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
const T & second() const noexcept
Access the second element.
const dimensionSet dimArea(sqr(dimLength))
static constexpr const zero Zero
Global zero (0)
const volScalarField & alpha1