Skip to content

Commit

Permalink
fvMesh: fvSchemes and fvSolution are now demand-driven
Browse files Browse the repository at this point in the history
fvMesh is no longer derived from fvSchemes and fvSolution, these are now
demand-driven and accessed by the member functions schemes() and solution()
respectively.  This means that the system/fvSchemes and system/fvSolution files
are no longer required during fvMesh constructions simplifying the mesh
generation and manipulation phase; theses files are read on the first call of
their access functions.

The fvSchemes member function names have also been simplified taking advantage
of the context in which they are called, for example

    mesh.ddtScheme(fieldName) -> mesh.schemes().ddt(fieldName)
  • Loading branch information
Henry Weller committed Mar 23, 2022
1 parent acd5528 commit ddbf2d7
Show file tree
Hide file tree
Showing 122 changed files with 418 additions and 296 deletions.
2 changes: 1 addition & 1 deletion applications/solvers/DNS/dnsFoam/createFields.H
Expand Up @@ -30,6 +30,6 @@ volVectorField U

#include "createPhi.H"

mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());

#include "readTurbulenceProperties.H"
2 changes: 1 addition & 1 deletion applications/solvers/basic/potentialFoam/createControls.H
@@ -1,6 +1,6 @@
const dictionary& potentialFlow
(
mesh.solutionDict().subDict("potentialFlow")
mesh.solution().dict().subDict("potentialFlow")
);

const int nNonOrthCorr
Expand Down
2 changes: 1 addition & 1 deletion applications/solvers/basic/potentialFoam/createFields.H
Expand Up @@ -111,6 +111,6 @@ setRefCell
PhiRefCell,
PhiRefValue
);
mesh.setFluxRequired(Phi.name());
mesh.schemes().setFluxRequired(Phi.name());

#include "createMRF.H"
2 changes: 1 addition & 1 deletion applications/solvers/combustion/XiFoam/PDRFoam/bEqn.H
Expand Up @@ -5,7 +5,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection
mesh,
fields,
phi,
mesh.divScheme("div(phi,ft_b_ha_hau)")
mesh.schemes().div("div(phi,ft_b_ha_hau)")
)
);

Expand Down
Expand Up @@ -43,7 +43,7 @@ volVectorField U

#include "compressibleCreatePhi.H"

mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());

Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::RASModel> turbulence
Expand Down
2 changes: 1 addition & 1 deletion applications/solvers/combustion/XiFoam/createFields.H
Expand Up @@ -44,7 +44,7 @@ volVectorField U

#include "compressibleCreatePhi.H"

mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());

Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::momentumTransportModel> turbulence
Expand Down
2 changes: 1 addition & 1 deletion applications/solvers/combustion/XiFoam/ftEqn.H
Expand Up @@ -5,7 +5,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection
mesh,
fields,
phi,
mesh.divScheme("div(phi,ft_b_ha_hau)")
mesh.schemes().div("div(phi,ft_b_ha_hau)")
)
);

Expand Down
2 changes: 1 addition & 1 deletion applications/solvers/combustion/reactingFoam/YEqn.H
Expand Up @@ -5,7 +5,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection
mesh,
fields,
phi,
mesh.divScheme("div(phi,Yi_h)")
mesh.schemes().div("div(phi,Yi_h)")
)
);

Expand Down
Expand Up @@ -39,7 +39,7 @@ volScalarField& p = thermo.p();

#include "compressibleCreatePhi.H"

mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());

Info << "Creating turbulence model.\n" << nl;
autoPtr<compressible::momentumTransportModel> turbulence
Expand Down Expand Up @@ -94,7 +94,7 @@ pressureReference pressureReference
thermo.incompressible()
);

mesh.setFluxRequired(p_rgh.name());
mesh.schemes().setFluxRequired(p_rgh.name());

hydrostaticInitialisation
(
Expand Down
Expand Up @@ -40,7 +40,7 @@ volScalarField& p = thermo.p();

pressureReference pressureReference(p, pimple.dict(), false);

mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());


Info << "Creating turbulence model.\n" << nl;
Expand Down
@@ -1,5 +1,5 @@
word fluxScheme("Kurganov");
if (mesh.schemesDict().readIfPresent("fluxScheme", fluxScheme))
if (mesh.schemes().dict().readIfPresent("fluxScheme", fluxScheme))
{
if ((fluxScheme == "Tadmor") || (fluxScheme == "Kurganov"))
{
Expand Down
Expand Up @@ -47,7 +47,7 @@ pressureReference pressureReference
thermo.incompressible()
);

mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());

Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::momentumTransportModel> turbulence
Expand Down
10 changes: 5 additions & 5 deletions applications/solvers/compressible/rhoPimpleFoam/pEqn.H
Expand Up @@ -95,7 +95,7 @@ if (pimple.transonic())
}
else
{
if (mesh.steady())
if (mesh.schemes().steady())
{
adjustMass = adjustPhi(phiHbyA, U, p);
}
Expand Down Expand Up @@ -133,7 +133,7 @@ else
}
}

