Compare commits

..

3 Commits

Author SHA1 Message Date
47062b614c GIT: remove supplementary IOobjectOption handling for faMesh
- was previously used to suppress loading of faSchemes/faSolution,
  but now superfluous.
2023-12-07 17:42:25 +01:00
205719d449 ENH: use demand-driven schemes and solution w/o compatibility layer 2023-12-07 17:42:25 +01:00
916d3b902f INT: introduce demand-driven fvSchemes and fvSolution
- functionality similar to that introduced by openfoam.org

  fvSchemes/fvSolution now demand-driven and accessed by their respective
  member functions schemes() and solution().

  This means that the corresponding system files are not required upon
  construction (which simplifies initialization) and potentially allows
  supporting different file locations (TBD).

  The trailing 'Schemes' suffix has been dropped since the context is
  apparent from the member function. For example,

      Old:  mesh.ddtScheme(fieldName)
      New:  mesh.schemes().ddt(fieldName)

  This is however a non-breaking change with legacy naming continuing
  to be supported (may be noisily deprecated in the future)
2023-12-07 17:42:25 +01:00
10968 changed files with 34627 additions and 124201 deletions

View File

@ -49,7 +49,7 @@
<!--
Providing details of your set-up can help us identify any issues, e.g.
OpenFOAM version : v2312|v2306|v2212|v2206|v2112 etc
OpenFOAM version : v2306|v2212|v2206|v2112|v2106 etc
Operating system : ubuntu|openSUSE|centos etc
Hardware info : any info that may help?
Compiler : gcc|intel|clang etc

View File

@ -46,7 +46,6 @@ It is likely incomplete...
- Victor Olesen
- Evangelos Papoutsis-Kiachagias
- Juho Peltola
- Josep Pocurull
- Johan Roenby
- Henrik Rusche
- Bruno Santos

View File

@ -1,2 +1,2 @@
api=2312
api=2309
patch=0

View File

