Description: The plicRDF interface reconstruction scheme calculates a reconstructed distance function (RDF) in all interface cells and their point neighbours. In point neighbours to interface cells, the RDF is calculated as a weighted average of the distances to all adjacent interface cell centres with the weight being the inverse distance to the cell centre. By using the zoneDistribute class written by Henning Scheufler, the required stencil data is communicated efficiently for stencil cells living on different sides of one or more processor patches. Some of the data required for the RDF reconstruction are cell centre and interface centre positions. When a stencil extends across a cyclic patch these positions have so far not been properly transformed in OpenFOAM. This issue is fixed by the current contribution. The fix is done by modifying the zoneDistribute class to hold the required information about zone cells adjacent to cyclic patches. Positions are then communicated with a new getPosition function which replaces getValue for position data in the reconstructedDistanceFunction and plicRDF classes. The implementation does not change the behaviour for cells not on a cyclic patch and should have insignificant effect on efficiency for these. The implementation can probably be optimised in terms of efficiency for zone cells on cyclic patches, but we note that there are generally only very few of these (interface cells and their point neighbours on cyclic patches) and so the potential for speedup is expected to be limited. Current limitations: - In parallel, the user must constrain the decomposition to preserve cyclic patches on the same processor, for the implementation to work properly. - See an example here: tutorials/discInConstantFlowCyclicBCs/system/decomposeParDict - In the case of parallel rotational cyclics that are split by the decomposition the current bugfix does not work and therefore throws an error. This is ongoing work and should be reported and fixed by a future patch. For further details, please see the modified files and the comments therein: - $FOAM_SRC/finiteVolume/fvMesh/zoneDistribute/zoneDistribute.H - $FOAM_SRC/finiteVolume/fvMesh/zoneDistribute/zoneDistribute.C - $FOAM_SRC/finiteVolume/fvMesh/zoneDistribute/zoneDistributeI.H - $FOAM_SRC/transportModels/geometricVoF/reconstructedDistanceFunction/reconstructedDistanceFunction.C - $FOAM_SRC/src/transportModels/geometricVoF/reconstructionSchemes/plicSchemes/plicRDF/plicRDF.C Co-authored-by: David Müller <> KIT Co-authored-by: Konstantinos Missios <> Roskilde University Co-authored-by: Johan Roenby <> Roskilde University and STROMNING
80 lines
1.9 KiB
C++
80 lines
1.9 KiB
C++
/*--------------------------------*- C++ -*----------------------------------*\
|
|
| ========= | |
|
|
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
|
| \\ / O peration | Version: v2412 |
|
|
| \\ / A nd | Website: www.openfoam.com |
|
|
| \\/ M anipulation | |
|
|
\*---------------------------------------------------------------------------*/
|
|
FoamFile
|
|
{
|
|
version 2.0;
|
|
format ascii;
|
|
class dictionary;
|
|
location "system";
|
|
object fvSolution;
|
|
}
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
solvers
|
|
{
|
|
|
|
"alpha.water.*"
|
|
{
|
|
isoFaceTol 1e-6;
|
|
surfCellTol 1e-6;
|
|
snapTol 0;
|
|
nAlphaBounds 3;
|
|
clip false;
|
|
reconstructionScheme plicRDF;
|
|
|
|
nAlphaSubCycles 1;
|
|
cAlpha 1; // Read but not used by interIsoFoam
|
|
}
|
|
|
|
"pcorr.*"
|
|
{
|
|
solver PCG;
|
|
preconditioner DIC;
|
|
tolerance 1e-10;
|
|
relTol 0;
|
|
}
|
|
|
|
p_rgh
|
|
{
|
|
solver PCG;
|
|
preconditioner DIC;
|
|
tolerance 1e-07;
|
|
relTol 0.05;
|
|
}
|
|
|
|
p_rghFinal
|
|
{
|
|
$p_rgh;
|
|
tolerance 1e-07;
|
|
relTol 0;
|
|
}
|
|
|
|
U
|
|
{
|
|
prescribedU true;
|
|
|
|
solver PBiCG;
|
|
preconditioner DILU;
|
|
tolerance 1e-06;
|
|
relTol 0;
|
|
}
|
|
}
|
|
|
|
|
|
PIMPLE
|
|
{
|
|
frozenFlow yes;
|
|
momentumPredictor no;
|
|
nCorrectors -1;
|
|
nNonOrthogonalCorrectors -1;
|
|
pRefCell 0;
|
|
pRefValue 0;
|
|
}
|
|
|
|
// ************************************************************************* //
|