if (mesh.steady())
if (mesh.schemes().steady())
{
#include "incompressible/continuityErrs.H"
}
Expand Down Expand Up @@ -161,7 +161,7 @@ U.correctBoundaryConditions();
fvConstraints.constrain(U);
K = 0.5*magSqr(U);

if (mesh.steady())
if (mesh.schemes().steady())
{
fvConstraints.constrain(p);
}
Expand All @@ -175,15 +175,15 @@ if (adjustMass && !thermo.incompressible())
p.correctBoundaryConditions();
}

if (mesh.steady() || pimple.simpleRho() || adjustMass)
if (mesh.schemes().steady() || pimple.simpleRho() || adjustMass)
{
rho = thermo.rho();
}

// Correct rhoUf if the mesh is moving
fvc::correctRhoUf(rhoUf, rho, U, phi);

if (mesh.steady() || pimple.simpleRho())
if (mesh.schemes().steady() || pimple.simpleRho())
{
rho.relax();
}
Expand Down
Expand Up @@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
Expand Down Expand Up @@ -138,7 +138,7 @@ int main(int argc, char *argv[])

if
(
!mesh.steady()
!mesh.schemes().steady()
&& !pimple.simpleRho()
&& pimple.firstPimpleIter()
)
Expand All @@ -164,7 +164,7 @@ int main(int argc, char *argv[])
}
}

if (!mesh.steady())
if (!mesh.schemes().steady())
{
rho = thermo.rho();
}
Expand Down
Expand Up @@ -45,7 +45,7 @@ pressureReference pressureReference
thermo.incompressible()
);

mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());

Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::momentumTransportModel> turbulence
Expand Down
4 changes: 2 additions & 2 deletions applications/solvers/electromagnetics/mhdFoam/createFields.H
Expand Up @@ -111,5 +111,5 @@ DBU.name() = "DBU";

pressureReference pressureReference(p, piso.dict());

mesh.setFluxRequired(p.name());
mesh.setFluxRequired(pB.name());
mesh.schemes().setFluxRequired(p.name());
mesh.schemes().setFluxRequired(pB.name());
@@ -1,3 +1,3 @@
const dictionary& Bpiso = mesh.solutionDict().subDict("BPISO");
const dictionary& Bpiso = mesh.solution().dict().subDict("BPISO");

const int nBcorr = Bpiso.lookupOrDefault<int>("nCorrectors", 1);
Expand Up @@ -84,7 +84,7 @@ pressureReference pressureReference
thermo.incompressible()
);

mesh.setFluxRequired(p_rgh.name());
mesh.schemes().setFluxRequired(p_rgh.name());

hydrostaticInitialisation
(
Expand Down
10 changes: 5 additions & 5 deletions applications/solvers/heatTransfer/buoyantFoam/pEqn.H
Expand Up @@ -23,7 +23,7 @@ surfaceScalarField phiHbyA

MRF.makeRelative(fvc::interpolate(rho), phiHbyA);

bool adjustMass = mesh.steady() && adjustPhi(phiHbyA, U, p_rgh);
bool adjustMass = mesh.schemes().steady() && adjustPhi(phiHbyA, U, p_rgh);

const surfaceScalarField phig(-rhorAUf*ghf*fvc::snGrad(rho)*mesh.magSf());

Expand Down Expand Up @@ -97,7 +97,7 @@ else

phi = phiHbyA + p_rghEqn.flux();

if (mesh.steady())
if (mesh.schemes().steady())
{
#include "incompressible/continuityErrs.H"
}
Expand Down Expand Up @@ -131,7 +131,7 @@ U.correctBoundaryConditions();
fvConstraints.constrain(U);
K = 0.5*magSqr(U);

if (mesh.steady())
if (mesh.schemes().steady())
{
if (fvConstraints.constrain(p))
{
Expand All @@ -150,12 +150,12 @@ if (adjustMass && !thermo.incompressible())
p_rgh.correctBoundaryConditions();
}

if (mesh.steady() || pimple.simpleRho() || adjustMass)
if (mesh.schemes().steady() || pimple.simpleRho() || adjustMass)
{
rho = thermo.rho();
}

if (mesh.steady() || pimple.simpleRho())
if (mesh.schemes().steady() || pimple.simpleRho())
{
rho.relax();
}
Expand Down
Expand Up @@ -7,7 +7,7 @@ if (Y.size())
mesh,
fields,
phi,
mesh.divScheme("div(phi,Yi_h)")
mesh.schemes().div("div(phi,Yi_h)")
)
);
}
Expand Down
Expand Up @@ -214,7 +214,7 @@ forAll(fluidRegions, i)
)
);