@ -40,9 +40,9 @@ Violations of the Trademark are monitored, and will be duly prosecuted.
If OpenFOAM has already been compiled on your system, simply source
the appropriate `etc/bashrc` or `etc/cshrc` file and get started.
For example, for the OpenFOAM-v2312 version:
For example, for the OpenFOAM-v2306 version:
```
source /installation/path/OpenFOAM-v2312/etc/bashrc
source /installation/path/OpenFOAM-v2306/etc/bashrc
```
## Compiling OpenFOAM
@ -127,8 +127,8 @@ These 3rd-party sources are normally located in a directory parallel
to the OpenFOAM directory. For example,
```
/path/parent
|-- OpenFOAM-v2312
\-- ThirdParty-v2312
|-- OpenFOAM-v2306
\-- ThirdParty-v2306
```
There are, however, many cases where this simple convention is inadequate:
@ -136,7 +136,7 @@ There are, however, many cases where this simple convention is inadequate:
operating system or cluster installation provides it)
* When we have changed the OpenFOAM directory name to some arbitrary
directory name, e.g. openfoam-sandbox2312, etc..
directory name, e.g. openfoam-sandbox2306, etc..
* When we would like any additional 3rd party software to be located
inside of the OpenFOAM directory to ensure that the installation is
@ -156,9 +156,9 @@ when locating the ThirdParty directory with the following precedence:
2. PREFIX/ThirdParty-VERSION
* this corresponds to the traditional approach
3. PREFIX/ThirdParty-vAPI
* allows for an updated value of VERSION, *eg*, `v2312-myCustom`,
* allows for an updated value of VERSION, *eg*, `v2306-myCustom`,
without requiring a renamed ThirdParty. The API value would still
be `2312` and the original `ThirdParty-v2312/` would be found.
be `2306` and the original `ThirdParty-v2306/` would be found.
4. PREFIX/ThirdParty-API
* same as the previous example, but using an unadorned API value.
5. PREFIX/ThirdParty-common
@ -213,4 +213,4 @@ ThirdParty directory will contain either an `Allwmake` file or a
- [Governance](http://www.openfoam.com/governance/), [Governance Projects](https://www.openfoam.com/governance/projects)
- [Contacting OpenCFD](http://www.openfoam.com/contact/)
Copyright 2016-2023 OpenCFD Ltd
Copyright 2016-2022 OpenCFD Ltd

View File

@ -30,6 +30,6 @@ volVectorField U
#include "createPhi.H"
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
#include "readTurbulenceProperties.H"

View File

@ -1,6 +1,6 @@
const dictionary& potentialFlow
(
mesh.solutionDict().subDict("potentialFlow")
mesh.solution().solutionDict("potentialFlow")
);
const int nNonOrthCorr

View File

@ -113,6 +113,6 @@ setRefCell
PhiRefCell,
PhiRefValue
);
mesh.setFluxRequired(Phi.name());
mesh.schemes().setFluxRequired(Phi.name());
#include "createMRF.H"

View File

@ -1,6 +1,6 @@
const dictionary& potentialFlow
(
mesh.solutionDict().subDict("potentialFlow")
mesh.solution().solutionDict("potentialFlow")
);
const int nNonOrthCorr

View File

@ -1,15 +1,10 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude
-I$(LIB_SRC)/sampling/lnInclude
EXE_LIBS = \
-lfiniteVolume \
-lfvOptions \
-lmeshTools \
-ldynamicMesh \
-ldynamicFvMesh \
-ltopoChangerFvMesh \
-lsampling

View File

@ -56,7 +56,6 @@ Description
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "dynamicFvMesh.H"
#include "fvOptions.H"
#include "simpleControl.H"
@ -72,7 +71,7 @@ int main(int argc, char *argv[])
#include "addCheckCaseOptions.H"
#include "setRootCaseLists.H"
#include "createTime.H"
#include "createDynamicFvMesh.H"
#include "createMesh.H"
simpleControl simple(mesh);
@ -88,16 +87,6 @@ int main(int argc, char *argv[])
{
Info<< "Time = " << runTime.timeName() << nl << endl;
// Do any mesh changes
mesh.controlledUpdate();
if (mesh.changing())
{
// Calculate absolute flux
// from the mapped surface velocity
phi = mesh.Sf() & fvc::interpolate(U);
}
while (simple.correctNonOrthogonal())
{
fvScalarMatrix TEqn

View File

@ -69,8 +69,7 @@ Foam::XiEqModels::Gulder::~Gulder()
Foam::tmp<Foam::volScalarField> Foam::XiEqModels::Gulder::XiEq() const
{
volScalarField up(sqrt((2.0/3.0)*turbulence_.k()));
const tmp<volScalarField> tepsilon(turbulence_.epsilon());
const volScalarField& epsilon = tepsilon();
const volScalarField& epsilon = turbulence_.epsilon();
if (subGridSchelkin_)
{

View File

@ -75,10 +75,8 @@ Foam::XiEqModels::SCOPEXiEq::~SCOPEXiEq()
Foam::tmp<Foam::volScalarField> Foam::XiEqModels::SCOPEXiEq::XiEq() const
{
const tmp<volScalarField> tk(turbulence_.k());
const volScalarField& k = tk();
const tmp<volScalarField> tepsilon(turbulence_.epsilon());
const volScalarField& epsilon = tepsilon();
const volScalarField& k = turbulence_.k();
const volScalarField& epsilon = turbulence_.epsilon();
volScalarField up(sqrt((2.0/3.0)*k));
if (subGridSchelkin_)

View File

@ -66,8 +66,7 @@ Foam::XiGModels::KTS::~KTS()
Foam::tmp<Foam::volScalarField> Foam::XiGModels::KTS::G() const
{
volScalarField up(sqrt((2.0/3.0)*turbulence_.k()));
const tmp<volScalarField> tepsilon(turbulence_.epsilon());
const volScalarField& epsilon = tepsilon();
const volScalarField& epsilon = turbulence_.epsilon();
volScalarField tauEta(sqrt(mag(thermo_.muu()/(thermo_.rhou()*epsilon))));

View File

@ -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)")
)
);

View File

@ -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

View File

@ -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::turbulenceModel> turbulence

View File

@ -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)")
)
);

View File

@ -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)")
)
);
{

View File

@ -89,7 +89,7 @@ volScalarField p_rgh
mesh
);
mesh.setFluxRequired(p_rgh.name());
mesh.schemes().setFluxRequired(p_rgh.name());
#include "phrghEqn.H"

View File

@ -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)")
)
);

View File

@ -47,7 +47,7 @@ volScalarField& p = thermo.p();
pressureControl pressureControl(p, rho, pimple.dict(), false);
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
Info << "Creating turbulence model.\n" << nl;
autoPtr<compressible::turbulenceModel> turbulence

View File

@ -48,7 +48,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::turbulenceModel> turbulence

View File

@ -49,7 +49,7 @@ volScalarField& p = thermo.p();
pressureControl pressureControl(p, rho, pimple.dict(), false);
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
Info << "Creating turbulence model.\n" << nl;

View File

@ -110,6 +110,15 @@ public:
const fvPatchFieldMapper&
);
//- Construct and return a clone
virtual tmp<fvPatchScalarField> clone() const
{
return tmp<fvPatchScalarField>
(
new smoluchowskiJumpTFvPatchScalarField(*this)
);
}
//- Construct as copy setting internal field reference
smoluchowskiJumpTFvPatchScalarField
(
@ -117,22 +126,18 @@ public:
const DimensionedField<scalar, volMesh>&
);
//- Return a clone
virtual tmp<fvPatchField<scalar>> clone() const
{
return fvPatchField<scalar>::Clone(*this);
}
//- Clone with an internal field reference
virtual tmp<fvPatchField<scalar>> clone
//- Construct and return a clone setting internal field reference
virtual tmp<fvPatchScalarField> clone
(
const DimensionedField<scalar, volMesh>& iF
) const
{
return fvPatchField<scalar>::Clone(*this, iF);
return tmp<fvPatchScalarField>
(
new smoluchowskiJumpTFvPatchScalarField(*this, iF)
);
}
// Mapping functions
//- Map (and resize as needed) from self given a mapping object

