Compare commits

..

1 Commits

Author SHA1 Message Date
775d0b277b ENH: improve OpenFOAM I/O for std::vector container
- input: added support (similar to DynamicList)
- output: redirect through UList output, which enables binary etc

- these changes enable support for broadcast and other parallel IO
  for std::vector

ENH: support SubList of std::vector (entire length)

- allows a 'glue' layer for re-casting std::vector to UList etc
2023-09-27 20:52:49 +02:00
13467 changed files with 68824 additions and 265633 deletions

View File

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

10
.gitmodules vendored
View File

@ -1,8 +1,8 @@
[submodule "cfmesh"] [submodule "cfmesh"]
path = plugins/cfmesh path = modules/cfmesh
url = https://develop.openfoam.com/Community/integration-cfmesh.git url = https://develop.openfoam.com/Community/integration-cfmesh.git
[submodule "avalanche"] [submodule "avalanche"]
path = plugins/avalanche path = modules/avalanche
url = https://develop.openfoam.com/Community/avalanche.git url = https://develop.openfoam.com/Community/avalanche.git
[submodule "adios"] [submodule "adios"]
path = modules/adios path = modules/adios
@ -17,9 +17,3 @@
[submodule "external-solver"] [submodule "external-solver"]
path = modules/external-solver path = modules/external-solver
url = https://develop.openfoam.com/Modules/external-solver.git url = https://develop.openfoam.com/Modules/external-solver.git
[submodule "turbulence-community"]
path = plugins/turbulence-community
url = https://gitlab.com/openfoam/community/tc-turbulence/turbulence-community.git
[submodule "plugins/data-community"]
path = plugins/data-community
url = https://gitlab.com/openfoam/community/sig-data-modelling/data-community.git

View File

@ -68,34 +68,19 @@ src/Allwmake $targetType $*
# OpenFOAM applications # OpenFOAM applications
applications/Allwmake $targetType $* applications/Allwmake $targetType $*
#------------------------------------------------------------------------------
# Additional components
# Additional components/modules
case "$FOAM_MODULE_PREFIX" in case "$FOAM_MODULE_PREFIX" in
(false | none) (false | none)
echo ======================================== echo ========================================
echo "OpenFOAM modules disabled (prefix=${FOAM_MODULE_PREFIX})" echo "OpenFOAM modules disabled (prefix=${FOAM_MODULE_PREFIX})"
echo "Can be built separately:"
echo
echo " ./Allwmake-modules -prefix=..."
echo
echo ========================================
echo echo
;; ;;
(*) (*)
# Use wmake -all instead of Allwmake to allow for overrides # Use wmake -all instead of Allwmake to allow for overrides
( cd "$WM_PROJECT_DIR/modules" 2>/dev/null && wmake -all ) ( cd "$WM_PROJECT_DIR/modules" 2>/dev/null && wmake -all )
echo ========================================
echo "The optional plugins can be built separately:"
echo
echo " ./Allwmake-plugins -prefix=..."
echo
echo ========================================
echo
esac esac
#------------------------------------------------------------------------------
# Count files in given directory. Ignore "Test-*" binaries. # Count files in given directory. Ignore "Test-*" binaries.
_foamCountDirEntries() _foamCountDirEntries()
{ {

View File

@ -1,39 +0,0 @@
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
set -- -no-recursion "$@" # Parse arguments only
# Run from OPENFOAM top-level directory only
wmake -check-dir "$WM_PROJECT_DIR" 2>/dev/null || {
echo "Error (${0##*/}) : not located in \$WM_PROJECT_DIR"
echo " Check your OpenFOAM environment and installation"
exit 1
}
if [ -f "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments ]
then . "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments || \
echo "Argument parse error"
else
echo "Error (${0##*/}) : WM_PROJECT_DIR appears to be incorrect"
echo " Check your OpenFOAM environment and installation"
exit 1
fi
#------------------------------------------------------------------------------
# Additional components
case "$FOAM_MODULE_PREFIX" in
(false | none)
echo ========================================
echo "OpenFOAM modules disabled (prefix=${FOAM_MODULE_PREFIX})"
echo "Can be built separately:"
echo
echo " ./Allwmake-modules -prefix=..."
echo
echo ========================================
echo
;;
(*)
# Use wmake -all instead of Allwmake to allow for overrides
( cd "$WM_PROJECT_DIR/modules" 2>/dev/null && wmake -all )
esac
#------------------------------------------------------------------------------

View File

@ -1,39 +0,0 @@
#!/bin/sh
cd "${0%/*}" || exit # Run from this directory
set -- -no-recursion "$@" # Parse arguments only
# Run from OPENFOAM top-level directory only
wmake -check-dir "$WM_PROJECT_DIR" 2>/dev/null || {
echo "Error (${0##*/}) : not located in \$WM_PROJECT_DIR"
echo " Check your OpenFOAM environment and installation"
exit 1
}
if [ -f "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments ]
then . "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments || \
echo "Argument parse error"
else
echo "Error (${0##*/}) : WM_PROJECT_DIR appears to be incorrect"
echo " Check your OpenFOAM environment and installation"
exit 1
fi
#------------------------------------------------------------------------------
# Additional components
case "$FOAM_MODULE_PREFIX" in
(false | none)
echo ========================================
echo "OpenFOAM plugins disabled (prefix=${FOAM_MODULE_PREFIX})"
echo "Can be built separately:"
echo
echo " ./Allwmake-plugins -prefix=..."
echo
echo ========================================
echo
;;
(*)
# Use wmake -all instead of Allwmake to allow for overrides
( cd "$WM_PROJECT_DIR/plugins" 2>/dev/null && wmake -all )
esac
#------------------------------------------------------------------------------

View File

@ -9,7 +9,6 @@ It is likely incomplete...
- Yu Ankun - Yu Ankun
- Tetsuo Aoyagi - Tetsuo Aoyagi
- Akira Azami - Akira Azami
- Pete Bachant
- William Bainbridge - William Bainbridge
- Gabriel Barajas - Gabriel Barajas
- Kutalmis Bercin - Kutalmis Bercin
@ -27,7 +26,6 @@ It is likely incomplete...
- Bernhard Gschaider - Bernhard Gschaider
- Andrew Heather - Andrew Heather
- David Hill - David Hill
- Crist<73>bal Ib<49><62>ez
- Yoshiaki Inoue - Yoshiaki Inoue
- Mattijs Janssens - Mattijs Janssens
- Andrew Jackson - Andrew Jackson
@ -35,7 +33,6 @@ It is likely incomplete...
- Alexander Kabat vel Job - Alexander Kabat vel Job
- Thilo Knacke - Thilo Knacke
- Shannon Leakey - Shannon Leakey
- Sergey Lesnik
- Tommaso Lucchini - Tommaso Lucchini
- Graham Macpherson - Graham Macpherson
- Alexey Matveichev - Alexey Matveichev
@ -48,7 +45,6 @@ It is likely incomplete...
- Victor Olesen - Victor Olesen
- Evangelos Papoutsis-Kiachagias - Evangelos Papoutsis-Kiachagias
- Juho Peltola - Juho Peltola
- Josep Pocurull
- Johan Roenby - Johan Roenby
- Henrik Rusche - Henrik Rusche
- Bruno Santos - Bruno Santos
@ -63,7 +59,6 @@ It is likely incomplete...
- Vuko Vukcevic - Vuko Vukcevic
- Yi Wang - Yi Wang
- Norbert Weber - Norbert Weber
- Gregor Weiss
- Volker Weissmann - Volker Weissmann
- Henry Weller - Henry Weller
- Niklas Wikstrom - Niklas Wikstrom

View File

@ -1,2 +1,2 @@
api=2412 api=2307
patch=0 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 If OpenFOAM has already been compiled on your system, simply source
the appropriate `etc/bashrc` or `etc/cshrc` file and get started. the appropriate `etc/bashrc` or `etc/cshrc` file and get started.
For example, for the OpenFOAM-v2412 version: For example, for the OpenFOAM-v2306 version:
``` ```
source /installation/path/OpenFOAM-v2412/etc/bashrc source /installation/path/OpenFOAM-v2306/etc/bashrc
``` ```
## Compiling OpenFOAM ## Compiling OpenFOAM
@ -127,8 +127,8 @@ These 3rd-party sources are normally located in a directory parallel
to the OpenFOAM directory. For example, to the OpenFOAM directory. For example,
``` ```
/path/parent /path/parent
|-- OpenFOAM-v2412 |-- OpenFOAM-v2306
\-- ThirdParty-v2412 \-- ThirdParty-v2306
``` ```
There are, however, many cases where this simple convention is inadequate: 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) operating system or cluster installation provides it)
* When we have changed the OpenFOAM directory name to some arbitrary * When we have changed the OpenFOAM directory name to some arbitrary
directory name, e.g. openfoam-sandbox2412, etc.. directory name, e.g. openfoam-sandbox2306, etc..
* When we would like any additional 3rd party software to be located * When we would like any additional 3rd party software to be located
inside of the OpenFOAM directory to ensure that the installation is 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 2. PREFIX/ThirdParty-VERSION
* this corresponds to the traditional approach * this corresponds to the traditional approach
3. PREFIX/ThirdParty-vAPI 3. PREFIX/ThirdParty-vAPI
* allows for an updated value of VERSION, *eg*, `v2412-myCustom`, * allows for an updated value of VERSION, *eg*, `v2306-myCustom`,
without requiring a renamed ThirdParty. The API value would still without requiring a renamed ThirdParty. The API value would still
be `2412` and the original `ThirdParty-v2412/` would be found. be `2306` and the original `ThirdParty-v2306/` would be found.
4. PREFIX/ThirdParty-API 4. PREFIX/ThirdParty-API
* same as the previous example, but using an unadorned API value. * same as the previous example, but using an unadorned API value.
5. PREFIX/ThirdParty-common 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) - [Governance](http://www.openfoam.com/governance/), [Governance Projects](https://www.openfoam.com/governance/projects)
- [Contacting OpenCFD](http://www.openfoam.com/contact/) - [Contacting OpenCFD](http://www.openfoam.com/contact/)
Copyright 2016-2024 OpenCFD Ltd Copyright 2016-2022 OpenCFD Ltd

View File

@ -118,7 +118,7 @@ int main(int argc, char *argv[])
fvm::laplacian(rAUf, p) == fvc::div(phiHbyA) fvm::laplacian(rAUf, p) == fvc::div(phiHbyA)
); );
pEqn.solve(p.select(piso.finalInnerIter())); pEqn.solve(mesh.solver(p.select(piso.finalInnerIter())));
phi = phiHbyA - pEqn.flux(); phi = phiHbyA - pEqn.flux();

View File

@ -6,7 +6,6 @@
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2023 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -94,14 +93,24 @@ Foam::PDRDragModels::basic::~basic()
Foam::tmp<Foam::volSymmTensorField> Foam::PDRDragModels::basic::Dcu() const Foam::tmp<Foam::volSymmTensorField> Foam::PDRDragModels::basic::Dcu() const
{ {
auto tDragDcu = volSymmTensorField::New tmp<volSymmTensorField> tDragDcu
( (
"tDragDcu", new volSymmTensorField
IOobject::NO_REGISTER, (
U_.mesh(), IOobject
dimensionedSymmTensor(dimMass/dimTime/dimVolume, Zero) (
"tDragDcu",
U_.mesh().time().constant(),
U_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
U_.mesh(),
dimensionedSymmTensor(dimMass/dimTime/dimVolume, Zero)
)
); );
auto& DragDcu = tDragDcu.ref();
volSymmTensorField& DragDcu = tDragDcu.ref();
if (on_) if (on_)
{ {
@ -118,14 +127,24 @@ Foam::tmp<Foam::volSymmTensorField> Foam::PDRDragModels::basic::Dcu() const
Foam::tmp<Foam::volScalarField> Foam::PDRDragModels::basic::Gk() const Foam::tmp<Foam::volScalarField> Foam::PDRDragModels::basic::Gk() const
{ {
auto tGk = volScalarField::New tmp<volScalarField> tGk
( (
"tGk", new volScalarField
IOobject::NO_REGISTER, (
U_.mesh(), IOobject
dimensionedScalar(dimMass/dimLength/pow3(dimTime), Zero) (
"tGk",
U_.mesh().time().constant(),
U_.mesh(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
U_.mesh(),
dimensionedScalar(dimMass/dimLength/pow3(dimTime), Zero)
)
); );
auto& Gk = tGk.ref();
volScalarField& Gk = tGk.ref();
if (on_) if (on_)
{ {

View File

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

View File

@ -6,7 +6,6 @@
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2023 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -76,10 +75,8 @@ Foam::XiEqModels::SCOPEXiEq::~SCOPEXiEq()
Foam::tmp<Foam::volScalarField> Foam::XiEqModels::SCOPEXiEq::XiEq() const Foam::tmp<Foam::volScalarField> Foam::XiEqModels::SCOPEXiEq::XiEq() const
{ {
const tmp<volScalarField> tk(turbulence_.k()); const volScalarField& k = turbulence_.k();
const volScalarField& k = tk(); const volScalarField& epsilon = turbulence_.epsilon();
const tmp<volScalarField> tepsilon(turbulence_.epsilon());
const volScalarField& epsilon = tepsilon();
volScalarField up(sqrt((2.0/3.0)*k)); volScalarField up(sqrt((2.0/3.0)*k));
if (subGridSchelkin_) if (subGridSchelkin_)
@ -94,14 +91,23 @@ Foam::tmp<Foam::volScalarField> Foam::XiEqModels::SCOPEXiEq::XiEq() const
volScalarField K(0.157*upBySu/sqrt(Rl)); volScalarField K(0.157*upBySu/sqrt(Rl));
volScalarField Ma(MaModel.Ma()); volScalarField Ma(MaModel.Ma());
auto tXiEq = volScalarField::New tmp<volScalarField> tXiEq
( (
"XiEq", new volScalarField
IOobject::NO_REGISTER, (
epsilon.mesh(), IOobject
dimensionedScalar(dimless, Zero) (
"XiEq",
epsilon.time().timeName(),
epsilon.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
epsilon.mesh(),
dimensionedScalar(dimless, Zero)
)
); );
auto& xieq = tXiEq.ref(); volScalarField& xieq = tXiEq.ref();
forAll(xieq, celli) forAll(xieq, celli)
{ {

View File

@ -78,10 +78,11 @@ bool Foam::XiEqModel::read(const dictionary& XiEqProperties)
void Foam::XiEqModel::writeFields() const void Foam::XiEqModel::writeFields() const
{ {
//***HGW It is not clear why B is written here //***HGW It is not clear why B is written here
const auto* B = Su_.mesh().cfindObject<volSymmTensorField>("B"); if (Su_.mesh().foundObject<volSymmTensorField>("B"))
if (B)
{ {
B->write(); const volSymmTensorField& B =
Su_.mesh().lookupObject<volSymmTensorField>("B");
B.write();
} }
} }
@ -97,26 +98,39 @@ Foam::XiEqModel::calculateSchelkinEffect(const scalar uPrimeCoef) const
const volSymmTensorField& nsv = const volSymmTensorField& nsv =
mesh.lookupObject<volSymmTensorField>("nsv"); mesh.lookupObject<volSymmTensorField>("nsv");
auto tN = volScalarField::New tmp<volScalarField> tN
( (
"tN", new volScalarField
IOobject::NO_REGISTER, (
mesh, IOobject
dimensionedScalar(Nv.dimensions(), Zero) (
"tN",
mesh.time().timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE,
IOobject::NO_REGISTER
),
mesh,
dimensionedScalar(Nv.dimensions(), Zero)
)
); );
auto& N = tN.ref(); volScalarField& N = tN.ref();
N.primitiveFieldRef() = Nv.primitiveField()*pow(mesh.V(), 2.0/3.0); N.primitiveFieldRef() = Nv.primitiveField()*pow(mesh.V(), 2.0/3.0);
auto tns = volSymmTensorField::New volSymmTensorField ns
( (
"tns", IOobject
IOobject::NO_REGISTER, (
"tns",
mesh.time().timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh, mesh,
dimensionedSymmTensor(nsv.dimensions(), Zero) dimensionedSymmTensor(nsv.dimensions(), Zero)
); );
auto& ns = tns.ref();
ns.primitiveFieldRef() = nsv.primitiveField()*pow(mesh.V(), 2.0/3.0); ns.primitiveFieldRef() = nsv.primitiveField()*pow(mesh.V(), 2.0/3.0);
const volVectorField Uhat const volVectorField Uhat

View File

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

View File

@ -6,7 +6,6 @@
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2023 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -256,14 +255,24 @@ Foam::tmp<Foam::volScalarField> Foam::laminarFlameSpeedModels::SCOPE::Su0pTphi
scalar phi scalar phi
) const ) const
{ {
auto tSu0 = volScalarField::New tmp<volScalarField> tSu0
( (
"Su0", new volScalarField
IOobject::NO_REGISTER, (
p.mesh(), IOobject
dimensionedScalar(dimVelocity, Zero) (
"Su0",
p.time().timeName(),
p.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
p.mesh(),
dimensionedScalar(dimVelocity, Zero)
)
); );
auto& Su0 = tSu0.ref();
volScalarField& Su0 = tSu0.ref();
forAll(Su0, celli) forAll(Su0, celli)
{ {
@ -295,14 +304,24 @@ Foam::tmp<Foam::volScalarField> Foam::laminarFlameSpeedModels::SCOPE::Su0pTphi
const volScalarField& phi const volScalarField& phi
) const ) const
{ {
auto tSu0 = volScalarField::New tmp<volScalarField> tSu0
( (
"Su0", new volScalarField
IOobject::NO_REGISTER, (
p.mesh(), IOobject
dimensionedScalar(dimVelocity, Zero) (
"Su0",
p.time().timeName(),
p.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
p.mesh(),
dimensionedScalar(dimVelocity, Zero)
)
); );
auto& Su0 = tSu0.ref();
volScalarField& Su0 = tSu0.ref();
forAll(Su0, celli) forAll(Su0, celli)
{ {
@ -339,14 +358,24 @@ Foam::tmp<Foam::volScalarField> Foam::laminarFlameSpeedModels::SCOPE::Ma
const volScalarField& phi const volScalarField& phi
) const ) const
{ {
auto tMa = volScalarField::New tmp<volScalarField> tMa
( (
"Ma", new volScalarField
IOobject::NO_REGISTER, (
phi.mesh(), IOobject
dimensionedScalar(dimless, Zero) (
"Ma",
phi.time().timeName(),
phi.db(),
IOobject::NO_READ,
IOobject::NO_WRITE
),
phi.mesh(),
dimensionedScalar(dimless, Zero)
)
); );
auto& ma = tMa.ref();
volScalarField& ma = tMa.ref();
forAll(ma, celli) forAll(ma, celli)
{ {
@ -389,12 +418,21 @@ Foam::laminarFlameSpeedModels::SCOPE::Ma() const
{ {
const fvMesh& mesh = psiuReactionThermo_.p().mesh(); const fvMesh& mesh = psiuReactionThermo_.p().mesh();
return volScalarField::New return tmp<volScalarField>
( (
"Ma", new volScalarField
IOobject::NO_REGISTER, (
mesh, IOobject
dimensionedScalar("Ma", dimless, Ma(equivalenceRatio_)) (
"Ma",
mesh.time().timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh,
dimensionedScalar("Ma", dimless, Ma(equivalenceRatio_))
)
); );
} }
} }

View File

@ -27,7 +27,7 @@ if (pimple.transonic())
betav*fvOptions(psi, p, rho.name()) betav*fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {
@ -57,7 +57,7 @@ else
betav*fvOptions(psi, p, rho.name()) betav*fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -30,7 +30,7 @@ if (pimple.transonic())
fvOptions(psi, p, rho.name()) fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {
@ -66,7 +66,7 @@ else
fvOptions(psi, p, rho.name()) fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -35,7 +35,7 @@ if (pimple.transonic())
fvOptions(psi, p, rho.name()) fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {
@ -71,7 +71,7 @@ else
fvOptions(psi, p, rho.name()) fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -29,7 +29,7 @@ if (pimple.transonic())
fvOptions(psi, p, rho.name()) fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {
@ -64,7 +64,7 @@ else
fvOptions(psi, p, rho.name()) fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -6,7 +6,7 @@
solve solve
( (
fvm::ddt(rho, Yi) - chemistry.RR(specieI), fvm::ddt(rho, Yi) - chemistry.RR(specieI),
"Yi" mesh.solver("Yi")
); );
} }
} }

View File

@ -35,7 +35,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection
fvOptions.constrain(YiEqn); fvOptions.constrain(YiEqn);
YiEqn.solve("Yi"); YiEqn.solve(mesh.solver("Yi"));
fvOptions.correct(Yi); fvOptions.correct(Yi);

View File

@ -36,7 +36,7 @@ while (pimple.correctNonOrthogonal())
+ fvOptions(psi, p_rgh, rho.name()) + fvOptions(psi, p_rgh, rho.name())
); );
p_rghEqn.solve(p_rgh.select(pimple.finalInnerIter())); p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -10,8 +10,7 @@ if (pimple.dict().getOrDefault("hydrostaticInitialization", false))
"0", "0",
mesh, mesh,
IOobject::MUST_READ, IOobject::MUST_READ,
IOobject::NO_WRITE, IOobject::NO_WRITE
IOobject::REGISTER
), ),
mesh mesh
) )

View File

@ -21,11 +21,6 @@
+ fvOptions(rho, he) + fvOptions(rho, he)
); );
if (MRF.active())
{
EEqn += fvc::div(MRF.phi(), p);
}
EEqn.relax(); EEqn.relax();
fvOptions.constrain(EEqn); fvOptions.constrain(EEqn);

View File

@ -34,7 +34,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection
fvOptions.constrain(YiEqn); fvOptions.constrain(YiEqn);
YiEqn.solve("Yi"); YiEqn.solve(mesh.solver("Yi"));
fvOptions.correct(Yi); fvOptions.correct(Yi);

View File

@ -37,7 +37,7 @@ if (pimple.transonic())
fvOptions(psi, p, rho.name()) fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {
@ -72,7 +72,7 @@ else
fvOptions(psi, p, rho.name()) fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -49,7 +49,7 @@ if (pimple.transonic())
fvOptions(psi, p, rho.name()) fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {
@ -89,7 +89,7 @@ else
fvOptions(psi, p, rho.name()) fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -41,7 +41,7 @@ while (pimple.correctNonOrthogonal())
- fvm::laplacian(rhorAUf, p_rgh) - fvm::laplacian(rhorAUf, p_rgh)
); );
p_rghEqn.solve(p_rgh.select(pimple.finalInnerIter())); p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

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

View File

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

View File

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

View File

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

View File

@ -63,7 +63,7 @@
fvOptions(psi, p, rho.name()) fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
// Rhie & Chow interpolation (part 2) // Rhie & Chow interpolation (part 2)
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())

View File

@ -20,11 +20,6 @@
fvOptions(rho, he) fvOptions(rho, he)
); );
if (MRF.active())
{
EEqn += fvc::div(MRF.phi(), p);
}
EEqn.relax(); EEqn.relax();
fvOptions.constrain(EEqn); fvOptions.constrain(EEqn);

View File

@ -72,7 +72,7 @@ if (mesh.changing())
divrhoU() divrhoU()
); );
pcorrEqn.solve(pcorr.select(pimple.finalInnerIter())); pcorrEqn.solve(mesh.solver(pcorr.select(pimple.finalInnerIter())));
//Bypass virtual layer //Bypass virtual layer
//mesh.fvMesh::solve(pcorrEqn, d); //mesh.fvMesh::solve(pcorrEqn, d);

View File

@ -56,7 +56,7 @@ if (pimple.transonic())
// Relax the pressure equation to ensure diagonal-dominance // Relax the pressure equation to ensure diagonal-dominance
pEqn.relax(); pEqn.relax();
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {
@ -78,7 +78,7 @@ else
{ {
fvScalarMatrix pEqn(pDDtEqn - fvm::laplacian(rhorAUf, p)); fvScalarMatrix pEqn(pDDtEqn - fvm::laplacian(rhorAUf, p));
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -54,7 +54,7 @@ if (pimple.transonic())
// Relax the pressure equation to ensure diagonal-dominance // Relax the pressure equation to ensure diagonal-dominance
pEqn.relax(); pEqn.relax();
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {
@ -76,7 +76,7 @@ else
{ {
fvScalarMatrix pEqn(pDDtEqn - fvm::laplacian(rhorAUf, p)); fvScalarMatrix pEqn(pDDtEqn - fvm::laplacian(rhorAUf, p));
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -65,7 +65,7 @@ if (pimple.transonic())
// Relax the pressure equation to ensure diagonal-dominance // Relax the pressure equation to ensure diagonal-dominance
pEqn.relax(); pEqn.relax();
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {
@ -90,7 +90,7 @@ else
{ {
fvScalarMatrix pEqn(pDDtEqn - fvm::laplacian(rhorAtU, p)); fvScalarMatrix pEqn(pDDtEqn - fvm::laplacian(rhorAtU, p));
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -14,11 +14,6 @@
fvOptions(rho, he) fvOptions(rho, he)
); );
if (MRF.active())
{
EEqn += fvc::div(MRF.phi(), p);
}
EEqn.relax(); EEqn.relax();
fvOptions.constrain(EEqn); fvOptions.constrain(EEqn);

View File

@ -9,11 +9,6 @@
fvOptions(rho, e) fvOptions(rho, e)
); );
if (MRF.active())
{
EEqn += fvc::div(MRF.phi(), p);
}
EEqn.relax(); EEqn.relax();
fvOptions.constrain(EEqn); fvOptions.constrain(EEqn);

View File

@ -127,7 +127,7 @@ int main(int argc, char *argv[])
); );
pEqn.setReference(pRefCell, pRefValue); pEqn.setReference(pRefCell, pRefValue);
pEqn.solve(p.select(piso.finalInnerIter())); pEqn.solve(mesh.solver(p.select(piso.finalInnerIter())));
if (piso.finalNonOrthogonalIter()) if (piso.finalNonOrthogonalIter())
{ {
@ -167,7 +167,7 @@ int main(int argc, char *argv[])
fvm::laplacian(rABf, pB) == fvc::div(phiB) fvm::laplacian(rABf, pB) == fvc::div(phiB)
); );
pBEqn.solve(pB.select(bpiso.finalInnerIter())); pBEqn.solve(mesh.solver(pB.select(bpiso.finalInnerIter())));
if (bpiso.finalNonOrthogonalIter()) if (bpiso.finalNonOrthogonalIter())
{ {

View File

@ -5,7 +5,7 @@
( (
"h", "h",
runTime.timeName(), runTime.timeName(),
aMesh.thisDb(), mesh,
IOobject::MUST_READ, IOobject::MUST_READ,
IOobject::AUTO_WRITE IOobject::AUTO_WRITE
), ),
@ -20,7 +20,7 @@
( (
"Us", "Us",
runTime.timeName(), runTime.timeName(),
aMesh.thisDb(), mesh,
IOobject::MUST_READ, IOobject::MUST_READ,
IOobject::AUTO_WRITE IOobject::AUTO_WRITE
), ),
@ -34,7 +34,7 @@
( (
"phis", "phis",
runTime.timeName(), runTime.timeName(),
aMesh.thisDb(), mesh,
IOobject::READ_IF_PRESENT, IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE IOobject::AUTO_WRITE
), ),
@ -48,7 +48,7 @@
( (
"phi2s", "phi2s",
runTime.timeName(), runTime.timeName(),
aMesh.thisDb(), mesh,
IOobject::READ_IF_PRESENT, IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE IOobject::AUTO_WRITE
), ),
@ -67,7 +67,7 @@
( (
"Sm", "Sm",
runTime.timeName(), runTime.timeName(),
aMesh.thisDb(), mesh,
IOobject::NO_READ, IOobject::NO_READ,
IOobject::NO_WRITE IOobject::NO_WRITE
), ),
@ -82,7 +82,7 @@
( (
"Sd", "Sd",
runTime.timeName(), runTime.timeName(),
aMesh.thisDb(), mesh,
IOobject::NO_READ, IOobject::NO_READ,
IOobject::NO_WRITE IOobject::NO_WRITE
), ),
@ -96,7 +96,7 @@
( (
"Sg", "Sg",
runTime.timeName(), runTime.timeName(),
aMesh.thisDb(), mesh,
IOobject::NO_READ, IOobject::NO_READ,
IOobject::NO_WRITE IOobject::NO_WRITE
), ),
@ -112,7 +112,7 @@
( (
"ps", "ps",
runTime.timeName(), runTime.timeName(),
aMesh.thisDb(), mesh,
IOobject::NO_READ, IOobject::NO_READ,
IOobject::AUTO_WRITE IOobject::AUTO_WRITE
), ),
@ -134,7 +134,7 @@
( (
"manningField", "manningField",
runTime.timeName(), runTime.timeName(),
aMesh.thisDb(), mesh,
IOobject::MUST_READ, IOobject::MUST_READ,
IOobject::AUTO_WRITE IOobject::AUTO_WRITE
), ),
@ -147,7 +147,7 @@
( (
"frictionFactor", "frictionFactor",
runTime.timeName(), runTime.timeName(),
aMesh.thisDb(), mesh,
IOobject::NO_READ, IOobject::NO_READ,
IOobject::NO_WRITE IOobject::NO_WRITE
), ),

View File

@ -7,7 +7,7 @@ volVectorField U
( (
"U", "U",
runTime.timeName(), runTime.timeName(),
mesh.thisDb(), mesh,
IOobject::NO_READ, IOobject::NO_READ,
IOobject::AUTO_WRITE IOobject::AUTO_WRITE
), ),
@ -22,7 +22,7 @@ volScalarField H
( (
"H", "H",
runTime.timeName(), runTime.timeName(),
mesh.thisDb(), mesh,
IOobject::NO_READ, IOobject::NO_READ,
IOobject::AUTO_WRITE IOobject::AUTO_WRITE
), ),

View File

@ -5,7 +5,7 @@ areaScalarField Cs
( (
"Cs", "Cs",
runTime.timeName(), runTime.timeName(),
aMesh.thisDb(), mesh,
IOobject::MUST_READ, IOobject::MUST_READ,
IOobject::AUTO_WRITE IOobject::AUTO_WRITE
), ),
@ -26,7 +26,7 @@ areaVectorField Us
( (
"Us", "Us",
runTime.timeName(), runTime.timeName(),
aMesh.thisDb(), mesh,
IOobject::NO_READ, IOobject::NO_READ,
IOobject::NO_WRITE IOobject::NO_WRITE
), ),
@ -58,7 +58,7 @@ edgeScalarField phis
( (
"phis", "phis",
runTime.timeName(), runTime.timeName(),
aMesh.thisDb(), mesh,
IOobject::NO_READ, IOobject::NO_READ,
IOobject::NO_WRITE IOobject::NO_WRITE
), ),

View File

@ -0,0 +1,2 @@
// Create Finite Area mesh
faMesh aMesh(mesh);

View File

@ -7,7 +7,7 @@
( (
"Cvf", "Cvf",
runTime.timeName(), runTime.timeName(),
mesh.thisDb(), mesh,
IOobject::NO_READ, IOobject::NO_READ,
IOobject::AUTO_WRITE IOobject::AUTO_WRITE
), ),
@ -24,7 +24,7 @@
( (
"U", "U",
runTime.timeName(), runTime.timeName(),
mesh.thisDb(), mesh,
IOobject::NO_READ, IOobject::NO_READ,
IOobject::AUTO_WRITE IOobject::AUTO_WRITE
), ),

View File

@ -5,7 +5,7 @@ areaScalarField Cs
( (
"Cs", "Cs",
runTime.timeName(), runTime.timeName(),
aMesh.thisDb(), mesh,
IOobject::MUST_READ, IOobject::MUST_READ,
IOobject::AUTO_WRITE IOobject::AUTO_WRITE
), ),
@ -37,7 +37,7 @@ areaVectorField Us
( (
"Us", "Us",
runTime.timeName(), runTime.timeName(),
aMesh.thisDb(), mesh,
IOobject::MUST_READ, IOobject::MUST_READ,
IOobject::NO_WRITE IOobject::NO_WRITE
), ),
@ -51,7 +51,7 @@ edgeScalarField phis
( (
"phis", "phis",
runTime.timeName(), runTime.timeName(),
aMesh.thisDb(), mesh,
IOobject::NO_READ, IOobject::NO_READ,
IOobject::NO_WRITE IOobject::NO_WRITE
), ),

View File

@ -0,0 +1,2 @@
// Create Finite Area mesh
faMesh aMesh(mesh);

View File

@ -7,7 +7,7 @@
( (
"Cvf", "Cvf",
runTime.timeName(), runTime.timeName(),
mesh.thisDb(), mesh,
IOobject::NO_READ, IOobject::NO_READ,
IOobject::AUTO_WRITE IOobject::AUTO_WRITE
), ),
@ -24,7 +24,7 @@
( (
"U", "U",
runTime.timeName(), runTime.timeName(),
mesh.thisDb(), mesh,
IOobject::NO_READ, IOobject::NO_READ,
IOobject::AUTO_WRITE IOobject::AUTO_WRITE
), ),

View File

@ -27,7 +27,7 @@
p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell)); p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell));
p_rghEqn.solve(p_rgh.select(pimple.finalInnerIter())); p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -72,7 +72,7 @@ if (mesh.changing())
divrhoU() divrhoU()
); );
//pcorrEqn.solve(pcorr.select(pimple.finalInnerIter())); //pcorrEqn.solve(mesh.solver(pcorr.select(pimple.finalInnerIter())));
//Bypass virtual layer //Bypass virtual layer
const dictionary& d = mesh.solver const dictionary& d = mesh.solver
( (

View File

@ -50,7 +50,7 @@ while (pimple.correctNonOrthogonal())
- fvm::laplacian(rhorAUf, p_rgh) - fvm::laplacian(rhorAUf, p_rgh)
); );
p_rghEqn.solve(p_rgh.select(pimple.finalInnerIter())); p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -52,7 +52,7 @@ while (pimple.correctNonOrthogonal())
compressible ? getRefCellValue(p_rgh, pRefCell) : pRefValue compressible ? getRefCellValue(p_rgh, pRefCell) : pRefValue
); );
p_rghEqn.solve(p_rgh.select(pimple.finalInnerIter())); p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

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

View File

@ -8,13 +8,11 @@
volVectorField& U1 = phase1.URef(); volVectorField& U1 = phase1.URef();
surfaceScalarField& phi1 = phase1.phiRef(); surfaceScalarField& phi1 = phase1.phiRef();
const tmp<surfaceScalarField> talphaPhi1 = phase1.alphaPhi(); const surfaceScalarField& alphaPhi1 = phase1.alphaPhi();
const auto& alphaPhi1 = talphaPhi1();
volVectorField& U2 = phase2.URef(); volVectorField& U2 = phase2.URef();
surfaceScalarField& phi2 = phase2.phiRef(); surfaceScalarField& phi2 = phase2.phiRef();
const tmp<surfaceScalarField> talphaPhi2 = phase2.alphaPhi(); const surfaceScalarField& alphaPhi2 = phase2.alphaPhi();
const auto& alphaPhi2 = talphaPhi2();
surfaceScalarField& phi = fluid.phi(); surfaceScalarField& phi = fluid.phi();

View File

@ -1,6 +1,6 @@
if (finalIter) if (finalIter)
{ {
mesh.data().setFinalIteration(true); mesh.data::add("finalIteration", true);
} }
if (frozenFlow) if (frozenFlow)
@ -35,5 +35,5 @@ else
if (finalIter) if (finalIter)
{ {
mesh.data().setFinalIteration(false); mesh.data::remove("finalIteration");
} }

View File

@ -1,6 +1,6 @@
if (finalIter) if (finalIter)
{ {
mesh.data().setFinalIteration(true); mesh.data::add("finalIteration", true);
} }
{ {
@ -22,7 +22,7 @@ if (finalIter)
fvOptions.constrain(hEqn); fvOptions.constrain(hEqn);
hEqn.solve(h.select(finalIter)); hEqn.solve(mesh.solver(h.select(finalIter)));
fvOptions.correct(h); fvOptions.correct(h);
} }
@ -35,5 +35,5 @@ if (finalIter)
if (finalIter) if (finalIter)
{ {
mesh.data().setFinalIteration(false); mesh.data::remove("finalIteration");
} }

View File

@ -33,7 +33,7 @@
} }
else else
{ {
EEqn.solve(he.select(finalIter)); EEqn.solve(mesh.solver(he.select(finalIter)));
fvOptions.correct(he); fvOptions.correct(he);
thermo.correct(); thermo.correct();

View File

@ -28,7 +28,7 @@
- fvc::snGrad(p_rgh) - fvc::snGrad(p_rgh)
)*mesh.magSf() )*mesh.magSf()
), ),
U.select(finalIter) mesh.solver(U.select(finalIter))
); );
fvOptions.correct(U); fvOptions.correct(U);

View File

@ -44,7 +44,7 @@ if (Y.size())
fvOptions.constrain(YiEqn); fvOptions.constrain(YiEqn);
YiEqn.solve("Yi"); YiEqn.solve(mesh.solver("Yi"));
fvOptions.correct(Yi); fvOptions.correct(Yi);

View File

@ -52,12 +52,15 @@ constrainPressure(p_rgh, rho, U, phiHbyA, rhorAUf, MRF);
p_rghEqn.solve p_rghEqn.solve
( (
p_rgh.select mesh.solver
( (
p_rgh.select
( (
oCorr == nOuterCorr-1 (
&& corr == nCorr-1 oCorr == nOuterCorr-1
&& nonOrth == nNonOrthCorr && corr == nCorr-1
&& nonOrth == nNonOrthCorr
)
) )
) )
); );

View File

@ -1,6 +1,6 @@
if (finalIter) if (finalIter)
{ {
mesh.data().setFinalIteration(true); mesh.data::add("finalIteration", true);
} }
if (frozenFlow) if (frozenFlow)
@ -36,5 +36,5 @@ else
if (finalIter) if (finalIter)
{ {
mesh.data().setFinalIteration(false); mesh.data::remove("finalIteration");
} }

View File

@ -1,8 +1,6 @@
bool coupled = false; fvSolution solutionDict(runTime);
{
fvSolution solutionDict(runTime); bool coupled(solutionDict.getOrDefault("coupledEnergyField", false));
solutionDict.readIfPresent("coupledEnergyField", coupled);
}
autoPtr<fvMatrix<scalar>> fvMatrixAssemblyPtr; autoPtr<fvMatrix<scalar>> fvMatrixAssemblyPtr;

View File

@ -25,10 +25,10 @@
if (finalIter) if (finalIter)
{ {
mesh.data().setFinalIteration(true); mesh.data::add("finalIteration", true);
} }
hEqn.solve(h.select(finalIter)); hEqn.solve(mesh.solver(h.select(finalIter)));
fvOptions.correct(h); fvOptions.correct(h);
@ -39,7 +39,7 @@
if (finalIter) if (finalIter)
{ {
mesh.data().setFinalIteration(false); mesh.data::remove("finalIteration");
} }
} }
} }

View File

@ -43,8 +43,6 @@ Description
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
#include "postProcess.H"
#include "setRootCase.H" #include "setRootCase.H"
#include "createTime.H" #include "createTime.H"
#include "createMesh.H" #include "createMesh.H"
@ -66,13 +64,13 @@ int main(int argc, char *argv[])
{ {
// Solve all primal equations // Solve all primal equations
om.solvePrimalEquations(); 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; Info<< "End\n" << endl;

View File

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

View File

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

View File

@ -141,7 +141,7 @@ int main(int argc, char *argv[])
pEqn.setReference(pRefCell, pRefValue); pEqn.setReference(pRefCell, pRefValue);
pEqn.solve(p.select(piso.finalInnerIter())); pEqn.solve(mesh.solver(p.select(piso.finalInnerIter())));
if (piso.finalNonOrthogonalIter()) if (piso.finalNonOrthogonalIter())
{ {

View File

@ -114,7 +114,7 @@ int main(int argc, char *argv[])
pEqn.setReference(pRefCell, pRefValue); pEqn.setReference(pRefCell, pRefValue);
pEqn.solve(p.select(piso.finalInnerIter())); pEqn.solve(mesh.solver(p.select(piso.finalInnerIter())));
if (piso.finalNonOrthogonalIter()) if (piso.finalNonOrthogonalIter())
{ {

View File

@ -40,7 +40,7 @@ while (pimple.correctNonOrthogonal())
pEqn.setReference(pRefCell, pRefValue); pEqn.setReference(pRefCell, pRefValue);
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -33,12 +33,7 @@ Description
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
{ {
const DimensionedField<scalar, volMesh> contErr volScalarField contErr(interpolatedCells*cellMask*fvc::div(phi));
(
interpolatedCells.internalField()
*cellMask.internalField()
*fvc::div(phi)().internalField()
);
scalar sumLocalContErr = runTime.deltaTValue()* scalar sumLocalContErr = runTime.deltaTValue()*
mag(contErr)().weightedAverage(mesh.V()).value(); mag(contErr)().weightedAverage(mesh.V()).value();

View File

@ -32,7 +32,7 @@ while (pimple.correctNonOrthogonal())
pEqn.setReference(pRefCell, pRefValue); pEqn.setReference(pRefCell, pRefValue);
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -45,7 +45,7 @@ while (pimple.correctNonOrthogonal())
pEqn.setReference(pRefCell, pRefValue); pEqn.setReference(pRefCell, pRefValue);
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -26,7 +26,7 @@ while (piso.correctNonOrthogonal())
pEqn.setReference(pRefCell, pRefValue); pEqn.setReference(pRefCell, pRefValue);
pEqn.solve(p.select(piso.finalInnerIter())); pEqn.solve(mesh.solver(p.select(piso.finalInnerIter())));
if (piso.finalNonOrthogonalIter()) if (piso.finalNonOrthogonalIter())
{ {

View File

@ -6,7 +6,6 @@
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2011-2017 OpenFOAM Foundation Copyright (C) 2011-2017 OpenFOAM Foundation
Copyright (C) 2023 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -106,9 +105,6 @@ int main(int argc, char *argv[])
#include "CourantNo.H" #include "CourantNo.H"
// Update settings from the control dictionary
piso.read();
// Pressure-velocity PISO corrector // Pressure-velocity PISO corrector
{ {
#include "UEqn.H" #include "UEqn.H"

View File

@ -135,7 +135,7 @@ int main(int argc, char *argv[])
- fvm::laplacian(ghrAUf, h) - fvm::laplacian(ghrAUf, h)
); );
hEqn.solve(h.select(pimple.finalInnerIter())); hEqn.solve(mesh.solver(h.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -5,17 +5,13 @@ EXE_INC = \
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
-I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \ -I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \
-I$(LIB_SRC)/transportModels \ -I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \ -I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude
EXE_LIBS = \ EXE_LIBS = \
-lfiniteVolume \ -lfiniteVolume \
-lfvOptions \ -lfvOptions \
-lmeshTools \ -lmeshTools \
-lsampling \ -lsampling \
-ldynamicMesh \
-ldynamicFvMesh \
-lturbulenceModels \ -lturbulenceModels \
-lincompressibleTurbulenceModels \ -lincompressibleTurbulenceModels \
-lincompressibleTransportModels \ -lincompressibleTransportModels \

View File

@ -33,12 +33,7 @@ Description
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
{ {
const DimensionedField<scalar, volMesh> contErr volScalarField contErr(interpolatedCells*cellMask*fvc::div(phi));
(
interpolatedCells.internalField()
*cellMask.internalField()
*fvc::div(phi)().internalField()
);
scalar sumLocalContErr = runTime.deltaTValue()* scalar sumLocalContErr = runTime.deltaTValue()*
mag(contErr)().weightedAverage(mesh.V()).value(); mag(contErr)().weightedAverage(mesh.V()).value();

View File

@ -64,7 +64,6 @@ Description
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "fvCFD.H" #include "fvCFD.H"
#include "dynamicFvMesh.H"
#include "singlePhaseTransportModel.H" #include "singlePhaseTransportModel.H"
#include "turbulentTransportModel.H" #include "turbulentTransportModel.H"
#include "simpleControl.H" #include "simpleControl.H"
@ -84,7 +83,7 @@ int main(int argc, char *argv[])
#include "addCheckCaseOptions.H" #include "addCheckCaseOptions.H"
#include "setRootCaseLists.H" #include "setRootCaseLists.H"
#include "createTime.H" #include "createTime.H"
#include "createDynamicFvMesh.H" #include "createMesh.H"
#include "createControl.H" #include "createControl.H"
#include "createFields.H" #include "createFields.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
@ -99,14 +98,6 @@ int main(int argc, char *argv[])
{ {
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
// Do any mesh changes
mesh.controlledUpdate();
if (mesh.changing())
{
MRF.update();
}
// --- Pressure-velocity SIMPLE corrector // --- Pressure-velocity SIMPLE corrector
{ {
#include "UEqn.H" #include "UEqn.H"

View File

@ -34,7 +34,7 @@
pEqn.setReference(pRefCell, pRefValue); pEqn.setReference(pRefCell, pRefValue);
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -32,7 +32,7 @@
pEqn.setReference(pRefCell, pRefValue); pEqn.setReference(pRefCell, pRefValue);
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -36,7 +36,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection
fvOptions.constrain(YiEqn); fvOptions.constrain(YiEqn);
YiEqn.solve("Yi"); YiEqn.solve(mesh.solver("Yi"));
fvOptions.correct(Yi); fvOptions.correct(Yi);

View File

@ -33,7 +33,7 @@ if (pimple.transonic())
+ fvOptions(psi, p, rho.name()) + fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {
@ -69,7 +69,7 @@ else
+ fvOptions(psi, p, rho.name()) + fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -34,7 +34,7 @@ while (pimple.correctNonOrthogonal())
pEqn.setReference(pRefCell, pRefValue); pEqn.setReference(pRefCell, pRefValue);
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -37,7 +37,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection
fvOptions.constrain(YEqn); fvOptions.constrain(YEqn);
YEqn.solve("Yi"); YEqn.solve(mesh.solver("Yi"));
fvOptions.correct(Yi); fvOptions.correct(Yi);

View File

@ -47,7 +47,7 @@ while (pimple.correctNonOrthogonal())
- fvm::laplacian(rhorAUf, p_rgh) - fvm::laplacian(rhorAUf, p_rgh)
); );
p_rghEqn.solve(p_rgh.select(pimple.finalInnerIter())); p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -34,7 +34,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection
fvOptions.constrain(YEqn); fvOptions.constrain(YEqn);
YEqn.solve("Yi"); YEqn.solve(mesh.solver("Yi"));
fvOptions.correct(Yi); fvOptions.correct(Yi);

View File

@ -34,7 +34,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection
fvOptions.constrain(YEqn); fvOptions.constrain(YEqn);
YEqn.solve("Yi"); YEqn.solve(mesh.solver("Yi"));
fvOptions.correct(Yi); fvOptions.correct(Yi);

View File

@ -35,7 +35,7 @@ tmp<fv::convectionScheme<scalar>> mvConvection
fvOptions.constrain(YEqn); fvOptions.constrain(YEqn);
YEqn.solve("Yi"); YEqn.solve(mesh.solver("Yi"));
fvOptions.correct(Yi); fvOptions.correct(Yi);

View File

@ -41,7 +41,7 @@ if (pimple.transonic())
+ fvOptions(psi, p, rho.name()) + fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {
@ -77,7 +77,7 @@ else
+ fvOptions(psi, p, rho.name()) + fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -42,7 +42,7 @@ if (pimple.transonic())
+ fvOptions(psi, p, rho.name()) + fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {
@ -77,7 +77,7 @@ else
+ fvOptions(psi, p, rho.name()) + fvOptions(psi, p, rho.name())
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -3,7 +3,12 @@ if (nAlphaSubCycles > 1)
dimensionedScalar totalDeltaT = runTime.deltaT(); dimensionedScalar totalDeltaT = runTime.deltaT();
surfaceScalarField rhoPhiSum surfaceScalarField rhoPhiSum
( (
mesh.newIOobject("rhoPhiSum"), IOobject
(
"rhoPhiSum",
runTime.timeName(),
mesh
),
mesh, mesh,
dimensionedScalar(rhoPhi.dimensions(), Zero) dimensionedScalar(rhoPhi.dimensions(), Zero)
); );

View File

@ -38,7 +38,7 @@
p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell)); p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell));
p_rghEqn.solve(p_rgh.select(pimple.finalInnerIter())); p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -3,7 +3,12 @@ if (nAlphaSubCycles > 1)
dimensionedScalar totalDeltaT = runTime.deltaT(); dimensionedScalar totalDeltaT = runTime.deltaT();
surfaceScalarField rhoPhiSum surfaceScalarField rhoPhiSum
( (
mesh.newIOobject("rhoPhiSum"), IOobject
(
"rhoPhiSum",
runTime.timeName(),
mesh
),
mesh, mesh,
dimensionedScalar(rhoPhi.dimensions(), Zero) dimensionedScalar(rhoPhi.dimensions(), Zero)
); );

View File

@ -36,7 +36,7 @@
- fvm::laplacian(rhorAUf, p) - fvm::laplacian(rhorAUf, p)
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -33,7 +33,7 @@
- fvm::laplacian(rhorAUf, p) - fvm::laplacian(rhorAUf, p)
); );
pEqn.solve(p.select(pimple.finalInnerIter())); pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {

View File

@ -74,11 +74,8 @@ Foam::compressibleInterPhaseTransportModel::compressibleInterPhaseTransportModel
const volScalarField& alpha1(mixture_.alpha1()); const volScalarField& alpha1(mixture_.alpha1());
const volScalarField& alpha2(mixture_.alpha2()); const volScalarField& alpha2(mixture_.alpha2());
const tmp<volScalarField> trho1 = mixture_.thermo1().rho(); const volScalarField& rho1 = mixture_.thermo1().rho();
const tmp<volScalarField> trho2 = mixture_.thermo2().rho(); const volScalarField& rho2 = mixture_.thermo2().rho();
const auto& rho1 = trho1();
const auto& rho2 = trho2();
alphaRhoPhi1_ = alphaRhoPhi1_ =
( (
@ -188,8 +185,8 @@ void Foam::compressibleInterPhaseTransportModel::correctPhasePhi()
{ {
if (twoPhaseTransport_) if (twoPhaseTransport_)
{ {
const tmp<volScalarField> rho1 = mixture_.thermo1().rho(); const volScalarField& rho1 = mixture_.thermo1().rho();
const tmp<volScalarField> rho2 = mixture_.thermo2().rho(); const volScalarField& rho2 = mixture_.thermo2().rho();
alphaRhoPhi1_.ref() = fvc::interpolate(rho1)*alphaPhi10_; alphaRhoPhi1_.ref() = fvc::interpolate(rho1)*alphaPhi10_;
alphaRhoPhi2_.ref() = fvc::interpolate(rho2)*(phi_ - alphaPhi10_); alphaRhoPhi2_.ref() = fvc::interpolate(rho2)*(phi_ - alphaPhi10_);

View File

@ -4,19 +4,26 @@ if (nAlphaSubCycles > 1)
{ {
dimensionedScalar totalDeltaT = runTime.deltaT(); dimensionedScalar totalDeltaT = runTime.deltaT();
talphaPhi1.reset talphaPhi1 = new surfaceScalarField
( (
new surfaceScalarField IOobject
( (
mesh.newIOobject("alphaPhi1"), "alphaPhi1",
mesh, runTime.timeName(),
dimensionedScalar(alphaPhi10.dimensions(), Zero) mesh
) ),
mesh,
dimensionedScalar(alphaPhi10.dimensions(), Zero)
); );
surfaceScalarField rhoPhiSum surfaceScalarField rhoPhiSum
( (
mesh.newIOobject("rhoPhiSum"), IOobject
(
"rhoPhiSum",
runTime.timeName(),
mesh
),
mesh, mesh,
dimensionedScalar(rhoPhi.dimensions(), Zero) dimensionedScalar(rhoPhi.dimensions(), Zero)
); );

View File

@ -99,7 +99,7 @@
+ (max(alpha2, scalar(0))/rho2)*p_rghEqnComp2() + (max(alpha2, scalar(0))/rho2)*p_rghEqnComp2()
) )
+ p_rghEqnIncomp, + p_rghEqnIncomp,
p_rgh.select(pimple.finalInnerIter()) mesh.solver(p_rgh.select(pimple.finalInnerIter()))
); );
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())

View File

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

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