mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
COMP: Multiple changes - first clean build after latest merge - UNTESTED
This commit is contained in:
@ -28,9 +28,9 @@ Group
|
||||
grpBasicSolvers
|
||||
|
||||
Description
|
||||
Potential flow solver which solves for the velocity potential
|
||||
from which the flux-field is obtained and velocity field by reconstructing
|
||||
the flux.
|
||||
Potential flow solver which solves for the velocity potential, to
|
||||
calculate the flux-field, from which the velocity field is obtained by
|
||||
reconstructing the flux.
|
||||
|
||||
\heading Solver details
|
||||
The potential flow solution is typically employed to generate initial fields
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
|
||||
\\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -67,25 +67,26 @@ Description
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
#include "setRootCase.H"
|
||||
#include "postProcess.H"
|
||||
|
||||
#include "setRootCase.H"
|
||||
#include "createTime.H"
|
||||
#include "createDynamicFvMesh.H"
|
||||
#include "initContinuityErrs.H"
|
||||
|
||||
pimpleControl pimple(mesh);
|
||||
|
||||
#include "createControl.H"
|
||||
#include "readCombustionProperties.H"
|
||||
#include "readGravitationalAcceleration.H"
|
||||
#include "createFields.H"
|
||||
#include "createMRF.H"
|
||||
#include "createFieldRefs.H"
|
||||
#include "createFvOptions.H"
|
||||
#include "initContinuityErrs.H"
|
||||
#include "createRhoUf.H"
|
||||
#include "createControls.H"
|
||||
#include "initContinuityErrs.H"
|
||||
#include "compressibleCourantNo.H"
|
||||
#include "setInitialDeltaT.H"
|
||||
|
||||
turbulence->validate();
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
Info<< "\nStarting time loop\n" << endl;
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
#include "readTimeControls.H"
|
||||
|
||||
bool correctPhi =
|
||||
pimple.dict().lookupOrDefault<Switch>("correctPhi", true);
|
||||
correctPhi = pimple.dict().lookupOrDefault<Switch>("correctPhi", true);
|
||||
|
||||
bool checkMeshCourantNo =
|
||||
checkMeshCourantNo =
|
||||
pimple.dict().lookupOrDefault<Switch>("checkMeshCourantNo", false);
|
||||
|
||||
@ -18,8 +18,6 @@ volScalarField rho
|
||||
);
|
||||
|
||||
volScalarField& p = thermo.p();
|
||||
const volScalarField& psi = thermo.psi();
|
||||
|
||||
|
||||
Info<< "Reading field U\n" << endl;
|
||||
volVectorField U
|
||||
|
||||
@ -41,8 +41,6 @@
|
||||
p_rghDDtEqn =
|
||||
(
|
||||
fvc::ddt(rho) + psi*correction(fvm::ddt(p_rgh))
|
||||
==
|
||||
fvOptions(psi, p_rgh, rho.name())
|
||||
);
|
||||
}
|
||||
|
||||
@ -53,6 +51,8 @@
|
||||
p_rghDDtEqn()
|
||||
+ fvc::div(phiHbyA)
|
||||
- fvm::laplacian(rhorAUf, p_rgh)
|
||||
==
|
||||
fvOptions(psi, p_rgh, rho.name())
|
||||
);
|
||||
|
||||
p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
|
||||
|
||||
@ -11,7 +11,7 @@ IOobject turbulencePropertiesHeader
|
||||
false
|
||||
);
|
||||
|
||||
if (turbulencePropertiesHeader.headerOk())
|
||||
if (turbulencePropertiesHeader.typeHeaderOk<IOdictionary>(false))
|
||||
{
|
||||
autoPtr<compressible::turbulenceModel> turbulence
|
||||
(
|
||||
|
||||
33
applications/solvers/lagrangian/simpleCoalParcelFoam/EEqn.H
Normal file
33
applications/solvers/lagrangian/simpleCoalParcelFoam/EEqn.H
Normal file
@ -0,0 +1,33 @@
|
||||
{
|
||||
volScalarField& he = thermo.he();
|
||||
|
||||
fvScalarMatrix EEqn
|
||||
(
|
||||
mvConvection->fvmDiv(phi, he)
|
||||
+ (
|
||||
he.name() == "e"
|
||||
? fvc::div(phi, volScalarField("Ekp", 0.5*magSqr(U) + p/rho))
|
||||
: fvc::div(phi, volScalarField("K", 0.5*magSqr(U)))
|
||||
)
|
||||
- fvm::laplacian(turbulence->alphaEff(), he)
|
||||
==
|
||||
rho*(U&g)
|
||||
+ parcels.Sh(he)
|
||||
+ radiation->Sh(thermo)
|
||||
+ combustion->Sh()
|
||||
+ fvOptions(rho, he)
|
||||
);
|
||||
|
||||
EEqn.relax();
|
||||
|
||||
fvOptions.constrain(EEqn);
|
||||
|
||||
EEqn.solve();
|
||||
|
||||
fvOptions.correct(he);
|
||||
thermo.correct();
|
||||
radiation->correct();
|
||||
|
||||
Info<< "T gas min/max = " << min(T).value() << ", "
|
||||
<< max(T).value() << endl;
|
||||
}
|
||||
@ -24,8 +24,7 @@ EXE_INC = \
|
||||
-I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
|
||||
-I$(LIB_SRC)/combustionModels/lnInclude \
|
||||
-I$(LIB_SRC)/fvOptions/lnInclude \
|
||||
-I$(LIB_SRC)/sampling/lnInclude \
|
||||
-I$(FOAM_SOLVERS)/lagrangian/reactingParcelFoam/simpleReactingParcelFoam
|
||||
-I$(LIB_SRC)/sampling/lnInclude
|
||||
|
||||
|
||||
EXE_LIBS = \
|
||||
|
||||
21
applications/solvers/lagrangian/simpleCoalParcelFoam/UEqn.H
Normal file
21
applications/solvers/lagrangian/simpleCoalParcelFoam/UEqn.H
Normal file
@ -0,0 +1,21 @@
|
||||
MRF.correctBoundaryVelocity(U);
|
||||
|
||||
tmp<fvVectorMatrix> tUEqn
|
||||
(
|
||||
fvm::div(phi, U)
|
||||
+ MRF.DDt(rho, U)
|
||||
+ turbulence->divDevRhoReff(U)
|
||||
==
|
||||
rho()*g
|
||||
+ parcels.SU(U)
|
||||
+ fvOptions(rho, U)
|
||||
);
|
||||
fvVectorMatrix& UEqn = tUEqn.ref();
|
||||
|
||||
UEqn.relax();
|
||||
|
||||
fvOptions.constrain(UEqn);
|
||||
|
||||
solve(UEqn == -fvc::grad(p));
|
||||
|
||||
fvOptions.correct(U);
|
||||
48
applications/solvers/lagrangian/simpleCoalParcelFoam/YEqn.H
Normal file
48
applications/solvers/lagrangian/simpleCoalParcelFoam/YEqn.H
Normal file
@ -0,0 +1,48 @@
|
||||
tmp<fv::convectionScheme<scalar>> mvConvection
|
||||
(
|
||||
fv::convectionScheme<scalar>::New
|
||||
(
|
||||
mesh,
|
||||
fields,
|
||||
phi,
|
||||
mesh.divScheme("div(phi,Yi_h)")
|
||||
)
|
||||
);
|
||||
|
||||
{
|
||||
combustion->correct();
|
||||
dQ = combustion->dQ();
|
||||
volScalarField Yt(0.0*Y[0]);
|
||||
|
||||
forAll(Y, i)
|
||||
{
|
||||
if (i != inertIndex && composition.active(i))
|
||||
{
|
||||
volScalarField& Yi = Y[i];
|
||||
|
||||
fvScalarMatrix YEqn
|
||||
(
|
||||
mvConvection->fvmDiv(phi, Yi)
|
||||
- fvm::laplacian(turbulence->muEff(), Yi)
|
||||
==
|
||||
parcels.SYi(i, Yi)
|
||||
+ combustion->R(Yi)
|
||||
+ fvOptions(rho, Yi)
|
||||
);
|
||||
|
||||
YEqn.relax();
|
||||
|
||||
fvOptions.constrain(YEqn);
|
||||
|
||||
YEqn.solve(mesh.solver("Yi"));
|
||||
|
||||
fvOptions.correct(Yi);
|
||||
|
||||
Yi.max(0.0);
|
||||
Yt += Yi;
|
||||
}
|
||||
}
|
||||
|
||||
Y[inertIndex] = scalar(1) - Yt;
|
||||
Y[inertIndex].max(0.0);
|
||||
}
|
||||
@ -0,0 +1,3 @@
|
||||
const volScalarField& psi = thermo.psi();
|
||||
const volScalarField& T = thermo.T();
|
||||
const label inertIndex(composition.species()[inertSpecie]);
|
||||
@ -0,0 +1,122 @@
|
||||
#include "readGravitationalAcceleration.H"
|
||||
|
||||
Info<< "Creating combustion model\n" << endl;
|
||||
|
||||
autoPtr<combustionModels::rhoCombustionModel> combustion
|
||||
(
|
||||
combustionModels::rhoCombustionModel::New(mesh)
|
||||
);
|
||||
|
||||
rhoReactionThermo& thermo = combustion->thermo();
|
||||
thermo.validate(args.executable(), "h", "e");
|
||||
|
||||
SLGThermo slgThermo(mesh, thermo);
|
||||
|
||||
basicSpecieMixture& composition = thermo.composition();
|
||||
PtrList<volScalarField>& Y = composition.Y();
|
||||
|
||||
const word inertSpecie(thermo.lookup("inertSpecie"));
|
||||
if (!composition.species().found(inertSpecie))
|
||||
{
|
||||
FatalIOErrorIn(args.executable().c_str(), thermo)
|
||||
<< "Inert specie " << inertSpecie << " not found in available species "
|
||||
<< composition.species()
|
||||
<< exit(FatalIOError);
|
||||
}
|
||||
|
||||
volScalarField& p = thermo.p();
|
||||
|
||||
volScalarField rho
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"rho",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
thermo.rho()
|
||||
);
|
||||
|
||||
Info<< "\nReading field U\n" << endl;
|
||||
volVectorField U
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"U",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh
|
||||
);
|
||||
|
||||
#include "compressibleCreatePhi.H"
|
||||
|
||||
mesh.setFluxRequired(p.name());
|
||||
|
||||
dimensionedScalar rhoMax
|
||||
(
|
||||
dimensionedScalar::lookupOrDefault
|
||||
(
|
||||
"rhoMax",
|
||||
simple.dict(),
|
||||
dimDensity,
|
||||
GREAT
|
||||
)
|
||||
);
|
||||
|
||||
dimensionedScalar rhoMin
|
||||
(
|
||||
dimensionedScalar::lookupOrDefault
|
||||
(
|
||||
"rhoMin",
|
||||
simple.dict(),
|
||||
dimDensity,
|
||||
0
|
||||
)
|
||||
);
|
||||
|
||||
Info<< "Creating turbulence model\n" << endl;
|
||||
autoPtr<compressible::turbulenceModel> turbulence
|
||||
(
|
||||
compressible::turbulenceModel::New
|
||||
(
|
||||
rho,
|
||||
U,
|
||||
phi,
|
||||
thermo
|
||||
)
|
||||
);
|
||||
|
||||
// Set the turbulence into the combustion model
|
||||
combustion->setTurbulence(turbulence());
|
||||
|
||||
Info<< "Creating multi-variate interpolation scheme\n" << endl;
|
||||
multivariateSurfaceInterpolationScheme<scalar>::fieldTable fields;
|
||||
|
||||
forAll(Y, i)
|
||||
{
|
||||
fields.add(Y[i]);
|
||||
}
|
||||
fields.add(thermo.he());
|
||||
|
||||
volScalarField dQ
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"dQ",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh,
|
||||
dimensionedScalar("dQ", dimEnergy/dimTime, 0.0)
|
||||
);
|
||||
|
||||
#include "createMRF.H"
|
||||
#include "createRadiationModel.H"
|
||||
#include "createClouds.H"
|
||||
57
applications/solvers/lagrangian/simpleCoalParcelFoam/pEqn.H
Normal file
57
applications/solvers/lagrangian/simpleCoalParcelFoam/pEqn.H
Normal file
@ -0,0 +1,57 @@
|
||||
{
|
||||
// Thermodynamic density needs to be updated by psi*d(p) after the
|
||||
// pressure solution - done in 2 parts. Part 1:
|
||||
thermo.rho() -= psi*p;
|
||||
|
||||
volScalarField rAU(1.0/UEqn.A());
|
||||
surfaceScalarField rhorAUf("rhorAUf", fvc::interpolate(rho*rAU));
|
||||
volVectorField HbyA(constrainHbyA(rAU*UEqn.H(), U, p));
|
||||
tUEqn.clear();
|
||||
surfaceScalarField phiHbyA
|
||||
(
|
||||
"phiHbyA",
|
||||
fvc::interpolate(rho)*fvc::flux(HbyA)
|
||||
);
|
||||
|
||||
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
|
||||
|
||||
// Update the pressure BCs to ensure flux consistency
|
||||
constrainPressure(p, rho, U, phiHbyA, rhorAUf, MRF);
|
||||
|
||||
while (simple.correctNonOrthogonal())
|
||||
{
|
||||
fvScalarMatrix pEqn
|
||||
(
|
||||
fvc::div(phiHbyA)
|
||||
- fvm::laplacian(rhorAUf, p)
|
||||
==
|
||||
parcels.Srho()
|
||||
+ fvOptions(psi, p, rho.name())
|
||||
);
|
||||
|
||||
pEqn.solve();
|
||||
|
||||
if (simple.finalNonOrthogonalIter())
|
||||
{
|
||||
phi = phiHbyA + pEqn.flux();
|
||||
}
|
||||
}
|
||||
|
||||
p.relax();
|
||||
|
||||
// Second part of thermodynamic density update
|
||||
thermo.rho() += psi*p;
|
||||
|
||||
#include "compressibleContinuityErrs.H"
|
||||
|
||||
U = HbyA - rAU*fvc::grad(p);
|
||||
U.correctBoundaryConditions();
|
||||
fvOptions.correct(U);
|
||||
|
||||
rho = thermo.rho();
|
||||
rho = max(rho, rhoMin);
|
||||
rho = min(rho, rhoMax);
|
||||
rho.relax();
|
||||
|
||||
Info<< "p min/max = " << min(p).value() << ", " << max(p).value() << endl;
|
||||
}
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2015 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2015-2016 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -24,13 +24,12 @@ License
|
||||
Application
|
||||
simpleReactingParcelFoam
|
||||
|
||||
Description
|
||||
Steady state SIMPLE solver for laminar or turbulent flow with coal
|
||||
Lagrangian parcels.
|
||||
Group
|
||||
grpLagrangianSolvers
|
||||
|
||||
Note:
|
||||
- including run-time selectable finite volume options,e.g. sources,
|
||||
constraints
|
||||
Description
|
||||
Steady state solver for compressible, turbulent flow with coal particle
|
||||
clouds and optional sources/constraints.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
@ -49,21 +48,19 @@ Description
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
#include "setRootCase.H"
|
||||
#include "postProcess.H"
|
||||
|
||||
#include "setRootCase.H"
|
||||
#include "createTime.H"
|
||||
#include "createMesh.H"
|
||||
#include "readGravitationalAcceleration.H"
|
||||
|
||||
simpleControl simple(mesh);
|
||||
|
||||
#include "createControl.H"
|
||||
#include "createFields.H"
|
||||
#include "createRadiationModel.H"
|
||||
#include "createClouds.H"
|
||||
#include "createMRF.H"
|
||||
#include "createFieldRefs.H"
|
||||
#include "createFvOptions.H"
|
||||
#include "initContinuityErrs.H"
|
||||
|
||||
turbulence->validate();
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
Info<< "\nStarting time loop\n" << endl;
|
||||
|
||||
@ -32,6 +32,15 @@ License
|
||||
#include "turbulentTransportModel.H"
|
||||
#include "LESModel.H"
|
||||
|
||||
makeTurbulenceModelTypes
|
||||
(
|
||||
volScalarField,
|
||||
geometricOneField,
|
||||
incompressibleTurbulenceModel,
|
||||
PhaseCompressibleTurbulenceModel,
|
||||
immiscibleIncompressibleTwoPhaseMixture
|
||||
);
|
||||
|
||||
makeBaseTurbulenceModel
|
||||
(
|
||||
volScalarField,
|
||||
|
||||
@ -30,7 +30,7 @@ Description
|
||||
The momentum and other fluid properties are of the "mixture" and a single
|
||||
momentum equation is solved.
|
||||
|
||||
It includes MRF and MPPIC clouds
|
||||
It includes MRF and an MPPIC cloud.
|
||||
|
||||
Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected.
|
||||
|
||||
@ -53,26 +53,22 @@ Description
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
#include "postProcess.H"
|
||||
|
||||
#include "setRootCase.H"
|
||||
#include "createTime.H"
|
||||
#include "createMesh.H"
|
||||
|
||||
pimpleControl pimple(mesh);
|
||||
|
||||
#include "createTimeControls.H"
|
||||
#include "createControl.H"
|
||||
#include "initContinuityErrs.H"
|
||||
#include "createFields.H"
|
||||
#include "createMRF.H"
|
||||
#include "createFvOptions.H"
|
||||
#include "createTimeControls.H"
|
||||
#include "correctPhi.H"
|
||||
|
||||
turbulence->validate();
|
||||
|
||||
|
||||
#include "readTimeControls.H"
|
||||
#include "CourantNo.H"
|
||||
#include "setInitialDeltaT.H"
|
||||
|
||||
turbulence->validate();
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
Info<< "\nStarting time loop\n" << endl;
|
||||
@ -126,7 +122,7 @@ int main(int argc, char *argv[])
|
||||
zeroGradientFvPatchVectorField::typeName
|
||||
);
|
||||
|
||||
cloudVolSUSu.internalField() = -cloudSU.source()/mesh.V();
|
||||
cloudVolSUSu.primitiveFieldRef() = -cloudSU.source()/mesh.V();
|
||||
cloudVolSUSu.correctBoundaryConditions();
|
||||
|
||||
cloudSU.source() = vector::zero;
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
interFoamPath = $(FOAM_SOLVERS)/multiphase/interFoam
|
||||
|
||||
EXE_INC = \
|
||||
-I. \
|
||||
-I./IncompressibleTwoPhaseMixtureTurbulenceModels/lnInclude \
|
||||
-I$(interFoamPath) \
|
||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||
|
||||
@ -17,9 +17,10 @@
|
||||
|
||||
// Do not compress interface at non-coupled boundary faces
|
||||
// (inlets, outlets etc.)
|
||||
surfaceScalarField::Boundary& phicBf = phic.boundaryFieldRef();
|
||||
forAll(phic.boundaryField(), patchi)
|
||||
{
|
||||
fvsPatchScalarField& phicp = phic.boundaryField()[patchi];
|
||||
fvsPatchScalarField& phicp = phicBf[patchi];
|
||||
|
||||
if (!phicp.coupled())
|
||||
{
|
||||
|
||||
@ -217,3 +217,5 @@
|
||||
mixture
|
||||
)
|
||||
);
|
||||
|
||||
#include "createMRF.H"
|
||||
|
||||
@ -42,7 +42,7 @@ namespace Foam
|
||||
|
||||
void Foam::twoPhaseMixtureEThermo::eBoundaryCorrection(volScalarField& h)
|
||||
{
|
||||
volScalarField::GeometricBoundaryField& hbf = h.boundaryField();
|
||||
volScalarField::Boundary& hbf = h.boundaryFieldRef();
|
||||
|
||||
forAll(hbf, patchi)
|
||||
{
|
||||
@ -59,6 +59,7 @@ void Foam::twoPhaseMixtureEThermo::eBoundaryCorrection(volScalarField& h)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Foam::twoPhaseMixtureEThermo::init()
|
||||
{
|
||||
const volScalarField alpha1Rho1(alpha1()*rho1());
|
||||
@ -74,6 +75,7 @@ void Foam::twoPhaseMixtureEThermo::init()
|
||||
e_.correctBoundaryConditions();
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructor * * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::twoPhaseMixtureEThermo::twoPhaseMixtureEThermo
|
||||
@ -117,11 +119,13 @@ Foam::twoPhaseMixtureEThermo::twoPhaseMixtureEThermo
|
||||
init();
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::twoPhaseMixtureEThermo::~twoPhaseMixtureEThermo()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
void Foam::twoPhaseMixtureEThermo::correct()
|
||||
@ -226,10 +230,8 @@ Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::he
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::twoPhaseMixtureEThermo::hc() const
|
||||
Foam::tmp<Foam::volScalarField> Foam::twoPhaseMixtureEThermo::hc() const
|
||||
{
|
||||
|
||||
const fvMesh& mesh = this->T_.mesh();
|
||||
|
||||
return tmp<volScalarField>
|
||||
@ -277,8 +279,7 @@ Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::THE
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::twoPhaseMixtureEThermo::Cp() const
|
||||
Foam::tmp<Foam::volScalarField> Foam::twoPhaseMixtureEThermo::Cp() const
|
||||
{
|
||||
const volScalarField limitedAlpha1
|
||||
(
|
||||
@ -317,8 +318,7 @@ Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::Cp
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::twoPhaseMixtureEThermo::rho() const
|
||||
Foam::tmp<Foam::volScalarField> Foam::twoPhaseMixtureEThermo::rho() const
|
||||
{
|
||||
const volScalarField limitedAlpha1
|
||||
(
|
||||
@ -337,8 +337,7 @@ Foam::twoPhaseMixtureEThermo::rho() const
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::scalarField>
|
||||
Foam::twoPhaseMixtureEThermo::rho
|
||||
Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::rho
|
||||
(
|
||||
const label patchi
|
||||
) const
|
||||
@ -357,8 +356,7 @@ Foam::twoPhaseMixtureEThermo::rho
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::twoPhaseMixtureEThermo::Cv() const
|
||||
Foam::tmp<Foam::volScalarField> Foam::twoPhaseMixtureEThermo::Cv() const
|
||||
{
|
||||
const volScalarField limitedAlpha1
|
||||
(
|
||||
@ -376,8 +374,7 @@ Foam::twoPhaseMixtureEThermo::Cv() const
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::scalarField>
|
||||
Foam::twoPhaseMixtureEThermo::Cv
|
||||
Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::Cv
|
||||
(
|
||||
const scalarField& p,
|
||||
const scalarField& T,
|
||||
@ -398,8 +395,7 @@ Foam::twoPhaseMixtureEThermo::Cv
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::twoPhaseMixtureEThermo::gamma() const
|
||||
Foam::tmp<Foam::volScalarField> Foam::twoPhaseMixtureEThermo::gamma() const
|
||||
{
|
||||
return tmp<volScalarField>
|
||||
(
|
||||
@ -422,8 +418,7 @@ Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::gamma
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::twoPhaseMixtureEThermo::Cpv() const
|
||||
Foam::tmp<Foam::volScalarField> Foam::twoPhaseMixtureEThermo::Cpv() const
|
||||
{
|
||||
// This is an e thermo (Cpv = Cv)
|
||||
return Cv();
|
||||
@ -442,16 +437,14 @@ Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::Cpv
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::twoPhaseMixtureEThermo::CpByCpv() const
|
||||
Foam::tmp<Foam::volScalarField> Foam::twoPhaseMixtureEThermo::CpByCpv() const
|
||||
{
|
||||
NotImplemented;
|
||||
return tmp<Foam::volScalarField>();
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::scalarField>
|
||||
Foam::twoPhaseMixtureEThermo::CpByCpv
|
||||
Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::CpByCpv
|
||||
(
|
||||
const scalarField& p,
|
||||
const scalarField& T,
|
||||
@ -463,8 +456,7 @@ Foam::twoPhaseMixtureEThermo::CpByCpv
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::twoPhaseMixtureEThermo::kappa() const
|
||||
Foam::tmp<Foam::volScalarField> Foam::twoPhaseMixtureEThermo::kappa() const
|
||||
{
|
||||
const volScalarField limitedAlpha1
|
||||
(
|
||||
@ -482,8 +474,10 @@ Foam::twoPhaseMixtureEThermo::kappa() const
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::scalarField>
|
||||
Foam::twoPhaseMixtureEThermo::kappa(const label patchi) const
|
||||
Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::kappa
|
||||
(
|
||||
const label patchi
|
||||
) const
|
||||
{
|
||||
const volScalarField limitedAlpha1
|
||||
(
|
||||
@ -496,8 +490,7 @@ Foam::twoPhaseMixtureEThermo::kappa(const label patchi) const
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::twoPhaseMixtureEThermo::kappaEff
|
||||
Foam::tmp<Foam::volScalarField> Foam::twoPhaseMixtureEThermo::kappaEff
|
||||
(
|
||||
const volScalarField& kappat
|
||||
) const
|
||||
@ -508,8 +501,7 @@ Foam::twoPhaseMixtureEThermo::kappaEff
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::scalarField>
|
||||
Foam::twoPhaseMixtureEThermo::kappaEff
|
||||
Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::kappaEff
|
||||
(
|
||||
const scalarField& kappat,
|
||||
const label patchi
|
||||
@ -528,8 +520,7 @@ Foam::twoPhaseMixtureEThermo::kappaEff
|
||||
}
|
||||
|
||||
|
||||
Foam::tmp<Foam::volScalarField>
|
||||
Foam::twoPhaseMixtureEThermo::alphaEff
|
||||
Foam::tmp<Foam::volScalarField> Foam::twoPhaseMixtureEThermo::alphaEff
|
||||
(
|
||||
const volScalarField& alphat
|
||||
) const
|
||||
@ -539,12 +530,11 @@ Foam::twoPhaseMixtureEThermo::alphaEff
|
||||
alpha1_*rho1() + (1.0 - alpha1_)*rho2()
|
||||
);
|
||||
|
||||
|
||||
return (kappa()/Cp()/rho + alphat);
|
||||
}
|
||||
|
||||
Foam::tmp<Foam::scalarField>
|
||||
Foam::twoPhaseMixtureEThermo::alphaEff
|
||||
|
||||
Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureEThermo::alphaEff
|
||||
(
|
||||
const scalarField& alphat,
|
||||
const label patchi
|
||||
@ -575,6 +565,7 @@ Foam::twoPhaseMixtureEThermo::alphaEff
|
||||
return kappa/Cp/rho + alphat;
|
||||
}
|
||||
|
||||
|
||||
bool Foam::twoPhaseMixtureEThermo::read()
|
||||
{
|
||||
if (basicThermo::read() && thermoIncompressibleTwoPhaseMixture::read())
|
||||
@ -589,4 +580,5 @@ bool Foam::twoPhaseMixtureEThermo::read()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -12,7 +12,7 @@ EXE_INC = \
|
||||
-I$(LIB_SRC)/meshTools/lnInclude
|
||||
|
||||
LIB_LIBS = \
|
||||
-lcompressibleTurbulenceModels
|
||||
-lcompressibleTurbulenceModels \
|
||||
-lreactingPhaseSystem \
|
||||
-lreactingMultiphaseSystem \
|
||||
-lreactingEulerianInterfacialModels \
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
autoRefineMesh.C
|
||||
snappyRefineMesh.C
|
||||
|
||||
EXE = $(FOAM_APPBIN)/autoRefineMesh
|
||||
EXE = $(FOAM_APPBIN)/snappyRefineMesh
|
||||
|
||||
|
||||
@ -1316,14 +1316,14 @@ int main(int argc, char *argv[])
|
||||
|
||||
Info<< surfaces.names()[surfi] << ':' << nl << nl;
|
||||
|
||||
const word& fzName = surfaces.surfZones()[surfI].faceZoneName();
|
||||
const word& fzName = surfaces.surfZones()[surfi].faceZoneName();
|
||||
|
||||
if (fzName.empty())
|
||||
{
|
||||
// 'Normal' surface
|
||||
forAll(regNames, i)
|
||||
{
|
||||
label globalRegioni = surfaces.globalRegion(surfI, i);
|
||||
label globalRegioni = surfaces.globalRegion(surfi, i);
|
||||
|
||||
label patchi;
|
||||
|
||||
|
||||
@ -392,7 +392,7 @@ Foam::label Foam::checkTopology
|
||||
// Already marked
|
||||
regionDisconnected[regioni] = false;
|
||||
}
|
||||
else if (pRegion != regionI)
|
||||
else if (pRegion != regioni)
|
||||
{
|
||||
// Multiple regions
|
||||
regionDisconnected[regioni] = false;
|
||||
|
||||
@ -326,7 +326,7 @@ int main(int argc, char *argv[])
|
||||
// Create mesh subsetting engine
|
||||
fvMeshSubset subsetter(mesh);
|
||||
|
||||
label patchi = -1;
|
||||
labelList exposedPatchIDs;
|
||||
|
||||
if (args.optionFound("patch"))
|
||||
{
|
||||
|
||||
@ -1,11 +0,0 @@
|
||||
#!/bin/sh
|
||||
cd ${0%/*} || exit 1 # run from this directory
|
||||
|
||||
if [ -f "$FFTW_ARCH_PATH/include/fftw3.h" ] || \
|
||||
[ "${FFTW_ARCH_PATH##*-}" = system -a -f "/usr/include/fftw3.h" ]
|
||||
then
|
||||
export LINK_FLAGS="-lrandomProcesses"
|
||||
fi
|
||||
wmake
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
@ -1151,10 +1151,6 @@ int main(int argc, char *argv[])
|
||||
// For the first region of a multi-region case additionally
|
||||
// decompose the "uniform" directory in the time directory
|
||||
if (regionNames.size() > 1 && regioni == 0)
|
||||
|
||||
// If no fields have been decomposed the destination
|
||||
// directory will not have been created so make sure.
|
||||
mkDir(timePath);
|
||||
{
|
||||
decomposeUniform(copyUniform, mesh, processorDb);
|
||||
}
|
||||
|
||||
@ -615,7 +615,7 @@ bool Foam::domainDecomposition::writeDecomposition(const bool decomposeSets)
|
||||
|
||||
label zonei = faceToZone[curF];
|
||||
|
||||
if (zoneI >= 0)
|
||||
if (zonei >= 0)
|
||||
{
|
||||
// Single zone. Add the face
|
||||
zoneFaces[zonei].append(facei);
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -125,12 +125,8 @@ Foam::parFvFieldReconstructor::reconstructFvVolumeField
|
||||
|
||||
PtrList<fvPatchField<Type>> patchFields(fld.mesh().boundary().size());
|
||||
|
||||
const typename GeometricField
|
||||
<
|
||||
Type,
|
||||
fvPatchField,
|
||||
volMesh
|
||||
>::GeometricBoundaryField& bfld = fld.boundaryField();
|
||||
const typename GeometricField<Type, fvPatchField, volMesh>::Boundary&
|
||||
bfld = fld.boundaryField();
|
||||
|
||||
forAll(bfld, patchI)
|
||||
{
|
||||
@ -292,12 +288,8 @@ Foam::parFvFieldReconstructor::reconstructFvSurfaceField
|
||||
|
||||
PtrList<fvsPatchField<Type>> patchFields(fld.mesh().boundary().size());
|
||||
|
||||
const typename GeometricField
|
||||
<
|
||||
Type,
|
||||
fvsPatchField,
|
||||
surfaceMesh
|
||||
>::GeometricBoundaryField& bfld = fld.boundaryField();
|
||||
const typename GeometricField<Type, fvsPatchField, surfaceMesh>::Boundary&
|
||||
bfld = fld.boundaryField();
|
||||
|
||||
forAll(bfld, patchI)
|
||||
{
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
|
||||
\\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -716,8 +716,7 @@ void correctCoupledBoundaryConditions(fvMesh& mesh)
|
||||
{
|
||||
GeoField& fld = *iter();
|
||||
|
||||
typename GeoField::GeometricBoundaryField& bfld =
|
||||
fld.boundaryField();
|
||||
typename GeoField::Boundary& bfld = fld.boundaryFieldRef();
|
||||
if
|
||||
(
|
||||
Pstream::defaultCommsType == Pstream::blocking
|
||||
@ -728,7 +727,7 @@ void correctCoupledBoundaryConditions(fvMesh& mesh)
|
||||
|
||||
forAll(bfld, patchi)
|
||||
{
|
||||
typename GeoField::PatchFieldType& pfld = bfld[patchi];
|
||||
typename GeoField::Patch& pfld = bfld[patchi];
|
||||
|
||||
//if (pfld.coupled())
|
||||
//if (isA<CoupledPatchType>(pfld))
|
||||
@ -750,7 +749,7 @@ void correctCoupledBoundaryConditions(fvMesh& mesh)
|
||||
|
||||
forAll(bfld, patchi)
|
||||
{
|
||||
typename GeoField::PatchFieldType& pfld = bfld[patchi];
|
||||
typename GeoField::Patch& pfld = bfld[patchi];
|
||||
|
||||
//if (pfld.coupled())
|
||||
//if (isA<CoupledPatchType>(pfld))
|
||||
@ -768,7 +767,7 @@ void correctCoupledBoundaryConditions(fvMesh& mesh)
|
||||
forAll(patchSchedule, patchEvali)
|
||||
{
|
||||
label patchi = patchSchedule[patchEvali].patch;
|
||||
typename GeoField::PatchFieldType& pfld = bfld[patchi];
|
||||
typename GeoField::Patch& pfld = bfld[patchi];
|
||||
|
||||
//if (pfld.coupled())
|
||||
//if (isA<CoupledPatchType>(pfld))
|
||||
|
||||
@ -70,12 +70,7 @@ tmp<GeometricField<Type, fvPatchField, volMesh>>
|
||||
volField
|
||||
(
|
||||
const fvMeshSubset& meshSubsetter,
|
||||
const typename GeometricField
|
||||
<
|
||||
Type,
|
||||
fvPatchField,
|
||||
volMesh
|
||||
>::DimensionedInternalField& df
|
||||
const typename GeometricField<Type, fvPatchField, volMesh>::Internal& df
|
||||
)
|
||||
{
|
||||
// Construct volField (with zeroGradient) from dimensioned field
|
||||
@ -93,7 +88,7 @@ volField
|
||||
zeroGradientFvPatchField<scalar>::typeName
|
||||
)
|
||||
);
|
||||
tvf.ref().internalField() = df;
|
||||
tvf.ref().primitiveFieldRef() = df;
|
||||
tvf.ref().correctBoundaryConditions();
|
||||
const GeometricField<Type, fvPatchField, volMesh>& vf = tvf();
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -60,7 +60,7 @@ volField
|
||||
Type,
|
||||
Foam::fvPatchField,
|
||||
Foam::volMesh
|
||||
>::DimensionedInternalField& df
|
||||
>::Internal& df
|
||||
);
|
||||
|
||||
|
||||
|
||||
@ -186,11 +186,11 @@ int main(int argc, char *argv[])
|
||||
volSymmTensorField::typeName,
|
||||
volTensorField::typeName,
|
||||
|
||||
volScalarField::DimensionedInternalField::typeName,
|
||||
volVectorField::DimensionedInternalField::typeName,
|
||||
volSphericalTensorField::DimensionedInternalField::typeName,
|
||||
volSymmTensorField::DimensionedInternalField::typeName,
|
||||
volTensorField::DimensionedInternalField::typeName
|
||||
volScalarField::Internal::typeName,
|
||||
volVectorField::Internal::typeName,
|
||||
volSphericalTensorField::Internal::typeName,
|
||||
volSymmTensorField::Internal::typeName,
|
||||
volTensorField::Internal::typeName
|
||||
};
|
||||
|
||||
// Path to EnSight directory at case level only
|
||||
@ -562,15 +562,10 @@ int main(int argc, char *argv[])
|
||||
// DimensionedFields
|
||||
else if
|
||||
(
|
||||
volFieldTypes[i]
|
||||
== volScalarField::DimensionedInternalField::typeName
|
||||
volFieldTypes[i] == volScalarField::Internal::typeName
|
||||
)
|
||||
{
|
||||
volScalarField::DimensionedInternalField df
|
||||
(
|
||||
fieldObject,
|
||||
mesh
|
||||
);
|
||||
volScalarField::Internal df(fieldObject, mesh);
|
||||
ensightField<scalar>
|
||||
(
|
||||
volField<scalar>(meshSubsetter, df),
|
||||
@ -585,15 +580,10 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
else if
|
||||
(
|
||||
volFieldTypes[i]
|
||||
== volVectorField::DimensionedInternalField::typeName
|
||||
volFieldTypes[i] == volVectorField::Internal::typeName
|
||||
)
|
||||
{
|
||||
volVectorField::DimensionedInternalField df
|
||||
(
|
||||
fieldObject,
|
||||
mesh
|
||||
);
|
||||
volVectorField::Internal df(fieldObject, mesh);
|
||||
ensightField<vector>
|
||||
(
|
||||
volField<vector>(meshSubsetter, df),
|
||||
@ -609,14 +599,10 @@ int main(int argc, char *argv[])
|
||||
else if
|
||||
(
|
||||
volFieldTypes[i]
|
||||
== volSphericalTensorField::DimensionedInternalField::typeName
|
||||
== volSphericalTensorField::Internal::typeName
|
||||
)
|
||||
{
|
||||
volSphericalTensorField::DimensionedInternalField df
|
||||
(
|
||||
fieldObject,
|
||||
mesh
|
||||
);
|
||||
volSphericalTensorField::Internal df(fieldObject, mesh);
|
||||
ensightField<sphericalTensor>
|
||||
(
|
||||
volField<sphericalTensor>(meshSubsetter, df),
|
||||
@ -631,15 +617,10 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
else if
|
||||
(
|
||||
volFieldTypes[i]
|
||||
== volSymmTensorField::DimensionedInternalField::typeName
|
||||
volFieldTypes[i] == volSymmTensorField::Internal::typeName
|
||||
)
|
||||
{
|
||||
volSymmTensorField::DimensionedInternalField df
|
||||
(
|
||||
fieldObject,
|
||||
mesh
|
||||
);
|
||||
volSymmTensorField::Internal df(fieldObject, mesh);
|
||||
ensightField<symmTensor>
|
||||
(
|
||||
volField<symmTensor>(meshSubsetter, df),
|
||||
@ -654,15 +635,10 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
else if
|
||||
(
|
||||
volFieldTypes[i]
|
||||
== volTensorField::DimensionedInternalField::typeName
|
||||
volFieldTypes[i] == volTensorField::Internal::typeName
|
||||
)
|
||||
{
|
||||
volTensorField::DimensionedInternalField df
|
||||
(
|
||||
fieldObject,
|
||||
mesh
|
||||
);
|
||||
volTensorField::Internal df(fieldObject, mesh);
|
||||
ensightField<tensor>
|
||||
(
|
||||
volField<tensor>(meshSubsetter, df),
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -618,11 +618,11 @@ int main(int argc, char *argv[])
|
||||
|
||||
|
||||
// Construct dimensioned fields
|
||||
PtrList<volScalarField::DimensionedInternalField> dsf;
|
||||
PtrList<volVectorField::DimensionedInternalField> dvf;
|
||||
PtrList<volSphericalTensorField::DimensionedInternalField> dSpheretf;
|
||||
PtrList<volSymmTensorField::DimensionedInternalField> dSymmtf;
|
||||
PtrList<volTensorField::DimensionedInternalField> dtf;
|
||||
PtrList<const volScalarField::Internal> dsf;
|
||||
PtrList<const volVectorField::Internal> dvf;
|
||||
PtrList<const volSphericalTensorField::Internal> dSpheretf;
|
||||
PtrList<const volSymmTensorField::Internal> dSymmtf;
|
||||
PtrList<const volTensorField::Internal> dtf;
|
||||
|
||||
if (!specifiedFields || selectedFields.size())
|
||||
{
|
||||
|
||||
@ -98,7 +98,7 @@ public:
|
||||
template<class Type, class GeoMesh>
|
||||
void write
|
||||
(
|
||||
const PtrList<DimensionedField<Type, volMesh>>& flds
|
||||
const PtrList<const DimensionedField<Type, volMesh>>& flds
|
||||
);
|
||||
|
||||
//- Interpolate and write volFields
|
||||
@ -114,7 +114,7 @@ public:
|
||||
void write
|
||||
(
|
||||
const volPointInterpolation&,
|
||||
const PtrList<DimensionedField<Type, volMesh>>&
|
||||
const PtrList<const DimensionedField<Type, volMesh>>&
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
@ -44,7 +44,7 @@ void Foam::internalWriter::write
|
||||
template<class Type, class GeoMesh>
|
||||
void Foam::internalWriter::write
|
||||
(
|
||||
const PtrList<DimensionedField<Type, volMesh>>& flds
|
||||
const PtrList<const DimensionedField<Type, volMesh>>& flds
|
||||
)
|
||||
{
|
||||
forAll(flds, i)
|
||||
@ -79,7 +79,7 @@ template<class Type, class GeoMesh>
|
||||
void Foam::internalWriter::write
|
||||
(
|
||||
const volPointInterpolation& pInterp,
|
||||
const PtrList<DimensionedField<Type, volMesh>>& flds
|
||||
const PtrList<const DimensionedField<Type, volMesh>>& flds
|
||||
)
|
||||
{
|
||||
forAll(flds, i)
|
||||
|
||||
@ -64,7 +64,7 @@ void Foam::writeFuns::write
|
||||
(
|
||||
std::ostream& os,
|
||||
const bool binary,
|
||||
const DimensionedField<Type, volMesh>& vvf,
|
||||
const DimensionedField<Type, volMesh>& df,
|
||||
const vtkMesh& vMesh
|
||||
)
|
||||
{
|
||||
@ -74,19 +74,19 @@ void Foam::writeFuns::write
|
||||
|
||||
label nValues = mesh.nCells() + superCells.size();
|
||||
|
||||
os << vvf.name() << ' '
|
||||
os << df.name() << ' '
|
||||
<< int(pTraits<Type>::nComponents) << ' '
|
||||
<< nValues << " float" << std::endl;
|
||||
|
||||
DynamicList<floatScalar> fField(pTraits<Type>::nComponents*nValues);
|
||||
|
||||
insert(vvf.primitiveField(), fField);
|
||||
insert(df.field(), fField);
|
||||
|
||||
forAll(superCells, superCelli)
|
||||
{
|
||||
label origCelli = superCells[superCelli];
|
||||
|
||||
insert(vvf[origCelli], fField);
|
||||
insert(df[origCelli], fField);
|
||||
}
|
||||
write(os, binary, fField);
|
||||
}
|
||||
|
||||
@ -116,11 +116,11 @@ void Foam::writeVTKFields
|
||||
Info<< " writing field " << fieldNames[fieldi] << endl;
|
||||
os << nl << fieldNames[fieldi] << ' '
|
||||
<< int(pTraits<Type>::nComponents) << ' '
|
||||
<< values[fieldI].size() << " float" << nl;
|
||||
<< values[fieldi].size() << " float" << nl;
|
||||
label offset = 0;
|
||||
forAll(addr, trackI)
|
||||
forAll(addr, tracki)
|
||||
{
|
||||
const List<label> ids(addr[trackI]);
|
||||
const List<label> ids(addr[tracki]);
|
||||
|
||||
List<Type> data(UIndirectList<Type>(values[fieldi], ids));
|
||||
label nData = data.size() - 1;
|
||||
|
||||
@ -93,7 +93,7 @@ void correctProcessorPatches(volScalarField& vf)
|
||||
// Not possible to use correctBoundaryConditions on fields as they may
|
||||
// use local info as opposed to the constraint values employed here,
|
||||
// but still need to update processor patches
|
||||
volScalarField::GeometricBoundaryField& bf = vf.boundaryField();
|
||||
volScalarField::Boundary& bf = vf.boundaryFieldRef();
|
||||
|
||||
forAll(bf, patchI)
|
||||
{
|
||||
@ -134,8 +134,8 @@ void blendField
|
||||
if (fieldHeader.typeHeaderOk<volScalarField>(true))
|
||||
{
|
||||
volScalarField fld(fieldHeader, mesh);
|
||||
scalarField& internalField = fld.internalField();
|
||||
internalField = (1 - mask)*internalField + mask*boundaryLayerField;
|
||||
scalarField& pf = fld.primitiveFieldRef();
|
||||
pf = (1 - mask)*pf + mask*boundaryLayerField;
|
||||
fld.max(SMALL);
|
||||
|
||||
// Do not correct BC
|
||||
@ -172,10 +172,9 @@ void calcOmegaField
|
||||
if (omegaHeader.typeHeaderOk<volScalarField>(true))
|
||||
{
|
||||
volScalarField omega(omegaHeader, mesh);
|
||||
scalarField& internalField = omega.internalField();
|
||||
scalarField& pf = omega.primitiveFieldRef();
|
||||
|
||||
internalField =
|
||||
(1 - mask)*internalField + mask*epsilonBL/(Cmu*kBL + SMALL);
|
||||
pf = (1 - mask)*pf + mask*epsilonBL/(Cmu*kBL + SMALL);
|
||||
omega.max(SMALL);
|
||||
|
||||
// Do not correct BC
|
||||
|
||||
@ -52,7 +52,7 @@ volScalarField y
|
||||
dimensionedScalar("zero", dimLength, 0.0),
|
||||
zeroGradientFvPatchScalarField::typeName
|
||||
);
|
||||
y.internalField() = wallDist::New(mesh).y().internalField();
|
||||
y.primitiveFieldRef() = wallDist::New(mesh).y().primitiveField();
|
||||
y.correctBoundaryConditions();
|
||||
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
EXE_INC = \
|
||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||
-I$(LIB_SRC)/meshTools/lnInclude \
|
||||
-I$(LIB_SRC)/postProcessing/functionObjects/jobControl/lnInclude
|
||||
-I$(LIB_SRC)/functionObjects/field/lnInclude
|
||||
|
||||
EXE_LIBS = \
|
||||
-lfiniteVolume \
|
||||
-ljobControl
|
||||
-lfieldFunctionObjects
|
||||
|
||||
@ -56,12 +56,12 @@ Note:
|
||||
used for face addressing starts at index 0.
|
||||
|
||||
See also
|
||||
externalCoupledFunctionObject
|
||||
functionObjects::externalCoupled
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "fvCFD.H"
|
||||
#include "externalCoupledFunctionObject.H"
|
||||
#include "externalCoupled.H"
|
||||
#include "IOobjectList.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
@ -119,7 +119,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
|
||||
externalCoupledFunctionObject::writeGeometry
|
||||
functionObjects::externalCoupled::writeGeometry
|
||||
(
|
||||
UPtrList<const fvMesh>(meshes),
|
||||
commsDir,
|
||||
|
||||
@ -786,6 +786,8 @@ int main(int argc, char *argv[])
|
||||
);
|
||||
|
||||
label compactI = 0;
|
||||
|
||||
volScalarField::Boundary& vfbf = viewFactorField.boundaryFieldRef();
|
||||
forAll(viewFactorsPatches, i)
|
||||
{
|
||||
label patchID = viewFactorsPatches[i];
|
||||
@ -805,7 +807,7 @@ int main(int argc, char *argv[])
|
||||
forAll(fineFaces, fineId)
|
||||
{
|
||||
const label faceID = fineFaces[fineId];
|
||||
viewFactorField.boundaryField()[patchID][faceID] = Fij;
|
||||
vfbf[patchID][faceID] = Fij;
|
||||
}
|
||||
compactI++;
|
||||
}
|
||||
|
||||
@ -230,7 +230,7 @@ void writeParts
|
||||
{
|
||||
boolList includeMap(surf.size(), false);
|
||||
|
||||
forAll(faceZone, faceI)
|
||||
forAll(faceZone, facei)
|
||||
{
|
||||
if (faceZone[facei] == zone)
|
||||
{
|
||||
@ -651,7 +651,7 @@ int main(int argc, char *argv[])
|
||||
{
|
||||
Info<< " close unconnected points "
|
||||
<< pti << ' ' << localPoints[pti]
|
||||
<< " and " << prevPtI << ' '
|
||||
<< " and " << prevPti << ' '
|
||||
<< localPoints[prevPti]
|
||||
<< " distance:"
|
||||
<< mag(localPoints[pti] - localPoints[prevPti])
|
||||
@ -660,8 +660,8 @@ int main(int argc, char *argv[])
|
||||
else
|
||||
{
|
||||
Info<< " small edge between points "
|
||||
<< ptI << ' ' << localPoints[pti]
|
||||
<< " and " << prevPtI << ' '
|
||||
<< pti << ' ' << localPoints[pti]
|
||||
<< " and " << prevPti << ' '
|
||||
<< localPoints[prevPti]
|
||||
<< " distance:"
|
||||
<< mag(localPoints[pti] - localPoints[prevPti])
|
||||
@ -837,7 +837,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
label nInt = 0;
|
||||
|
||||
forAll(surf.edges(), edgeI)
|
||||
forAll(surf.edges(), edgei)
|
||||
{
|
||||
const edge& e = surf.edges()[edgei];
|
||||
|
||||
|
||||
@ -44,14 +44,14 @@ PROJECT_NUMBER = $(WM_PROJECT_VERSION)
|
||||
# for a project that appears at the top of each page and should give viewer a
|
||||
# quick idea about the purpose of the project. Keep the description short.
|
||||
|
||||
PROJECT_BRIEF = "The OpenFOAM Foundation"
|
||||
PROJECT_BRIEF = "The open source CFD toolbox"
|
||||
|
||||
# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
|
||||
# in the documentation. The maximum height of the logo should not exceed 55
|
||||
# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
|
||||
# the logo to the output directory.
|
||||
|
||||
PROJECT_LOGO = CFDFoundation55x55.png
|
||||
PROJECT_LOGO = OpenFOAM-logo2-55x55.png
|
||||
|
||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
|
||||
# into which the generated documentation will be written. If a relative path is
|
||||
@ -168,7 +168,8 @@ STRIP_FROM_INC_PATH =
|
||||
# support long names like on DOS, Mac, or CD-ROM.
|
||||
# The default value is: NO.
|
||||
|
||||
SHORT_NAMES = YES
|
||||
#SHORT_NAMES = YES
|
||||
SHORT_NAMES = NO
|
||||
|
||||
# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
|
||||
# first line (until the first dot) of a Javadoc-style comment as the brief
|
||||
@ -1128,7 +1129,7 @@ HTML_EXTRA_FILES =
|
||||
# Minimum value: 0, maximum value: 359, default value: 220.
|
||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||
|
||||
HTML_COLORSTYLE_HUE = 120
|
||||
HTML_COLORSTYLE_HUE = 220
|
||||
|
||||
# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
|
||||
# in the HTML output. For a value of 0 the output will use grayscales only. A
|
||||
@ -1426,7 +1427,7 @@ EXT_LINKS_IN_WINDOW = NO
|
||||
# Minimum value: 8, maximum value: 50, default value: 10.
|
||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||
|
||||
FORMULA_FONTSIZE = 12
|
||||
FORMULA_FONTSIZE = 14
|
||||
|
||||
# Use the FORMULA_TRANPARENT tag to determine whether or not the images
|
||||
# generated for formulas are transparent PNGs. Transparent PNGs are not
|
||||
|
||||
@ -11,11 +11,27 @@
|
||||
</div>
|
||||
<!--END GENERATE_TREEVIEW-->
|
||||
<!--BEGIN !GENERATE_TREEVIEW-->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
<hr class="footer"/>
|
||||
<address class="footer">
|
||||
<small>
|
||||
<p>
|
||||
Copyright © 2011-2016
|
||||
<a href="http://www.openfoam.com">OpenFOAM</a>
|
||||
|
|
||||
OPENFOAM® is a registered
|
||||
<a href="http://www.openfoam.com/legal/trademark-policy.php">trademark
|
||||
</a> of OpenCFD Ltd.
|
||||
</p>
|
||||
<p>
|
||||
$generatedby  <a href="http://www.doxygen.org/index.html">
|
||||
<img class="footer" src="$relpath^doxygen.png" alt="doxygen"/>
|
||||
</a> $doxygenversion
|
||||
</small></address>
|
||||
</p>
|
||||
</small>
|
||||
</address>
|
||||
<!--END !GENERATE_TREEVIEW-->
|
||||
<!-- BEGIN MATHJAX-->
|
||||
$mathjax
|
||||
<!-- END MATHJAX-->
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@ -32,7 +32,7 @@ $extrastylesheet
|
||||
<div id="projectname"><a href="http://openfoam.com">$projectname</a>
|
||||
<!--BEGIN PROJECT_NUMBER--> <span id="projectnumber"><a href="http://openfoam.com/download/source">$projectnumber</a></span><!--END PROJECT_NUMBER-->
|
||||
</div>
|
||||
<!--BEGIN PROJECT_BRIEF--><div id="projectbrief"><a href="http://openfoam.com/dev">$projectbrief</a></div><!--END PROJECT_BRIEF-->
|
||||
<!--BEGIN PROJECT_BRIEF--><div id="projectbrief"><a href="https://develop.openfoam.com">$projectbrief</a></div><!--END PROJECT_BRIEF-->
|
||||
</td>
|
||||
<!--END PROJECT_NAME-->
|
||||
<!--BEGIN !PROJECT_NAME-->
|
||||
|
||||
@ -47,11 +47,7 @@ wmake $targetType lagrangian/basic
|
||||
wmake $targetType lagrangian/distributionModels
|
||||
wmake $targetType genericPatchFields
|
||||
|
||||
<<<<<<< HEAD
|
||||
conversion/Allwmake $targetType $*
|
||||
=======
|
||||
wmake $targetType conversion
|
||||
>>>>>>> foundation-github
|
||||
wmake $targetType mesh/extrudeModel
|
||||
wmake $targetType dynamicMesh
|
||||
wmake $targetType sampling
|
||||
|
||||
@ -1316,8 +1316,6 @@ Foam::Time& Foam::Time::operator++()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
functionObjects_.timeSet();
|
||||
}
|
||||
|
||||
return *this;
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -281,6 +281,15 @@ extern messageStream Info;
|
||||
// for FUNCTION_NAME in file __FILE__ at line __LINE__
|
||||
#define InfoInFunction InfoIn(FUNCTION_NAME)
|
||||
|
||||
//- Report an information message using Foam::Pout
|
||||
// for functionName in file __FILE__ at line __LINE__
|
||||
#define PoutIn(functionName) \
|
||||
::Foam::Pout((functionName), __FILE__, __LINE__)
|
||||
|
||||
//- Report an information message using Foam::Pout
|
||||
// for FUNCTION_NAME in file __FILE__ at line __LINE__
|
||||
#define PoutInFunction PoutIn(FUNCTION_NAME)
|
||||
|
||||
//- Report write to Foam::Info if the local log switch is true
|
||||
#define Log \
|
||||
if (log) Info
|
||||
@ -309,6 +318,17 @@ extern messageStream Info;
|
||||
#define DebugInFunction \
|
||||
if (debug) InfoInFunction
|
||||
|
||||
//- Report an information message using Foam::Pout
|
||||
// if the local debug switch is true
|
||||
#define DebugPout \
|
||||
if (debug) Pout
|
||||
|
||||
//- Report an information message using Foam::Pout
|
||||
// for FUNCTION_NAME in file __FILE__ at line __LINE__
|
||||
// if the local debug switch is true
|
||||
#define DebugPoutInFunction \
|
||||
if (debug) PoutInFunction
|
||||
|
||||
//- Report a variable name and value
|
||||
// using Foam::Pout in file __FILE__ at line __LINE__
|
||||
#define DebugVar(var) \
|
||||
|
||||
@ -1,147 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "IOOutputFilter.H"
|
||||
#include "Time.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
template<class OutputFilter>
|
||||
Foam::IOOutputFilter<OutputFilter>::IOOutputFilter
|
||||
(
|
||||
const word& outputFilterName,
|
||||
const IOobject& ioDict,
|
||||
const bool readFromFiles
|
||||
)
|
||||
:
|
||||
IOdictionary(ioDict),
|
||||
OutputFilter(outputFilterName, ioDict.db(), *this, readFromFiles)
|
||||
{}
|
||||
|
||||
|
||||
template<class OutputFilter>
|
||||
Foam::IOOutputFilter<OutputFilter>::IOOutputFilter
|
||||
(
|
||||
const word& outputFilterName,
|
||||
const objectRegistry& obr,
|
||||
const word& dictName,
|
||||
const IOobject::readOption rOpt,
|
||||
const bool readFromFiles
|
||||
)
|
||||
:
|
||||
IOdictionary
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
dictName,
|
||||
obr.time().system(),
|
||||
obr,
|
||||
rOpt,
|
||||
IOobject::NO_WRITE
|
||||
)
|
||||
),
|
||||
OutputFilter(outputFilterName, obr, *this, readFromFiles)
|
||||
{}
|
||||
|
||||
|
||||
template<class OutputFilter>
|
||||
Foam::IOOutputFilter<OutputFilter>::IOOutputFilter
|
||||
(
|
||||
const word& outputFilterName,
|
||||
const objectRegistry& obr,
|
||||
const fileName& dictName,
|
||||
const IOobject::readOption rOpt,
|
||||
const bool readFromFiles
|
||||
)
|
||||
:
|
||||
IOdictionary
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
dictName,
|
||||
obr,
|
||||
rOpt,
|
||||
IOobject::NO_WRITE
|
||||
)
|
||||
),
|
||||
OutputFilter(outputFilterName, obr, *this, readFromFiles)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
template<class OutputFilter>
|
||||
Foam::IOOutputFilter<OutputFilter>::~IOOutputFilter()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
template<class OutputFilter>
|
||||
const Foam::word& Foam::IOOutputFilter<OutputFilter>::name() const
|
||||
{
|
||||
return IOdictionary::name();
|
||||
}
|
||||
|
||||
|
||||
template<class OutputFilter>
|
||||
bool Foam::IOOutputFilter<OutputFilter>::read()
|
||||
{
|
||||
if (regIOobject::read())
|
||||
{
|
||||
OutputFilter::read(*this);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template<class OutputFilter>
|
||||
bool Foam::IOOutputFilter<OutputFilter>::write()
|
||||
{
|
||||
return OutputFilter::write();
|
||||
}
|
||||
|
||||
|
||||
template<class OutputFilter>
|
||||
void Foam::IOOutputFilter<OutputFilter>::updateMesh(const mapPolyMesh& mpm)
|
||||
{
|
||||
read();
|
||||
OutputFilter::updateMesh(mpm);
|
||||
}
|
||||
|
||||
|
||||
template<class OutputFilter>
|
||||
void Foam::IOOutputFilter<OutputFilter>::movePoints(const polyMesh& mesh)
|
||||
{
|
||||
read();
|
||||
OutputFilter::movePoints(mesh);
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,153 +0,0 @@
|
||||
/*---------------------------------------------------------------------------* \
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Class
|
||||
Foam::IOOutputFilter
|
||||
|
||||
Description
|
||||
IOdictionary wrapper around OutputFilter to allow them to read from
|
||||
their associated dictionaries.
|
||||
|
||||
Note
|
||||
The IOobject or the objectRegistry will normally have to be
|
||||
derived from a fvMesh for a subsequent cast (within OutputFilter)
|
||||
to work correctly.
|
||||
|
||||
SourceFiles
|
||||
IOOutputFilter.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef IOOutputFilter_H
|
||||
#define IOOutputFilter_H
|
||||
|
||||
#include "IOdictionary.H"
|
||||
#include "pointFieldFwd.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// Forward declaration of classes
|
||||
class mapPolyMesh;
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class IOOutputFilter Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template<class OutputFilter>
|
||||
class IOOutputFilter
|
||||
:
|
||||
public IOdictionary,
|
||||
public OutputFilter
|
||||
{
|
||||
// Private Member Functions
|
||||
|
||||
// Disallow default bitwise copy construct and assignment
|
||||
IOOutputFilter(const IOOutputFilter&);
|
||||
void operator=(const IOOutputFilter&);
|
||||
|
||||
|
||||
public:
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from an IOobject for IOdictionary
|
||||
// Allow the possibility to load fields from files
|
||||
IOOutputFilter
|
||||
(
|
||||
const word& outputFilterName,
|
||||
const IOobject& ioDict,
|
||||
const bool loadFromFile = false
|
||||
);
|
||||
|
||||
//- Construct for given objectRegistry and dictionary
|
||||
// Allow dictionary to be optional
|
||||
// Allow the possibility to load fields from files
|
||||
IOOutputFilter
|
||||
(
|
||||
const word& outputFilterName,
|
||||
const objectRegistry&,
|
||||
const word& dictName = OutputFilter::typeName() + "Dict",
|
||||
const IOobject::readOption rOpt = IOobject::MUST_READ_IF_MODIFIED,
|
||||
const bool loadFromFile = false
|
||||
);
|
||||
|
||||
//- Construct for given objectRegistry and dictionary
|
||||
// Dictionary read from full path.
|
||||
// Allow the possibility to load fields from files
|
||||
IOOutputFilter
|
||||
(
|
||||
const word& outputFilterName,
|
||||
const objectRegistry&,
|
||||
const fileName& dictName,
|
||||
const IOobject::readOption rOpt = IOobject::MUST_READ_IF_MODIFIED,
|
||||
const bool loadFromFile = false
|
||||
);
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~IOOutputFilter();
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Return name
|
||||
virtual const word& name() const;
|
||||
|
||||
//- Inherit read from OutputFilter
|
||||
using OutputFilter::read;
|
||||
|
||||
//- Read output filter properties
|
||||
virtual bool read();
|
||||
|
||||
//- Inherit write from regIOobject
|
||||
using regIOobject::write;
|
||||
|
||||
//- Sample and write
|
||||
virtual bool write();
|
||||
|
||||
//- Update for changes of mesh
|
||||
virtual void updateMesh(const mapPolyMesh& mpm);
|
||||
|
||||
//- Update for changes of mesh
|
||||
virtual void movePoints(const polyMesh& mesh);
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
#include "IOOutputFilter.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -520,11 +520,6 @@ bool Foam::functionObjectList::execute()
|
||||
|
||||
if (execution_)
|
||||
{
|
||||
if (forceWrite)
|
||||
{
|
||||
resetState();
|
||||
}
|
||||
|
||||
if (!updated_)
|
||||
{
|
||||
read();
|
||||
@ -532,23 +527,20 @@ bool Foam::functionObjectList::execute()
|
||||
|
||||
forAll(*this, objectI)
|
||||
{
|
||||
addProfiling
|
||||
(
|
||||
fo,
|
||||
"functionObject::" + operator[](objectI).name() + "::execute"
|
||||
);
|
||||
const word& objName = operator[](objectI).name();
|
||||
{
|
||||
addProfiling(fo, "functionObject::" + objName + "::execute");
|
||||
|
||||
ok = operator[](objectI).execute() && ok;
|
||||
}
|
||||
|
||||
addProfiling
|
||||
(
|
||||
fo,
|
||||
"functionObject::" + operator[](objectI).name() + "::write"
|
||||
);
|
||||
{
|
||||
addProfiling(fo, "functionObject::" + objName + "::write");
|
||||
|
||||
ok = operator[](objectI).write() && ok;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Force writing of state dictionary after function object execution
|
||||
if (time_.outputTime())
|
||||
@ -583,11 +575,9 @@ bool Foam::functionObjectList::end()
|
||||
|
||||
forAll(*this, objectI)
|
||||
{
|
||||
addProfiling
|
||||
(
|
||||
fo,
|
||||
"functionObject::" + operator[](objectI).name() + "::end"
|
||||
);
|
||||
const word& objName = operator[](objectI).name();
|
||||
|
||||
addProfiling(fo, "functionObject::" + objName + "::end");
|
||||
|
||||
ok = operator[](objectI).end() && ok;
|
||||
}
|
||||
@ -610,12 +600,9 @@ bool Foam::functionObjectList::adjustTimeStep()
|
||||
|
||||
forAll(*this, objectI)
|
||||
{
|
||||
addProfiling
|
||||
(
|
||||
fo,
|
||||
"functionObject::" + operator[](objectI).name()
|
||||
+ "::adjustTimeStep"
|
||||
);
|
||||
const word& objName = operator[](objectI).name();
|
||||
|
||||
addProfiling(fo, "functionObject::" + objName + "::adjustTimeStep");
|
||||
|
||||
ok = operator[](objectI).adjustTimeStep() && ok;
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -40,7 +40,7 @@ void Foam::functionObjects::logFiles::createFiles()
|
||||
{
|
||||
if (!filePtrs_.set(i))
|
||||
{
|
||||
filePtrs_.set(i, createFile(names_[i]);
|
||||
filePtrs_.set(i, createFile(names_[i]));
|
||||
|
||||
initStream(filePtrs_[i]);
|
||||
}
|
||||
@ -67,7 +67,7 @@ void Foam::functionObjects::logFiles::resetName(const word& name)
|
||||
names_.clear();
|
||||
names_.append(name);
|
||||
|
||||
resetFile(name);
|
||||
writeFile::resetFile(name);
|
||||
}
|
||||
|
||||
|
||||
@ -85,6 +85,21 @@ Foam::functionObjects::logFiles::logFiles
|
||||
{}
|
||||
|
||||
|
||||
Foam::functionObjects::logFiles::logFiles
|
||||
(
|
||||
const objectRegistry& obr,
|
||||
const word& prefix,
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
writeFile(obr, prefix),
|
||||
names_(),
|
||||
filePtrs_()
|
||||
{
|
||||
writeFile::read(dict);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::functionObjects::logFiles::~logFiles()
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2012-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -41,7 +41,6 @@ SourceFiles
|
||||
#define functionObjects_logFiles_H
|
||||
|
||||
#include "writeFile.H"
|
||||
#include "OFstream.H"
|
||||
#include "PtrList.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
@ -82,9 +81,6 @@ protected:
|
||||
//- Reset the list of names to a single name entry
|
||||
virtual void resetName(const word& name);
|
||||
|
||||
//- File header information
|
||||
virtual void writeFileHeader(const label i = 0) = 0;
|
||||
|
||||
|
||||
private:
|
||||
|
||||
@ -109,6 +105,16 @@ public:
|
||||
);
|
||||
|
||||
|
||||
//- Construct from objectRegistry and prefix, and read options
|
||||
// from dictionary
|
||||
logFiles
|
||||
(
|
||||
const objectRegistry& obr,
|
||||
const word& prefix,
|
||||
const dictionary& dict
|
||||
);
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~logFiles();
|
||||
|
||||
|
||||
@ -97,8 +97,7 @@ Foam::functionObjects::regionFunctionObject::regionFunctionObject
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
functionObject(name),
|
||||
time_(runTime),
|
||||
stateFunctionObject(name, runTime),
|
||||
obr_
|
||||
(
|
||||
runTime.lookupObject<objectRegistry>
|
||||
@ -116,8 +115,7 @@ Foam::functionObjects::regionFunctionObject::regionFunctionObject
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
functionObject(name),
|
||||
time_(obr.time()),
|
||||
stateFunctionObject(name, obr.time()),
|
||||
obr_(obr)
|
||||
{}
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -29,7 +29,7 @@ Description
|
||||
reference to the region Foam::objectRegistry.
|
||||
|
||||
See also
|
||||
Foam::functionObject
|
||||
Foam::functionObjects::stateFunctionObject
|
||||
|
||||
SourceFiles
|
||||
regionFunctionObject.C
|
||||
@ -39,7 +39,7 @@ SourceFiles
|
||||
#ifndef functionObjects_regionFunctionObject_H
|
||||
#define functionObjects_regionFunctionObject_H
|
||||
|
||||
#include "functionObject.H"
|
||||
#include "stateFunctionObject.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -58,16 +58,13 @@ namespace functionObjects
|
||||
|
||||
class regionFunctionObject
|
||||
:
|
||||
public functionObject
|
||||
public stateFunctionObject
|
||||
{
|
||||
|
||||
protected:
|
||||
|
||||
// Protected member data
|
||||
|
||||
//- Reference to the Time
|
||||
const Time& time_;
|
||||
|
||||
//- Reference to the region objectRegistry
|
||||
const objectRegistry& obr_;
|
||||
|
||||
@ -86,7 +83,7 @@ protected:
|
||||
template<class ObjectType>
|
||||
bool store
|
||||
(
|
||||
word& fieldName,
|
||||
const word& fieldName,
|
||||
const tmp<ObjectType>& tfield,
|
||||
bool cacheable = false
|
||||
);
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -51,7 +51,7 @@ const ObjectType& Foam::functionObjects::regionFunctionObject::lookupObject
|
||||
template<class ObjectType>
|
||||
bool Foam::functionObjects::regionFunctionObject::store
|
||||
(
|
||||
word& fieldName,
|
||||
const word& fieldName,
|
||||
const tmp<ObjectType>& tfield,
|
||||
bool cacheable
|
||||
)
|
||||
@ -68,16 +68,9 @@ bool Foam::functionObjects::regionFunctionObject::store
|
||||
return false;
|
||||
}
|
||||
|
||||
if
|
||||
(
|
||||
fieldName.size()
|
||||
&& obr_.foundObject<ObjectType>(fieldName)
|
||||
)
|
||||
if (fieldName.size() && foundObject<ObjectType>(fieldName))
|
||||
{
|
||||
const ObjectType& field =
|
||||
(
|
||||
obr_.lookupObject<ObjectType>(fieldName)
|
||||
);
|
||||
const ObjectType& field = lookupObject<ObjectType>(fieldName);
|
||||
|
||||
// If there is a result field already registered assign to the new
|
||||
// result field otherwise transfer ownership of the new result field to
|
||||
@ -97,10 +90,6 @@ bool Foam::functionObjects::regionFunctionObject::store
|
||||
{
|
||||
tfield.ref().rename(fieldName);
|
||||
}
|
||||
else
|
||||
{
|
||||
fieldName = tfield().name();
|
||||
}
|
||||
|
||||
obr_.objectRegistry::store(tfield.ptr());
|
||||
}
|
||||
|
||||
@ -23,79 +23,71 @@ License
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "functionObjectState.H"
|
||||
#include "stateFunctionObject.H"
|
||||
#include "Time.H"
|
||||
|
||||
const Foam::word Foam::functionObjectState::resultsName_ = "results";
|
||||
const Foam::word Foam::functionObjects::stateFunctionObject::resultsName_ =
|
||||
"results";
|
||||
|
||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||
|
||||
const Foam::IOdictionary& Foam::functionObjectState::stateDict() const
|
||||
const Foam::IOdictionary&
|
||||
Foam::functionObjects::stateFunctionObject::stateDict() const
|
||||
{
|
||||
return obr_.time().functionObjects().stateDict();
|
||||
return time_.functionObjects().stateDict();
|
||||
}
|
||||
|
||||
|
||||
Foam::IOdictionary& Foam::functionObjectState::stateDict()
|
||||
Foam::IOdictionary& Foam::functionObjects::stateFunctionObject::stateDict()
|
||||
{
|
||||
return const_cast<IOdictionary&>(obr_.time().functionObjects().stateDict());
|
||||
return const_cast<IOdictionary&>(time_.functionObjects().stateDict());
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::functionObjectState::functionObjectState
|
||||
Foam::functionObjects::stateFunctionObject::stateFunctionObject
|
||||
(
|
||||
const objectRegistry& obr,
|
||||
const word& name
|
||||
const word& name,
|
||||
const Time& runTime
|
||||
)
|
||||
:
|
||||
obr_(obr),
|
||||
name_(name),
|
||||
active_(true)
|
||||
functionObject(name),
|
||||
time_(runTime)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::functionObjectState::~functionObjectState()
|
||||
Foam::functionObjects::stateFunctionObject::~stateFunctionObject()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
const Foam::word& Foam::functionObjectState::name() const
|
||||
{
|
||||
return name_;
|
||||
}
|
||||
|
||||
|
||||
bool Foam::functionObjectState::active() const
|
||||
{
|
||||
return active_;
|
||||
}
|
||||
|
||||
|
||||
Foam::dictionary& Foam::functionObjectState::propertyDict()
|
||||
Foam::dictionary& Foam::functionObjects::stateFunctionObject::propertyDict()
|
||||
{
|
||||
IOdictionary& stateDict = this->stateDict();
|
||||
|
||||
if (!stateDict.found(name_))
|
||||
if (!stateDict.found(name()))
|
||||
{
|
||||
stateDict.add(name_, dictionary());
|
||||
stateDict.add(name(), dictionary());
|
||||
}
|
||||
|
||||
return stateDict.subDict(name_);
|
||||
return stateDict.subDict(name());
|
||||
}
|
||||
|
||||
|
||||
bool Foam::functionObjectState::foundProperty(const word& entryName) const
|
||||
bool Foam::functionObjects::stateFunctionObject::foundProperty
|
||||
(
|
||||
const word& entryName
|
||||
) const
|
||||
{
|
||||
const IOdictionary& stateDict = this->stateDict();
|
||||
|
||||
if (stateDict.found(name_))
|
||||
if (stateDict.found(name()))
|
||||
{
|
||||
const dictionary& baseDict = stateDict.subDict(name_);
|
||||
const dictionary& baseDict = stateDict.subDict(name());
|
||||
return baseDict.found(entryName);
|
||||
}
|
||||
|
||||
@ -103,13 +95,16 @@ bool Foam::functionObjectState::foundProperty(const word& entryName) const
|
||||
}
|
||||
|
||||
|
||||
Foam::word Foam::functionObjectState::resultType(const word& entryName) const
|
||||
Foam::word Foam::functionObjects::stateFunctionObject::resultType
|
||||
(
|
||||
const word& entryName
|
||||
) const
|
||||
{
|
||||
return objectResultType(name_, entryName);
|
||||
return objectResultType(name(), entryName);
|
||||
}
|
||||
|
||||
|
||||
Foam::word Foam::functionObjectState::objectResultType
|
||||
Foam::word Foam::functionObjects::stateFunctionObject::objectResultType
|
||||
(
|
||||
const word& objectName,
|
||||
const word& entryName
|
||||
@ -142,13 +137,15 @@ Foam::word Foam::functionObjectState::objectResultType
|
||||
}
|
||||
|
||||
|
||||
Foam::List<Foam::word> Foam::functionObjectState::objectResultEntries() const
|
||||
Foam::List<Foam::word>
|
||||
Foam::functionObjects::stateFunctionObject::objectResultEntries() const
|
||||
{
|
||||
return objectResultEntries(name_);
|
||||
return objectResultEntries(name());
|
||||
}
|
||||
|
||||
|
||||
Foam::List<Foam::word> Foam::functionObjectState::objectResultEntries
|
||||
Foam::List<Foam::word> Foam::functionObjects::stateFunctionObject::
|
||||
objectResultEntries
|
||||
(
|
||||
const word& objectName
|
||||
) const
|
||||
@ -29,60 +29,67 @@ Description
|
||||
information (data required for smooth restart behaviour) and results
|
||||
to/from the state dictionary
|
||||
|
||||
See Also
|
||||
Note: cannot access the state dictionary until after construction of the
|
||||
function objects, since the owner container functionObjectList is owned
|
||||
by time, and time owns the state dictionary. I.e. need to wait for time
|
||||
to be fully consttucted.
|
||||
|
||||
See also
|
||||
Foam::functionObject
|
||||
|
||||
SourceFiles
|
||||
functionObjectState.C
|
||||
stateFunctionObject.C
|
||||
stateFunctionObjectTemplates.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef functionObjectState_H
|
||||
#define functionObjectState_H
|
||||
#ifndef functionObjects_stateFunctionObject_H
|
||||
#define functionObjects_stateFunctionObject_H
|
||||
|
||||
#include "objectRegistry.H"
|
||||
#include "IOdictionary.H"
|
||||
#include "functionObject.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
class IOdictionary;
|
||||
|
||||
namespace functionObjects
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class functionObjectState Declaration
|
||||
Class stateFunctionObject Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
class functionObjectState
|
||||
class stateFunctionObject
|
||||
:
|
||||
public functionObject
|
||||
{
|
||||
|
||||
private:
|
||||
|
||||
// Private data
|
||||
// Private member data
|
||||
|
||||
//- Name of the results dictionary
|
||||
static const word resultsName_;
|
||||
|
||||
//- Reference to the database
|
||||
const objectRegistry& obr_;
|
||||
|
||||
|
||||
// Private Member Functions
|
||||
|
||||
//- Disallow default bitwise copy construct
|
||||
functionObjectState(const functionObjectState&);
|
||||
stateFunctionObject(const stateFunctionObject&) = delete;
|
||||
|
||||
//- Disallow default bitwise assignment
|
||||
void operator=(const functionObjectState&);
|
||||
void operator=(const stateFunctionObject&) = delete;
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
// Protected data
|
||||
// Protected Member Data
|
||||
|
||||
//- Name of model
|
||||
const word name_;
|
||||
|
||||
//- Flag to indicate whether the object is active
|
||||
bool active_;
|
||||
//- Reference to the time database
|
||||
const Time& time_;
|
||||
|
||||
|
||||
// Protacted Member Functions
|
||||
@ -100,29 +107,18 @@ public:
|
||||
// Constructors
|
||||
|
||||
//- Construct from components
|
||||
functionObjectState(const objectRegistry& obr, const word& name);
|
||||
stateFunctionObject(const word& name, const Time& runTime);
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~functionObjectState();
|
||||
~stateFunctionObject();
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Return the name
|
||||
const word& name() const;
|
||||
|
||||
//- Return the active flag
|
||||
bool active() const;
|
||||
|
||||
//- Return access to the property dictionary
|
||||
dictionary& propertyDict();
|
||||
|
||||
//- Set the active status by querying objectRegistry type
|
||||
// returns new active status
|
||||
template<class Type>
|
||||
bool setActive();
|
||||
|
||||
|
||||
// Properties
|
||||
|
||||
@ -238,12 +234,13 @@ public:
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace functionObjects
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
#include "functionObjectStateTemplates.C"
|
||||
#include "stateFunctionObjectTemplates.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
|
||||
\\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -23,28 +23,12 @@ License
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "IOdictionary.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
template<class Type>
|
||||
bool Foam::functionObjectState::setActive()
|
||||
{
|
||||
active_ = true;
|
||||
|
||||
if (!isA<Type>(obr_))
|
||||
{
|
||||
WarningInFunction
|
||||
<< "No " << Type::typeName << " available, deactivating " << name_
|
||||
<< endl;
|
||||
|
||||
active_ = false;
|
||||
}
|
||||
|
||||
return active_;
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
Type Foam::functionObjectState::getProperty
|
||||
Type Foam::functionObjects::stateFunctionObject::getProperty
|
||||
(
|
||||
const word& entryName,
|
||||
const Type& defaultValue
|
||||
@ -57,29 +41,29 @@ Type Foam::functionObjectState::getProperty
|
||||
|
||||
|
||||
template<class Type>
|
||||
void Foam::functionObjectState::getProperty
|
||||
void Foam::functionObjects::stateFunctionObject::getProperty
|
||||
(
|
||||
const word& entryName,
|
||||
Type& value
|
||||
) const
|
||||
{
|
||||
getObjectProperty(name_, entryName, value);
|
||||
getObjectProperty(name(), entryName, value);
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
void Foam::functionObjectState::setProperty
|
||||
void Foam::functionObjects::stateFunctionObject::setProperty
|
||||
(
|
||||
const word& entryName,
|
||||
const Type& value
|
||||
)
|
||||
{
|
||||
setObjectProperty(name_, entryName, value);
|
||||
setObjectProperty(name(), entryName, value);
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
Type Foam::functionObjectState::getObjectProperty
|
||||
Type Foam::functionObjects::stateFunctionObject::getObjectProperty
|
||||
(
|
||||
const word& objectName,
|
||||
const word& entryName,
|
||||
@ -93,7 +77,7 @@ Type Foam::functionObjectState::getObjectProperty
|
||||
|
||||
|
||||
template<class Type>
|
||||
void Foam::functionObjectState::getObjectProperty
|
||||
void Foam::functionObjects::stateFunctionObject::getObjectProperty
|
||||
(
|
||||
const word& objectName,
|
||||
const word& entryName,
|
||||
@ -121,7 +105,7 @@ void Foam::functionObjectState::getObjectProperty
|
||||
|
||||
|
||||
template<class Type>
|
||||
void Foam::functionObjectState::setObjectProperty
|
||||
void Foam::functionObjects::stateFunctionObject::setObjectProperty
|
||||
(
|
||||
const word& objectName,
|
||||
const word& entryName,
|
||||
@ -141,18 +125,18 @@ void Foam::functionObjectState::setObjectProperty
|
||||
|
||||
|
||||
template<class Type>
|
||||
void Foam::functionObjectState::setResult
|
||||
void Foam::functionObjects::stateFunctionObject::setResult
|
||||
(
|
||||
const word& entryName,
|
||||
const Type& value
|
||||
)
|
||||
{
|
||||
setObjectResult(name_, entryName, value);
|
||||
setObjectResult(name(), entryName, value);
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
void Foam::functionObjectState::setObjectResult
|
||||
void Foam::functionObjects::stateFunctionObject::setObjectResult
|
||||
(
|
||||
const word& objectName,
|
||||
const word& entryName,
|
||||
@ -170,7 +154,7 @@ void Foam::functionObjectState::setObjectResult
|
||||
|
||||
if (!resultsDict.found(objectName))
|
||||
{
|
||||
resultsDict.add(name_, dictionary());
|
||||
resultsDict.add(name(), dictionary());
|
||||
}
|
||||
|
||||
dictionary& objectDict = resultsDict.subDict(objectName);
|
||||
@ -189,18 +173,18 @@ void Foam::functionObjectState::setObjectResult
|
||||
|
||||
|
||||
template<class Type>
|
||||
Type Foam::functionObjectState::getResult
|
||||
Type Foam::functionObjects::stateFunctionObject::getResult
|
||||
(
|
||||
const word& entryName,
|
||||
const Type& defaultValue
|
||||
) const
|
||||
{
|
||||
return getObjectResult(name_, entryName, defaultValue);
|
||||
return getObjectResult(name(), entryName, defaultValue);
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
Type Foam::functionObjectState::getObjectResult
|
||||
Type Foam::functionObjects::stateFunctionObject::getObjectResult
|
||||
(
|
||||
const word& objectName,
|
||||
const word& entryName,
|
||||
@ -214,7 +198,7 @@ Type Foam::functionObjectState::getObjectResult
|
||||
|
||||
|
||||
template<class Type>
|
||||
void Foam::functionObjectState::getObjectResult
|
||||
void Foam::functionObjects::stateFunctionObject::getObjectResult
|
||||
(
|
||||
const word& objectName,
|
||||
const word& entryName,
|
||||
@ -60,6 +60,7 @@ public:
|
||||
ocAdjustableRunTime, //!< Adjust time step for execution
|
||||
ocRunTime, //!< run time for execution
|
||||
ocClockTime, //!< clock time for execution
|
||||
ocCpuTime, //!< CPU time for execution
|
||||
ocOnEnd, //!< on end of run
|
||||
ocNone //!< no execution
|
||||
};
|
||||
|
||||
@ -93,7 +93,7 @@ Foam::autoPtr<Foam::OFstream> Foam::functionObjects::writeFile::createFile
|
||||
if (Pstream::master() && writeToFile_)
|
||||
{
|
||||
const word startTimeName =
|
||||
obr_.time().timeName(obr_.time().startTime().value());
|
||||
fileObr_.time().timeName(fileObr_.time().startTime().value());
|
||||
|
||||
fileName outputDir(baseFileDir()/prefix_/startTimeName);
|
||||
|
||||
@ -105,7 +105,7 @@ Foam::autoPtr<Foam::OFstream> Foam::functionObjects::writeFile::createFile
|
||||
IFstream is(outputDir/(fName + ".dat"));
|
||||
if (is.good())
|
||||
{
|
||||
fName = fName + "_" + obr_.time().timeName();
|
||||
fName = fName + "_" + fileObr_.time().timeName();
|
||||
}
|
||||
|
||||
osPtr.set(new OFstream(outputDir/(fName + ".dat")));
|
||||
|
||||
@ -40,6 +40,7 @@ SourceFiles
|
||||
#define functionObjects_writeFile_H
|
||||
|
||||
#include "objectRegistry.H"
|
||||
#include "OFstream.H"
|
||||
#include "IOmanip.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
@ -129,7 +130,8 @@ public:
|
||||
const word& prefix
|
||||
);
|
||||
|
||||
//- Construct from components and read options from dictionary
|
||||
//- Construct from objectRegistry and prefix, and read options
|
||||
// from dictionary
|
||||
writeFile
|
||||
(
|
||||
const objectRegistry& obr,
|
||||
@ -151,6 +153,12 @@ public:
|
||||
//- Return access to the file (if only 1)
|
||||
OFstream& file();
|
||||
|
||||
//- Flag to allow writing to file
|
||||
bool writeToFile() const;
|
||||
|
||||
//- Return width of character stream output
|
||||
label charWidth() const;
|
||||
|
||||
//- Write a commented string to stream
|
||||
void writeCommented(Ostream& os, const string& str) const;
|
||||
|
||||
@ -171,9 +179,6 @@ public:
|
||||
const string& property,
|
||||
const Type& value
|
||||
) const;
|
||||
|
||||
//- Return width of character stream output
|
||||
label charWidth() const;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@ -84,149 +84,4 @@ Foam::wordList Foam::fieldNames
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
template<class GeoFieldType>
|
||||
void Foam::readFields
|
||||
(
|
||||
const typename GeoFieldType::Mesh& mesh,
|
||||
const IOobjectList& objects,
|
||||
const HashSet<word>& selectedFields,
|
||||
LIFOStack<regIOobject*>& storedObjects
|
||||
)
|
||||
{
|
||||
IOobjectList fields(objects.lookupClass(GeoFieldType::typeName));
|
||||
if (!fields.size()) return;
|
||||
|
||||
bool firstField = true;
|
||||
|
||||
forAllConstIter(IOobjectList, fields, fieldIter)
|
||||
{
|
||||
const IOobject& io = *fieldIter();
|
||||
const word& fieldName = io.name();
|
||||
|
||||
if (selectedFields.found(fieldName))
|
||||
{
|
||||
if (firstField)
|
||||
{
|
||||
Info<< " " << GeoFieldType::typeName << "s:";
|
||||
firstField = false;
|
||||
}
|
||||
|
||||
Info<< " " << fieldName;
|
||||
|
||||
GeoFieldType* fieldPtr = new GeoFieldType
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
fieldName,
|
||||
io.instance(),
|
||||
io.local(),
|
||||
io.db(),
|
||||
IOobject::MUST_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
mesh
|
||||
);
|
||||
fieldPtr->store();
|
||||
storedObjects.push(fieldPtr);
|
||||
}
|
||||
}
|
||||
|
||||
if (!firstField)
|
||||
{
|
||||
Info<< endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template<class UniformFieldType>
|
||||
void Foam::readUniformFields
|
||||
(
|
||||
const IOobjectList& objects,
|
||||
const HashSet<word>& selectedFields,
|
||||
LIFOStack<regIOobject*>& storedObjects,
|
||||
const bool syncPar
|
||||
)
|
||||
{
|
||||
// Search list of objects for wanted type
|
||||
IOobjectList fields(objects.lookupClass(UniformFieldType::typeName));
|
||||
if (!fields.size()) return;
|
||||
|
||||
wordList masterNames(fields.names());
|
||||
|
||||
if (syncPar && Pstream::parRun())
|
||||
{
|
||||
// Check that I have the same fields as the master
|
||||
const wordList localNames(masterNames);
|
||||
Pstream::scatter(masterNames);
|
||||
|
||||
HashSet<word> localNamesSet(localNames);
|
||||
|
||||
forAll(masterNames, i)
|
||||
{
|
||||
const word& masterFld = masterNames[i];
|
||||
|
||||
HashSet<word>::iterator iter = localNamesSet.find(masterFld);
|
||||
|
||||
if (iter == localNamesSet.end())
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Fields not synchronised across processors." << endl
|
||||
<< "Master has fields " << masterNames
|
||||
<< " processor " << Pstream::myProcNo()
|
||||
<< " has fields " << localNames << exit(FatalError);
|
||||
}
|
||||
else
|
||||
{
|
||||
localNamesSet.erase(iter);
|
||||
}
|
||||
}
|
||||
|
||||
forAllConstIter(HashSet<word>, localNamesSet, iter)
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Fields not synchronised across processors." << endl
|
||||
<< "Master has fields " << masterNames
|
||||
<< " processor " << Pstream::myProcNo()
|
||||
<< " has fields " << localNames << exit(FatalError);
|
||||
}
|
||||
}
|
||||
|
||||
bool firstField = true;
|
||||
|
||||
forAll(masterNames, i)
|
||||
{
|
||||
const IOobject& io = *fields[masterNames[i]];
|
||||
const word& fieldName = io.name();
|
||||
|
||||
if (selectedFields.found(fieldName))
|
||||
{
|
||||
if (firstField)
|
||||
{
|
||||
Info<< " " << UniformFieldType::typeName << "s:";
|
||||
firstField = false;
|
||||
}
|
||||
|
||||
Info<< " " << fieldName;
|
||||
|
||||
UniformFieldType* fieldPtr = new UniformFieldType
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
fieldName,
|
||||
io.instance(),
|
||||
io.local(),
|
||||
io.db(),
|
||||
IOobject::MUST_READ,
|
||||
IOobject::NO_WRITE
|
||||
)
|
||||
);
|
||||
fieldPtr->store();
|
||||
storedObjects.push(fieldPtr);
|
||||
}
|
||||
}
|
||||
|
||||
Info<< endl;
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -311,4 +311,149 @@ void Foam::ReadFields
|
||||
}
|
||||
|
||||
|
||||
template<class GeoFieldType>
|
||||
void Foam::readFields
|
||||
(
|
||||
const typename GeoFieldType::Mesh& mesh,
|
||||
const IOobjectList& objects,
|
||||
const HashSet<word>& selectedFields,
|
||||
LIFOStack<regIOobject*>& storedObjects
|
||||
)
|
||||
{
|
||||
IOobjectList fields(objects.lookupClass(GeoFieldType::typeName));
|
||||
if (!fields.size()) return;
|
||||
|
||||
bool firstField = true;
|
||||
|
||||
forAllConstIter(IOobjectList, fields, fieldIter)
|
||||
{
|
||||
const IOobject& io = *fieldIter();
|
||||
const word& fieldName = io.name();
|
||||
|
||||
if (selectedFields.found(fieldName))
|
||||
{
|
||||
if (firstField)
|
||||
{
|
||||
Info<< " " << GeoFieldType::typeName << "s:";
|
||||
firstField = false;
|
||||
}
|
||||
|
||||
Info<< " " << fieldName;
|
||||
|
||||
GeoFieldType* fieldPtr = new GeoFieldType
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
fieldName,
|
||||
io.instance(),
|
||||
io.local(),
|
||||
io.db(),
|
||||
IOobject::MUST_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
mesh
|
||||
);
|
||||
fieldPtr->store();
|
||||
storedObjects.push(fieldPtr);
|
||||
}
|
||||
}
|
||||
|
||||
if (!firstField)
|
||||
{
|
||||
Info<< endl;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template<class UniformFieldType>
|
||||
void Foam::readUniformFields
|
||||
(
|
||||
const IOobjectList& objects,
|
||||
const HashSet<word>& selectedFields,
|
||||
LIFOStack<regIOobject*>& storedObjects,
|
||||
const bool syncPar
|
||||
)
|
||||
{
|
||||
// Search list of objects for wanted type
|
||||
IOobjectList fields(objects.lookupClass(UniformFieldType::typeName));
|
||||
if (!fields.size()) return;
|
||||
|
||||
wordList masterNames(fields.names());
|
||||
|
||||
if (syncPar && Pstream::parRun())
|
||||
{
|
||||
// Check that I have the same fields as the master
|
||||
const wordList localNames(masterNames);
|
||||
Pstream::scatter(masterNames);
|
||||
|
||||
HashSet<word> localNamesSet(localNames);
|
||||
|
||||
forAll(masterNames, i)
|
||||
{
|
||||
const word& masterFld = masterNames[i];
|
||||
|
||||
HashSet<word>::iterator iter = localNamesSet.find(masterFld);
|
||||
|
||||
if (iter == localNamesSet.end())
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Fields not synchronised across processors." << endl
|
||||
<< "Master has fields " << masterNames
|
||||
<< " processor " << Pstream::myProcNo()
|
||||
<< " has fields " << localNames << exit(FatalError);
|
||||
}
|
||||
else
|
||||
{
|
||||
localNamesSet.erase(iter);
|
||||
}
|
||||
}
|
||||
|
||||
forAllConstIter(HashSet<word>, localNamesSet, iter)
|
||||
{
|
||||
FatalErrorInFunction
|
||||
<< "Fields not synchronised across processors." << endl
|
||||
<< "Master has fields " << masterNames
|
||||
<< " processor " << Pstream::myProcNo()
|
||||
<< " has fields " << localNames << exit(FatalError);
|
||||
}
|
||||
}
|
||||
|
||||
bool firstField = true;
|
||||
|
||||
forAll(masterNames, i)
|
||||
{
|
||||
const IOobject& io = *fields[masterNames[i]];
|
||||
const word& fieldName = io.name();
|
||||
|
||||
if (selectedFields.found(fieldName))
|
||||
{
|
||||
if (firstField)
|
||||
{
|
||||
Info<< " " << UniformFieldType::typeName << "s:";
|
||||
firstField = false;
|
||||
}
|
||||
|
||||
Info<< " " << fieldName;
|
||||
|
||||
UniformFieldType* fieldPtr = new UniformFieldType
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
fieldName,
|
||||
io.instance(),
|
||||
io.local(),
|
||||
io.db(),
|
||||
IOobject::MUST_READ,
|
||||
IOobject::NO_WRITE
|
||||
)
|
||||
);
|
||||
fieldPtr->store();
|
||||
storedObjects.push(fieldPtr);
|
||||
}
|
||||
}
|
||||
|
||||
Info<< endl;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -32,7 +32,7 @@ License
|
||||
|
||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||
|
||||
// In case of no transform: copy elements
|
||||
template<class T>
|
||||
void Foam::mapDistribute::applyDummyTransforms(List<T>& field) const
|
||||
{
|
||||
forAll(transformElements_, trafoI)
|
||||
|
||||
@ -1120,9 +1120,9 @@ bool Foam::polyBoundaryMesh::writeData(Ostream& os) const
|
||||
|
||||
forAll(patches, patchi)
|
||||
{
|
||||
os << indent << patches[patchi].name() << nl
|
||||
os.beginBlock(patches[patchi].name()) << nl;
|
||||
os << patches[patchi];
|
||||
<< incrIndent << patches[patchi] << decrIndent
|
||||
os.endBlock() << endl;
|
||||
}
|
||||
|
||||
os << decrIndent << token::END_LIST;
|
||||
|
||||
@ -91,6 +91,7 @@ void Foam::polyMesh::updateMesh(const mapPolyMesh& mpm)
|
||||
newMotionPoints[newPointi] = points_[newPointi];
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
const labelList& pointMap = mpm.pointMap();
|
||||
@ -103,7 +104,7 @@ void Foam::polyMesh::updateMesh(const mapPolyMesh& mpm)
|
||||
{
|
||||
if (revPointMap[oldPointi] == newPointi) // master point
|
||||
{
|
||||
newMotionPoints[newPoint] = oldMotionPoints[oldPointi];
|
||||
newMotionPoints[newPointi] = oldMotionPoints[oldPointi];
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -126,8 +126,8 @@ Foam::polyPatch::polyPatch
|
||||
),
|
||||
start_(start),
|
||||
boundaryMesh_(bm),
|
||||
faceCellsPtr_(NULL),
|
||||
mePtr_(NULL)
|
||||
faceCellsPtr_(nullptr),
|
||||
mePtr_(nullptr)
|
||||
{}
|
||||
|
||||
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
|
||||
\\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -147,8 +147,8 @@ externalWallHeatFluxTemperatureFvPatchScalarField
|
||||
<< "\n number of layers for thicknessLayers and "
|
||||
<< "kappaLayers must be the same"
|
||||
<< "\n for patch " << p.name()
|
||||
<< " of field " << dimensionedInternalField().name()
|
||||
<< " in file " << dimensionedInternalField().objectPath()
|
||||
<< " of field " << internalField().name()
|
||||
<< " in file " << internalField().objectPath()
|
||||
<< exit(FatalIOError);
|
||||
}
|
||||
}
|
||||
@ -331,7 +331,7 @@ void Foam::externalWallHeatFluxTemperatureFvPatchScalarField::updateCoeffs()
|
||||
|
||||
Info<< patch().boundaryMesh().mesh().name() << ':'
|
||||
<< patch().name() << ':'
|
||||
<< this->internalField().name() << " :"
|
||||
<< internalField().name() << " :"
|
||||
<< " heat transfer rate:" << Q
|
||||
<< " wall temperature "
|
||||
<< " min:" << gMin(*this)
|
||||
|
||||
@ -117,8 +117,8 @@ public:
|
||||
//- Operation mode enumeration
|
||||
enum operationMode
|
||||
{
|
||||
fixedHeatFlux,
|
||||
fixedHeatTransferCoeff,
|
||||
fixedHeatFlux, //< Fixed heat flux
|
||||
fixedHeatTransferCoeff, //< Fixed heat transfer coefficient
|
||||
unknown
|
||||
};
|
||||
|
||||
|
||||
@ -114,8 +114,8 @@ fixedIncidentRadiationFvPatchScalarField
|
||||
QrIncident_(ptf.QrIncident_)
|
||||
{}
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
void Foam::radiation::fixedIncidentRadiationFvPatchScalarField::autoMap
|
||||
(
|
||||
@ -159,15 +159,12 @@ void Foam::radiation::fixedIncidentRadiationFvPatchScalarField::updateCoeffs()
|
||||
|
||||
scalarField emissivity
|
||||
(
|
||||
radiation.absorptionEmission().e()().boundaryField()
|
||||
[
|
||||
patch().index()
|
||||
]
|
||||
radiation.absorptionEmission().e()().boundaryField()[patch().index()]
|
||||
);
|
||||
|
||||
gradient() =
|
||||
emissivity*
|
||||
(
|
||||
emissivity
|
||||
*(
|
||||
QrIncident_
|
||||
- physicoChemical::sigma.value()*pow4(*this)
|
||||
)/kappa(*this);
|
||||
@ -179,7 +176,7 @@ void Foam::radiation::fixedIncidentRadiationFvPatchScalarField::updateCoeffs()
|
||||
scalar Qr = gSum(kappa(*this)*gradient()*patch().magSf());
|
||||
Info<< patch().boundaryMesh().mesh().name() << ':'
|
||||
<< patch().name() << ':'
|
||||
<< this->dimensionedInternalField().name() << " -> "
|
||||
<< this->internalField().name() << " -> "
|
||||
<< " radiativeFlux:" << Qr
|
||||
<< " walltemperature "
|
||||
<< " min:" << gMin(*this)
|
||||
|
||||
@ -135,7 +135,7 @@ Foam::tmp<Foam::scalarField> Foam::temperatureCoupledBase::kappa
|
||||
const basicThermo& thermo =
|
||||
mesh.lookupObject<basicThermo>(basicThermo::dictName);
|
||||
|
||||
return thermo.kappa(patchI);
|
||||
return thermo.kappa(patchi);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -100,9 +100,6 @@ makeLESModel(dynamicKEqn);
|
||||
#include "dynamicLagrangian.H"
|
||||
makeLESModel(dynamicLagrangian);
|
||||
|
||||
#include "kOmegaSSTDES.H"
|
||||
makeLESModel(kOmegaSSTDES);
|
||||
|
||||
#include "SpalartAllmarasDES.H"
|
||||
makeLESModel(SpalartAllmarasDES);
|
||||
|
||||
|
||||
@ -96,9 +96,6 @@ makeLESModel(dynamicKEqn);
|
||||
#include "dynamicLagrangian.H"
|
||||
makeLESModel(dynamicLagrangian);
|
||||
|
||||
#include "kOmegaSSTDES.H"
|
||||
makeLESModel(kOmegaSSTDES);
|
||||
|
||||
#include "SpalartAllmarasDES.H"
|
||||
makeLESModel(SpalartAllmarasDES);
|
||||
|
||||
|
||||
@ -128,6 +128,28 @@ void kOmegaSSTBase<BasicEddyViscosityModel>::correctNut()
|
||||
}
|
||||
|
||||
|
||||
template<class BasicEddyViscosityModel>
|
||||
tmp<volScalarField::Internal> kOmegaSSTBase<BasicEddyViscosityModel>::Pk
|
||||
(
|
||||
const volScalarField::Internal& G
|
||||
) const
|
||||
{
|
||||
return min(G, (c1_*betaStar_)*this->k_()*this->omega_());
|
||||
}
|
||||
|
||||
|
||||
template<class BasicEddyViscosityModel>
|
||||
tmp<volScalarField::Internal>
|
||||
kOmegaSSTBase<BasicEddyViscosityModel>::epsilonByk
|
||||
(
|
||||
const volScalarField::Internal& F1,
|
||||
const volScalarField::Internal& F2
|
||||
) const
|
||||
{
|
||||
return betaStar_*omega_();
|
||||
}
|
||||
|
||||
|
||||
template<class BasicEddyViscosityModel>
|
||||
tmp<fvScalarMatrix> kOmegaSSTBase<BasicEddyViscosityModel>::kSource() const
|
||||
{
|
||||
@ -409,7 +431,7 @@ void kOmegaSSTBase<BasicEddyViscosityModel>::correct()
|
||||
tgradU.clear();
|
||||
|
||||
// Update omega and G at the wall
|
||||
omega_.boundaryField().updateCoeffs();
|
||||
omega_.boundaryFieldRef().updateCoeffs();
|
||||
|
||||
volScalarField CDkOmega
|
||||
(
|
||||
@ -449,7 +471,7 @@ void kOmegaSSTBase<BasicEddyViscosityModel>::correct()
|
||||
|
||||
omegaEqn.ref().relax();
|
||||
fvOptions.constrain(omegaEqn.ref());
|
||||
omegaEqn.ref().boundaryManipulate(omega_.boundaryField());
|
||||
omegaEqn.ref().boundaryManipulate(omega_.boundaryFieldRef());
|
||||
solve(omegaEqn);
|
||||
fvOptions.correct(omega_);
|
||||
bound(omega_, this->omegaMin_);
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -52,7 +52,7 @@ Description
|
||||
and the addition of the optional F3 term for rough walls from
|
||||
\verbatim
|
||||
Hellsten, A. (1998).
|
||||
"Some Improvements in Menter’s k-omega-SST turbulence model"
|
||||
"Some Improvements in Menter's k-omega-SST turbulence model"
|
||||
29th AIAA Fluid Dynamics Conference, AIAA-98-2554.
|
||||
\endverbatim
|
||||
|
||||
@ -202,8 +202,24 @@ protected:
|
||||
virtual void correctNut(const volScalarField& S2);
|
||||
|
||||
virtual void correctNut();
|
||||
|
||||
//- Return k production rate
|
||||
virtual tmp<volScalarField::Internal> Pk
|
||||
(
|
||||
const volScalarField::Internal& G
|
||||
) const;
|
||||
|
||||
//- Return epsilon/k which for standard RAS is betaStar*omega
|
||||
virtual tmp<volScalarField::Internal> epsilonByk
|
||||
(
|
||||
const volScalarField::Internal& F1,
|
||||
const volScalarField::Internal& F2
|
||||
) const;
|
||||
|
||||
virtual tmp<fvScalarMatrix> kSource() const;
|
||||
|
||||
virtual tmp<fvScalarMatrix> omegaSource() const;
|
||||
|
||||
virtual tmp<fvScalarMatrix> Qsas
|
||||
(
|
||||
const volScalarField& S2,
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
|
||||
\\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -98,7 +98,7 @@ tmp<volScalarField> SpalartAllmarasIDDES<BasicTurbulenceModel>::rd
|
||||
scalar(10)
|
||||
)
|
||||
);
|
||||
tr.ref().boundaryField() == 0.0;
|
||||
tr.ref().boundaryFieldRef() == 0.0;
|
||||
|
||||
return tr;
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2015 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -56,7 +56,7 @@ tmp<volScalarField> kOmegaSSTDDES<BasicTurbulenceModel>::rd
|
||||
scalar(10)
|
||||
)
|
||||
);
|
||||
tr.ref().boundaryField() == 0.0;
|
||||
tr.ref().boundaryFieldRef() == 0.0;
|
||||
|
||||
return tr;
|
||||
}
|
||||
|
||||
@ -179,7 +179,7 @@ void kOmegaSSTDES<BasicTurbulenceModel>::correct()
|
||||
tgradU.clear();
|
||||
|
||||
// Update omega and G at the wall
|
||||
omega.boundaryField().updateCoeffs();
|
||||
omega.boundaryFieldRef().updateCoeffs();
|
||||
|
||||
volScalarField CDkOmega
|
||||
(
|
||||
@ -208,7 +208,7 @@ void kOmegaSSTDES<BasicTurbulenceModel>::correct()
|
||||
|
||||
omegaEqn.ref().relax();
|
||||
|
||||
omegaEqn.ref().boundaryManipulate(omega.boundaryField());
|
||||
omegaEqn.ref().boundaryManipulate(omega.boundaryFieldRef());
|
||||
|
||||
solve(omegaEqn);
|
||||
bound(omega, this->omegaMin_);
|
||||
|
||||
@ -98,7 +98,7 @@ tmp<volScalarField> kOmegaSSTIDDES<BasicTurbulenceModel>::rd
|
||||
scalar(10)
|
||||
)
|
||||
);
|
||||
tr.ref().boundaryField() == 0.0;
|
||||
tr.ref().boundaryFieldRef() == 0.0;
|
||||
|
||||
return tr;
|
||||
}
|
||||
|
||||
@ -1,156 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "kOmegaSSTDES.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace LESModels
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * //
|
||||
|
||||
template<class BasicTurbulenceModel>
|
||||
tmp<volScalarField::Internal> kOmegaSSTDES<BasicTurbulenceModel>::Lt() const
|
||||
{
|
||||
return sqrt(this->k_())/(this->betaStar_*this->omega_());
|
||||
}
|
||||
|
||||
|
||||
template<class BasicTurbulenceModel>
|
||||
tmp<volScalarField::Internal> kOmegaSSTDES<BasicTurbulenceModel>::FDES
|
||||
(
|
||||
const volScalarField::Internal& F1,
|
||||
const volScalarField::Internal& F2
|
||||
) const
|
||||
{
|
||||
switch (FSST_)
|
||||
{
|
||||
case 0:
|
||||
return max(Lt()/(CDES_*this->delta()()), scalar(1));
|
||||
case 1:
|
||||
return max(Lt()*(1 - F1)/(CDES_*this->delta()()), scalar(1));
|
||||
case 2:
|
||||
return max(Lt()*(1 - F2)/(CDES_*this->delta()()), scalar(1));
|
||||
default:
|
||||
FatalErrorInFunction
|
||||
<< "Incorrect FSST = " << FSST_ << ", should be 0, 1 or 2"
|
||||
<< exit(FatalError);
|
||||
return F1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
template<class BasicTurbulenceModel>
|
||||
tmp<volScalarField::Internal> kOmegaSSTDES<BasicTurbulenceModel>::epsilonByk
|
||||
(
|
||||
const volScalarField::Internal& F1,
|
||||
const volScalarField::Internal& F2
|
||||
) const
|
||||
{
|
||||
return this->betaStar_*this->omega_()*FDES(F1, F2);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
template<class BasicTurbulenceModel>
|
||||
kOmegaSSTDES<BasicTurbulenceModel>::kOmegaSSTDES
|
||||
(
|
||||
const alphaField& alpha,
|
||||
const rhoField& rho,
|
||||
const volVectorField& U,
|
||||
const surfaceScalarField& alphaRhoPhi,
|
||||
const surfaceScalarField& phi,
|
||||
const transportModel& transport,
|
||||
const word& propertiesName,
|
||||
const word& type
|
||||
)
|
||||
:
|
||||
kOmegaSST
|
||||
<
|
||||
LESeddyViscosity<BasicTurbulenceModel>,
|
||||
BasicTurbulenceModel
|
||||
>
|
||||
(
|
||||
type,
|
||||
alpha,
|
||||
rho,
|
||||
U,
|
||||
alphaRhoPhi,
|
||||
phi,
|
||||
transport,
|
||||
propertiesName
|
||||
),
|
||||
|
||||
CDES_
|
||||
(
|
||||
dimensioned<scalar>::lookupOrAddToDict
|
||||
(
|
||||
"CDES",
|
||||
this->coeffDict_,
|
||||
0.61
|
||||
)
|
||||
),
|
||||
FSST_(this->coeffDict_.lookupOrDefault("FSST", 2))
|
||||
{
|
||||
if (type == typeName)
|
||||
{
|
||||
this->printCoeffs(type);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
template<class BasicTurbulenceModel>
|
||||
bool kOmegaSSTDES<BasicTurbulenceModel>::read()
|
||||
{
|
||||
if
|
||||
(
|
||||
kOmegaSST<LESeddyViscosity<BasicTurbulenceModel>, BasicTurbulenceModel>
|
||||
::read()
|
||||
)
|
||||
{
|
||||
CDES_.readIfPresent(this->coeffDict());
|
||||
this->coeffDict().readIfPresent("FSST", FSST_);
|
||||
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace LESModels
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -1,174 +0,0 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Class
|
||||
Foam::LESModels::kOmegaSST
|
||||
|
||||
Description
|
||||
Implementation of the k-omega-SST-DES turbulence model for
|
||||
incompressible and compressible flows.
|
||||
|
||||
DES model described in:
|
||||
\verbatim
|
||||
Menter, F. R., Kuntz, M., and Langtry, R. (2003).
|
||||
Ten Years of Industrial Experience with the SST Turbulence Model.
|
||||
Turbulence, Heat and Mass Transfer 4, ed: K. Hanjalic, Y. Nagano,
|
||||
& M. Tummers, Begell House, Inc., 625 - 632.
|
||||
\endverbatim
|
||||
|
||||
Optional support for zonal filtering based on F1 or F2 is provided as
|
||||
described in the paper.
|
||||
|
||||
For further details of the implementation of the base k-omega-SST model
|
||||
see Foam::kOmegaSST.
|
||||
|
||||
Group
|
||||
grpLESTurbulence
|
||||
|
||||
See also
|
||||
Foam::kOmegaSST
|
||||
|
||||
SourceFiles
|
||||
kOmegaSST.C
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef kOmegaSSTDES_H
|
||||
#define kOmegaSSTDES_H
|
||||
|
||||
#include "kOmegaSSTBase.H"
|
||||
#include "LESModel.H"
|
||||
#include "LESeddyViscosity.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace LESModels
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class kOmegaSST Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template<class BasicTurbulenceModel>
|
||||
class kOmegaSSTDES
|
||||
:
|
||||
public Foam::kOmegaSST
|
||||
<
|
||||
LESeddyViscosity<BasicTurbulenceModel>,
|
||||
BasicTurbulenceModel
|
||||
>
|
||||
{
|
||||
|
||||
protected:
|
||||
|
||||
// Protected data
|
||||
|
||||
// Model constants
|
||||
|
||||
//- DES coefficient
|
||||
dimensionedScalar CDES_;
|
||||
|
||||
//- Zonal filter choice
|
||||
//
|
||||
// - 0: no filtering
|
||||
// - 1: (1 - F1)
|
||||
// - 2: (1 - F2)
|
||||
direction FSST_;
|
||||
|
||||
|
||||
// Protected Member Functions
|
||||
|
||||
//- Return the turbulent length-scale
|
||||
tmp<volScalarField::Internal> Lt() const;
|
||||
|
||||
//- The DES dissipation-rate multiplier with options zonal filtering
|
||||
// based on either F1 or F2
|
||||
virtual tmp<volScalarField::Internal> FDES
|
||||
(
|
||||
const volScalarField::Internal& F1,
|
||||
const volScalarField::Internal& F2
|
||||
) const;
|
||||
|
||||
//- Return epsilon/k which for standard RAS is betaStar*omega
|
||||
virtual tmp<volScalarField::Internal> epsilonByk
|
||||
(
|
||||
const volScalarField::Internal& F1,
|
||||
const volScalarField::Internal& F2
|
||||
) const;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
typedef typename BasicTurbulenceModel::alphaField alphaField;
|
||||
typedef typename BasicTurbulenceModel::rhoField rhoField;
|
||||
typedef typename BasicTurbulenceModel::transportModel transportModel;
|
||||
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("kOmegaSSTDES");
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from components
|
||||
kOmegaSSTDES
|
||||
(
|
||||
const alphaField& alpha,
|
||||
const rhoField& rho,
|
||||
const volVectorField& U,
|
||||
const surfaceScalarField& alphaRhoPhi,
|
||||
const surfaceScalarField& phi,
|
||||
const transportModel& transport,
|
||||
const word& propertiesName = turbulenceModel::propertiesName,
|
||||
const word& type = typeName
|
||||
);
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~kOmegaSSTDES()
|
||||
{}
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Read model coefficients if they have changed
|
||||
virtual bool read();
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace LESModels
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
#ifdef NoRepository
|
||||
#include "kOmegaSSTDES.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2015 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2015-2016 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -36,40 +36,13 @@ void Foam::combustionModels::
|
||||
diffusionMulticomponent<CombThermoType, ThermoType>::init()
|
||||
{
|
||||
// Load default values
|
||||
if (this->coeffs().found("Ci"))
|
||||
{
|
||||
this->coeffs().lookup("Ci") >> Ci_;
|
||||
}
|
||||
|
||||
if (this->coeffs().found("YoxStream"))
|
||||
{
|
||||
this->coeffs().lookup("YoxStream") >> YoxStream_;
|
||||
}
|
||||
|
||||
if (this->coeffs().found("YfStream"))
|
||||
{
|
||||
this->coeffs().lookup("YfStream") >> YfStream_;
|
||||
}
|
||||
|
||||
if (this->coeffs().found("sigma"))
|
||||
{
|
||||
this->coeffs().lookup("sigma") >> sigma_;
|
||||
}
|
||||
|
||||
if (this->coeffs().found("ftCorr"))
|
||||
{
|
||||
this->coeffs().lookup("ftCorr") >> ftCorr_;
|
||||
}
|
||||
|
||||
if (this->coeffs().found("alpha"))
|
||||
{
|
||||
alpha_ = readScalar(this->coeffs().lookup("alpha"));
|
||||
}
|
||||
|
||||
if (this->coeffs().found("laminarIgn"))
|
||||
{
|
||||
this->coeffs().lookup("laminarIgn") >> laminarIgn_;
|
||||
}
|
||||
this->coeffs().readIfPresent("Ci", Ci_);
|
||||
this->coeffs().readIfPresent("YoxStream", YoxStream_);
|
||||
this->coeffs().readIfPresent("YfStream", YfStream_);
|
||||
this->coeffs().readIfPresent("sigma", sigma_);
|
||||
this->coeffs().readIfPresent("ftCorr", ftCorr_);
|
||||
this->coeffs().readIfPresent("alpha", alpha_);
|
||||
this->coeffs().readIfPresent("laminarIgn", laminarIgn_);
|
||||
|
||||
typedef typename Reaction<ThermoType>::specieCoeffs specieCoeffs;
|
||||
|
||||
@ -142,7 +115,6 @@ diffusionMulticomponent<CombThermoType, ThermoType>::init()
|
||||
const scalar fStoich = 1.0/(1.0 + stoicRatio_[k]);
|
||||
|
||||
Info << "stoichiometric mixture fraction : " << fStoich << endl;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -218,7 +190,6 @@ diffusionMulticomponent<CombThermoType, ThermoType>::correct()
|
||||
|
||||
for (label k=0; k < nReactions; k++)
|
||||
{
|
||||
|
||||
RijlPtr.set
|
||||
(
|
||||
k,
|
||||
@ -246,8 +217,7 @@ diffusionMulticomponent<CombThermoType, ThermoType>::correct()
|
||||
|
||||
if (laminarIgn_)
|
||||
{
|
||||
Rijl.dimensionedInternalField() =
|
||||
-this->chemistryPtr_->calculateRR(k, fuelIndex);
|
||||
Rijl.ref() = -this->chemistryPtr_->calculateRR(k, fuelIndex);
|
||||
}
|
||||
|
||||
|
||||
@ -287,11 +257,9 @@ diffusionMulticomponent<CombThermoType, ThermoType>::correct()
|
||||
(
|
||||
"ft" + name(k),
|
||||
(
|
||||
s_[k]*Yfuel
|
||||
- (Yox - YoxStream_[k])
|
||||
s_[k]*Yfuel - (Yox - YoxStream_[k])
|
||||
)
|
||||
/
|
||||
(
|
||||
/(
|
||||
s_[k]*YfStream_[k] + YoxStream_[k]
|
||||
)
|
||||
);
|
||||
@ -318,15 +286,9 @@ diffusionMulticomponent<CombThermoType, ThermoType>::correct()
|
||||
* exp(-sqr(ft - fStoich)/(2*sqr(sigma)))
|
||||
);
|
||||
|
||||
const volScalarField topHatFilter
|
||||
(
|
||||
pos(filter - 1e-3)
|
||||
);
|
||||
const volScalarField topHatFilter(pos(filter - 1e-3));
|
||||
|
||||
const volScalarField prob
|
||||
(
|
||||
"prob" + name(k), preExp*filter
|
||||
);
|
||||
const volScalarField prob("prob" + name(k), preExp*filter);
|
||||
|
||||
const volScalarField RijkDiff
|
||||
(
|
||||
@ -383,8 +345,7 @@ diffusionMulticomponent<CombThermoType, ThermoType>::correct()
|
||||
const scalar stoichCoeff = lhs[l].stoichCoeff;
|
||||
|
||||
this->chemistryPtr_->RR(lIndex) +=
|
||||
-Rijk*stoichCoeff*specieThermo_[lIndex].W()
|
||||
/fuelStoic/MwFuel;
|
||||
-Rijk*stoichCoeff*specieThermo_[lIndex].W()/fuelStoic/MwFuel;
|
||||
|
||||
}
|
||||
|
||||
@ -396,8 +357,7 @@ diffusionMulticomponent<CombThermoType, ThermoType>::correct()
|
||||
const scalar stoichCoeff = rhs[r].stoichCoeff;
|
||||
|
||||
this->chemistryPtr_->RR(rIndex) +=
|
||||
Rijk*stoichCoeff*specieThermo_[rIndex].W()
|
||||
/fuelStoic/MwFuel;
|
||||
Rijk*stoichCoeff*specieThermo_[rIndex].W()/fuelStoic/MwFuel;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2015 OpenCFD Ltd.
|
||||
\\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -280,11 +280,9 @@ void Foam::fvMeshAdder::MapVolFields
|
||||
++fieldIter
|
||||
)
|
||||
{
|
||||
if (debug)
|
||||
{
|
||||
Pout<< "MapVolFields : Storing old time for " << fieldIter()->name()
|
||||
DebugPout
|
||||
<< "MapVolFields : Storing old time for " << fieldIter()->name()
|
||||
<< endl;
|
||||
}
|
||||
|
||||
const_cast<GeometricField<Type, fvPatchField, volMesh>*>(fieldIter())
|
||||
->storeOldTimes();
|
||||
@ -310,11 +308,9 @@ void Foam::fvMeshAdder::MapVolFields
|
||||
const GeometricField<Type, fvPatchField, volMesh>& fldToAdd =
|
||||
*fieldsToAdd[fld.name()];
|
||||
|
||||
if (debug)
|
||||
{
|
||||
Pout<< "MapVolFields : mapping " << fld.name()
|
||||
DebugPout
|
||||
<< "MapVolFields : mapping " << fld.name()
|
||||
<< " and " << fldToAdd.name() << endl;
|
||||
}
|
||||
|
||||
MapVolField<Type>(meshMap, fld, fldToAdd);
|
||||
}
|
||||
@ -597,11 +593,9 @@ void Foam::fvMeshAdder::MapSurfaceFields
|
||||
++fieldIter
|
||||
)
|
||||
{
|
||||
if (debug)
|
||||
{
|
||||
Pout<< "MapSurfaceFields : Storing old time for "
|
||||
DebugPout
|
||||
<< "MapSurfaceFields : Storing old time for "
|
||||
<< fieldIter()->name() << endl;
|
||||
}
|
||||
|
||||
const_cast<fldType*>(fieldIter())->storeOldTimes();
|
||||
}
|
||||
@ -621,11 +615,9 @@ void Foam::fvMeshAdder::MapSurfaceFields
|
||||
{
|
||||
const fldType& fldToAdd = *fieldsToAdd[fld.name()];
|
||||
|
||||
if (debug)
|
||||
{
|
||||
Pout<< "MapSurfaceFields : mapping " << fld.name()
|
||||
DebugPout
|
||||
<< "MapSurfaceFields : mapping " << fld.name()
|
||||
<< " and " << fldToAdd.name() << endl;
|
||||
}
|
||||
|
||||
MapSurfaceField<Type>(meshMap, fld, fldToAdd);
|
||||
}
|
||||
@ -697,11 +689,9 @@ void Foam::fvMeshAdder::MapDimFields
|
||||
{
|
||||
const fldType& fldToAdd = *fieldsToAdd[fld.name()];
|
||||
|
||||
if (debug)
|
||||
{
|
||||
Pout<< "MapDimFields : mapping " << fld.name()
|
||||
DebugPout
|
||||
<< "MapDimFields : mapping " << fld.name()
|
||||
<< " and " << fldToAdd.name() << endl;
|
||||
}
|
||||
|
||||
MapDimField<Type>(meshMap, fld, fldToAdd);
|
||||
}
|
||||
@ -716,80 +706,4 @@ void Foam::fvMeshAdder::MapDimFields
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
void Foam::fvMeshAdder::MapDimField
|
||||
(
|
||||
const mapAddedPolyMesh& meshMap,
|
||||
|
||||
DimensionedField<Type, volMesh>& fld,
|
||||
const DimensionedField<Type, volMesh>& fldToAdd
|
||||
)
|
||||
{
|
||||
const fvMesh& mesh = fld.mesh();
|
||||
|
||||
// Store old field
|
||||
Field<Type> oldField(fld);
|
||||
|
||||
fld.setSize(mesh.nCells());
|
||||
|
||||
fld.rmap(oldField, meshMap.oldCellMap());
|
||||
fld.rmap(fldToAdd, meshMap.addedCellMap());
|
||||
}
|
||||
|
||||
|
||||
template<class Type>
|
||||
void Foam::fvMeshAdder::MapDimFields
|
||||
(
|
||||
const mapAddedPolyMesh& meshMap,
|
||||
const fvMesh& mesh,
|
||||
const fvMesh& meshToAdd
|
||||
)
|
||||
{
|
||||
typedef DimensionedField<Type, volMesh> fldType;
|
||||
|
||||
// Note: use strict flag on lookupClass to avoid picking up
|
||||
// volFields
|
||||
HashTable<const fldType*> fields
|
||||
(
|
||||
mesh.objectRegistry::lookupClass<fldType>(true)
|
||||
);
|
||||
|
||||
HashTable<const fldType*> fieldsToAdd
|
||||
(
|
||||
meshToAdd.objectRegistry::lookupClass<fldType>(true)
|
||||
);
|
||||
|
||||
for
|
||||
(
|
||||
typename HashTable<const fldType*>::
|
||||
iterator fieldIter = fields.begin();
|
||||
fieldIter != fields.end();
|
||||
++fieldIter
|
||||
)
|
||||
{
|
||||
fldType& fld = const_cast<fldType&>(*fieldIter());
|
||||
|
||||
if (fieldsToAdd.found(fld.name()))
|
||||
{
|
||||
const fldType& fldToAdd = *fieldsToAdd[fld.name()];
|
||||
|
||||
if (debug)
|
||||
{
|
||||
Pout<< "MapDimFields : mapping " << fld.name()
|
||||
<< " and " << fldToAdd.name() << endl;
|
||||
}
|
||||
|
||||
MapDimField<Type>(meshMap, fld, fldToAdd);
|
||||
}
|
||||
else
|
||||
{
|
||||
WarningIn("fvMeshAdder::MapDimFields(..)")
|
||||
<< "Not mapping field " << fld.name()
|
||||
<< " since not present on mesh to add"
|
||||
<< endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -189,13 +189,14 @@ Foam::labelList Foam::fvMeshDistribute::select
|
||||
}
|
||||
|
||||
|
||||
// Check all procs have same names and in exactly same order.
|
||||
void Foam::fvMeshDistribute::checkEqualWordList
|
||||
(
|
||||
const string& msg,
|
||||
const wordList& lst
|
||||
)
|
||||
{
|
||||
// Check all procs have same names and in exactly same order.
|
||||
|
||||
List<wordList> allNames(Pstream::nProcs());
|
||||
allNames[Pstream::myProcNo()] = lst;
|
||||
Pstream::gatherList(allNames);
|
||||
@ -235,7 +236,6 @@ Foam::wordList Foam::fvMeshDistribute::mergeWordList(const wordList& procNames)
|
||||
}
|
||||
|
||||
|
||||
// Print some info on mesh.
|
||||
void Foam::fvMeshDistribute::printMeshInfo(const fvMesh& mesh)
|
||||
{
|
||||
Pout<< "Primitives:" << nl
|
||||
@ -322,9 +322,10 @@ void Foam::fvMeshDistribute::printCoupleInfo
|
||||
}
|
||||
|
||||
|
||||
// Finds (non-empty) patch that exposed internal and proc faces can be put into.
|
||||
Foam::label Foam::fvMeshDistribute::findNonEmptyPatch() const
|
||||
{
|
||||
// Finds (non-empty) patch that exposed internal and proc faces can be
|
||||
// put into.
|
||||
const polyBoundaryMesh& patches = mesh_.boundaryMesh();
|
||||
|
||||
label nonEmptyPatchi = -1;
|
||||
@ -412,18 +413,22 @@ Foam::tmp<Foam::surfaceScalarField> Foam::fvMeshDistribute::generateTestField
|
||||
|
||||
const surfaceVectorField n(mesh.Sf()/mesh.magSf());
|
||||
|
||||
forAll(fld, faceI)
|
||||
forAll(fld, facei)
|
||||
{
|
||||
fld[faceI] = (n[faceI] & testNormal);
|
||||
fld[facei] = (n[facei] & testNormal);
|
||||
}
|
||||
forAll(fld.boundaryField(), patchI)
|
||||
|
||||
surfaceScalarField::Boundary& fluxBf = fld.boundaryFieldRef();
|
||||
const surfaceVectorField::Boundary& nBf = n.boundaryField();
|
||||
|
||||
forAll(fluxBf, patchi)
|
||||
{
|
||||
fvsPatchScalarField& fvp = fld.boundaryField()[patchI];
|
||||
fvsPatchScalarField& fvp = fluxBf[patchi];
|
||||
|
||||
scalarField newPfld(fvp.size());
|
||||
forAll(newPfld, i)
|
||||
{
|
||||
newPfld[i] = (n.boundaryField()[patchI][i] & testNormal);
|
||||
newPfld[i] = (nBf[patchi][i] & testNormal);
|
||||
}
|
||||
fvp == newPfld;
|
||||
}
|
||||
@ -441,28 +446,28 @@ void Foam::fvMeshDistribute::testField(const surfaceScalarField& fld)
|
||||
|
||||
const surfaceVectorField n(mesh.Sf()/mesh.magSf());
|
||||
|
||||
forAll(fld, faceI)
|
||||
forAll(fld, facei)
|
||||
{
|
||||
scalar cos = (n[faceI] & testNormal);
|
||||
scalar cos = (n[facei] & testNormal);
|
||||
|
||||
if (mag(cos-fld[faceI]) > 1e-6)
|
||||
if (mag(cos - fld[facei]) > 1e-6)
|
||||
{
|
||||
//FatalErrorInFunction
|
||||
WarningInFunction
|
||||
<< "On internal face " << faceI << " at "
|
||||
<< mesh.faceCentres()[faceI]
|
||||
<< " the field value is " << fld[faceI]
|
||||
<< "On internal face " << facei << " at "
|
||||
<< mesh.faceCentres()[facei]
|
||||
<< " the field value is " << fld[facei]
|
||||
<< " whereas cos angle of " << testNormal
|
||||
<< " with mesh normal " << n[faceI]
|
||||
<< " with mesh normal " << n[facei]
|
||||
<< " is " << cos
|
||||
//<< exit(FatalError);
|
||||
<< endl;
|
||||
}
|
||||
}
|
||||
forAll(fld.boundaryField(), patchI)
|
||||
forAll(fld.boundaryField(), patchi)
|
||||
{
|
||||
const fvsPatchScalarField& fvp = fld.boundaryField()[patchI];
|
||||
const fvsPatchVectorField& np = n.boundaryField()[patchI];
|
||||
const fvsPatchScalarField& fvp = fld.boundaryField()[patchi];
|
||||
const fvsPatchVectorField& np = n.boundaryField()[patchi];
|
||||
|
||||
forAll(fvp, i)
|
||||
{
|
||||
@ -470,12 +475,12 @@ void Foam::fvMeshDistribute::testField(const surfaceScalarField& fld)
|
||||
|
||||
if (mag(cos - fvp[i]) > 1e-6)
|
||||
{
|
||||
label faceI = fvp.patch().start()+i;
|
||||
label facei = fvp.patch().start()+i;
|
||||
//FatalErrorInFunction
|
||||
WarningInFunction
|
||||
<< "On face " << faceI
|
||||
<< "On face " << facei
|
||||
<< " on patch " << fvp.patch().name()
|
||||
<< " at " << mesh.faceCentres()[faceI]
|
||||
<< " at " << mesh.faceCentres()[facei]
|
||||
<< " the field value is " << fvp[i]
|
||||
<< " whereas cos angle of " << testNormal
|
||||
<< " with mesh normal " << np[i]
|
||||
@ -488,13 +493,14 @@ void Foam::fvMeshDistribute::testField(const surfaceScalarField& fld)
|
||||
}
|
||||
|
||||
|
||||
// Delete all processor patches. Move any processor faces into the last
|
||||
// non-processor patch.
|
||||
Foam::autoPtr<Foam::mapPolyMesh> Foam::fvMeshDistribute::deleteProcPatches
|
||||
(
|
||||
const label destinationPatch
|
||||
)
|
||||
{
|
||||
// Delete all processor patches. Move any processor faces into the last
|
||||
// non-processor patch.
|
||||
|
||||
// New patchID per boundary faces to be repatched. Is -1 (no change)
|
||||
// or new patchID
|
||||
labelList newPatchID(mesh_.nFaces() - mesh_.nInternalFaces(), -1);
|
||||
@ -535,23 +541,23 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::fvMeshDistribute::deleteProcPatches
|
||||
// Delete (now empty) processor patches.
|
||||
{
|
||||
labelList oldToNew(identity(mesh_.boundaryMesh().size()));
|
||||
label newI = 0;
|
||||
label newi = 0;
|
||||
// Non processor patches first
|
||||
forAll(mesh_.boundaryMesh(), patchi)
|
||||
{
|
||||
if (!isA<processorPolyPatch>(mesh_.boundaryMesh()[patchi]))
|
||||
{
|
||||
oldToNew[patchi] = newI++;
|
||||
oldToNew[patchi] = newi++;
|
||||
}
|
||||
}
|
||||
label nNonProcPatches = newI;
|
||||
label nNonProcPatches = newi;
|
||||
|
||||
// Processor patches as last
|
||||
forAll(mesh_.boundaryMesh(), patchi)
|
||||
{
|
||||
if (isA<processorPolyPatch>(mesh_.boundaryMesh()[patchi]))
|
||||
{
|
||||
oldToNew[patchi] = newI++;
|
||||
oldToNew[patchi] = newi++;
|
||||
}
|
||||
}
|
||||
fvMeshTools::reorderPatches(mesh_, oldToNew, nNonProcPatches, false);
|
||||
@ -561,7 +567,6 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::fvMeshDistribute::deleteProcPatches
|
||||
}
|
||||
|
||||
|
||||
// Repatch the mesh.
|
||||
Foam::autoPtr<Foam::mapPolyMesh> Foam::fvMeshDistribute::repatch
|
||||
(
|
||||
const labelList& newPatchID, // per boundary face -1 or new patchID
|
||||
@ -2521,7 +2526,7 @@ Foam::autoPtr<Foam::mapDistributePolyMesh> Foam::fvMeshDistribute::distribute
|
||||
const labelList& oldPatchMap = map().oldPatchMap();
|
||||
|
||||
//Note: old mesh faces never flipped!
|
||||
forAll(constructPatchMap, procI)
|
||||
forAll(constructPatchMap, proci)
|
||||
{
|
||||
if (proci != sendProc && constructPatchMap[proci].size())
|
||||
{
|
||||
|
||||
@ -48,10 +48,7 @@ namespace Foam
|
||||
Foam::wordList
|
||||
Foam::velocityDisplacementMotionSolver::pointDisplacementBoundaryTypes() const
|
||||
{
|
||||
const pointVectorField::GeometricBoundaryField& pmUbf
|
||||
(
|
||||
pointMotionU().boundaryField()
|
||||
);
|
||||
const pointVectorField::Boundary& pmUbf(pointMotionU().boundaryField());
|
||||
|
||||
wordList cmUbf = pmUbf.types();
|
||||
|
||||
@ -93,7 +90,7 @@ Foam::velocityDisplacementMotionSolver::velocityDisplacementMotionSolver
|
||||
pointDisplacementBoundaryTypes()
|
||||
);
|
||||
|
||||
pointDisplacement.internalField() = mesh.points() - points0;
|
||||
pointDisplacement.primitiveFieldRef() = mesh.points() - points0;
|
||||
|
||||
displacementMotionSolverPtr_.set
|
||||
(
|
||||
@ -155,6 +152,8 @@ void Foam::velocityDisplacementMotionSolver::solve()
|
||||
// Update the velocity boundary conditions
|
||||
pointMotionU().correctBoundaryConditions();
|
||||
|
||||
pointVectorField::Boundary& dispBf = displacement.boundaryFieldRef();
|
||||
|
||||
// Update the displacement boundary conditions
|
||||
forAll(pointMotionU().boundaryField(), patchI)
|
||||
{
|
||||
@ -163,7 +162,7 @@ void Foam::velocityDisplacementMotionSolver::solve()
|
||||
pointMotionU().boundaryField()[patchI]
|
||||
);
|
||||
|
||||
displacement.boundaryField()[patchI] ==
|
||||
dispBf[patchI] ==
|
||||
patchField.patchInternalField()*deltaT
|
||||
+ patchField.patchInternalField(displacementOld);
|
||||
}
|
||||
@ -172,8 +171,8 @@ void Foam::velocityDisplacementMotionSolver::solve()
|
||||
displacementMotionSolverPtr_->solve();
|
||||
|
||||
// Update the velocity
|
||||
pointMotionU().internalField() =
|
||||
(displacement.internalField() - displacementOld)/deltaT;
|
||||
pointMotionU().primitiveFieldRef() =
|
||||
(displacement.primitiveField() - displacementOld)/deltaT;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -50,11 +50,11 @@ namespace Foam
|
||||
Foam::label Foam::addPatchCellLayer::nbrFace
|
||||
(
|
||||
const labelListList& edgeFaces,
|
||||
const label edgeI,
|
||||
const label edgei,
|
||||
const label facei
|
||||
)
|
||||
{
|
||||
const labelList& eFaces = edgeFaces[edgeI];
|
||||
const labelList& eFaces = edgeFaces[edgei];
|
||||
|
||||
if (eFaces.size() == 2)
|
||||
{
|
||||
@ -97,19 +97,19 @@ bool Foam::addPatchCellLayer::sameEdgeNeighbour
|
||||
const boolList& doneEdge,
|
||||
const label thisGlobalFacei,
|
||||
const label nbrGlobalFacei,
|
||||
const label edgeI
|
||||
const label edgei
|
||||
) const
|
||||
{
|
||||
const edge& e = pp.edges()[edgeI];
|
||||
const edge& e = pp.edges()[edgei];
|
||||
|
||||
return
|
||||
!doneEdge[edgeI] // not yet handled
|
||||
!doneEdge[edgei] // not yet handled
|
||||
&& (
|
||||
addedPoints_[e[0]].size() // is extruded
|
||||
|| addedPoints_[e[1]].size()
|
||||
)
|
||||
&& (
|
||||
nbrFace(globalEdgeFaces, edgeI, thisGlobalFacei)
|
||||
nbrFace(globalEdgeFaces, edgei, thisGlobalFacei)
|
||||
== nbrGlobalFacei // is to same neighbour
|
||||
);
|
||||
}
|
||||
@ -135,12 +135,12 @@ Foam::labelPair Foam::addPatchCellLayer::getEdgeString
|
||||
// Get edge that hasn't been done yet but needs extrusion
|
||||
forAll(fEdges, fp)
|
||||
{
|
||||
label edgeI = fEdges[fp];
|
||||
const edge& e = pp.edges()[edgeI];
|
||||
label edgei = fEdges[fp];
|
||||
const edge& e = pp.edges()[edgei];
|
||||
|
||||
if
|
||||
(
|
||||
!doneEdge[edgeI]
|
||||
!doneEdge[edgei]
|
||||
&& ( addedPoints_[e[0]].size() || addedPoints_[e[1]].size() )
|
||||
)
|
||||
{
|
||||
@ -229,14 +229,14 @@ Foam::label Foam::addPatchCellLayer::addSideFace
|
||||
const labelListList& addedCells, // per pp face the new extruded cell
|
||||
const face& newFace,
|
||||
const label newPatchID,
|
||||
const label zoneI,
|
||||
const label zonei,
|
||||
const bool edgeFlip,
|
||||
const label inflateFaceI,
|
||||
const label inflateFacei,
|
||||
|
||||
const label ownFaceI, // pp face that provides owner
|
||||
const label nbrFaceI,
|
||||
const label meshEdgeI, // corresponding mesh edge
|
||||
const label layerI, // layer
|
||||
const label ownFacei, // pp face that provides owner
|
||||
const label nbrFacei,
|
||||
const label meshEdgei, // corresponding mesh edge
|
||||
const label layeri, // layer
|
||||
const label numEdgeFaces, // number of layers for edge
|
||||
const labelList& meshFaces, // precalculated edgeFaces
|
||||
polyTopoChange& meshMod
|
||||
@ -261,18 +261,18 @@ Foam::label Foam::addPatchCellLayer::addSideFace
|
||||
if (addedCells[ownFacei].size() < numEdgeFaces)
|
||||
{
|
||||
label offset = numEdgeFaces - addedCells[ownFacei].size();
|
||||
if (layerI <= offset)
|
||||
if (layeri <= offset)
|
||||
{
|
||||
layerOwn = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
layerOwn = layerI - offset;
|
||||
layerOwn = layeri - offset;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
layerOwn = layerI;
|
||||
layerOwn = layeri;
|
||||
}
|
||||
|
||||
|
||||
@ -313,15 +313,15 @@ Foam::label Foam::addPatchCellLayer::addSideFace
|
||||
label offset =
|
||||
addedCells[ownFacei].size() - addedCells[nbrFacei].size();
|
||||
|
||||
layerOwn = layerI;
|
||||
layerOwn = layeri;
|
||||
|
||||
if (layerI <= offset)
|
||||
if (layeri <= offset)
|
||||
{
|
||||
layerNbr = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
layerNbr = layerI - offset;
|
||||
layerNbr = layeri - offset;
|
||||
}
|
||||
}
|
||||
else if (addedCells[nbrFacei].size() > addedCells[ownFacei].size())
|
||||
@ -329,22 +329,22 @@ Foam::label Foam::addPatchCellLayer::addSideFace
|
||||
label offset =
|
||||
addedCells[nbrFacei].size() - addedCells[ownFacei].size();
|
||||
|
||||
layerNbr = layerI;
|
||||
layerNbr = layeri;
|
||||
|
||||
if (layerI <= offset)
|
||||
if (layeri <= offset)
|
||||
{
|
||||
layerOwn = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
layerOwn = layerI - offset;
|
||||
layerOwn = layeri - offset;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Same number of layers on both sides.
|
||||
layerNbr = layerI;
|
||||
layerOwn = layerI;
|
||||
layerNbr = layeri;
|
||||
layerOwn = layeri;
|
||||
}
|
||||
|
||||
|
||||
@ -364,7 +364,7 @@ Foam::label Foam::addPatchCellLayer::addSideFace
|
||||
}
|
||||
|
||||
|
||||
addedFaceI = meshMod.setAction
|
||||
addedFacei = meshMod.setAction
|
||||
(
|
||||
polyAddFace
|
||||
(
|
||||
@ -422,13 +422,13 @@ void Foam::addPatchCellLayer::setFaceProps
|
||||
const label facei,
|
||||
|
||||
label& patchi,
|
||||
label& zoneI,
|
||||
label& zonei,
|
||||
bool& zoneFlip
|
||||
)
|
||||
{
|
||||
patchi = mesh.boundaryMesh().whichPatch(facei);
|
||||
zonei = mesh.faceZones().whichZone(facei);
|
||||
if (zoneI != -1)
|
||||
if (zonei != -1)
|
||||
{
|
||||
label index = mesh.faceZones()[zonei].whichFace(facei);
|
||||
zoneFlip = mesh.faceZones()[zonei].flipMap()[index];
|
||||
@ -716,13 +716,13 @@ void Foam::addPatchCellLayer::calcExtrudeInfo
|
||||
// processor patch or create interprocessor-patch if necessary.
|
||||
// Sets edgePatchID[edgeI] but none of the other quantities
|
||||
|
||||
forAll(globalEdgeFaces, edgeI)
|
||||
forAll(globalEdgeFaces, edgei)
|
||||
{
|
||||
const labelList& eGlobalFaces = globalEdgeFaces[edgeI];
|
||||
const labelList& eGlobalFaces = globalEdgeFaces[edgei];
|
||||
if
|
||||
(
|
||||
eGlobalFaces.size() == 2
|
||||
&& pp.edgeFaces()[edgeI].size() == 1
|
||||
&& pp.edgeFaces()[edgei].size() == 1
|
||||
)
|
||||
{
|
||||
// Locally but not globally a boundary edge. Hence a coupled
|
||||
@ -746,11 +746,11 @@ void Foam::addPatchCellLayer::calcExtrudeInfo
|
||||
{
|
||||
if (findIndex(gd[Pstream::myProcNo()], otherProci) != -1)
|
||||
{
|
||||
// There is already a processorPolyPatch to otherProcI.
|
||||
// There is already a processorPolyPatch to otherProci.
|
||||
// Use it. Note that we can only index procPatchMap
|
||||
// if the processor actually is a neighbour processor
|
||||
// so that is why we first check.
|
||||
edgePatchID[edgeI] = gd.procPatchMap()[otherProci];
|
||||
edgePatchID[edgei] = gd.procPatchMap()[otherProci];
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -786,20 +786,20 @@ void Foam::addPatchCellLayer::calcExtrudeInfo
|
||||
{
|
||||
UIndirectList<label> ppFaces(pp.addressing(), edgeFaces[edgei]);
|
||||
|
||||
label meshEdgeI = meshEdges[edgeI];
|
||||
label meshEdgei = meshEdges[edgei];
|
||||
const labelList& meshFaces = mesh.edgeFaces
|
||||
(
|
||||
meshEdgeI,
|
||||
meshEdgei,
|
||||
dynMeshEdgeFaces
|
||||
);
|
||||
|
||||
if (edgeFaces[edgeI].size() == 2)
|
||||
if (edgeFaces[edgei].size() == 2)
|
||||
{
|
||||
// Internal edge. Look at any face (internal or boundary) to
|
||||
// determine extrusion properties. First one that has zone
|
||||
// info wins
|
||||
|
||||
label dummyPatchI = -1;
|
||||
label dummyPatchi = -1;
|
||||
findZoneFace
|
||||
(
|
||||
true, // useInternalFaces,
|
||||
@ -850,7 +850,7 @@ void Foam::addPatchCellLayer::calcExtrudeInfo
|
||||
// Now hopefully every boundary edge has a edge patch. Check
|
||||
if (debug)
|
||||
{
|
||||
forAll(edgeFaces, edgeI)
|
||||
forAll(edgeFaces, edgei)
|
||||
{
|
||||
if (edgeFaces[edgei].size() == 1 && edgePatchID[edgei] == -1)
|
||||
{
|
||||
@ -882,32 +882,32 @@ void Foam::addPatchCellLayer::calcExtrudeInfo
|
||||
label myFaceI = pp.addressing()[edgeFaces[edgei][0]];
|
||||
|
||||
// Pick up any boundary face on this edge and use its properties
|
||||
label meshEdgeI = meshEdges[edgeI];
|
||||
label meshEdgei = meshEdges[edgei];
|
||||
const labelList& meshFaces = mesh.edgeFaces
|
||||
(
|
||||
meshEdgeI,
|
||||
meshEdgei,
|
||||
dynMeshEdgeFaces
|
||||
);
|
||||
|
||||
forAll(meshFaces, k)
|
||||
{
|
||||
label faceI = meshFaces[k];
|
||||
label facei = meshFaces[k];
|
||||
|
||||
if (faceI != myFaceI && !mesh.isInternalFace(faceI))
|
||||
if (facei != myFaceI && !mesh.isInternalFace(facei))
|
||||
{
|
||||
if (patches.whichPatch(faceI) == edgePatchID[edgeI])
|
||||
if (patches.whichPatch(facei) == edgePatchID[edgei])
|
||||
{
|
||||
setFaceProps
|
||||
(
|
||||
mesh,
|
||||
pp,
|
||||
edgeI,
|
||||
faceI,
|
||||
edgei,
|
||||
facei,
|
||||
|
||||
edgePatchID[edgeI],
|
||||
edgeZoneID[edgeI],
|
||||
edgeFlip[edgeI],
|
||||
inflateFaceID[edgeI]
|
||||
edgePatchID[edgei],
|
||||
edgeZoneID[edgei],
|
||||
edgeFlip[edgei],
|
||||
inflateFaceID[edgei]
|
||||
);
|
||||
break;
|
||||
}
|
||||
@ -947,17 +947,17 @@ void Foam::addPatchCellLayer::calcExtrudeInfo
|
||||
boolList cppEdgeFlip(cpp.nEdges(), false);
|
||||
forAll(coupledEdges, i)
|
||||
{
|
||||
label cppEdgeI = coupledEdges[i];
|
||||
label ppEdgeI = patchEdges[i];
|
||||
label cppEdgei = coupledEdges[i];
|
||||
label ppEdgei = patchEdges[i];
|
||||
|
||||
cppEdgeZoneID[cppEdgeI] = edgeZoneID[ppEdgeI];
|
||||
cppEdgeZoneID[cppEdgei] = edgeZoneID[ppEdgei];
|
||||
if (sameEdgeOrientation[i])
|
||||
{
|
||||
cppEdgeFlip[cppEdgeI] = edgeFlip[ppEdgeI];
|
||||
cppEdgeFlip[cppEdgei] = edgeFlip[ppEdgei];
|
||||
}
|
||||
else
|
||||
{
|
||||
cppEdgeFlip[cppEdgeI] = !edgeFlip[ppEdgeI];
|
||||
cppEdgeFlip[cppEdgei] = !edgeFlip[ppEdgei];
|
||||
}
|
||||
}
|
||||
|
||||
@ -989,17 +989,17 @@ void Foam::addPatchCellLayer::calcExtrudeInfo
|
||||
// Convert data on coupled edges to pp edges
|
||||
forAll(coupledEdges, i)
|
||||
{
|
||||
label cppEdgeI = coupledEdges[i];
|
||||
label ppEdgeI = patchEdges[i];
|
||||
label cppEdgei = coupledEdges[i];
|
||||
label ppEdgei = patchEdges[i];
|
||||
|
||||
edgeZoneID[ppEdgeI] = cppEdgeZoneID[cppEdgeI];
|
||||
edgeZoneID[ppEdgei] = cppEdgeZoneID[cppEdgei];
|
||||
if (sameEdgeOrientation[i])
|
||||
{
|
||||
edgeFlip[ppEdgeI] = cppEdgeFlip[cppEdgeI];
|
||||
edgeFlip[ppEdgei] = cppEdgeFlip[cppEdgei];
|
||||
}
|
||||
else
|
||||
{
|
||||
edgeFlip[ppEdgeI] = !cppEdgeFlip[cppEdgeI];
|
||||
edgeFlip[ppEdgei] = !cppEdgeFlip[cppEdgei];
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1070,11 +1070,11 @@ void Foam::addPatchCellLayer::setRefinement
|
||||
}
|
||||
}
|
||||
|
||||
forAll(globalEdgeFaces, edgeI)
|
||||
forAll(globalEdgeFaces, edgei)
|
||||
{
|
||||
if (globalEdgeFaces[edgeI].size() > 2)
|
||||
if (globalEdgeFaces[edgei].size() > 2)
|
||||
{
|
||||
const edge& e = pp.edges()[edgeI];
|
||||
const edge& e = pp.edges()[edgei];
|
||||
|
||||
if (nPointLayers[e[0]] > 0 || nPointLayers[e[1]] > 0)
|
||||
{
|
||||
@ -1082,10 +1082,10 @@ void Foam::addPatchCellLayer::setRefinement
|
||||
<< "Trying to extrude edge "
|
||||
<< e.line(pp.localPoints())
|
||||
<< " which is non-manifold (has "
|
||||
<< globalEdgeFaces[edgeI].size()
|
||||
<< globalEdgeFaces[edgei].size()
|
||||
<< " local or coupled faces using it)"
|
||||
<< " of which "
|
||||
<< pp.edgeFaces()[edgeI].size()
|
||||
<< pp.edgeFaces()[edgei].size()
|
||||
<< " local"
|
||||
<< abort(FatalError);
|
||||
}
|
||||
@ -1207,15 +1207,15 @@ void Foam::addPatchCellLayer::setRefinement
|
||||
// sides decide the same.
|
||||
// ~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
for (label edgeI = pp.nInternalEdges(); edgeI < pp.nEdges(); edgeI++)
|
||||
for (label edgei = pp.nInternalEdges(); edgei < pp.nEdges(); edgei++)
|
||||
{
|
||||
const edge& e = pp.edges()[edgeI];
|
||||
const edge& e = pp.edges()[edgei];
|
||||
|
||||
if (nPointLayers[e[0]] > 0 || nPointLayers[e[1]] > 0)
|
||||
{
|
||||
// Edge is to become a face
|
||||
|
||||
const labelList& eFaces = pp.edgeFaces()[edgeI];
|
||||
const labelList& eFaces = pp.edgeFaces()[edgei];
|
||||
|
||||
// First check: pp should be single connected.
|
||||
if (eFaces.size() != 1)
|
||||
@ -1230,10 +1230,10 @@ void Foam::addPatchCellLayer::setRefinement
|
||||
|
||||
label myFacei = pp.addressing()[eFaces[0]];
|
||||
|
||||
label meshEdgeI = meshEdges[edgeI];
|
||||
label meshEdgei = meshEdges[edgei];
|
||||
|
||||
// Mesh faces using edge
|
||||
const labelList& meshFaces = mesh_.edgeFaces(meshEdgeI, ef);
|
||||
const labelList& meshFaces = mesh_.edgeFaces(meshEdgei, ef);
|
||||
|
||||
// Check that there is only one patchface using edge.
|
||||
const polyBoundaryMesh& patches = mesh_.boundaryMesh();
|
||||
@ -1609,26 +1609,26 @@ void Foam::addPatchCellLayer::setRefinement
|
||||
// partial list synchronisation.
|
||||
labelList meshEdgeLayers(mesh_.nEdges(), -1);
|
||||
|
||||
forAll(meshEdges, edgeI)
|
||||
forAll(meshEdges, edgei)
|
||||
{
|
||||
const edge& e = edges[edgeI];
|
||||
const edge& e = edges[edgei];
|
||||
|
||||
label meshEdgeI = meshEdges[edgeI];
|
||||
label meshEdgei = meshEdges[edgei];
|
||||
|
||||
if ((nPointLayers[e[0]] == 0) && (nPointLayers[e[1]] == 0))
|
||||
{
|
||||
meshEdgeLayers[meshEdgeI] = 0;
|
||||
meshEdgeLayers[meshEdgei] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
const labelList& eFaces = pp.edgeFaces()[edgeI];
|
||||
const labelList& eFaces = pp.edgeFaces()[edgei];
|
||||
|
||||
forAll(eFaces, i)
|
||||
{
|
||||
meshEdgeLayers[meshEdgeI] = max
|
||||
meshEdgeLayers[meshEdgei] = max
|
||||
(
|
||||
nFaceLayers[eFaces[i]],
|
||||
meshEdgeLayers[meshEdgeI]
|
||||
meshEdgeLayers[meshEdgei]
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1642,9 +1642,9 @@ void Foam::addPatchCellLayer::setRefinement
|
||||
label(0) // initial value
|
||||
);
|
||||
|
||||
forAll(meshEdges, edgeI)
|
||||
forAll(meshEdges, edgei)
|
||||
{
|
||||
edgeLayers[edgeI] = meshEdgeLayers[meshEdges[edgeI]];
|
||||
edgeLayers[edgei] = meshEdgeLayers[meshEdges[edgei]];
|
||||
}
|
||||
}
|
||||
|
||||
@ -1718,11 +1718,11 @@ void Foam::addPatchCellLayer::setRefinement
|
||||
// because we loop in incrementing order as well we will
|
||||
// always have nbrFacei > patchFacei.
|
||||
|
||||
label startEdgeI = fEdges[startFp];
|
||||
label startEdgei = fEdges[startFp];
|
||||
|
||||
label meshEdgeI = meshEdges[startEdgeI];
|
||||
label meshEdgei = meshEdges[startEdgei];
|
||||
|
||||
label numEdgeSideFaces = edgeLayers[startEdgeI];
|
||||
label numEdgeSideFaces = edgeLayers[startEdgei];
|
||||
|
||||
for (label i = 0; i < numEdgeSideFaces; i++)
|
||||
{
|
||||
@ -1897,9 +1897,9 @@ void Foam::addPatchCellLayer::setRefinement
|
||||
) << nl
|
||||
<< "Layer:" << i
|
||||
<< " out of:" << numEdgeSideFaces << nl
|
||||
<< "ExtrudeEdge:" << meshEdgeI
|
||||
<< "ExtrudeEdge:" << meshEdgei
|
||||
<< " at:"
|
||||
<< mesh_.edges()[meshEdgeI].line
|
||||
<< mesh_.edges()[meshEdgei].line
|
||||
(
|
||||
mesh_.points()
|
||||
) << nl
|
||||
@ -1924,13 +1924,13 @@ void Foam::addPatchCellLayer::setRefinement
|
||||
label nbrFacei = nbrFace
|
||||
(
|
||||
pp.edgeFaces(),
|
||||
startEdgeI,
|
||||
startEdgei,
|
||||
patchFacei
|
||||
);
|
||||
|
||||
const labelList& meshFaces = mesh_.edgeFaces
|
||||
(
|
||||
meshEdgeI,
|
||||
meshEdgei,
|
||||
ef
|
||||
);
|
||||
|
||||
@ -1938,9 +1938,9 @@ void Foam::addPatchCellLayer::setRefinement
|
||||
// of face edges so face orientation will be opposite
|
||||
// that of the patch edge
|
||||
bool zoneFlip = false;
|
||||
if (edgeZoneID[startEdgeI] != -1)
|
||||
if (edgeZoneID[startEdgei] != -1)
|
||||
{
|
||||
zoneFlip = !edgeFlip[startEdgeI];
|
||||
zoneFlip = !edgeFlip[startEdgei];
|
||||
}
|
||||
|
||||
addSideFace
|
||||
@ -1949,14 +1949,14 @@ void Foam::addPatchCellLayer::setRefinement
|
||||
addedCells,
|
||||
|
||||
newFace, // vertices of new face
|
||||
edgePatchID[startEdgeI],// -1 or patch for face
|
||||
edgeZoneID[startEdgeI],
|
||||
edgePatchID[startEdgei],// -1 or patch for face
|
||||
edgeZoneID[startEdgei],
|
||||
zoneFlip,
|
||||
inflateFaceID[startEdgeI],
|
||||
inflateFaceID[startEdgei],
|
||||
|
||||
patchFaceI,
|
||||
nbrFaceI,
|
||||
meshEdgeI, // (mesh) edge to inflate
|
||||
patchFacei,
|
||||
nbrFacei,
|
||||
meshEdgei, // (mesh) edge to inflate
|
||||
i, // layer
|
||||
numEdgeSideFaces, // num layers
|
||||
meshFaces, // edgeFaces
|
||||
|
||||
@ -557,7 +557,6 @@ void Foam::refinementHistory::apply
|
||||
Foam::refinementHistory::refinementHistory(const IOobject& io)
|
||||
:
|
||||
regIOobject(io),
|
||||
refCount(),
|
||||
active_(false)
|
||||
{
|
||||
// Warn for MUST_READ_IF_MODIFIED
|
||||
@ -600,7 +599,6 @@ Foam::refinementHistory::refinementHistory
|
||||
)
|
||||
:
|
||||
regIOobject(io),
|
||||
refCount(),
|
||||
active_(active),
|
||||
splitCells_(splitCells),
|
||||
freeSplitCells_(0),
|
||||
@ -642,7 +640,6 @@ Foam::refinementHistory::refinementHistory
|
||||
)
|
||||
:
|
||||
regIOobject(io),
|
||||
refCount(),
|
||||
active_(false),
|
||||
freeSplitCells_(0)
|
||||
{
|
||||
@ -698,7 +695,6 @@ Foam::refinementHistory::refinementHistory
|
||||
)
|
||||
:
|
||||
regIOobject(io),
|
||||
refCount(),
|
||||
active_(active),
|
||||
freeSplitCells_(0)
|
||||
{
|
||||
@ -750,7 +746,6 @@ Foam::refinementHistory::refinementHistory
|
||||
)
|
||||
:
|
||||
regIOobject(io),
|
||||
refCount(),
|
||||
active_(rh.active_),
|
||||
splitCells_(rh.splitCells()),
|
||||
freeSplitCells_(rh.freeSplitCells()),
|
||||
@ -773,7 +768,6 @@ Foam::refinementHistory::refinementHistory
|
||||
)
|
||||
:
|
||||
regIOobject(io),
|
||||
refCount(),
|
||||
active_(false)
|
||||
{
|
||||
if
|
||||
@ -886,7 +880,6 @@ Foam::refinementHistory::refinementHistory
|
||||
Foam::refinementHistory::refinementHistory(const IOobject& io, Istream& is)
|
||||
:
|
||||
regIOobject(io),
|
||||
refCount(),
|
||||
splitCells_(is),
|
||||
freeSplitCells_(0),
|
||||
visibleCells_(is)
|
||||
|
||||
@ -71,7 +71,6 @@ SourceFiles
|
||||
#ifndef refinementHistory_H
|
||||
#define refinementHistory_H
|
||||
|
||||
#include "UPtrList.H"
|
||||
#include "DynamicList.H"
|
||||
#include "labelList.H"
|
||||
#include "FixedList.H"
|
||||
@ -104,8 +103,7 @@ Ostream& operator<<(Ostream&, const refinementHistory&);
|
||||
|
||||
class refinementHistory
|
||||
:
|
||||
public regIOobject,
|
||||
public refCount
|
||||
public regIOobject
|
||||
{
|
||||
public:
|
||||
|
||||
|
||||
@ -481,9 +481,9 @@ void Foam::polyTopoChange::makeCells
|
||||
if (faceOwner_[facei] < 0)
|
||||
{
|
||||
pointField newPoints;
|
||||
if (faceI < faces_.size())
|
||||
if (facei < faces_.size())
|
||||
{
|
||||
const face& f = faces_[faceI];
|
||||
const face& f = faces_[facei];
|
||||
newPoints.setSize(f.size(), vector::max);
|
||||
forAll(f, fp)
|
||||
{
|
||||
|
||||
@ -29,6 +29,7 @@ License
|
||||
#include "fvPatchFieldMapper.H"
|
||||
#include "momentOfInertia.H"
|
||||
#include "cartesianCS.H"
|
||||
#include "IFstream.H"
|
||||
#include "OFstream.H"
|
||||
#include "globalIndex.H"
|
||||
|
||||
@ -106,20 +107,19 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::writeLumleyCoeffs() const
|
||||
// Before interpolation/raw data
|
||||
if (interpolateR_)
|
||||
{
|
||||
AverageIOField<symmTensor> Rexp
|
||||
fileName valsFile
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"R",
|
||||
this->db().time().caseConstant(),
|
||||
"boundaryData"/patch().name()/"0",
|
||||
this->db(),
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE,
|
||||
false
|
||||
)
|
||||
this->db().time().caseConstant()
|
||||
/"boundaryData"
|
||||
/this->patch().name()
|
||||
/"0"
|
||||
/"R"
|
||||
);
|
||||
|
||||
IFstream is(valsFile);
|
||||
|
||||
Field<symmTensor> Rexp(is);
|
||||
|
||||
OFstream os(db().time().path()/"lumley_input.out");
|
||||
|
||||
os << "# xi" << token::TAB << "eta" << endl;
|
||||
@ -507,7 +507,7 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::initialiseEddies()
|
||||
{
|
||||
WarningInFunction
|
||||
<< "Patch: " << patch().patch().name()
|
||||
<< " on field " << dimensionedInternalField().name()
|
||||
<< " on field " << internalField().name()
|
||||
<< ": No eddies seeded - please check your set-up" << endl;
|
||||
}
|
||||
}
|
||||
|
||||
@ -23,9 +23,9 @@ License
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "AverageIOField.H"
|
||||
#include "pointToPointPlanarInterpolation.H"
|
||||
#include "Time.H"
|
||||
#include "IFstream.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
@ -70,25 +70,23 @@ Foam::turbulentDFSEMInletFvPatchVectorField::interpolateBoundaryData
|
||||
{
|
||||
const word& patchName = this->patch().name();
|
||||
|
||||
// Note: reading from the '0' directory only
|
||||
IOobject io
|
||||
fileName valsFile
|
||||
(
|
||||
fieldName,
|
||||
this->db().time().caseConstant(),
|
||||
"boundaryData"/patchName/"0",
|
||||
this->db(),
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE,
|
||||
false
|
||||
this->db().time().caseConstant()
|
||||
/"boundaryData"
|
||||
/patchName
|
||||
/"0"
|
||||
/fieldName
|
||||
);
|
||||
|
||||
Info<< "Turbulent DFSEM patch " << this->patch().name()
|
||||
IFstream is(valsFile);
|
||||
Field<Type> vals(is);
|
||||
|
||||
Info<< "Turbulent DFSEM patch " << patchName
|
||||
<< ": interpolating field " << fieldName
|
||||
<< " from " << io.path() << endl;
|
||||
<< " from " << valsFile << endl;
|
||||
|
||||
AverageIOField<Type> aFld(io);
|
||||
|
||||
return patchMapper().interpolate(aFld);
|
||||
return patchMapper().interpolate(vals);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -78,10 +78,10 @@ private:
|
||||
// Private Member Functions
|
||||
|
||||
//- Disallow default bitwise copy construct
|
||||
fvMeshFunctionObject(const fvMeshFunctionObject&);
|
||||
fvMeshFunctionObject(const fvMeshFunctionObject&) = delete;
|
||||
|
||||
//- Disallow default bitwise assignment
|
||||
void operator=(const fvMeshFunctionObject&);
|
||||
void operator=(const fvMeshFunctionObject&) = delete;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -58,7 +58,7 @@ void Foam::functionObjects::volRegion::writeFileHeader
|
||||
(
|
||||
const writeFile& wf,
|
||||
Ostream& file
|
||||
)
|
||||
) const
|
||||
{
|
||||
wf.writeCommented(file, "Region");
|
||||
file<< setw(1) << ':' << setw(1) << ' '
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -106,8 +106,8 @@ public:
|
||||
//- Region type enumeration
|
||||
enum regionTypes
|
||||
{
|
||||
vrtCellZone,
|
||||
vrtAll
|
||||
vrtCellZone, //< cell zone
|
||||
vrtAll //< all cells
|
||||
};
|
||||
|
||||
//- Region type names
|
||||
@ -131,7 +131,7 @@ protected:
|
||||
// Protected Member Functions
|
||||
|
||||
//- Output file header information
|
||||
void writeFileHeader(const writeFile& wf, Ostream& file);
|
||||
void writeFileHeader(const writeFile& wf, Ostream& file) const;
|
||||
|
||||
|
||||
public:
|
||||
@ -143,11 +143,7 @@ public:
|
||||
// Constructors
|
||||
|
||||
//- Construct from fvMesh and dictionary
|
||||
volRegion
|
||||
(
|
||||
const fvMesh& mesh,
|
||||
const dictionary& dict
|
||||
);
|
||||
volRegion(const fvMesh& mesh, const dictionary& dict);
|
||||
|
||||
|
||||
//- Destructor
|
||||
|
||||
@ -38,7 +38,7 @@ Usage
|
||||
CourantNo1
|
||||
{
|
||||
type CourantNo;
|
||||
functionObjectLibs ("libutilityFunctionObjects.so");
|
||||
libs ("libfieldFunctionObjects.so");
|
||||
...
|
||||
}
|
||||
\endverbatim
|
||||
@ -113,8 +113,8 @@ public:
|
||||
CourantNo
|
||||
(
|
||||
const word& name,
|
||||
const Time&,
|
||||
const dictionary&
|
||||
const Time& runTime,
|
||||
const dictionary& dict
|
||||
);
|
||||
|
||||
|
||||
|
||||
178
src/functionObjects/field/DESModelRegions/DESModelRegions.C
Normal file
178
src/functionObjects/field/DESModelRegions/DESModelRegions.C
Normal file
@ -0,0 +1,178 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation
|
||||
\\/ M anipulation | Copyright (C) 2015-2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM is free software: you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
|
||||
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "DESModelRegions.H"
|
||||
#include "volFields.H"
|
||||
#include "DESModelBase.H"
|
||||
#include "turbulenceModel.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
namespace functionObjects
|
||||
{
|
||||
defineTypeNameAndDebug(DESModelRegions, 0);
|
||||
|
||||
addToRunTimeSelectionTable
|
||||
(
|
||||
functionObject,
|
||||
DESModelRegions,
|
||||
dictionary
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * //
|
||||
|
||||
void Foam::functionObjects::DESModelRegions::writeFileHeader(Ostream& os) const
|
||||
{
|
||||
writeHeader(os, "DES model region coverage (% volume)");
|
||||
|
||||
writeCommented(os, "Time");
|
||||
writeTabbed(os, "LES");
|
||||
writeTabbed(os, "RAS");
|
||||
os << endl;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::functionObjects::DESModelRegions::DESModelRegions
|
||||
(
|
||||
const word& name,
|
||||
const Time& runTime,
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
fvMeshFunctionObject(name, runTime, dict),
|
||||
writeFile(obr_, name, typeName, dict),
|
||||
resultName_(name)
|
||||
{
|
||||
read(dict);
|
||||
|
||||
tmp<volScalarField> tDESModelRegions
|
||||
(
|
||||
(
|
||||
new volScalarField
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
resultName_,
|
||||
time_.timeName(),
|
||||
mesh_,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
mesh_,
|
||||
dimensionedScalar("0", dimless, 0.0)
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
store(resultName_, tDESModelRegions);
|
||||
|
||||
writeFileHeader(file());
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::functionObjects::DESModelRegions::~DESModelRegions()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
bool Foam::functionObjects::DESModelRegions::read(const dictionary& dict)
|
||||
{
|
||||
writeFile::read(dict);
|
||||
|
||||
dict.readIfPresent("resultName", resultName_);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool Foam::functionObjects::DESModelRegions::execute()
|
||||
{
|
||||
Log << type() << " " << name() << " execute:" << nl;
|
||||
|
||||
volScalarField& DESModelRegions =
|
||||
const_cast<volScalarField&>
|
||||
(
|
||||
lookupObject<volScalarField>(resultName_)
|
||||
);
|
||||
|
||||
|
||||
if (foundObject<DESModelBase>(turbulenceModel::propertiesName))
|
||||
{
|
||||
const DESModelBase& model =
|
||||
lookupObject<DESModelBase>
|
||||
(
|
||||
turbulenceModel::propertiesName
|
||||
);
|
||||
|
||||
DESModelRegions == model.LESRegion();
|
||||
|
||||
scalar prc =
|
||||
gSum(DESModelRegions.primitiveField()*mesh_.V())
|
||||
/gSum(mesh_.V())*100.0;
|
||||
|
||||
file() << time_.value()
|
||||
<< token::TAB << prc
|
||||
<< token::TAB << 100.0 - prc
|
||||
<< endl;
|
||||
|
||||
Log << " LES = " << prc << " % (volume)" << nl
|
||||
<< " RAS = " << 100.0 - prc << " % (volume)" << nl
|
||||
<< endl;
|
||||
}
|
||||
else
|
||||
{
|
||||
Log << " No DES turbulence model found in database" << nl
|
||||
<< endl;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool Foam::functionObjects::DESModelRegions::write()
|
||||
{
|
||||
const volScalarField& DESModelRegions =
|
||||
lookupObject<volScalarField>(resultName_);
|
||||
|
||||
Log << type() << " " << name() << " output:" << nl
|
||||
<< " writing field " << DESModelRegions.name() << nl
|
||||
<< endl;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2013-2015 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -22,10 +22,10 @@ License
|
||||
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Class
|
||||
Foam::DESModelRegions
|
||||
Foam::functionObjects::DESModelRegions
|
||||
|
||||
Group
|
||||
grpUtilitiesFunctionObjects
|
||||
grpFieldFunctionObjects
|
||||
|
||||
Description
|
||||
This function object writes out an indicator field for DES turbulence
|
||||
@ -36,17 +36,17 @@ Description
|
||||
The field is stored on the mesh database so that it can be retrieved and
|
||||
used for other applications.
|
||||
|
||||
Usage
|
||||
Example of function object specification to generate DES indicator field:
|
||||
\verbatim
|
||||
DESModelRegions1
|
||||
{
|
||||
type DESModelRegions;
|
||||
functionObjectLibs ("libutilityFunctionObjects.so");
|
||||
libs ("libutilityFunctionObjects.so");
|
||||
...
|
||||
}
|
||||
\endverbatim
|
||||
|
||||
\heading Function object usage
|
||||
\table
|
||||
Property | Description | Required | Default value
|
||||
type | type name: DESModelRegions| yes |
|
||||
@ -56,29 +56,23 @@ Description
|
||||
|
||||
SourceFiles
|
||||
DESModelRegions.C
|
||||
IODESModelRegions.H
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef DESModelRegions_H
|
||||
#define DESModelRegions_H
|
||||
#ifndef functionObjects_DESModelRegions_H
|
||||
#define functionObjects_DESModelRegions_H
|
||||
|
||||
#include "functionObjectFile.H"
|
||||
#include "fvMeshFunctionObject.H"
|
||||
#include "writeFile.H"
|
||||
#include "volFieldsFwd.H"
|
||||
#include "Switch.H"
|
||||
#include "OFstream.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// Forward declaration of classes
|
||||
class objectRegistry;
|
||||
class dictionary;
|
||||
class polyMesh;
|
||||
class mapPolyMesh;
|
||||
class fvMesh;
|
||||
namespace functionObjects
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class DESModelRegions Declaration
|
||||
@ -86,26 +80,16 @@ class fvMesh;
|
||||
|
||||
class DESModelRegions
|
||||
:
|
||||
public functionObjectFile
|
||||
public fvMeshFunctionObject,
|
||||
public writeFile
|
||||
{
|
||||
protected:
|
||||
|
||||
// Protected data
|
||||
|
||||
//- Name of this set of DESModelRegions object
|
||||
word name_;
|
||||
|
||||
const objectRegistry& obr_;
|
||||
|
||||
//- on/off switch
|
||||
bool active_;
|
||||
|
||||
//- Result name
|
||||
word resultName_;
|
||||
|
||||
//- Switch to send output to Info as well as to file
|
||||
Switch log_;
|
||||
|
||||
|
||||
// Protected Member Functions
|
||||
|
||||
@ -113,10 +97,10 @@ protected:
|
||||
virtual void writeFileHeader(Ostream& os) const;
|
||||
|
||||
//- Disallow default bitwise copy construct
|
||||
DESModelRegions(const DESModelRegions&);
|
||||
DESModelRegions(const DESModelRegions&) = delete;
|
||||
|
||||
//- Disallow default bitwise assignment
|
||||
void operator=(const DESModelRegions&);
|
||||
void operator=(const DESModelRegions&) = delete;
|
||||
|
||||
|
||||
public:
|
||||
@ -126,15 +110,12 @@ public:
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct for given objectRegistry and dictionary.
|
||||
// Allow the possibility to load fields from files
|
||||
//- Construct from Time and dictionary
|
||||
DESModelRegions
|
||||
(
|
||||
const word& name,
|
||||
const objectRegistry&,
|
||||
const dictionary&,
|
||||
const bool loadFromFiles = false
|
||||
const Time& runTime,
|
||||
const dictionary& dict
|
||||
);
|
||||
|
||||
|
||||
@ -144,39 +125,20 @@ public:
|
||||
|
||||
// Member Functions
|
||||
|
||||
//- Return name of the set of DESModelRegions
|
||||
virtual const word& name() const
|
||||
{
|
||||
return name_;
|
||||
}
|
||||
|
||||
//- Read the DESModelRegions data
|
||||
virtual void read(const dictionary&);
|
||||
virtual bool read(const dictionary&);
|
||||
|
||||
//- Execute, currently does nothing
|
||||
virtual void execute();
|
||||
|
||||
//- Execute at the final time-loop, currently does nothing
|
||||
virtual void end();
|
||||
|
||||
//- Called when time was set at the end of the Time::operator++
|
||||
virtual void timeSet();
|
||||
//- Execute
|
||||
virtual bool execute();
|
||||
|
||||
//- Calculate the DESModelRegions and write
|
||||
virtual void write();
|
||||
|
||||
//- Update for changes of mesh
|
||||
virtual void updateMesh(const mapPolyMesh&)
|
||||
{}
|
||||
|
||||
//- Update for changes of mesh
|
||||
virtual void movePoints(const polyMesh&)
|
||||
{}
|
||||
virtual bool write();
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace functionObjects
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user