View File

@ -118,6 +118,15 @@ public:
const fvPatchFieldMapper&
);
//- Construct and return a clone
virtual tmp<fvPatchVectorField> clone() const
{
return tmp<fvPatchVectorField>
(
new maxwellSlipUFvPatchVectorField(*this)
);
}
//- Construct as copy setting internal field reference
maxwellSlipUFvPatchVectorField
(
@ -125,19 +134,16 @@ public:
const DimensionedField<vector, volMesh>&
);
//- Return a clone
virtual tmp<fvPatchField<vector>> clone() const
{
return fvPatchField<vector>::Clone(*this);
}
//- Clone with an internal field reference
virtual tmp<fvPatchField<vector>> clone
//- Construct and return a clone setting internal field reference
virtual tmp<fvPatchVectorField> clone
(
const DimensionedField<vector, volMesh>& iF
) const
{
return fvPatchField<vector>::Clone(*this, iF);
return tmp<fvPatchVectorField>
(
new maxwellSlipUFvPatchVectorField(*this, iF)
);
}

View File

@ -135,6 +135,15 @@ public:
const fixedRhoFvPatchScalarField&
);
//- Construct and return a clone
virtual tmp<fvPatchScalarField> clone() const
{
return tmp<fvPatchScalarField>
(
new fixedRhoFvPatchScalarField(*this)
);
}
//- Construct as copy setting internal field reference
fixedRhoFvPatchScalarField
(
@ -142,19 +151,16 @@ public:
const DimensionedField<scalar, volMesh>&
);
//- Return a clone
virtual tmp<fvPatchField<scalar>> clone() const
{
return fvPatchField<scalar>::Clone(*this);
}
//- Clone with an internal field reference
virtual tmp<fvPatchField<scalar>> clone
//- Construct and return a clone setting internal field reference
virtual tmp<fvPatchScalarField> clone
(
const DimensionedField<scalar, volMesh>& iF
) const
{
return fvPatchField<scalar>::Clone(*this, iF);
return tmp<fvPatchScalarField>
(
new fixedRhoFvPatchScalarField(*this, iF)
);
}

View File

@ -1,9 +1,10 @@
volScalarField& p = thermo.p();
const volScalarField& T = thermo.T();
const volScalarField& psi = thermo.psi();
const volScalarField& mu = thermo.mu();
bool inviscid(true);
if (max(thermo.mu().cref().primitiveField()) > 0.0)
if (max(mu.primitiveField()) > 0.0)
{
inviscid = false;
}

View File

@ -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"))
{

View File

@ -79,7 +79,7 @@ autoPtr<compressible::turbulenceModel> turbulence
)
);
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
#include "createMRF.H"

View File

@ -42,7 +42,7 @@ volVectorField U
pressureControl pressureControl(p, rho, pimple.dict(), false);
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::turbulenceModel> turbulence

View File

@ -56,7 +56,7 @@ if (mesh.changing())
pcorrTypes
);
mesh.setFluxRequired(pcorr.name());
mesh.schemes().setFluxRequired(pcorr.name());
{
dimensionedScalar rAUf("rAUf", dimTime, 1.0);

View File

@ -44,7 +44,7 @@ pressureControl pressureControl(p, rho, pimple.dict(), false);
const dimensionedScalar rhoMax("rhoMax", dimDensity, GREAT, pimple.dict());
const dimensionedScalar rhoMin("rhoMin", dimDensity, Zero, pimple.dict());
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
#include "createDpdt.H"

View File

@ -40,7 +40,7 @@ volVectorField U
pressureControl pressureControl(p, rho, simple.dict());
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::turbulenceModel> turbulence

View File

@ -40,7 +40,7 @@ volVectorField U
pressureControl pressureControl(p, rho, simple.dict());
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::turbulenceModel> turbulence

View File

@ -36,7 +36,7 @@ volVectorField U
#include "compressibleCreatePhi.H"
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::turbulenceModel> turbulence

View File

@ -46,4 +46,4 @@ volScalarField rho
#include "compressibleCreatePhi.H"
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());

View File

@ -114,5 +114,5 @@ label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, piso.dict(), pRefCell, pRefValue);
mesh.setFluxRequired(p.name());
mesh.setFluxRequired(pB.name());
mesh.schemes().setFluxRequired(p.name());
mesh.schemes().setFluxRequired(pB.name());

View File

