From bbc5853e3d9b915af81710a5caf8ae302c1adc4c Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Mon, 2 Jul 2018 20:41:20 +0100 Subject: [PATCH] rhoCentralFoam: Merged with rhoCentralDyMFoam rhoCentralFoam can now run with static or dynamic meshes selected in the constant/dynamicMeshDict dictionary. --- .../compressible/rhoCentralFoam/Allwclean | 1 - .../compressible/rhoCentralFoam/Allwmake | 2 +- .../compressible/rhoCentralFoam/Make/options | 4 +- .../rhoCentralDyMFoam/Make/files | 3 - .../rhoCentralDyMFoam/Make/options | 26 -- .../rhoCentralDyMFoam/rhoCentralDyMFoam.C | 269 ------------------ .../rhoCentralFoam/rhoCentralFoam.C | 37 ++- bin/rhoCentralDyMFoam | 1 + .../movingCone/0/T | 0 .../movingCone/0/U | 0 .../movingCone/0/p | 0 .../movingCone/0/pointMotionUx | 0 .../movingCone/constant/dynamicMeshDict | 0 .../constant/thermophysicalProperties | 0 .../movingCone/constant/turbulenceProperties | 0 .../movingCone/system/blockMeshDict | 0 .../movingCone/system/controlDict | 2 +- .../movingCone/system/cuttingPlane | 0 .../movingCone/system/fvSchemes | 0 .../movingCone/system/fvSolution | 0 20 files changed, 34 insertions(+), 311 deletions(-) delete mode 100644 applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/Make/files delete mode 100644 applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/Make/options delete mode 100644 applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C create mode 120000 bin/rhoCentralDyMFoam rename tutorials/compressible/{rhoCentralDyMFoam => rhoCentralFoam}/movingCone/0/T (100%) rename tutorials/compressible/{rhoCentralDyMFoam => rhoCentralFoam}/movingCone/0/U (100%) rename tutorials/compressible/{rhoCentralDyMFoam => rhoCentralFoam}/movingCone/0/p (100%) rename tutorials/compressible/{rhoCentralDyMFoam => rhoCentralFoam}/movingCone/0/pointMotionUx (100%) rename tutorials/compressible/{rhoCentralDyMFoam => rhoCentralFoam}/movingCone/constant/dynamicMeshDict (100%) rename tutorials/compressible/{rhoCentralDyMFoam => rhoCentralFoam}/movingCone/constant/thermophysicalProperties (100%) rename tutorials/compressible/{rhoCentralDyMFoam => rhoCentralFoam}/movingCone/constant/turbulenceProperties (100%) rename tutorials/compressible/{rhoCentralDyMFoam => rhoCentralFoam}/movingCone/system/blockMeshDict (100%) rename tutorials/compressible/{rhoCentralDyMFoam => rhoCentralFoam}/movingCone/system/controlDict (97%) rename tutorials/compressible/{rhoCentralDyMFoam => rhoCentralFoam}/movingCone/system/cuttingPlane (100%) rename tutorials/compressible/{rhoCentralDyMFoam => rhoCentralFoam}/movingCone/system/fvSchemes (100%) rename tutorials/compressible/{rhoCentralDyMFoam => rhoCentralFoam}/movingCone/system/fvSolution (100%) diff --git a/applications/solvers/compressible/rhoCentralFoam/Allwclean b/applications/solvers/compressible/rhoCentralFoam/Allwclean index 787221b83c..abc2014e90 100755 --- a/applications/solvers/compressible/rhoCentralFoam/Allwclean +++ b/applications/solvers/compressible/rhoCentralFoam/Allwclean @@ -3,6 +3,5 @@ cd ${0%/*} || exit 1 # 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 5dee7d1a88..e6ead0f47d 100755 --- a/applications/solvers/compressible/rhoCentralFoam/Allwmake +++ b/applications/solvers/compressible/rhoCentralFoam/Allwmake @@ -4,6 +4,6 @@ cd ${0%/*} || exit 1 # Run from this directory # Parse arguments for library compilation . $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments -(wmake $targetType BCs && wmake $targetType && wmake $targetType rhoCentralDyMFoam) +(wmake $targetType BCs && wmake $targetType) #------------------------------------------------------------------------------ diff --git a/applications/solvers/compressible/rhoCentralFoam/Make/options b/applications/solvers/compressible/rhoCentralFoam/Make/options index 24fc2d966e..3b71f3ea95 100644 --- a/applications/solvers/compressible/rhoCentralFoam/Make/options +++ b/applications/solvers/compressible/rhoCentralFoam/Make/options @@ -6,7 +6,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 \ -I$(LIB_SRC)/meshTools/lnInclude EXE_LIBS = \ @@ -18,4 +18,6 @@ EXE_LIBS = \ -lrhoCentralFoam \ -lturbulenceModels \ -lcompressibleTurbulenceModels \ + -ldynamicFvMesh \ + -ltopoChangerFvMesh \ -lmeshTools 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 29b8a6faa4..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)/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 \ - -I$(LIB_SRC)/meshTools/lnInclude - -EXE_LIBS = \ - -lfiniteVolume \ - -lfvOptions \ - -lcompressibleTransportModels \ - -lfluidThermophysicalModels \ - -lspecie \ - -lrhoCentralFoam \ - -lturbulenceModels \ - -lcompressibleTurbulenceModels \ - -ldynamicMesh \ - -ldynamicFvMesh \ - -ltopoChangerFvMesh \ - -lmeshTools diff --git a/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C b/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C deleted file mode 100644 index 898f2eba95..0000000000 --- a/applications/solvers/compressible/rhoCentralFoam/rhoCentralDyMFoam/rhoCentralDyMFoam.C +++ /dev/null @@ -1,269 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | - \\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -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 - -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[]) -{ - #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" - - dimensionedScalar v_zero("v_zero", dimVolume/dimTime, 0.0); - - // 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(); - } - - 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 phiUp - ( - (aphiv_pos*rhoU_pos + aphiv_neg*rhoU_neg) - + (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()) - { - phiEp += mesh.phi()*(a_pos*p_pos + a_neg*p_neg); - } - - 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(); - - Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" - << " ClockTime = " << runTime.elapsedClockTime() << " s" - << nl << endl; - } - - Info<< "End\n" << endl; - - return 0; -} - -// ************************************************************************* // diff --git a/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C b/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C index ae735b1d7f..6510a37ec0 100644 --- a/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C +++ b/applications/solvers/compressible/rhoCentralFoam/rhoCentralFoam.C @@ -26,11 +26,12 @@ Application Description Density-based compressible flow solver based on central-upwind schemes of - Kurganov and Tadmor. + 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" @@ -47,7 +48,7 @@ int main(int argc, char *argv[]) #include "setRootCaseLists.H" #include "createTime.H" - #include "createMesh.H" + #include "createDynamicFvMesh.H" #include "createFields.H" #include "createFieldRefs.H" #include "createTimeControls.H" @@ -68,6 +69,17 @@ 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)); @@ -92,6 +104,13 @@ int main(int argc, char *argv[]) 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(); + } + volScalarField c("c", sqrt(thermo.Cp()/thermo.Cv()*rPsi)); surfaceScalarField cSf_pos ( @@ -140,18 +159,12 @@ 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" + runTime++; } - else - { - #include "setDeltaT.H" - } - - runTime++; Info<< "Time = " << runTime.timeName() << nl << endl; @@ -171,6 +184,12 @@ int main(int argc, char *argv[]) + aSf*p_pos - aSf*p_neg ); + // Make flux for pressure-work absolute + if (mesh.moving()) + { + phiEp += mesh.phi()*(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/bin/rhoCentralDyMFoam b/bin/rhoCentralDyMFoam new file mode 120000 index 0000000000..d9fcbed5a0 --- /dev/null +++ b/bin/rhoCentralDyMFoam @@ -0,0 +1 @@ +mergedDyM \ No newline at end of file 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 9458edb8dd..055217c72d 100644 --- a/tutorials/compressible/rhoCentralDyMFoam/movingCone/system/controlDict +++ b/tutorials/compressible/rhoCentralFoam/movingCone/system/controlDict @@ -15,7 +15,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