diff --git a/src/finiteVolume/fvMesh/wallDist/patchDistMethods/advectionDiffusion/advectionDiffusionPatchDistMethod.C b/src/finiteVolume/fvMesh/wallDist/patchDistMethods/advectionDiffusion/advectionDiffusionPatchDistMethod.C index 85100b39ec..a3797f1fa2 100644 --- a/src/finiteVolume/fvMesh/wallDist/patchDistMethods/advectionDiffusion/advectionDiffusionPatchDistMethod.C +++ b/src/finiteVolume/fvMesh/wallDist/patchDistMethods/advectionDiffusion/advectionDiffusionPatchDistMethod.C @@ -68,7 +68,8 @@ Foam::patchDistMethods::advectionDiffusion::advectionDiffusion ), epsilon_(coeffs_.lookupOrDefault("epsilon", 0.1)), tolerance_(coeffs_.lookupOrDefault("tolerance", 1e-3)), - maxIter_(coeffs_.lookupOrDefault("maxIter", 10)) + maxIter_(coeffs_.lookupOrDefault("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(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 diff --git a/src/finiteVolume/fvMesh/wallDist/patchDistMethods/advectionDiffusion/advectionDiffusionPatchDistMethod.H b/src/finiteVolume/fvMesh/wallDist/patchDistMethods/advectionDiffusion/advectionDiffusionPatchDistMethod.H index 590ae65757..c62f7e79f9 100644 --- a/src/finiteVolume/fvMesh/wallDist/patchDistMethods/advectionDiffusion/advectionDiffusionPatchDistMethod.H +++ b/src/finiteVolume/fvMesh/wallDist/patchDistMethods/advectionDiffusion/advectionDiffusionPatchDistMethod.H @@ -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