@ -1,3 +1,3 @@
const dictionary& Bpiso = mesh.solutionDict().subDict("BPISO");
const dictionary& Bpiso = mesh.solution().solutionDict("BPISO");
const int nBcorr = Bpiso.getOrDefault<int>("nCorrectors", 1);

View File

@ -155,4 +155,4 @@
dimensionedScalar("one", dimless, 0.01)
);
aMesh.setFluxRequired("h");
aMesh.schemes().setFluxRequired("h");

View File

@ -1 +1 @@
loopControl iters(runTime, aMesh.solutionDict(), "solution");
loopControl iters(runTime, aMesh.solution().solutionDict(), "solution");

View File

@ -119,7 +119,7 @@ if (p_rgh.needReference())
);
}
mesh.setFluxRequired(p_rgh.name());
mesh.schemes().setFluxRequired(p_rgh.name());
#include "createMRF.H"
#include "createIncompressibleRadiationModel.H"

View File

@ -119,7 +119,7 @@ if (p_rgh.needReference())
);
}
mesh.setFluxRequired(p_rgh.name());
mesh.schemes().setFluxRequired(p_rgh.name());
#include "createMRF.H"
#include "createIncompressibleRadiationModel.H"

View File

@ -74,7 +74,7 @@ volScalarField p_rgh
// Force p_rgh to be consistent with p
p_rgh = p - rho*gh;
mesh.setFluxRequired(p_rgh.name());
mesh.schemes().setFluxRequired(p_rgh.name());
label pRefCell = 0;
scalar pRefValue = 0.0;

View File

@ -56,7 +56,7 @@ if (mesh.changing())
pcorrTypes
);
mesh.setFluxRequired(pcorr.name());
mesh.schemes().setFluxRequired(pcorr.name());
{
dimensionedScalar rAUf("rAUf", dimTime, 1.0);

View File

@ -71,7 +71,7 @@ volScalarField p_rgh
// Force p_rgh to be consistent with p
p_rgh = p - rho*gh;
mesh.setFluxRequired(p_rgh.name());
mesh.schemes().setFluxRequired(p_rgh.name());
label pRefCell = 0;
scalar pRefValue = 0.0;

View File

@ -81,7 +81,7 @@ setRefCell
pRefValue
);
mesh.setFluxRequired(p_rgh.name());
mesh.schemes().setFluxRequired(p_rgh.name());
dimensionedScalar initialMass = fvc::domainIntegrate(rho);
dimensionedScalar totalVolume = sum(mesh.V());

View File

@ -174,7 +174,7 @@ forAll(fluidRegions, i)
// Force p_rgh to be consistent with p
p_rghFluid[i] = thermoFluid[i].p() - rhoFluid[i]*ghFluid[i];
fluidRegions[i].setFluxRequired(p_rghFluid[i].name());
fluidRegions[i].schemes().setFluxRequired(p_rghFluid[i].name());
radiation.set
(
@ -185,7 +185,7 @@ forAll(fluidRegions, i)
initialMassFluid[i] = fvc::domainIntegrate(rhoFluid[i]).value();
const dictionary& simpleDict =
fluidRegions[i].solutionDict().subDict("SIMPLE");
fluidRegions[i].solution().solutionDict("SIMPLE");
setRefCell
(

View File

@ -1,4 +1,5 @@
const dictionary& simple = fluidRegions[i].solutionDict().subDict("SIMPLE");
const dictionary& simple =
fluidRegions[i].solution().solutionDict("SIMPLE");
const int nNonOrthCorr =
simple.getOrDefault<int>("nNonOrthogonalCorrectors", 0);

View File

@ -1,4 +1,5 @@
const dictionary& simple = mesh.solutionDict().subDict("SIMPLE");
const dictionary& simple =
mesh.solution().solutionDict("SIMPLE");
const int nNonOrthCorr =
simple.getOrDefault<int>("nNonOrthogonalCorrectors", 0);

View File

@ -196,6 +196,18 @@ public:
const fvPatchFieldMapper&
);
//- Construct and return a clone
virtual tmp<fvPatchScalarField> clone() const
{
return tmp<fvPatchScalarField>
(
new turbulentTemperatureTwoPhaseRadCoupledMixedFvPatchScalarField
(
*this
)
);
}
//- Construct as copy setting internal field reference
turbulentTemperatureTwoPhaseRadCoupledMixedFvPatchScalarField
(
@ -203,19 +215,20 @@ public:
const DimensionedField<scalar, volMesh>&
);
//- Return a clone
virtual tmp<fvPatchField<scalar>> clone() const
{
return fvPatchField<scalar>::Clone(*this);
}
//- Clone with an internal field reference
virtual tmp<fvPatchField<scalar>> clone
//- Construct and return a clone setting internal field reference
virtual tmp<fvPatchScalarField> clone
(
const DimensionedField<scalar, volMesh>& iF
) const
{
return fvPatchField<scalar>::Clone(*this, iF);
return tmp<fvPatchScalarField>
(
new turbulentTemperatureTwoPhaseRadCoupledMixedFvPatchScalarField
(
*this,
iF
)
);
}

View File

@ -278,14 +278,14 @@ forAll(fluidRegions, i)
phaseSystemFluid[i].phase1().thermo().p()
- phaseSystemFluid[i].phase1().thermo().rho()*ghFluid[i];
fluidRegions[i].setFluxRequired(p_rghFluid[i].name());
fluidRegions[i].schemes().setFluxRequired(p_rghFluid[i].name());
Info<< " Correcting initialMassFluid\n" << endl;
initialMassFluid[i] =
fvc::domainIntegrate(phaseSystemFluid[i].rho()).value();
const dictionary& pimpleDict =
fluidRegions[i].solutionDict().subDict("PIMPLE");
fluidRegions[i].solution().solutionDict("PIMPLE");
pimpleDict.readIfPresent("frozenFlow", frozenFlowFluid[i]);

View File

@ -1,4 +1,5 @@
const dictionary& pimpleDict = mesh.solutionDict().subDict("PIMPLE");
const dictionary& pimpleDict =
mesh.solution().solutionDict("PIMPLE");
Switch faceMomentum
(

View File

@ -9,7 +9,7 @@ if (Y.size())
mesh,
fields,
phi,
mesh.divScheme("div(phi,Yi_h)")
mesh.schemes().div("div(phi,Yi_h)")
)
);
}

