mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
advectionDiffusionPatchDistMethod: Only run the predictor method on first call
Improves efficiency for moving-mesh cases
This commit is contained in:
@ -68,7 +68,8 @@ Foam::patchDistMethods::advectionDiffusion::advectionDiffusion
|
|||||||
),
|
),
|
||||||
epsilon_(coeffs_.lookupOrDefault<scalar>("epsilon", 0.1)),
|
epsilon_(coeffs_.lookupOrDefault<scalar>("epsilon", 0.1)),
|
||||||
tolerance_(coeffs_.lookupOrDefault<scalar>("tolerance", 1e-3)),
|
tolerance_(coeffs_.lookupOrDefault<scalar>("tolerance", 1e-3)),
|
||||||
maxIter_(coeffs_.lookupOrDefault<int>("maxIter", 10))
|
maxIter_(coeffs_.lookupOrDefault<int>("maxIter", 10)),
|
||||||
|
predicted_(false)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|
||||||
@ -86,7 +87,11 @@ bool Foam::patchDistMethods::advectionDiffusion::correct
|
|||||||
volVectorField& n
|
volVectorField& n
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
pdmPredictor_->correct(y);
|
if (!predicted_)
|
||||||
|
{
|
||||||
|
pdmPredictor_->correct(y);
|
||||||
|
predicted_ = true;
|
||||||
|
}
|
||||||
|
|
||||||
volVectorField ny
|
volVectorField ny
|
||||||
(
|
(
|
||||||
@ -97,7 +102,7 @@ bool Foam::patchDistMethods::advectionDiffusion::correct
|
|||||||
mesh_
|
mesh_
|
||||||
),
|
),
|
||||||
mesh_,
|
mesh_,
|
||||||
dimensionedVector("nWall", dimless, vector::zero),
|
dimensionedVector("ny", dimless, vector::zero),
|
||||||
patchTypes<vector>(mesh_, patchIDs_)
|
patchTypes<vector>(mesh_, patchIDs_)
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -133,6 +138,7 @@ bool Foam::patchDistMethods::advectionDiffusion::correct
|
|||||||
|
|
||||||
yEqn.relax();
|
yEqn.relax();
|
||||||
initialResidual = yEqn.solve().initialResidual();
|
initialResidual = yEqn.solve().initialResidual();
|
||||||
|
|
||||||
} while (initialResidual > tolerance_ && ++iter < maxIter_);
|
} while (initialResidual > tolerance_ && ++iter < maxIter_);
|
||||||
|
|
||||||
// Only calculate n if the field is defined
|
// Only calculate n if the field is defined
|
||||||
|
|||||||
@ -162,6 +162,9 @@ class advectionDiffusion
|
|||||||
// to correct the distance-to-patch and normal-to-patch fields
|
// to correct the distance-to-patch and normal-to-patch fields
|
||||||
int maxIter_;
|
int maxIter_;
|
||||||
|
|
||||||
|
//- Flag to indicate the predictor step has been executed
|
||||||
|
bool predicted_;
|
||||||
|
|
||||||
|
|
||||||
// Private Member Functions
|
// Private Member Functions
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user