diff --git a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C index c4503cc101..1425a3e5f2 100644 --- a/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C +++ b/applications/solvers/lagrangian/reactingParcelFoam/reactingParcelFoam.C @@ -36,7 +36,6 @@ Description #include "basicReactingMultiphaseCloud.H" #include "rhoCombustionModel.H" #include "radiationModel.H" -#include "IOporosityModelList.H" #include "fvIOoptionList.H" #include "SLGThermo.H" #include "pimpleControl.H" diff --git a/applications/utilities/mesh/advanced/collapseEdges/collapseDict b/applications/utilities/mesh/advanced/collapseEdges/collapseDict index 340c33049f..170a0a890d 100644 --- a/applications/utilities/mesh/advanced/collapseEdges/collapseDict +++ b/applications/utilities/mesh/advanced/collapseEdges/collapseDict @@ -14,6 +14,11 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +// If on, after collapsing check the quality of the mesh. If bad faces are +// generated then redo the collapsing with stricter filtering. +controlMeshQuality on; + + collapseEdgesCoeffs { // Edges shorter than this absolute value will be merged @@ -22,21 +27,13 @@ collapseEdgesCoeffs // The maximum angle between two edges that share a point attached to // no other edges maximumMergeAngle 30; - - // The amount that minimumEdgeLength will be reduced by for each - // edge if that edge's collapse generates a poor quality face - reductionFactor 0.5; } collapseFacesCoeffs { // The initial face length factor - initialFaceLengthFactor 0.5; - - // The amount that initialFaceLengthFactor will be reduced by for each - // face if its collapse generates a poor quality face - reductionFactor $initialFaceLengthFactor; + initialFaceLengthFactor 0.5; // If the face can't be collapsed to an edge, and it has a span less than // the target face length multiplied by this coefficient, collapse it @@ -63,12 +60,20 @@ collapseFacesCoeffs } -meshQualityCoeffs +controlMeshQualityCoeffs { // Name of the dictionary that has the mesh quality coefficients used // by motionSmoother::checkMesh #include "meshQualityDict"; + // The amount that minimumEdgeLength will be reduced by for each + // edge if that edge's collapse generates a poor quality face + edgeReductionFactor 0.5; + + // The amount that initialFaceLengthFactor will be reduced by for each + // face if its collapse generates a poor quality face + faceReductionFactor $initialFaceLengthFactor; + // Maximum number of smoothing iterations for the reductionFactors maximumSmoothingIterations 2; diff --git a/src/dynamicMesh/polyMeshFilter/polyMeshFilter.C b/src/dynamicMesh/polyMeshFilter/polyMeshFilter.C index 9b184f994e..a1cfc83aeb 100644 --- a/src/dynamicMesh/polyMeshFilter/polyMeshFilter.C +++ b/src/dynamicMesh/polyMeshFilter/polyMeshFilter.C @@ -427,9 +427,13 @@ Foam::polyMeshFilter::polyMeshFilter(const fvMesh& mesh) IOobject::NO_WRITE ) ), + controlMeshQuality_ + ( + dict_.lookupOrDefault("controlMeshQuality", false) + ), collapseEdgesCoeffDict_(dict_.subDict("collapseEdgesCoeffs")), - collapseFacesCoeffDict_(dict_.subDict("collapseFacesCoeffs")), - meshQualityCoeffDict_(dict_.subDict("meshQualityCoeffs")), + collapseFacesCoeffDict_(dict_.subOrEmptyDict("collapseFacesCoeffs")), + meshQualityCoeffDict_(dict_.subOrEmptyDict("controlMeshQualityCoeffs")), minLen_(readScalar(collapseEdgesCoeffDict_.lookup("minimumEdgeLength"))), maxCos_ ( @@ -443,27 +447,39 @@ Foam::polyMeshFilter::polyMeshFilter(const fvMesh& mesh) ), edgeReductionFactor_ ( - readScalar(collapseEdgesCoeffDict_.lookup("reductionFactor")) + meshQualityCoeffDict_.lookupOrDefault("edgeReductionFactor", -1) ), maxIterations_ ( - readLabel(meshQualityCoeffDict_.lookup("maximumIterations")) + meshQualityCoeffDict_.lookupOrAddDefault