View File

@ -189,7 +189,7 @@ forAll(fluidRegions, i)
// Force p_rgh to be consistent with p
p_rghFluid[i] = thermoFluid[i].p() - rhoFluid[i]*ghFluid[i];
fluidRegions[i].setFluxRequired(p_rghFluid[i].name());
fluidRegions[i].schemes().setFluxRequired(p_rghFluid[i].name());
Info<< " Adding to radiationFluid\n" << endl;
radiation.set
@ -260,7 +260,8 @@ forAll(fluidRegions, i)
);
const dictionary& pimpleDict =
fluidRegions[i].solutionDict().subDict("PIMPLE");
fluidRegions[i].solution().solutionDict("PIMPLE");
pimpleDict.readIfPresent("frozenFlow", frozenFlowFluid[i]);
rhoMaxFluid.set

View File

@ -1,4 +1,5 @@
const dictionary& pimple = mesh.solutionDict().subDict("PIMPLE");
const dictionary& pimple =
mesh.solution().solutionDict("PIMPLE");
const int nCorr =
pimple.getOrDefault<int>("nCorrectors", 1);

View File

@ -1,4 +1,5 @@
const dictionary& pimple = mesh.solutionDict().subDict("PIMPLE");
const dictionary& pimple =
mesh.solution().solutionDict("PIMPLE");
int nNonOrthCorr =
pimple.getOrDefault<int>("nNonOrthogonalCorrectors", 0);

View File

@ -92,21 +92,19 @@ else
// Consider mesh flux to correct for mesh deformation
bool meshFluxCorr(false);
if (mesh.solutionDict().found("SIMPLE"))
{
meshFluxCorr =
mesh.solutionDict().subDict("SIMPLE").getOrDefault<bool>
(
"meshFluxCorrection", false
);
}
else if (mesh.solutionDict().found("PIMPLE"))
{
meshFluxCorr =
mesh.solutionDict().subDict("PIMPLE").getOrDefault<bool>
(
"meshFluxCorrection", false
);
const dictionary& solutionDict = mesh.solution().solutionDict();
const dictionary* subdict = nullptr;
if
(
((subdict = solutionDict.findDict("SIMPLE")) != nullptr)
|| ((subdict = solutionDict.findDict("PIMPLE")) != nullptr)
)
{
meshFluxCorr = subdict->getOrDefault("meshFluxCorrection", false);
}
}
#include "createRadiationModel.H"

View File

