From 168b246873715e58d1bf1cc4e662dbe53f28845a Mon Sep 17 00:00:00 2001 From: mattijs Date: Mon, 27 Aug 2018 09:19:35 +0100 Subject: [PATCH] ENH: overset: additional debug. See #810. --- .../overPimpleDyMFoam/createFields.H | 1 - .../inverseDistanceCellCellStencil.C | 96 +++++++++++++++---- 2 files changed, 75 insertions(+), 22 deletions(-) diff --git a/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/createFields.H b/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/createFields.H index 25b0e6a559..28911cf012 100644 --- a/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/createFields.H +++ b/applications/solvers/incompressible/pimpleFoam/overPimpleDyMFoam/createFields.H @@ -53,7 +53,6 @@ mesh.setFluxRequired(p.name()); suppressDict.add("cellMask", true); suppressDict.add("cellDisplacement", true); suppressDict.add("interpolatedCells", true); - suppressDict.add("cellInterpolationWeight", true); } const_cast diff --git a/src/overset/cellCellStencil/inverseDistance/inverseDistanceCellCellStencil.C b/src/overset/cellCellStencil/inverseDistance/inverseDistanceCellCellStencil.C index 5cafe990b1..aa6c47c848 100644 --- a/src/overset/cellCellStencil/inverseDistance/inverseDistanceCellCellStencil.C +++ b/src/overset/cellCellStencil/inverseDistance/inverseDistanceCellCellStencil.C @@ -1642,6 +1642,7 @@ Foam::cellCellStencils::inverseDistance::inverseDistance // Protect local fields from interpolation nonInterpolatedFields_.insert("cellInterpolationWeight"); nonInterpolatedFields_.insert("cellTypes"); + nonInterpolatedFields_.insert("maxMagWeight"); // Read zoneID this->zoneID(); @@ -2066,6 +2067,9 @@ bool Foam::cellCellStencils::inverseDistance::update() if (debug&2) { + // Dump mesh + mesh_.time().write(); + // Dump stencil mkDir(mesh_.time().timePath()); OBJstream str(mesh_.time().timePath()/"injectionStencil.obj"); @@ -2100,29 +2104,79 @@ bool Foam::cellCellStencils::inverseDistance::update() cellInterpolationWeight_.instance() = mesh_.time().timeName(); cellInterpolationWeight_.write(); - // Dump cell types - volScalarField volTypes - ( - IOobject - ( - "cellTypes", - mesh_.time().timeName(), - mesh_, - IOobject::NO_READ, - IOobject::NO_WRITE, - false - ), - mesh_, - dimensionedScalar(dimless, Zero), - zeroGradientFvPatchScalarField::typeName - ); - - forAll(volTypes.internalField(), cellI) + // Dump max weight { - volTypes[cellI] = cellTypes_[cellI]; + volScalarField maxMagWeight + ( + IOobject + ( + "maxMagWeight", + mesh_.time().timeName(), + mesh_, + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + mesh_, + dimensionedScalar(dimless, Zero), + zeroGradientFvPatchScalarField::typeName + ); + forAll(cellStencil_, celli) + { + const scalarList& wghts = cellInterpolationWeights_[celli]; + forAll(wghts, i) + { + if (mag(wghts[i]) > mag(maxMagWeight[celli])) + { + maxMagWeight[celli] = wghts[i]; + } + } + if (mag(maxMagWeight[celli]) > 1) + { + const pointField& cc = mesh_.cellCentres(); + Pout<< "cell:" << celli + << " at:" << cc[celli] + << " zone:" << zoneID[celli] + << " donors:" << cellStencil_[celli] + << " weights:" << wghts + << " coords:" + << UIndirectList(cc, cellStencil_[celli]) + << " donorZone:" + << UIndirectList