Fluid: Updated Mantaflow source files

Includes minor fixes / cleanups from the viscosity plugin.
This commit is contained in:
Sebastián Barschkis 2021-01-13 09:49:11 +01:00
parent 3f7c294a95
commit 0b711e6758
2 changed files with 13 additions and 15 deletions

@ -170,7 +170,7 @@ struct ApplyMatrix : public KernelBase {
unusedParameter(vecRhs); // Not needed in this matrix application unusedParameter(vecRhs); // Not needed in this matrix application
if (matrixA.size() != 4) if (matrixA.size() != 4)
errMsg("ConjugatedGrad: Invalid A matrix in apply matrix step"); errMsg("ConjugateGrad: Invalid A matrix in apply matrix step");
Grid<Real> &A0 = *matrixA[0]; Grid<Real> &A0 = *matrixA[0];
Grid<Real> &Ai = *matrixA[1]; Grid<Real> &Ai = *matrixA[1];
Grid<Real> &Aj = *matrixA[2]; Grid<Real> &Aj = *matrixA[2];
@ -256,7 +256,7 @@ struct ApplyMatrix2D : public KernelBase {
unusedParameter(vecRhs); // Not needed in this matrix application unusedParameter(vecRhs); // Not needed in this matrix application
if (matrixA.size() != 3) if (matrixA.size() != 3)
errMsg("ConjugatedGrad: Invalid A matrix in apply matrix step"); errMsg("ConjugateGrad: Invalid A matrix in apply matrix step");
Grid<Real> &A0 = *matrixA[0]; Grid<Real> &A0 = *matrixA[0];
Grid<Real> &Ai = *matrixA[1]; Grid<Real> &Ai = *matrixA[1];
Grid<Real> &Aj = *matrixA[2]; Grid<Real> &Aj = *matrixA[2];
@ -338,7 +338,7 @@ struct ApplyMatrixViscosityU : public KernelBase {
const std::vector<Grid<Real> *> vecRhs) const const std::vector<Grid<Real> *> vecRhs) const
{ {
if (matrixA.size() != 15) if (matrixA.size() != 15)
errMsg("ConjugatedGrad: Invalid A matrix in apply matrix step"); errMsg("ConjugateGrad: Invalid A matrix in apply matrix step");
Grid<Real> &A0 = *matrixA[0]; Grid<Real> &A0 = *matrixA[0];
Grid<Real> &Aplusi = *matrixA[1]; Grid<Real> &Aplusi = *matrixA[1];
Grid<Real> &Aplusj = *matrixA[2]; Grid<Real> &Aplusj = *matrixA[2];
@ -348,7 +348,7 @@ struct ApplyMatrixViscosityU : public KernelBase {
Grid<Real> &Aminusk = *matrixA[6]; Grid<Real> &Aminusk = *matrixA[6];
if (vecRhs.size() != 2) if (vecRhs.size() != 2)
errMsg("ConjugatedGrad: Invalid rhs vector in apply matrix step"); errMsg("ConjugateGrad: Invalid rhs vector in apply matrix step");
Grid<Real> &srcV = *vecRhs[0]; Grid<Real> &srcV = *vecRhs[0];
Grid<Real> &srcW = *vecRhs[1]; Grid<Real> &srcW = *vecRhs[1];
@ -450,7 +450,7 @@ struct ApplyMatrixViscosityV : public KernelBase {
const std::vector<Grid<Real> *> vecRhs) const const std::vector<Grid<Real> *> vecRhs) const
{ {
if (matrixA.size() != 15) if (matrixA.size() != 15)
errMsg("ConjugatedGrad: Invalid A matrix in apply matrix step"); errMsg("ConjugateGrad: Invalid A matrix in apply matrix step");
Grid<Real> &A0 = *matrixA[0]; Grid<Real> &A0 = *matrixA[0];
Grid<Real> &Aplusi = *matrixA[1]; Grid<Real> &Aplusi = *matrixA[1];
Grid<Real> &Aplusj = *matrixA[2]; Grid<Real> &Aplusj = *matrixA[2];
@ -460,7 +460,7 @@ struct ApplyMatrixViscosityV : public KernelBase {
Grid<Real> &Aminusk = *matrixA[6]; Grid<Real> &Aminusk = *matrixA[6];
if (vecRhs.size() != 2) if (vecRhs.size() != 2)
errMsg("ConjugatedGrad: Invalid rhs vector in apply matrix step"); errMsg("ConjugateGrad: Invalid rhs vector in apply matrix step");
Grid<Real> &srcU = *vecRhs[0]; Grid<Real> &srcU = *vecRhs[0];
Grid<Real> &srcW = *vecRhs[1]; Grid<Real> &srcW = *vecRhs[1];
@ -562,7 +562,7 @@ struct ApplyMatrixViscosityW : public KernelBase {
const std::vector<Grid<Real> *> vecRhs) const const std::vector<Grid<Real> *> vecRhs) const
{ {
if (matrixA.size() != 15) if (matrixA.size() != 15)
errMsg("ConjugatedGrad: Invalid A matrix in apply matrix step"); errMsg("ConjugateGrad: Invalid A matrix in apply matrix step");
Grid<Real> &A0 = *matrixA[0]; Grid<Real> &A0 = *matrixA[0];
Grid<Real> &Aplusi = *matrixA[1]; Grid<Real> &Aplusi = *matrixA[1];
Grid<Real> &Aplusj = *matrixA[2]; Grid<Real> &Aplusj = *matrixA[2];
@ -572,7 +572,7 @@ struct ApplyMatrixViscosityW : public KernelBase {
Grid<Real> &Aminusk = *matrixA[6]; Grid<Real> &Aminusk = *matrixA[6];
if (vecRhs.size() != 2) if (vecRhs.size() != 2)
errMsg("ConjugatedGrad: Invalid rhs vector in apply matrix step"); errMsg("ConjugateGrad: Invalid rhs vector in apply matrix step");
Grid<Real> &srcU = *vecRhs[0]; Grid<Real> &srcU = *vecRhs[0];
Grid<Real> &srcV = *vecRhs[1]; Grid<Real> &srcV = *vecRhs[1];

@ -139,7 +139,7 @@ struct KnEstimateVolumeFraction : public KernelBase {
{ {
const Vec3 centre = startCentre + Vec3(i, j, k) * 0.5; const Vec3 centre = startCentre + Vec3(i, j, k) * 0.5;
const Real offset = 0.5 * dx; const Real offset = 0.5 * dx;
const int order = 2; const int order = 1; // is sufficient
Real phi000 = phi.getInterpolatedHi(centre + Vec3(-offset, -offset, -offset), order); Real phi000 = phi.getInterpolatedHi(centre + Vec3(-offset, -offset, -offset), order);
Real phi001 = phi.getInterpolatedHi(centre + Vec3(-offset, -offset, +offset), order); Real phi001 = phi.getInterpolatedHi(centre + Vec3(-offset, -offset, +offset), order);
@ -1067,10 +1067,8 @@ void solveViscosity(const FlagGrid &flags,
Real viscTop = 0.25 * (viscosity(i, j, k) + viscosity(i, j, k - 1) + viscosity(i, j + 1, k) + Real viscTop = 0.25 * (viscosity(i, j, k) + viscosity(i, j, k - 1) + viscosity(i, j + 1, k) +
viscosity(i, j + 1, k - 1)); viscosity(i, j + 1, k - 1));
;
Real viscBottom = 0.25 * (viscosity(i, j, k) + viscosity(i, j, k - 1) + Real viscBottom = 0.25 * (viscosity(i, j, k) + viscosity(i, j, k - 1) +
viscosity(i, j - 1, k) + viscosity(i, j - 1, k - 1)); viscosity(i, j - 1, k) + viscosity(i, j - 1, k - 1));
;
Real volTop = exVolLiquid(i, j + 1, k); Real volTop = exVolLiquid(i, j + 1, k);
Real volBottom = exVolLiquid(i, j, k); Real volBottom = exVolLiquid(i, j, k);
@ -1224,7 +1222,7 @@ void solveViscosity(const FlagGrid &flags,
uSolution, uRhs, uResidual, uSearch, flags, uTmp, uMatA, uVecRhs); uSolution, uRhs, uResidual, uSearch, flags, uTmp, uMatA, uVecRhs);
} }
else { else {
errMsg("2D Matrix application not yet supported in viscosity solver"); errMsg("Viscosity: 2D Matrix application not yet supported in viscosity solver");
} }
// CG solver for V // CG solver for V
@ -1249,7 +1247,7 @@ void solveViscosity(const FlagGrid &flags,
vSolution, vRhs, vResidual, vSearch, flags, vTmp, vMatA, vVecRhs); vSolution, vRhs, vResidual, vSearch, flags, vTmp, vMatA, vVecRhs);
} }
else { else {
errMsg("2D Matrix application not yet supported in viscosity solver"); errMsg("Viscosity: 2D Matrix application not yet supported in viscosity solver");
} }
// CG solver for W // CG solver for W
@ -1274,7 +1272,7 @@ void solveViscosity(const FlagGrid &flags,
wSolution, wRhs, wResidual, wSearch, flags, wTmp, wMatA, wVecRhs); wSolution, wRhs, wResidual, wSearch, flags, wTmp, wMatA, wVecRhs);
} }
else { else {
errMsg("2D Matrix application not yet supported in viscosity solver"); errMsg("Viscosity: 2D Matrix application not yet supported in viscosity solver");
} }
// Same accuracy for all dimensions // Same accuracy for all dimensions
@ -1308,7 +1306,7 @@ void solveViscosity(const FlagGrid &flags,
wRhs.copyFrom(wSearch); wRhs.copyFrom(wSearch);
} }
debMsg( debMsg(
"Viscosity::solveViscosity done. " "Viscosity: solveViscosity() done. "
"Iterations (u,v,w): (" "Iterations (u,v,w): ("
<< uGcg->getIterations() << "," << vGcg->getIterations() << "," << wGcg->getIterations() << uGcg->getIterations() << "," << vGcg->getIterations() << "," << wGcg->getIterations()
<< "), " << "), "