@ -68,7 +68,7 @@ int main(int argc, char *argv[])
Info<< "\nEvolving thermodynamics\n" << endl;
if (mesh.solutionDict().found("SIMPLE"))
if (mesh.solution().solutionDict().found("SIMPLE"))
{
simpleControl simple(mesh);

View File

@ -65,7 +65,7 @@ int main(int argc, char *argv[])
Info<< "\nEvolving thermodynamics\n" << endl;
if (mesh.solutionDict().found("SIMPLE"))
if (mesh.solution().solutionDict().found("SIMPLE"))
{
simpleControl simple(mesh);

View File

@ -43,8 +43,6 @@ Description
int main(int argc, char *argv[])
{
#include "postProcess.H"
#include "setRootCase.H"
#include "createTime.H"
#include "createMesh.H"
@ -66,13 +64,13 @@ int main(int argc, char *argv[])
{
// Solve all primal equations
om.solvePrimalEquations();
// Clear sensitivities
om.clearSensitivities();
// Solve all adjoint equations
om.solveAdjointEquations();
}
// Update primal-based quantities of the adjoint solvers
om.updatePrimalBasedQuantities();
// Solve all adjoint equations
om.solveAdjointEquations();
}
Info<< "End\n" << endl;

View File

@ -85,6 +85,15 @@ public:
const fvPatchFieldMapper&
);
//- Construct and return a clone
virtual tmp<fvPatchScalarField> clone() const
{
return tmp<fvPatchScalarField>
(
new adjointOutletPressureFvPatchScalarField(*this)
);
}
//- Construct as copy setting internal field reference
adjointOutletPressureFvPatchScalarField
(
@ -92,19 +101,16 @@ public:
const DimensionedField<scalar, volMesh>&
);
//- Return a clone
virtual tmp<fvPatchField<scalar>> clone() const
{
return fvPatchField<scalar>::Clone(*this);
}
//- Clone with an internal field reference
virtual tmp<fvPatchField<scalar>> clone
//- Construct and return a clone setting internal field reference
virtual tmp<fvPatchScalarField> clone
(
const DimensionedField<scalar, volMesh>& iF
) const
{
return fvPatchField<scalar>::Clone(*this, iF);
return tmp<fvPatchScalarField>
(
new adjointOutletPressureFvPatchScalarField(*this, iF)
);
}

View File

@ -85,6 +85,15 @@ public:
const fvPatchFieldMapper&
);
//- Construct and return a clone
virtual tmp<fvPatchVectorField> clone() const
{
return tmp<fvPatchVectorField>
(
new adjointOutletVelocityFvPatchVectorField(*this)
);
}
//- Construct as copy setting internal field reference
adjointOutletVelocityFvPatchVectorField
(
@ -92,19 +101,16 @@ public:
const DimensionedField<vector, volMesh>&
);
//- Return a clone
virtual tmp<fvPatchField<vector>> clone() const
{
return fvPatchField<vector>::Clone(*this);
}
//- Clone with an internal field reference
virtual tmp<fvPatchField<vector>> clone
//- Construct and return a clone setting internal field reference
virtual tmp<fvPatchVectorField> clone
(
const DimensionedField<vector, volMesh>& iF
) const
{
return fvPatchField<vector>::Clone(*this, iF);
return tmp<fvPatchVectorField>
(
new adjointOutletVelocityFvPatchVectorField(*this, iF)
);
}

View File

@ -106,7 +106,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);

View File

@ -32,7 +32,7 @@ volVectorField U
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, simple.dict(), pRefCell, pRefValue);
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
Info<< "Reading field pa\n" << endl;
@ -75,7 +75,7 @@ setRefCell
paRefCell,
paRefValue
);
mesh.setFluxRequired(pa.name());
mesh.schemes().setFluxRequired(pa.name());
singlePhaseTransportModel laminarTransport(U, phi);

View File

@ -54,5 +54,11 @@ 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().solutionDict("PISO"),
pRefCell,
pRefValue
);
mesh.schemes().setFluxRequired(p.name());

View File

@ -36,5 +36,11 @@ singlePhaseTransportModel fluid(U, phi);
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, mesh.solutionDict().subDict("PISO"), pRefCell, pRefValue);
mesh.setFluxRequired(p.name());
setRefCell
(
p,
mesh.solution().solutionDict("PISO"),
pRefCell,
pRefValue
);
mesh.schemes().setFluxRequired(p.name());

View File

@ -43,7 +43,7 @@ surfaceScalarField phi
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, pimple.dict(), pRefCell, pRefValue);
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
Info<< "Creating SRF model\n" << endl;
autoPtr<SRF::SRFModel> SRF

View File

@ -34,7 +34,7 @@ volVectorField U
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, pimple.dict(), pRefCell, pRefValue);
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
singlePhaseTransportModel laminarTransport(U, phi);

View File

@ -32,7 +32,7 @@ volVectorField U
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, pimple.dict(), pRefCell, pRefValue);
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
//- Overset specific

View File

@ -32,7 +32,7 @@ volVectorField U
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, piso.dict(), pRefCell, pRefValue);
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
singlePhaseTransportModel laminarTransport(U, phi);

View File

@ -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());

View File

@ -43,7 +43,7 @@ surfaceScalarField phi
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, simple.dict(), pRefCell, pRefValue);
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
Info<< "Creating SRF model\n" << endl;
autoPtr<SRF::SRFModel> SRF(SRF::SRFModel::New(Urel));

View File

@ -32,7 +32,7 @@ volVectorField U
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, simple.dict(), pRefCell, pRefValue);
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
singlePhaseTransportModel laminarTransport(U, phi);

View File

@ -32,7 +32,7 @@ volVectorField U
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, simple.dict(), pRefCell, pRefValue);
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
singlePhaseTransportModel laminarTransport(U, phi);

View File

@ -62,7 +62,7 @@ surfaceScalarField phic
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, pimple.dict(), pRefCell, pRefValue);
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
Info<< "Creating turbulence model\n" << endl;

View File

@ -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)")
)
);

View File

@ -91,7 +91,7 @@ volVectorField U
#include "compressibleCreatePhi.H"
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::turbulenceModel> turbulence

View File

@ -75,7 +75,7 @@ autoPtr<incompressible::turbulenceModel> turbulence
label pRefCell = 0;
scalar pRefValue = 0.0;
setRefCell(p, pimple.dict(), pRefCell, pRefValue);
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
#include "createMRF.H"
#include "createClouds.H"

View File

@ -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)")
)
);

View File

@ -96,7 +96,7 @@ p_rgh = p - rho*gh;
pressureControl pressureControl(p, rho, pimple.dict(), false);
mesh.setFluxRequired(p_rgh.name());
mesh.schemes().setFluxRequired(p_rgh.name());
Info<< "Creating multi-variate interpolation scheme\n" << endl;
multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;

View File

@ -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)")
)
);

View File

@ -50,7 +50,7 @@ volVectorField U
#include "compressibleCreatePhi.H"
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
const dimensionedScalar rhoMax("rhoMax", dimDensity, GREAT, simple.dict());
const dimensionedScalar rhoMin("rhoMin", dimDensity, Zero, simple.dict());

View File

@ -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)")
)
);

View File

@ -51,7 +51,7 @@ volVectorField U
#include "compressibleCreatePhi.H"
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
const dimensionedScalar rhoMax("rhoMax", dimDensity, GREAT, simple.dict());
const dimensionedScalar rhoMin("rhoMin", dimDensity, Zero, simple.dict());

View File

@ -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)")
)
);

View File

@ -50,7 +50,7 @@ volVectorField U
#include "compressibleCreatePhi.H"
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
const dimensionedScalar rhoMax("rhoMax", dimDensity, GREAT, pimple.dict());
const dimensionedScalar rhoMin("rhoMin", dimDensity, Zero, pimple.dict());

View File

@ -10,7 +10,7 @@
fv::ddtScheme<scalar>::New
(
mesh,
mesh.ddtScheme("ddt(alpha)")
mesh.schemes().ddt("ddt(alpha)")
)
);
const fv::ddtScheme<scalar>& ddtAlpha = tddtAlpha();
@ -237,7 +237,7 @@
if
(
word(mesh.ddtScheme("ddt(rho,U)"))
word(mesh.schemes().ddt("ddt(rho,U)"))
== fv::EulerDdtScheme<vector>::typeName
)
{

View File

@ -105,7 +105,7 @@ setRefCell
(
p,
p_rgh,
mesh.solutionDict().subDict("PIMPLE"),
mesh.solution().solutionDict("PIMPLE"),
pRefCell,
pRefValue
);
@ -121,8 +121,8 @@ if (p_rgh.needReference())
p_rgh = p - rho*gh;
}
mesh.setFluxRequired(p_rgh.name());
mesh.setFluxRequired(alpha1.name());
mesh.schemes().setFluxRequired(p_rgh.name());
mesh.schemes().setFluxRequired(alpha1.name());
// alphac must be constructed before the cloud
// so that the drag-models can find it

View File

@ -10,7 +10,7 @@
fv::ddtScheme<scalar>::New
(
mesh,
mesh.ddtScheme("ddt(alpha)")
mesh.schemes().ddt("ddt(alpha)")
)
);
const fv::ddtScheme<scalar>& ddtAlpha = tddtAlpha();
@ -239,9 +239,9 @@
if
(
word(mesh.ddtScheme("ddt(rho,U)"))
word(mesh.schemes().ddt("ddt(rho,U)"))
== fv::EulerDdtScheme<vector>::typeName
|| word(mesh.ddtScheme("ddt(rho,U)"))
|| word(mesh.schemes().ddt("ddt(rho,U)"))
== fv::localEulerDdtScheme<vector>::typeName
)
{

View File

@ -19,7 +19,7 @@ correctUphiBCs(U, phi);
surfaceScalarField rhof(fvc::interpolate(rho, "div(phi,rho)"));
dimensionedScalar rAUf("rAUf", dimTime, 1.0);
mesh.setFluxRequired(pcorr.name());
mesh.schemes().setFluxRequired(pcorr.name());
while (pimple.correctNonOrthogonal())
{

View File

@ -43,7 +43,7 @@ volVectorField U
#include "createPhi.H"
mesh.setFluxRequired(p.name());
mesh.schemes().setFluxRequired(p.name());
// Mass flux (corrected by rhoEqn.H)
surfaceScalarField rhoPhi
@ -86,8 +86,8 @@ rho == max
rhoMin
);
mesh.setFluxRequired(p.name());
mesh.setFluxRequired(rho.name());
mesh.schemes().setFluxRequired(p.name());
mesh.schemes().setFluxRequired(rho.name());
// Create incompressible turbulence model
autoPtr<incompressible::turbulenceModel> turbulence

View File

@ -160,8 +160,7 @@ void VoFPatchTransfer::correct
const volScalarField& heVoF = thermo.thermo1().he();
const volScalarField& TVoF = thermo.thermo1().T();
const volScalarField CpVoF(thermo.thermo1().Cp());
const tmp<volScalarField> trhoVoF(thermo.thermo1().rho());
const volScalarField& rhoVoF = trhoVoF();
const volScalarField& rhoVoF = thermo.thermo1().rho()();
const volScalarField& alphaVoF = thermo.alpha1();
forAll(patchIDs_, pidi)

View File

@ -1,3 +1,3 @@
const dictionary& alphaControls = mesh.solverDict(alpha1.name());
const dictionary& alphaControls = mesh.solution().solverDict(alpha1.name());
label nAlphaSubCycles(alphaControls.get<label>("nAlphaSubCycles"));

View File

@ -63,8 +63,8 @@ dimensionedScalar pMin
mixture
);
mesh.setFluxRequired(p_rgh.name());
mesh.setFluxRequired(alpha1.name());
mesh.schemes().setFluxRequired(p_rgh.name());
mesh.schemes().setFluxRequired(alpha1.name());
#include "readGravitationalAcceleration.H"

View File

@ -62,8 +62,8 @@ dimensionedScalar pMin
mixture
);
mesh.setFluxRequired(p_rgh.name());
mesh.setFluxRequired(alpha1.name());
mesh.schemes().setFluxRequired(p_rgh.name());
mesh.schemes().setFluxRequired(alpha1.name());
#include "readGravitationalAcceleration.H"

View File

@ -62,8 +62,8 @@ dimensionedScalar pMin
mixture
);
mesh.setFluxRequired(p_rgh.name());
mesh.setFluxRequired(alpha1.name());
mesh.schemes().setFluxRequired(p_rgh.name());
mesh.schemes().setFluxRequired(alpha1.name());
#include "readGravitationalAcceleration.H"

View File

@ -135,14 +135,14 @@ public:
virtual volScalarField& he()
{
NotImplemented;
return const_cast<volScalarField&>(volScalarField::null());
return thermo1_->he();
}
//- Enthalpy/Internal energy [J/kg]
virtual const volScalarField& he() const
{
NotImplemented;
return volScalarField::null();
return thermo1_->he();
}
//- Enthalpy/Internal energy
@ -213,7 +213,7 @@ public:
) const
{
NotImplemented;
return nullptr;
return tmp<scalarField>::New(p);
}
//- Heat capacity at constant volume [J/kg/K]
@ -236,7 +236,7 @@ public:
) const
{
NotImplemented;
return nullptr;
return tmp<scalarField>::New(p);
}
//- Gamma = Cp/Cv []

View File

@ -45,7 +45,7 @@ volScalarField rho
dimensionedScalar pMin("pMin", dimPressure, mixture);
mesh.setFluxRequired(p_rgh.name());
mesh.schemes().setFluxRequired(p_rgh.name());
#include "readGravitationalAcceleration.H"

View File

@ -164,6 +164,15 @@ public:
const fvPatchFieldMapper&
);
//- Construct and return a clone
virtual tmp<fvPatchScalarField> clone() const
{
return tmp<fvPatchScalarField>
(
new alphaContactAngleFvPatchScalarField(*this)
);
}
//- Construct as copy setting internal field reference
alphaContactAngleFvPatchScalarField
(
@ -171,19 +180,16 @@ public:
const DimensionedField<scalar, volMesh>&
);
//- Return a clone
virtual tmp<fvPatchField<scalar>> clone() const
{
return fvPatchField<scalar>::Clone(*this);
}
//- Clone with an internal field reference
virtual tmp<fvPatchField<scalar>> clone
//- Construct and return a clone setting internal field reference
virtual tmp<fvPatchScalarField> clone
(
const DimensionedField<scalar, volMesh>& iF
) const
{
return fvPatchField<scalar>::Clone(*this, iF);
return tmp<fvPatchScalarField>
(
new alphaContactAngleFvPatchScalarField(*this, iF)
);
}

View File

@ -804,7 +804,7 @@ void Foam::multiphaseMixtureThermo::solve()
{
const Time& runTime = mesh_.time();
const dictionary& alphaControls = mesh_.solverDict("alpha");
const dictionary& alphaControls = mesh_.solution().solverDict("alpha");
label nAlphaSubCycles(alphaControls.get<label>("nAlphaSubCycles"));
scalar cAlpha(alphaControls.get<scalar>("cAlpha"));

Some files were not shown because too many files have changed in this diff Show More