diff --git a/applications/solvers/compressible/rhoCentralFoam/Allwclean b/applications/solvers/compressible/rhoCentralFoam/Allwclean index 6ccfad7e88..b9be2951e1 100755 --- a/applications/solvers/compressible/rhoCentralFoam/Allwclean +++ b/applications/solvers/compressible/rhoCentralFoam/Allwclean @@ -4,6 +4,5 @@ cd "${0%/*}" || exit # Run from this directory wclean libso BCs wclean -wclean rhoCentralDyMFoam #------------------------------------------------------------------------------ diff --git a/applications/solvers/compressible/rhoCentralFoam/Allwmake b/applications/solvers/compressible/rhoCentralFoam/Allwmake index 58d48467be..2145b78e85 100755 --- a/applications/solvers/compressible/rhoCentralFoam/Allwmake +++ b/applications/solvers/compressible/rhoCentralFoam/Allwmake @@ -5,8 +5,7 @@ cd "${0%/*}" || exit # Run from this directory ( wmake $targetType BCs \ - && wmake $targetType \ - && wmake $targetType rhoCentralDyMFoam \ + && wmake $targetType ) #------------------------------------------------------------------------------ diff --git a/applications/solvers/compressible/rhoCentralFoam/Make/options b/applications/solvers/compressible/rhoCentralFoam/Make/options index b18659e4c8..2b1b8035dc 100644 --- a/applications/solvers/compressible/rhoCentralFoam/Make/options +++ b/applications/solvers/compressible/rhoCentralFoam/Make/options @@ -7,7 +7,7 @@ EXE_INC = \ -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ - -I$(LIB_SRC)/dynamicMesh/lnInclude + -I$(LIB_SRC)/dynamicFvMesh/lnInclude EXE_LIBS = \ -lfiniteVolume \ @@ -18,4 +18,6 @@ EXE_LIBS = \ -lspecie \ -lrhoCentralFoam \ -lturbulenceModels \ - -lcompressibleTurbulenceModels + -lcompressibleTurbulenceModels \ + -ldynamicFvMesh \ + -ltopoChangerFvMesh diff --git a/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/Make/files b/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/Make/files deleted file mode 100644 index f78400aa8d..0000000000 --- a/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/Make/files +++ /dev/null @@ -1,3 +0,0 @@ -rhoCentralDyMFoam.C - -EXE = $(FOAM_APPBIN)/rhoCentralDyMFoam diff --git a/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/Make/options b/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/Make/options deleted file mode 100644 index 1489edb1b5..0000000000 --- a/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/Make/options +++ /dev/null @@ -1,26 +0,0 @@ -EXE_INC = \ - -I.. \ - -I../BCs/lnInclude \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/transportModels/compressible/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ - -I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \ - -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ - -I$(LIB_SRC)/TurbulenceModels/compressible/lnInclude \ - -I$(LIB_SRC)/dynamicMesh/lnInclude \ - -I$(LIB_SRC)/dynamicFvMesh/lnInclude - -EXE_LIBS = \ - -lfiniteVolume \ - -lfvOptions \ - -lmeshTools \ - -lcompressibleTransportModels \ - -lfluidThermophysicalModels \ - -lspecie \ - -lrhoCentralFoam \ - -lturbulenceModels \ - -lcompressibleTurbulenceModels \ - -ldynamicMesh \ - -ldynamicFvMesh \ - -ltopoChangerFvMesh diff --git a/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C b/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C deleted file mode 100644 index 662287d831..0000000000 --- a/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C +++ /dev/null @@ -1,288 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | www.openfoam.com - \\/ M anipulation | -------------------------------------------------------------------------------- - Copyright (C) 2011-2016 OpenFOAM Foundation -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see . - -Application - rhoCentralDyMFoam - -Group - grpCompressibleSolvers grpMovingMeshSolvers - -Description - Density-based compressible flow solver based on central-upwind - schemes of Kurganov and Tadmor - with support for mesh-motion and topology changes. - -\*---------------------------------------------------------------------------*/ - -#include "fvCFD.H" -#include "dynamicFvMesh.H" -#include "psiThermo.H" -#include "turbulentFluidThermoModel.H" -#include "fixedRhoFvPatchScalarField.H" -#include "directionInterpolate.H" -#include "localEulerDdtScheme.H" -#include "fvcSmooth.H" -#include "motionSolver.H" - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -int main(int argc, char *argv[]) -{ - argList::addNote - ( - "Density-based compressible flow solver based on central-upwind" - " schemes of Kurganov and Tadmor.\n" - "With support for mesh-motion and topology changes." - ); - - #define NO_CONTROL - #include "postProcess.H" - - #include "setRootCaseLists.H" - #include "createTime.H" - #include "createDynamicFvMesh.H" - #include "createFields.H" - #include "createFieldRefs.H" - #include "createTimeControls.H" - - turbulence->validate(); - - // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - - #include "readFluxScheme.H" - - const dimensionedScalar v_zero(dimVolume/dimTime, Zero); - - // Courant numbers used to adjust the time-step - scalar CoNum = 0.0; - scalar meanCoNum = 0.0; - - Info<< "\nStarting time loop\n" << endl; - - while (runTime.run()) - { - #include "readTimeControls.H" - #include "setDeltaT.H" - - ++runTime; - - Info<< "Time = " << runTime.timeName() << nl << endl; - - // Do any mesh changes - mesh.update(); - - // --- Directed interpolation of primitive fields onto faces - - surfaceScalarField rho_pos(interpolate(rho, pos)); - surfaceScalarField rho_neg(interpolate(rho, neg)); - - surfaceVectorField rhoU_pos(interpolate(rhoU, pos, U.name())); - surfaceVectorField rhoU_neg(interpolate(rhoU, neg, U.name())); - - volScalarField rPsi("rPsi", 1.0/psi); - surfaceScalarField rPsi_pos(interpolate(rPsi, pos, T.name())); - surfaceScalarField rPsi_neg(interpolate(rPsi, neg, T.name())); - - surfaceScalarField e_pos(interpolate(e, pos, T.name())); - surfaceScalarField e_neg(interpolate(e, neg, T.name())); - - surfaceVectorField U_pos("U_pos", rhoU_pos/rho_pos); - surfaceVectorField U_neg("U_neg", rhoU_neg/rho_neg); - - surfaceScalarField p_pos("p_pos", rho_pos*rPsi_pos); - surfaceScalarField p_neg("p_neg", rho_neg*rPsi_neg); - - surfaceScalarField phiv_pos("phiv_pos", U_pos & mesh.Sf()); - surfaceScalarField phiv_neg("phiv_neg", U_neg & mesh.Sf()); - - // Make fluxes relative to mesh-motion - if (mesh.moving()) - { - phiv_pos -= mesh.phi(); - phiv_neg -= mesh.phi(); - } - // Note: extracted out the orientation so becomes unoriented - phiv_pos.setOriented(false); - phiv_neg.setOriented(false); - - volScalarField c("c", sqrt(thermo.Cp()/thermo.Cv()*rPsi)); - surfaceScalarField cSf_pos - ( - "cSf_pos", - interpolate(c, pos, T.name())*mesh.magSf() - ); - surfaceScalarField cSf_neg - ( - "cSf_neg", - interpolate(c, neg, T.name())*mesh.magSf() - ); - - surfaceScalarField ap - ( - "ap", - max(max(phiv_pos + cSf_pos, phiv_neg + cSf_neg), v_zero) - ); - surfaceScalarField am - ( - "am", - min(min(phiv_pos - cSf_pos, phiv_neg - cSf_neg), v_zero) - ); - - surfaceScalarField a_pos("a_pos", ap/(ap - am)); - - surfaceScalarField amaxSf("amaxSf", max(mag(am), mag(ap))); - - surfaceScalarField aSf("aSf", am*a_pos); - - if (fluxScheme == "Tadmor") - { - aSf = -0.5*amaxSf; - a_pos = 0.5; - } - - surfaceScalarField a_neg("a_neg", 1.0 - a_pos); - - phiv_pos *= a_pos; - phiv_neg *= a_neg; - - surfaceScalarField aphiv_pos("aphiv_pos", phiv_pos - aSf); - surfaceScalarField aphiv_neg("aphiv_neg", phiv_neg + aSf); - - // Reuse amaxSf for the maximum positive and negative fluxes - // estimated by the central scheme - amaxSf = max(mag(aphiv_pos), mag(aphiv_neg)); - - #include "centralCourantNo.H" - - phi = aphiv_pos*rho_pos + aphiv_neg*rho_neg; - - surfaceVectorField phiU(aphiv_pos*rhoU_pos + aphiv_neg*rhoU_neg); - // Note: reassembled orientation from the pos and neg parts so becomes - // oriented - phiU.setOriented(true); - - surfaceVectorField phiUp(phiU + (a_pos*p_pos + a_neg*p_neg)*mesh.Sf()); - - surfaceScalarField phiEp - ( - "phiEp", - aphiv_pos*(rho_pos*(e_pos + 0.5*magSqr(U_pos)) + p_pos) - + aphiv_neg*(rho_neg*(e_neg + 0.5*magSqr(U_neg)) + p_neg) - + aSf*p_pos - aSf*p_neg - ); - - // Make flux for pressure-work absolute - if (mesh.moving()) - { - surfaceScalarField phia(a_pos*p_pos + a_neg*p_neg); - phia.setOriented(true); - - phiEp += mesh.phi()*phia; - } - - volScalarField muEff("muEff", turbulence->muEff()); - volTensorField tauMC("tauMC", muEff*dev2(Foam::T(fvc::grad(U)))); - - // --- Solve density - solve(fvm::ddt(rho) + fvc::div(phi)); - - // --- Solve momentum - solve(fvm::ddt(rhoU) + fvc::div(phiUp)); - - U.ref() = - rhoU() - /rho(); - U.correctBoundaryConditions(); - rhoU.boundaryFieldRef() == rho.boundaryField()*U.boundaryField(); - - if (!inviscid) - { - solve - ( - fvm::ddt(rho, U) - fvc::ddt(rho, U) - - fvm::laplacian(muEff, U) - - fvc::div(tauMC) - ); - rhoU = rho*U; - } - - // --- Solve energy - surfaceScalarField sigmaDotU - ( - "sigmaDotU", - ( - fvc::interpolate(muEff)*mesh.magSf()*fvc::snGrad(U) - + fvc::dotInterpolate(mesh.Sf(), tauMC) - ) - & (a_pos*U_pos + a_neg*U_neg) - ); - - solve - ( - fvm::ddt(rhoE) - + fvc::div(phiEp) - - fvc::div(sigmaDotU) - ); - - e = rhoE/rho - 0.5*magSqr(U); - e.correctBoundaryConditions(); - thermo.correct(); - rhoE.boundaryFieldRef() == - rho.boundaryField()* - ( - e.boundaryField() + 0.5*magSqr(U.boundaryField()) - ); - - if (!inviscid) - { - solve - ( - fvm::ddt(rho, e) - fvc::ddt(rho, e) - - fvm::laplacian(turbulence->alphaEff(), e) - ); - thermo.correct(); - rhoE = rho*(e + 0.5*magSqr(U)); - } - - p.ref() = - rho() - /psi(); - p.correctBoundaryConditions(); - rho.boundaryFieldRef() == psi.boundaryField()*p.boundaryField(); - - turbulence->correct(); - - runTime.write(); - - runTime.printExecutionTime(Info); - } - - Info<< "End\n" << endl; - - return 0; -} - - -// ************************************************************************* // diff --git a/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C b/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C index 0cb9966a13..84379df585 100644 --- a/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C +++ b/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C @@ -6,6 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation + Copyright (C) 2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -30,12 +31,14 @@ Group grpCompressibleSolvers Description - Density-based compressible flow solver based on central-upwind - schemes of Kurganov and Tadmor. + Density-based compressible flow solver based on + central-upwind schemes of Kurganov and Tadmor with + support for mesh-motion and topology changes. \*---------------------------------------------------------------------------*/ #include "fvCFD.H" +#include "dynamicFvMesh.H" #include "psiThermo.H" #include "turbulentFluidThermoModel.H" #include "fixedRhoFvPatchScalarField.H" @@ -49,8 +52,9 @@ int main(int argc, char *argv[]) { argList::addNote ( - "Density-based compressible flow solver based on central-upwind" - " schemes of Kurganov and Tadmor." + "Density-based compressible flow solver based on" + " central-upwind schemes of Kurganov and Tadmor with" + " support for mesh-motion and topology changes." ); #define NO_CONTROL @@ -59,7 +63,7 @@ int main(int argc, char *argv[]) #include "addCheckCaseOptions.H" #include "setRootCaseLists.H" #include "createTime.H" - #include "createMesh.H" + #include "createDynamicFvMesh.H" #include "createFields.H" #include "createFieldRefs.H" #include "createTimeControls.H" @@ -80,6 +84,18 @@ int main(int argc, char *argv[]) while (runTime.run()) { + #include "readTimeControls.H" + + if (!LTS) + { + #include "setDeltaT.H" + + ++runTime; + + // Do any mesh changes + mesh.update(); + } + // --- Directed interpolation of primitive fields onto faces surfaceScalarField rho_pos(interpolate(rho, pos)); @@ -107,6 +123,15 @@ int main(int argc, char *argv[]) surfaceScalarField phiv_neg("phiv_neg", U_neg & mesh.Sf()); phiv_neg.setOriented(false); + // Make fluxes relative to mesh-motion + if (mesh.moving()) + { + surfaceScalarField meshPhi(mesh.phi()); + meshPhi.setOriented(false); + phiv_pos -= meshPhi; + phiv_neg -= meshPhi; + } + volScalarField c("c", sqrt(thermo.Cp()/thermo.Cv()*rPsi)); surfaceScalarField cSf_pos ( @@ -157,18 +182,13 @@ int main(int argc, char *argv[]) amaxSf = max(mag(aphiv_pos), mag(aphiv_neg)); #include "centralCourantNo.H" - #include "readTimeControls.H" if (LTS) { #include "setRDeltaT.H" - } - else - { - #include "setDeltaT.H" - } - ++runTime; + ++runTime; + } Info<< "Time = " << runTime.timeName() << nl << endl; @@ -189,6 +209,14 @@ int main(int argc, char *argv[]) + aSf*p_pos - aSf*p_neg ); + // Make flux for pressure-work absolute + if (mesh.moving()) + { + surfaceScalarField meshPhi(mesh.phi()); + meshPhi.setOriented(false); + phiEp += meshPhi*(a_pos*p_pos + a_neg*p_neg); + } + volScalarField muEff("muEff", turbulence->muEff()); volTensorField tauMC("tauMC", muEff*dev2(Foam::T(fvc::grad(U)))); diff --git a/tutorials/compressible/rhoCentralDyMFoam/movingCone/0/T b/tutorials/compressible/rhoCentralFoam/movingCone/0/T similarity index 100% rename from tutorials/compressible/rhoCentralDyMFoam/movingCone/0/T rename to tutorials/compressible/rhoCentralFoam/movingCone/0/T diff --git a/tutorials/compressible/rhoCentralDyMFoam/movingCone/0/U b/tutorials/compressible/rhoCentralFoam/movingCone/0/U similarity index 100% rename from tutorials/compressible/rhoCentralDyMFoam/movingCone/0/U rename to tutorials/compressible/rhoCentralFoam/movingCone/0/U diff --git a/tutorials/compressible/rhoCentralDyMFoam/movingCone/0/p b/tutorials/compressible/rhoCentralFoam/movingCone/0/p similarity index 100% rename from tutorials/compressible/rhoCentralDyMFoam/movingCone/0/p rename to tutorials/compressible/rhoCentralFoam/movingCone/0/p diff --git a/tutorials/compressible/rhoCentralDyMFoam/movingCone/0/pointMotionUx b/tutorials/compressible/rhoCentralFoam/movingCone/0/pointMotionUx similarity index 100% rename from tutorials/compressible/rhoCentralDyMFoam/movingCone/0/pointMotionUx rename to tutorials/compressible/rhoCentralFoam/movingCone/0/pointMotionUx diff --git a/tutorials/compressible/rhoCentralDyMFoam/movingCone/constant/dynamicMeshDict b/tutorials/compressible/rhoCentralFoam/movingCone/constant/dynamicMeshDict similarity index 100% rename from tutorials/compressible/rhoCentralDyMFoam/movingCone/constant/dynamicMeshDict rename to tutorials/compressible/rhoCentralFoam/movingCone/constant/dynamicMeshDict diff --git a/tutorials/compressible/rhoCentralDyMFoam/movingCone/constant/thermophysicalProperties b/tutorials/compressible/rhoCentralFoam/movingCone/constant/thermophysicalProperties similarity index 100% rename from tutorials/compressible/rhoCentralDyMFoam/movingCone/constant/thermophysicalProperties rename to tutorials/compressible/rhoCentralFoam/movingCone/constant/thermophysicalProperties diff --git a/tutorials/compressible/rhoCentralDyMFoam/movingCone/constant/turbulenceProperties b/tutorials/compressible/rhoCentralFoam/movingCone/constant/turbulenceProperties similarity index 100% rename from tutorials/compressible/rhoCentralDyMFoam/movingCone/constant/turbulenceProperties rename to tutorials/compressible/rhoCentralFoam/movingCone/constant/turbulenceProperties diff --git a/tutorials/compressible/rhoCentralDyMFoam/movingCone/system/blockMeshDict b/tutorials/compressible/rhoCentralFoam/movingCone/system/blockMeshDict similarity index 100% rename from tutorials/compressible/rhoCentralDyMFoam/movingCone/system/blockMeshDict rename to tutorials/compressible/rhoCentralFoam/movingCone/system/blockMeshDict diff --git a/tutorials/compressible/rhoCentralDyMFoam/movingCone/system/controlDict b/tutorials/compressible/rhoCentralFoam/movingCone/system/controlDict similarity index 97% rename from tutorials/compressible/rhoCentralDyMFoam/movingCone/system/controlDict rename to tutorials/compressible/rhoCentralFoam/movingCone/system/controlDict index 1342119574..45ca953a39 100644 --- a/tutorials/compressible/rhoCentralDyMFoam/movingCone/system/controlDict +++ b/tutorials/compressible/rhoCentralFoam/movingCone/system/controlDict @@ -14,7 +14,7 @@ FoamFile } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -application rhoCentralDyMFoam; +application rhoCentralFoam; startFrom startTime; diff --git a/tutorials/compressible/rhoCentralDyMFoam/movingCone/system/cuttingPlane b/tutorials/compressible/rhoCentralFoam/movingCone/system/cuttingPlane similarity index 100% rename from tutorials/compressible/rhoCentralDyMFoam/movingCone/system/cuttingPlane rename to tutorials/compressible/rhoCentralFoam/movingCone/system/cuttingPlane diff --git a/tutorials/compressible/rhoCentralDyMFoam/movingCone/system/fvSchemes b/tutorials/compressible/rhoCentralFoam/movingCone/system/fvSchemes similarity index 100% rename from tutorials/compressible/rhoCentralDyMFoam/movingCone/system/fvSchemes rename to tutorials/compressible/rhoCentralFoam/movingCone/system/fvSchemes diff --git a/tutorials/compressible/rhoCentralDyMFoam/movingCone/system/fvSolution b/tutorials/compressible/rhoCentralFoam/movingCone/system/fvSolution similarity index 100% rename from tutorials/compressible/rhoCentralDyMFoam/movingCone/system/fvSolution rename to tutorials/compressible/rhoCentralFoam/movingCone/system/fvSolution