fluidRegions[i].setFluxRequired(p_rghFluid[i].name());
fluidRegions[i].schemes().setFluxRequired(p_rghFluid[i].name());

initialMassFluid[i] = fvc::domainIntegrate(rhoFluid[i]).value();

Expand Down
Expand Up @@ -20,7 +20,7 @@ else
{
if (Ecorr == 0)
{
if (!mesh.steady() && pimples.firstPimpleIter())
if (!mesh.schemes().steady() && pimples.firstPimpleIter())
{
#include "rhoEqn.H"
}
Expand Down Expand Up @@ -61,7 +61,7 @@ else
thermophysicalTransport.correct();
}

if (!mesh.steady() && pimples.finalPimpleIter())
if (!mesh.schemes().steady() && pimples.finalPimpleIter())
{
rho = thermo.rho();
}
Expand Down
4 changes: 2 additions & 2 deletions applications/solvers/heatTransfer/thermoFoam/thermoFoam.C
Expand Up @@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2013-2021 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2013-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
Expand Down Expand Up @@ -55,7 +55,7 @@ int main(int argc, char *argv[])

Info<< "\nEvolving thermodynamics\n" << endl;

if (mesh.solutionDict().found("SIMPLE"))
if (mesh.solution().dict().found("SIMPLE"))
{
simpleControl simple(mesh);

Expand Down
Expand Up @@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
Expand Down Expand Up @@ -97,7 +97,7 @@ int main(int argc, char *argv[])
// mesh.relaxationFactor("alpha")
// *(lambda*max(Ua & U, zeroSensitivity) - alpha);
alpha +=
mesh.fieldRelaxationFactor("alpha")
mesh.solution().fieldRelaxationFactor("alpha")
*(min(max(alpha + lambda*(Ua & U), zeroAlpha), alphaMax) - alpha);

zeroCells(alpha, inletCells);
Expand Down
Expand Up @@ -31,7 +31,7 @@ volVectorField U

pressureReference pressureReference(p, simple.dict());

mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());


Info<< "Reading field pa\n" << endl;
Expand Down Expand Up @@ -74,7 +74,7 @@ setRefCell
paRefCell,
paRefValue
);
mesh.setFluxRequired(pa.name());
mesh.schemes().setFluxRequired(pa.name());


autoPtr<viscosityModel> viscosity(viscosityModel::New(mesh));
Expand Down
4 changes: 2 additions & 2 deletions applications/solvers/incompressible/icoFoam/createFields.H
Expand Up @@ -54,5 +54,5 @@ volVectorField U

label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, mesh.solutionDict().subDict("PISO"), pRefCell, pRefValue);
mesh.setFluxRequired(p.name());
setRefCell(p, mesh.solution().dict().subDict("PISO"), pRefCell, pRefValue);
mesh.schemes().setFluxRequired(p.name());
Expand Up @@ -41,7 +41,7 @@ surfaceScalarField phi
);

pressureReference pressureReference(p, pimple.dict());
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());

Info<< "Creating SRF model\n" << endl;
autoPtr<SRF::SRFModel> SRF
Expand Down
Expand Up @@ -32,7 +32,7 @@ volVectorField U

pressureReference pressureReference(p, pimple.dict());

mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());


autoPtr<viscosityModel> viscosity(viscosityModel::New(mesh));
Expand Down
Expand Up @@ -31,7 +31,7 @@ volVectorField U

pressureReference pressureReference(p, piso.dict());

mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());


autoPtr<viscosityModel> viscosity(viscosityModel::New(mesh));
Expand Down
Expand Up @@ -76,4 +76,4 @@ hTotal.write();
Info<< "Creating Coriolis Force" << endl;
const dimensionedVector F("F", ((2.0*Omega) & gHat)*gHat);

mesh.setFluxRequired(h.name());
mesh.schemes().setFluxRequired(h.name());
Expand Up @@ -42,7 +42,7 @@ surfaceScalarField phi

pressureReference pressureReference(p, simple.dict());

mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());

Info<< "Creating SRF model\n" << endl;
autoPtr<SRF::SRFModel> SRF(SRF::SRFModel::New(Urel));
Expand Down

0 comments on commit ddbf2d7

Please sign in to comment.