advectionDiffusionPatchDistMethod: Only run the predictor method on first call
Improves efficiency for moving-mesh cases
This commit is contained in:
parent
28ec2c2a06
commit
4b4fce2c02
2 changed files with 12 additions and 3 deletions
|
|
@ -68,7 +68,8 @@ Foam::patchDistMethods::advectionDiffusion::advectionDiffusion
|
|||
),
|
||||
epsilon_(coeffs_.lookupOrDefault<scalar>("epsilon", 0.1)),
|
||||
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
|
||||
)
|
||||
{
|
||||
pdmPredictor_->correct(y);
|
||||
if (!predicted_)
|
||||
{
|
||||
pdmPredictor_->correct(y);
|
||||
predicted_ = true;
|
||||
}
|
||||
|
||||
volVectorField ny
|
||||
(
|
||||
|
|
@ -97,7 +102,7 @@ bool Foam::patchDistMethods::advectionDiffusion::correct
|
|||
mesh_
|
||||
),
|
||||
mesh_,
|
||||
dimensionedVector("nWall", dimless, vector::zero),
|
||||
dimensionedVector("ny", dimless, vector::zero),
|
||||
patchTypes<vector>(mesh_, patchIDs_)
|
||||
);
|
||||
|
||||
|
|
@ -133,6 +138,7 @@ bool Foam::patchDistMethods::advectionDiffusion::correct
|
|||
|
||||
yEqn.relax();
|
||||
initialResidual = yEqn.solve().initialResidual();
|
||||
|
||||
} while (initialResidual > tolerance_ && ++iter < maxIter_);
|
||||
|
||||
// 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
|
||||
int maxIter_;
|
||||
|
||||
//- Flag to indicate the predictor step has been executed
|
||||
bool predicted_;
|
||||
|
||||
|
||||
// Private Member Functions
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue