48 Commits

Author SHA1 Message Date
d3fd147e6c foamGet: added directory target for scalar field s 2018-11-26 11:21:03 +00:00
4fb28506e8 foamGet: selecting target directory based on file name 2018-11-23 19:16:33 +00:00
b492054bfd caseDicts: added example All* workflow scripts 2018-11-23 18:50:45 +00:00
0602504866 Allmesh scripts: removed unused variables and legacy syntax 2018-11-23 18:42:07 +00:00
9763346f31 chtMultiRegionFoam: Only do closed volume handling when running steady
This resolves bug report https://bugs.openfoam.org/view.php?id=3105
2018-11-13 09:28:01 +00:00
00e347c45a Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-6 2018-10-15 10:30:34 +01:00
1cc13ef87a etc/config.sh/aliases: use a direct call to $wmProjectDir/etc/config.sh/unset rather than the wmUnset alias
Patch contributed by Bruno Santos
Resolves patch request https://bugs.openfoam.org/view.php?id=3088
2018-10-15 10:28:52 +01:00
166e3a7a1f KinematicParcel: Do not execute face/patch functions when inactive
Resolves bug report https://bugs.openfoam.org/view.php?id=3084
2018-10-12 10:37:19 +01:00
1bc13ff592 doc/Doxygen/Doxyfile: Increased FORMULA_FONTSIZE to 16 2018-10-07 10:26:52 +01:00
2e39b995f6 template cases for rotating geometry: modify fields with AMI creation 2018-10-01 14:33:30 +01:00
35b809176d template cases: updated for change from pimpleDyMFoam to pimpleFoam 2018-10-01 14:25:56 +01:00
dea248aecd Doxyfile: Added amsmath to EXTRA_PACKAGES for complex equation formatting 2018-09-25 08:30:39 +01:00
26e2dcd5c7 Downgraded OpenMPI to 2.1.1 to avoid bug in the new "vader" shared memory module
Resolves bug-report https://bugs.openfoam.org/view.php?id=3071
2018-09-21 09:56:27 +01:00
af7d7f427b Downgraded OpenMPI to 3.0.2 to avoid bug in latest version
Resolves bug-report https://bugs.openfoam.org/view.php?id=3071
2018-09-14 00:02:23 +01:00
9afef77a90 gambitToFoam: Removed \file statement in header 2018-09-07 16:36:28 +01:00
d2c4174c4c Created .C files corresponding to the <application>.L files for Doxygen and -doc option
Resolves bug-report https://bugs.openfoam.org/view.php?id=3070
2018-09-07 15:13:24 +01:00
199f87f327 Doxyfile: include .L files and exclude .C files which clash with application source files
Resolves bug-report https://bugs.openfoam.org/view.php?id=3070
2018-09-06 18:06:49 +01:00
a9be0f471a doc/Doxygen/Doxyfile: Exclude src/mesh/blockMesh/blockMesh/blockMesh.C
to avoid clash with the blockMesh.C application source file
2018-09-06 00:02:48 +01:00
9668a8ca7b etc/controlDict: Updated online documentation link
Resolves bug-report https://bugs.openfoam.org/view.php?id=3067
2018-09-05 18:06:54 +01:00
32081b60f4 pimpleFoam: Corrected application name 2018-09-05 18:06:38 +01:00
37207f3279 greyDiffusiveRadiationMixedFvPatchScalarField, wideBandDiffusiveRadiationMixedFvPatchScalarField: Added mapping functions
Patch contributed by Timo Niemi, VTT.
Resolves patch request https://bugs.openfoam.org/view.php?id=3062
2018-08-31 16:04:43 +01:00
b38715c4b1 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-6 2018-08-13 14:49:52 +01:00
a2c8fc63d9 PDRFoam: Added betav to ddtCorr
Resolves bug-report https://bugs.openfoam.org/view.php?id=3014
2018-08-13 14:49:42 +01:00
1e3889d08a Updated OpenMPI version to 2.1.3
As commit fa095c1f, but csh settings
2018-08-13 08:51:16 +01:00
fa095c1fe8 Updated OpenMPI version to 2.1.3
This has been done in order to avoid "'aclocal-1.15' is missing on your
system" errors on systems which now ship with autoconf version 1.16.
2018-08-13 08:48:52 +01:00
535d1a46d2 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-6 2018-08-12 19:08:56 +01:00
bf2812ed5a water/thermophysicalProperties: Changed equation of state to perfectFluid 2018-08-12 19:05:57 +01:00
abb4358f2b wallHeatTransferCoeff: Avoid holding references to temporary fields 2018-08-09 10:57:50 +01:00
6f23328ef8 wallHeatFlux: Avoid holding references to temporary fields 2018-08-08 18:38:08 +01:00
c170b24e8e foamUpdateCaseFileHeader: Deleted because out of date and unmaintained 2018-08-08 15:36:43 +01:00
8bb011e46a tutorials/incompressible/simpleFoam/turbineSiting: Corrected header 2018-08-07 14:37:58 +01:00
9917d8a761 tutorials/incompressible/pimpleFoam/RAS/wingMotion: Corrected U BCs
Resolves bug-report https://bugs.openfoam.org/view.php?id=3029
2018-08-07 14:37:27 +01:00
0f14683c11 functionObjects: Generating and storing fields on demand rather than on construction
Resolves bug report https://bugs.openfoam.org/view.php?id=3019
2018-08-06 09:36:16 +01:00
1a0c91b3ba thermophysicalModels: Added laminar thermal diffusivity for energy, alphahe
Needed for laminar transport of he (h or e)

Resolves bug-report https://bugs.openfoam.org/view.php?id=3025
2018-08-05 11:33:58 +01:00
5c6e283b35 Pair: Include an unused return to avoid compiler warning 2018-08-03 12:07:14 +01:00
ab3187783a rigidBodyDynamics::compositeJoint: Reinstated setLastJoint joint assignment
Resolves bug-report https://bugs.openfoam.org/view.php?id=3016
2018-07-31 15:35:47 +01:00
f6aa1105a5 etc/caseDicts/postProcessing/visualization/surfaces: Corrected typo in comment
Resolves bug-report https://bugs.openfoam.org/view.php?id=3013
2018-07-31 14:14:50 +01:00
78b00911ad Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-6 2018-07-25 13:39:21 +01:00
ff66723ebb radiation: Removed the redundant "radiation off" switch from radiationProperties
To switch-off radiation set

    radiationModel  none;

in radiationProperties which instantiates "null" model that does not read any
data or coefficients or evaluate any fields.
2018-07-25 12:27:35 +01:00
50bf76a422 foamGet: check target directory exists and warn
only if controlDict does not exist.
2018-07-25 08:57:10 +01:00
82b3c0c1d5 cubicEqn, quadraticEqn: Correction to repeated roots
This resolves bug report https://bugs.openfoam.org/view.php?id=3015
2018-07-24 16:11:12 +01:00
63b0469a7b tutorials::coolingSphere/Allclean: avoid extended regular expressions in grep
Solves grep problem on Slackware 14.2

Patch contributed by Lorenzo Trevisan
Resolves patch request https://bugs.openfoam.org/view.php?id=3012
2018-07-24 11:54:17 +01:00
f2766db589 foamInfo: added -k | -keyword option, searches more broadly for a
case-insensitive keyword, rather than an specific model name. For
example, to search for all k-epsilon related models:

foamInfo -k kepsilon
2018-07-18 16:54:59 +01:00
e1944af08b Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-6 2018-07-18 16:53:43 +01:00
c7056f4734 foamGet: fixed when file only exists with extension,
e.g. sampleDict.cfg
2018-07-18 16:49:01 +01:00
8b86ccf55c foamGet: fixed when file only exists with extension,
e.g. sampleDict.cfg
2018-07-17 19:24:24 +01:00
66a81087c2 tutorials/incompressible/simpleFoam/turbineSiting: Corrected initialization 2018-07-13 15:26:55 +01:00
f845197ccf sampledSet/lineFace: Added error message 2018-07-12 11:02:01 +01:00
105 changed files with 925 additions and 814 deletions

View File

@ -146,7 +146,7 @@ void PDRkEpsilon::correct()
volScalarField GR(drag.Gk());
volScalarField LI
(C4_*(Lobs + dimensionedScalar("minLength", dimLength, vSmall)));
(C4_*(Lobs + dimensionedScalar("minLength", dimLength, rootVSmall)));
// Dissipation equation
tmp<fvScalarMatrix> epsEqn

View File

@ -11,7 +11,7 @@ if (pimple.transonic())
fvc::interpolate(psi)
*(
fvc::flux(HbyA)
+ fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi)
+ fvc::interpolate(betav*rho*rAU)*fvc::ddtCorr(rho, U, phi)
/fvc::interpolate(rho)
)
);
@ -42,7 +42,7 @@ else
"phiHbyA",
(
fvc::flux(rho*HbyA)
+ fvc::interpolate(rho*rAU)*fvc::ddtCorr(rho, U, phi)
+ fvc::interpolate(betav*rho*rAU)*fvc::ddtCorr(rho, U, phi)
)
);

View File

@ -48,7 +48,7 @@ Description
#include "fvCFD.H"
#include "singlePhaseTransportModel.H"
#include "turbulentTransportModel.H"
#include "radiationModel.H"
#include "noRadiation.H"
#include "fvOptions.H"
#include "pimpleControl.H"

View File

@ -48,7 +48,7 @@ Description
#include "fvCFD.H"
#include "singlePhaseTransportModel.H"
#include "turbulentTransportModel.H"
#include "radiationModel.H"
#include "noRadiation.H"
#include "fvOptions.H"
#include "simpleControl.H"

View File

@ -22,7 +22,7 @@ surfaceScalarField phiHbyA
MRF.makeRelative(fvc::interpolate(rho), phiHbyA);
const bool closedVolume = adjustPhi(phiHbyA, U, p_rgh);
const bool closedVolume = mesh.steady() && adjustPhi(phiHbyA, U, p_rgh);
const bool adjustMass = closedVolume && !thermo.incompressible();
phiHbyA += phig;

View File

@ -22,7 +22,7 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
pimpleDyMFoam.C
pimpleFoam
Description
Transient solver for incompressible, turbulent flow of Newtonian fluids,

View File

@ -350,6 +350,25 @@ Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureThermo::kappa
}
Foam::tmp<Foam::volScalarField> Foam::twoPhaseMixtureThermo::alphahe() const
{
return
alpha1()*thermo1_->alphahe()
+ alpha2()*thermo2_->alphahe();
}
Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureThermo::alphahe
(
const label patchi
) const
{
return
alpha1().boundaryField()[patchi]*thermo1_->alphahe(patchi)
+ alpha2().boundaryField()[patchi]*thermo2_->alphahe(patchi);
}
Foam::tmp<Foam::volScalarField> Foam::twoPhaseMixtureThermo::kappaEff
(
const volScalarField& alphat

View File

@ -266,6 +266,12 @@ public:
const label patchi
) const;
//- Thermal diffusivity for energy of mixture [kg/m/s]
virtual tmp<volScalarField> alphahe() const;
//- Thermal diffusivity for energy of mixture for patch [kg/m/s]
virtual tmp<scalarField> alphahe(const label patchi) const;
//- Effective thermal diffusivity of mixture [J/m/s/K]
virtual tmp<volScalarField> kappaEff
(

View File

@ -603,6 +603,45 @@ Foam::tmp<Foam::scalarField> Foam::multiphaseMixtureThermo::kappa
}
Foam::tmp<Foam::volScalarField> Foam::multiphaseMixtureThermo::alphahe() const
{
PtrDictionary<phaseModel>::const_iterator phasei = phases_.begin();
tmp<volScalarField> talphaEff(phasei()*phasei().thermo().alphahe());
for (++phasei; phasei != phases_.end(); ++phasei)
{
talphaEff.ref() += phasei()*phasei().thermo().alphahe();
}
return talphaEff;
}
Foam::tmp<Foam::scalarField> Foam::multiphaseMixtureThermo::alphahe
(
const label patchi
) const
{
PtrDictionary<phaseModel>::const_iterator phasei = phases_.begin();
tmp<scalarField> talphaEff
(
phasei().boundaryField()[patchi]
*phasei().thermo().alphahe(patchi)
);
for (++phasei; phasei != phases_.end(); ++phasei)
{
talphaEff.ref() +=
phasei().boundaryField()[patchi]
*phasei().thermo().alphahe(patchi);
}
return talphaEff;
}
Foam::tmp<Foam::volScalarField> Foam::multiphaseMixtureThermo::kappaEff
(
const volScalarField& alphat

View File

@ -397,6 +397,12 @@ public:
const label patchi
) const;
//- Thermal diffusivity for energy of mixture [kg/m/s]
virtual tmp<volScalarField> alphahe() const;
//- Thermal diffusivity for energy of mixture for patch [kg/m/s]
virtual tmp<scalarField> alphahe(const label patchi) const;
//- Effective thermal diffusivity of mixture [J/m/s/K]
virtual tmp<volScalarField> kappaEff
(

View File

@ -201,15 +201,6 @@ public:
virtual void divU(tmp<volScalarField> divU);
// Transport (prevents compiler warnings)
//- Return the effective thermal conductivity
using BasePhaseModel::kappaEff;
//- Return the effective thermal conductivity for enthalpy
using BasePhaseModel::alphaEff;
// Turbulence
//- Return the turbulent dynamic viscosity
@ -224,17 +215,23 @@ public:
//- Return the effective kinematic viscosity
virtual tmp<volScalarField> nuEff() const;
//- Effective thermal turbulent diffusivity for temperature
// of mixture for patch [J/m/s/K]
using BasePhaseModel::kappaEff;
//- Return the effective thermal conductivity
virtual tmp<volScalarField> kappaEff() const;
//- Return the effective thermal conductivity on a patch
virtual tmp<scalarField> kappaEff(const label patchi) const;
//- Return the effective thermal diffusivity for enthalpy
//- Effective thermal turbulent diffusivity of mixture [kg/m/s]
using BasePhaseModel::alphaEff;
//- Return the effective thermal diffusivity
virtual tmp<volScalarField> alphaEff() const;
//- Return the effective thermal conductivity for enthalpy on a
// patch
//- Return the effective thermal conductivity on a patch
virtual tmp<scalarField> alphaEff(const label patchi) const;
//- Return the turbulent kinetic energy

View File

@ -171,15 +171,6 @@ public:
virtual void divU(tmp<volScalarField> divU);
// Transport (prevents compiler warnings)
//- Return the effective thermal conductivity
using BasePhaseModel::kappaEff;
//- Return the effective thermal conductivity for enthalpy
using BasePhaseModel::alphaEff;
// Turbulence
//- Return the turbulent dynamic viscosity
@ -194,17 +185,23 @@ public:
//- Return the effective kinematic viscosity
virtual tmp<volScalarField> nuEff() const;
//- Effective thermal turbulent diffusivity for temperature
// of mixture for patch [J/m/s/K]
using BasePhaseModel::kappaEff;
//- Return the effective thermal conductivity
virtual tmp<volScalarField> kappaEff() const;
//- Return the effective thermal conductivity on a patch
virtual tmp<scalarField> kappaEff(const label patchi) const;
//- Return the effective thermal diffusivity for enthalpy
//- Effective thermal turbulent diffusivity of mixture [kg/m/s]
using BasePhaseModel::alphaEff;
//- Return the effective thermal diffusivity
virtual tmp<volScalarField> alphaEff() const;
//- Return the effective thermal conductivity for enthalpy on a
// patch
//- Return the effective thermal conductivity on a patch
virtual tmp<scalarField> alphaEff(const label patchi) const;
//- Return the turbulent kinetic energy

View File

@ -153,6 +153,25 @@ Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::kappa
}
template<class BasePhaseModel, class ThermoType>
Foam::tmp<Foam::volScalarField>
Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::alphahe() const
{
return thermo_->alphahe();
}
template<class BasePhaseModel, class ThermoType>
Foam::tmp<Foam::scalarField>
Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::alphahe
(
const label patchi
) const
{
return thermo_->alphahe(patchi);
}
template<class BasePhaseModel, class ThermoType>
Foam::tmp<Foam::volScalarField>
Foam::ThermoPhaseModel<BasePhaseModel, ThermoType>::kappaEff

View File

@ -112,56 +112,63 @@ public:
//- Return the laminar kinematic viscosity on a patch
virtual tmp<scalarField> nu(const label patchi) const;
//- Return the laminar thermal conductivity
//- Thermal diffusivity for enthalpy of mixture [kg/m/s]
virtual tmp<volScalarField> alpha() const;
//- Thermal diffusivity for enthalpy of mixture for patch [kg/m/s]
virtual tmp<scalarField> alpha(const label patchi) const;
//- Thermal diffusivity for temperature of mixture [J/m/s/K]
virtual tmp<volScalarField> kappa() const;
//- Return the laminar thermal conductivity on a patch
//- Thermal diffusivity for temperature of mixture
// for patch [J/m/s/K]
virtual tmp<scalarField> kappa(const label patchi) const;
//- Return the laminar thermal conductivity, given the turbulent
// thermal diffusivity
//- Thermal diffusivity for energy of mixture [kg/m/s]
virtual tmp<volScalarField> alphahe() const;
//- Thermal diffusivity for energy of mixture for patch [kg/m/s]
virtual tmp<scalarField> alphahe(const label patchi) const;
// Turbulence
//- Effective thermal turbulent diffusivity for temperature
// of mixture for patch [J/m/s/K]
using BasePhaseModel::kappaEff;
//- Effective thermal turbulent diffusivity for temperature
// of mixture [J/m/s/K]
virtual tmp<volScalarField> kappaEff
(
const volScalarField& alphat
) const;
//- Return the laminar thermal conductivity on a patch, given the
// turbulent thermal diffusivity
//- Effective thermal turbulent diffusivity for temperature
// of mixture for patch [J/m/s/K]
virtual tmp<scalarField> kappaEff
(
const scalarField& alphat,
const label patchi
) const;
//- Return the thermal diffusivity for enthalpy
virtual tmp<volScalarField> alpha() const;
//- Effective thermal turbulent diffusivity of mixture [kg/m/s]
using BasePhaseModel::alphaEff;
//- Return the thermal diffusivity for enthalpy on a patch
virtual tmp<scalarField> alpha(const label patchi) const;
//- Return the effective thermal diffusivity for enthalpy, given the
// turbulent thermal diffusivity
//- Effective thermal turbulent diffusivity of mixture [kg/m/s]
virtual tmp<volScalarField> alphaEff
(
const volScalarField& alphat
) const;
//- Return the effective thermal diffusivity for enthalpy on a
// patch, given the turbulent thermal diffusivity
//- Effective thermal turbulent diffusivity of mixture
// for patch [kg/m/s]
virtual tmp<scalarField> alphaEff
(
const scalarField& alphat,
const label patchi
) const;
// Turbulence (prevents compiler warnings)
//- Return the effective thermal conductivity
using BasePhaseModel::kappaEff;
//- Return the effective thermal conductivity for enthalpy
using BasePhaseModel::alphaEff;
};

View File

@ -327,42 +327,48 @@ public:
//- Return the laminar kinematic viscosity on a patch
virtual tmp<scalarField> nu(const label patchi) const = 0;
//- Return the laminar thermal conductivity
//- Thermal diffusivity for enthalpy of mixture [kg/m/s]
virtual tmp<volScalarField> alpha() const = 0;
//- Thermal diffusivity for enthalpy of mixture for patch [kg/m/s]
virtual tmp<scalarField> alpha(const label patchi) const = 0;
//- Thermal diffusivity for temperature of mixture [J/m/s/K]
virtual tmp<volScalarField> kappa() const = 0;
//- Return the laminar thermal conductivity on a patch
//- Thermal diffusivity for temperature of mixture
// for patch [J/m/s/K]
virtual tmp<scalarField> kappa(const label patchi) const = 0;
//- Return the effective thermal conductivity, given the turbulent
// thermal diffusivity
//- Thermal diffusivity for energy of mixture [kg/m/s]
virtual tmp<volScalarField> alphahe() const = 0;
//- Thermal diffusivity for energy of mixture for patch [kg/m/s]
virtual tmp<scalarField> alphahe(const label patchi) const = 0;
//- Effective thermal turbulent diffusivity for temperature
// of mixture [J/m/s/K]
virtual tmp<volScalarField> kappaEff
(
const volScalarField& alphat
) const = 0;
//- Return the effective thermal conductivity on a patch, given the
// turbulent thermal diffusivity
//- Effective thermal turbulent diffusivity for temperature
// of mixture for patch [J/m/s/K]
virtual tmp<scalarField> kappaEff
(
const scalarField& alphat,
const label patchi
) const = 0;
//- Return the laminar thermal diffusivity for enthalpy
virtual tmp<volScalarField> alpha() const = 0;
//- Return the laminar thermal diffusivity for enthalpy on a patch
virtual tmp<scalarField> alpha(const label patchi) const = 0;
//- Return the effective thermal diffusivity for enthalpy, given the
// turbulent thermal diffusivity
//- Effective thermal turbulent diffusivity of mixture [kg/m/s]
virtual tmp<volScalarField> alphaEff
(
const volScalarField& alphat
) const = 0;
//- Return the effective thermal diffusivity for enthalpy on a
// patch, given the turbulent thermal diffusivity
//- Effective thermal turbulent diffusivity of mixture
// for patch [kg/m/s]
virtual tmp<scalarField> alphaEff
(
const scalarField& alphat,
@ -384,17 +390,19 @@ public:
//- Return the effective kinematic viscosity
virtual tmp<volScalarField> nuEff() const = 0;
//- Return the effective thermal conductivity
//- Effective thermal turbulent diffusivity for temperature
// of mixture [J/m/s/K]
virtual tmp<volScalarField> kappaEff() const = 0;
//- Return the effective thermal conductivity on a patch
//- Effective thermal turbulent diffusivity for temperature
// of mixture for patch [J/m/s/K]
virtual tmp<scalarField> kappaEff(const label patchi) const = 0;
//- Return the effective thermal diffusivity for enthalpy
//- Effective thermal turbulent diffusivity of mixture [kg/m/s]
virtual tmp<volScalarField> alphaEff() const = 0;
//- Return the effective thermal conductivity for enthalpy on a
// patch
//- Effective thermal turbulent diffusivity of mixture
// for patch [kg/m/s]
virtual tmp<scalarField> alphaEff(const label patchi) const = 0;
//- Return the turbulent kinetic energy

View File

@ -196,19 +196,45 @@ public:
return thermo_->mu(patchi);
}
//- Return the thermal conductivity on a patch
//- Thermal diffusivity for enthalpy of mixture [kg/m/s]
tmp<volScalarField> alpha() const
{
return thermo_->alpha();
}
//- Thermal diffusivity for enthalpy of mixture for patch [kg/m/s]
tmp<scalarField> alpha(const label patchi) const
{
return thermo_->alpha(patchi);
}
//- Thermal diffusivity for temperature of mixture [J/m/s/K]
tmp<scalarField> kappa(const label patchi) const
{
return thermo_->kappa(patchi);
}
//- Return the thermal conductivity
//- Thermal diffusivity for temperature of mixture
// for patch [J/m/s/K]
tmp<volScalarField> kappa() const
{
return thermo_->kappa();
}
//- Return the laminar thermal conductivity
//- Thermal diffusivity for energy of mixture [kg/m/s]
tmp<volScalarField> alphahe() const
{
return thermo_->alphahe();
}
//- Thermal diffusivity for energy of mixture for patch [kg/m/s]
tmp<scalarField> alphahe(const label patchi) const
{
return thermo_->alphahe(patchi);
}
//- Effective thermal turbulent diffusivity for temperature
// of mixture [J/m/s/K]
tmp<volScalarField> kappaEff
(
const volScalarField& alphat
@ -217,7 +243,8 @@ public:
return thermo_->kappaEff(alphat);
}
//- Return the laminar thermal conductivity on a patch
//- Effective thermal turbulent diffusivity for temperature
// of mixture for patch [J/m/s/K]
tmp<scalarField> kappaEff
(
const scalarField& alphat,
@ -227,19 +254,7 @@ public:
return thermo_->kappaEff(alphat, patchi);
}
//- Return the laminar thermal diffusivity for enthalpy
tmp<volScalarField> alpha() const
{
return thermo_->alpha();
}
//- Return the laminar thermal diffusivity for enthalpy on a patch
tmp<scalarField> alpha(const label patchi) const
{
return thermo_->alpha(patchi);
}
//- Return the effective thermal diffusivity for enthalpy
//- Effective thermal turbulent diffusivity of mixture [kg/m/s]
tmp<volScalarField> alphaEff
(
const volScalarField& alphat
@ -248,7 +263,8 @@ public:
return thermo_->alphaEff(alphat);
}
//- Return the effective thermal diffusivity for enthalpy on a patch
//- Effective thermal turbulent diffusivity of mixture
// for patch [kg/m/s]
tmp<scalarField> alphaEff
(
const scalarField& alphat,

View File

@ -0,0 +1,31 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2018 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
ansysToFoam
Description
Converts an ANSYS input mesh file, exported from I-DEAS,
to OpenFOAM format.
\*---------------------------------------------------------------------------*/

View File

@ -21,13 +21,6 @@ License
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
ansysToFoam
Description
Converts an ANSYS input mesh file, exported from I-DEAS,
to OpenFOAM format.
\*---------------------------------------------------------------------------*/
%{

View File

@ -0,0 +1,30 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2018 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
fluent3DMeshToFoam
Description
Converts a Fluent mesh to OpenFOAM format.
\*---------------------------------------------------------------------------*/

View File

@ -21,12 +21,6 @@ License
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
fluent3DMeshToFoam
Description
Converts a Fluent mesh to OpenFOAM format.
\*---------------------------------------------------------------------------*/
%{

View File

@ -0,0 +1,31 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2018 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
fluentMeshToFoam
Description
Converts a Fluent mesh to OpenFOAM format
including multiple region and region boundary handling.
\*---------------------------------------------------------------------------*/

View File

@ -21,13 +21,6 @@ License
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
fluentMeshToFoam
Description
Converts a Fluent mesh to OpenFOAM format
including multiple region and region boundary handling.
\*---------------------------------------------------------------------------*/
%{

View File

@ -0,0 +1,30 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2018 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
gambitToFoam
Description
Converts a GAMBIT mesh to OpenFOAM format.
\*---------------------------------------------------------------------------*/

View File

@ -21,12 +21,6 @@ License
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application
gambitToFoam
Description
Converts a GAMBIT mesh to OpenFOAM format.
\*---------------------------------------------------------------------------*/
%{

View File

@ -54,7 +54,7 @@ USAGE
error() {
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
while [ "$#" -ge 1 ]; do echo "Error: $1"; shift; done
usage
exit 1
}
@ -68,8 +68,8 @@ findFilesInDirs () {
[ -d "$_d" ] && _out="$(find "$_d" -name "$_str" -type f | sort) $_out"
done
# Remove whitespace
echo "$_out" | xargs -n 1
# Remove whitespace and blank lines
echo "$_out" | xargs -n 1 | awk 'NF'
}
findFiles () {
@ -136,7 +136,7 @@ setFile () {
noFilesMessage () {
_ext="$1"
[ "$_ext" = "ANY" ] && echo "(with or without file extensions)" && return 1
[ -n "$_ext" ] && echo "with file extension $_ext" && return 1
[ -n "$_ext" ] && echo "with file extension '$_ext'" && return 1
}
searchDirs="\
@ -146,7 +146,7 @@ searchDirs="\
$FOAM_ETC/caseDicts"
ext="ANY"
tgt="system"
tgt=""
while [ "$#" -gt 0 ]
do
case "$1" in
@ -170,7 +170,6 @@ do
-t | -target)
[ "$#" -ge 2 ] || error "'$1' option requires an argument"
tgt="$2"
[ -d "$tgt" ] || error "directory with -t option does not exist: '$tgt'"
shift 2
;;
-*)
@ -183,15 +182,32 @@ do
done
[ $# -gt 1 ] && error "$# arguments \"$*\" specified: only 1 permitted"
[ $# -eq 1 ] || error "Missing argument: no file name/prefix <file> supplied"
[ $# -eq 1 ] || error "missing argument: no file name/prefix <file> supplied"
prefix="$1"
[ "$tgt" ] || \
case "$prefix" in
All*)
tgt="."
;;
*Properties|*Cloud)
tgt="constant"
;;
s)
tgt="0"
;;
*)
tgt="system"
;;
esac
[ -s "system/controlDict" ] || \
error "Cannot find OpenFOAM case directory (no system/controlDict file)"
echo "Warning: cannot find OpenFOAM case directory (no system/controlDict file)"
[ -d "$tgt" ] || error "target directory does not exist: '$tgt'"
files="$(findFiles "$searchDirs" "$prefix" "$ext")"
[ -z "$files" ] && \
error "No file $prefix found $(noFilesMessage "$ext")"
error "no file $prefix found $(noFilesMessage "$ext")"
nFiles="$(nArgs "$files")"
[ "$nFiles" -eq 1 ] && cpFile "$files" "$tgt" && exit 0

View File

@ -39,6 +39,7 @@ options:
-browser | -b <name> output C++ source guide web page with specified browser,
e.g. foamInfo -browser "firefox"
-help | -h print the usage
-keyword | -k uses <name> as a keyword, rather than an exact match
-web | -w output C++ source guide web page with the browser
specified in the global controlDict file
@ -49,13 +50,22 @@ Prints the following for an application, a script, or a model
- Usage details from the header file;
- Examples: a list of relevant cases from the tutorials directory.
For example, run:
By default, finds a case-sensitive match to <name>; otherwise, a
case-insensitive match; otherwise, looks for a broader keyword match
with "-keyword | -k" option.
Examples:
foamInfo simpleFoam
foamInfo kEpsilon
foamInfo turbulentIntensityKineticEnergyInlet
foamInfo fixedTemperatureConstraint
foamInfo surfaces
foamInfo foamNewBC
foamInfo wallFunction
foamInfo kEpsilon
foamInfo -k kEpsilon
foamInfo fixedValue
foamInfo -k fixedValue
foamInfo -k contactAngle
USAGE
}
@ -67,6 +77,17 @@ error() {
exit 1
}
# (1) case-sensitive match; (2) case-insensitive match; (3) keyword match
findModelFiles() {
find "$FOAM_SRC" \
-name "$1" \
-iname "$2" \
! -iname "$3" \
! -name "*Fwd.H" \
! -name "*Fields.H" \
! -name "*I.H" -type f
}
findFiles() {
_pre="$1"
@ -77,20 +98,16 @@ findFiles() {
_out="$(find "$FOAM_SRC/../bin" -name "${_pre}" -type f) $_out"
# Model
# exact match
_models="$(find "$FOAM_SRC" \
-name "${_pre}*.H" \
! -name "*Fwd.H" \
! -name "*Fields.H" \
! -name "*I.H" -type f)"
# case-sensitive match
_models="$(findModelFiles "${_pre}*.H" "*" "")"
# otherwise "looser" match
# case-insensitive match
[ "$_models" ] || \
_models="$(find "$FOAM_SRC" \
-iname "*${_pre}*.H" \
! -name "*Fwd.H" \
! -name "*Fields.H" \
! -name "*I.H" -type f)"
_models="$(findModelFiles "*" "${_pre}*.H" "")"
# keyword match
[ "$_models" -a ! "$KEYWORD" ] || \
_models="$_models $(findModelFiles "*" "*${_pre}*.H" "${_pre}*.H")"
_out="$_models $_out"
@ -105,7 +122,7 @@ findFiles() {
_out="$(find "$FOAM_ETC" -name "${_pre}" -type f) $_out"
# Remove whitespace
echo "$_out" | xargs -n 1
echo "$_out" | xargs -n 1 | awk 'NF'
}
nArgs() {
@ -292,6 +309,7 @@ all=""
# Global controlDict file
controlDict="$(foamEtcFile controlDict 2> /dev/null)"
BROWSER="$(grep docBrowser "$controlDict" 2> /dev/null | cut -d "\"" -f2)"
KEYWORD=""
while [ "$#" -gt 0 ]
do
@ -309,6 +327,10 @@ do
-h | -help)
usage && exit 0
;;
-k | -keyword)
KEYWORD="yes"
shift
;;
-w | -web)
web="yes"
shift

View File

@ -1,145 +0,0 @@
#!/bin/sh
#------------------------------------------------------------------------------
# ========= |
# \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
# \\ / O peration | Website: https://openfoam.org
# \\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
# \\/ M anipulation |
#------------------------------------------------------------------------------
# License
# This file is part of OpenFOAM.
#
# OpenFOAM is free software: you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
#
# Script
# foamUpdateCaseFileHeader
#
# Description
# Updates the header of application files.
# By default, writes current version in the header.
# Alternatively version can be specified with -v option.
# Also removes consecutive blank lines from file.
#
#------------------------------------------------------------------------------
error() {
exec 1>&2
while [ "$#" -ge 1 ]; do echo "$1"; shift; done
usage
exit 1
}
usage() {
cat<<USAGE
Usage: ${0##*/} [OPTION] <file1> ... <fileN>
options:
-version <ver> specifies the version to be written in the header
-help print the usage
Updates the header of application files and removes consecutive blank lines.
By default, writes current OpenFOAM version in the header.
An alternative version can be specified with the -version option.
USAGE
}
while [ "$#" -gt 0 ]
do
case "$1" in
-h | -help)
usage && exit 0
;;
-v | -version)
[ "$#" -ge 2 ] || error "'$1' option requires an argument"
version="$2"
shift 2
;;
-*)
error "unknown option: '$*'"
;;
*)
break
;;
esac
done
echo "$version" | grep -Eq '^([0-9]\.[0-9x]|dev)$' || \
error "The version number is \"${version}\"." \
"The format must be MAJOR.MINOR (e.g. \"$WM_PROJECT_VERSION\" or \"dev\")"
# constant width for version - default to WM_PROJECT_VERSION
version=$(printf %-36s "${version:-$WM_PROJECT_VERSION}")
[ $# -ge 1 ] || error
printHeader()
{
cat<<HEADER
/*--------------------------------*- C++ -*----------------------------------*\\
========= |
| \\\\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\\\ / O peration | Version: $version |
| \\\\ / A nd | Website: https://openfoam.org |
| \\\\/ M anipulation | |
\\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format $1;
class $2;
object $3;
}
HEADER
}
#
# extract attribute '$1' from file '$2'
#
FoamFileAttribute()
{
sed -n -e 's/[ ;]*$//' -e "s/^ *$1 *//p" "$2"
}
#
# main
#
tmpFile=FoamFile.tmp$$
for caseFile
do
if grep FoamFile $caseFile >/dev/null 2>&1
then
echo "Updating case file: $caseFile"
sed -n '/FoamFile/,/}/p' $caseFile > $tmpFile
format=$(FoamFileAttribute format $tmpFile)
class=$(FoamFileAttribute class $tmpFile)
object=$(FoamFileAttribute object $tmpFile)
printHeader "$format" "$class" "$object" > $tmpFile
sed '1,/}/d' $caseFile | sed '/./,/^$/!d' >> $tmpFile
# use cat to avoid removing/replace soft-links
[ -s $tmpFile ] && cat $tmpFile >| $caseFile
rm -f $tmpFile 2>/dev/null
else
echo " Invalid case file: $caseFile" 1>&2
fi
done
#------------------------------------------------------------------------------

View File

@ -793,9 +793,7 @@ INPUT_ENCODING = UTF-8
# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd,
# *.vhdl, *.ucf, *.qsf, *.as and *.js.
FILE_PATTERNS = *.H \
*.C \
*.dox
FILE_PATTERNS = *.H *.C
# The RECURSIVE tag can be used to specify whether or not subdirectories should
# be searched for input files as well.
@ -810,7 +808,11 @@ RECURSIVE = YES
# Note that relative paths are relative to the directory from which doxygen is
# run.
EXCLUDE =
EXCLUDE = \
$(WM_PROJECT_DIR)/src/mesh/blockMesh/blockMesh/blockMesh.C \
$(WM_PROJECT_DIR)/src/dynamicMesh/polyTopoChange/polyTopoChange/removeFaces.C \
$(WM_PROJECT_DIR)/src/meshTools/sets/topoSets/topoSet.C \
$(WM_PROJECT_DIR)/src/conversion/polyDualMesh/polyDualMesh.C
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
@ -1422,7 +1424,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 = 10
FORMULA_FONTSIZE = 16
# Use the FORMULA_TRANPARENT tag to determine whether or not the images
# generated for formulas are transparent PNGs. Transparent PNGs are not
@ -1632,7 +1634,8 @@ PAPER_TYPE = a4wide
# If left blank no extra packages will be included.
# This tag requires that the tag GENERATE_LATEX is set to YES.
EXTRA_PACKAGES = $(WM_PROJECT_DIR)/doc/Doxygen/Macros/tensorOperator
EXTRA_PACKAGES = $(WM_PROJECT_DIR)/doc/Doxygen/Macros/tensorOperator \
amsmath
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
# generated LaTeX document. The header should contain everything until the first

View File

@ -0,0 +1,17 @@
#!/bin/sh
# Run from this directory
cd "${0%/*}" || exit 1
# Source tutorial clean functions
. "$WM_PROJECT_DIR/bin/tools/CleanFunctions"
# Delete the following:
# - time directories
# - constant/polyMesh directory
# - postProcessing and VTK directories
# - log files
# - field files with a ".orig" backup
cleanCase
#------------------------------------------------------------------------------

View File

@ -0,0 +1,15 @@
#!/bin/sh
# Run from this directory
cd "${0%/*}" || exit 1
# Source tutorial run functions
. "$WM_PROJECT_DIR/bin/tools/RunFunctions"
# Example workflow with meshing applications
runApplication blockMesh
runApplication topoSet
runApplication refineMesh -overwrite
runApplication transformPoints -scale "(0.01 0.01 0.01)"
#------------------------------------------------------------------------------

View File

@ -0,0 +1,33 @@
#!/bin/sh
# Run from this directory
cd "${0%/*}" || exit 1
# Source tutorial run functions
. "$WM_PROJECT_DIR/bin/tools/RunFunctions"
# Example with runApplication:
# - runs blockMesh in background
# - redirecting standard output to log.blockMesh
# - does *not* run in log file already exists
runApplication blockMesh
# Example running topoSet and refineMesh 3 times with multiple dictionaries
# -a|-append option appends to log file
i=0
while [ "$i" -lt 3 ]
do
runApplication -a topoSet -dict "topoSetDict.${i}"
runApplication -a refineMesh -dict "refineMeshDict.${i}"
i=$(( i + 1))
done
runApplication decomposePar
# Example with runParallel to run in parallel
# getApplication finds solver name from "application" entry in controlDict
runParallel "$(getApplication)"
runApplication reconstructPar
#------------------------------------------------------------------------------

View File

@ -40,7 +40,7 @@ surfaces
pointAndNormalDict
{
basePoint (0 0 2); // Overrides default basePoint (0 0 0)
normalVector $z; // $y: macro for (0 0 1)
normalVector $z; // $z: macro for (0 0 1)
}
}

View File

@ -82,7 +82,7 @@ wmRefresh()
{
wmProjectDir=$WM_PROJECT_DIR
foamSettings=$FOAM_SETTINGS
wmUnset
. $wmProjectDir/etc/config.sh/unset
. $wmProjectDir/etc/bashrc $foamSettings
}

View File

@ -24,7 +24,7 @@ Documentation
"$WM_PROJECT_USER_DIR/html"
"~OpenFOAM/html"
"$WM_PROJECT_DIR/doc/Doxygen/html"
"http://cpp.openfoam.org/dev"
"http://cpp.openfoam.org/v6"
);
doxySourceFileExt "_8C.html";
}

View File

@ -16,6 +16,8 @@ FoamFile
internalFacesOnly true;
fields true;
baffles
{
baffleFaces

View File

@ -16,7 +16,7 @@ FoamFile
solvers
{
p
"(p|pcorr)"
{
solver GAMG;
smoother GaussSeidel;
@ -32,7 +32,7 @@ solvers
relTol 0.1;
}
pFinal
"(p|pcorr)Final"
{
$p;
relTol 0;

View File

@ -16,6 +16,8 @@ FoamFile
internalFacesOnly true;
fields true;
baffles
{
baffleFaces

View File

@ -16,7 +16,7 @@ FoamFile
solvers
{
p
"(p|pcorr)"
{
solver GAMG;
smoother GaussSeidel;
@ -32,7 +32,7 @@ solvers
relTol 0.1;
}
pFinal
"(p|pcorr)Final"
{
$p;
relTol 0;

View File

@ -15,9 +15,7 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel P1;
radiationModel none; // P1;
solverFreq 1;

View File

@ -15,9 +15,7 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel P1;
radiationModel none; // P1;
solverFreq 1;

View File

@ -20,7 +20,7 @@ thermoType
mixture pureMixture;
transport const;
thermo hConst;
equationOfState perfectGas;
equationOfState perfectFluid;
specie specie;
energy sensibleEnthalpy;
}
@ -32,6 +32,11 @@ mixture
nMoles 1;
molWeight 18.0; // [g/mol]
}
equationOfState
{
R 3000; // [J/(kg K)]
rho0 1027; // [kg/m^3]
}
thermodynamics
{
Cp 4181; // [J/(kg K)] at T = 293 K

View File

@ -116,6 +116,7 @@ public:
FatalErrorInFunction
<< "Call to other only valid for Pair with differing"
<< " elements:" << *this << abort(FatalError);
return first();
}
else if (first() == a)
{

View File

@ -96,7 +96,7 @@ Foam::Roots<3> Foam::cubicEqn::roots() const
if (oneReal)
{
const Roots<1> r = linearEqn(- a, b/3).roots();
const Roots<1> r = linearEqn(a, b/3).roots();
return Roots<3>(r.type(0), r[0]);
}
else if (twoReal)

View File

@ -71,7 +71,7 @@ Foam::Roots<2> Foam::quadraticEqn::roots() const
if (oneReal)
{
const Roots<1> r = linearEqn(- a, b/2).roots();
const Roots<1> r = linearEqn(a, b/2).roots();
return Roots<2>(r, r);
}
else if (twoReal)

View File

@ -102,42 +102,40 @@ public:
//- Re-read model coefficients if they have changed
virtual bool read();
//- Return the turbulent thermal diffusivity for enthalpy [kg/m/s]
//- Turbulent thermal diffusivity for enthalpy [kg/m/s]
virtual tmp<volScalarField> alphat() const
{
return alphat_;
}
//- Return the turbulent thermal diffusivity for enthalpy for a patch
// [kg/m/s]
//- Turbulent thermal diffusivity for enthalpy for a patch [kg/m/s]
virtual tmp<scalarField> alphat(const label patchi) const
{
return alphat()().boundaryField()[patchi];
}
//- Return the effective turbulent thermal diffusivity for temperature
// [J/m/s/K]
//- Effective thermal turbulent diffusivity for temperature
// of mixture [J/m/s/K]
virtual tmp<volScalarField> kappaEff() const
{
return this->transport_.kappaEff(alphat());
}
//- Return the effective turbulent thermal diffusivity for temperature
// [J/m/s/K]
//- Effective thermal turbulent diffusivity for temperature
// of mixture for patch [J/m/s/K]
virtual tmp<scalarField> kappaEff(const label patchi) const
{
return this->transport_.kappaEff(alphat(patchi), patchi);
}
//- Return the effective turbulent thermal diffusivity for enthalpy
// [kg/m/s]
//- Effective thermal turbulent diffusivity of mixture [kg/m/s]
virtual tmp<volScalarField> alphaEff() const
{
return this->transport_.alphaEff(alphat());
}
//- Return the effective turbulent thermal diffusivity for enthalpy
// for a patch [kg/m/s]
//- Effective thermal turbulent diffusivity of mixture
// for patch [kg/m/s]
virtual tmp<scalarField> alphaEff(const label patchi) const
{
return this->transport_.alphaEff(alphat(patchi), patchi);

View File

@ -107,65 +107,62 @@ public:
// Member Functions
//- Return the thermal diffusivity for temperature [J/m/s/K]
virtual tmp<volScalarField> kappa() const
{
return this->transport_.kappa();
}
//- Return the laminar thermal diffusivity for temperature on patch
// [J/m/s/K]
virtual tmp<scalarField> kappa(const label patchi) const
{
return this->transport_.kappa(patchi);
}
//- Return the laminar thermal diffusivity for enthalpy [kg/m/s]
//- Thermal diffusivity for enthalpy of mixture [kg/m/s]
virtual tmp<volScalarField> alpha() const
{
return this->transport_.alpha();
}
//- Return the laminar thermal diffusivity for enthalpy on patch
// [kg/m/s]
//- Thermal diffusivity for enthalpy of mixture for patch [kg/m/s]
virtual tmp<scalarField> alpha(const label patchi) const
{
return this->transport_.alpha(patchi);
}
//- Return the turbulent thermal diffusivity for enthalpy [kg/m/s]
//- Thermal diffusivity for temperature of mixture [J/m/s/K]
virtual tmp<volScalarField> kappa() const
{
return this->transport_.kappa();
}
//- Thermal diffusivity for temperature of mixture
// for patch [J/m/s/K]
virtual tmp<scalarField> kappa(const label patchi) const
{
return this->transport_.kappa(patchi);
}
//- Turbulent thermal diffusivity for enthalpy [kg/m/s]
virtual tmp<volScalarField> alphat() const;
//- Return the turbulent thermal diffusivity for enthalpy for a patch
// [kg/m/s]
//- Turbulent thermal diffusivity for enthalpy for a patch [kg/m/s]
virtual tmp<scalarField> alphat(const label patchi) const;
//- Return the effective turbulent thermal diffusivity for temperature
// [J/m/s/K]
//- Effective thermal turbulent diffusivity for temperature
// of mixture [J/m/s/K]
virtual tmp<volScalarField> kappaEff() const
{
return kappa();
}
//- Return the effective turbulent thermal diffusivity for temperature
// [J/m/s/K]
//- Effective thermal turbulent diffusivity for temperature
// of mixture for patch [J/m/s/K]
virtual tmp<scalarField> kappaEff(const label patchi) const
{
return kappa(patchi);
}
//- Return the effective turbulent thermal diffusivity for enthalpy
// [kg/m/s]
//- Effective thermal turbulent diffusivity of mixture [kg/m/s]
virtual tmp<volScalarField> alphaEff() const
{
return alpha();
return this->transport_.alphahe();
}
//- Return the effective turbulent thermal diffusivity for enthalpy
// for a patch [kg/m/s]
//- Effective thermal turbulent diffusivity of mixture
// for patch [kg/m/s]
virtual tmp<scalarField> alphaEff(const label patchi) const
{
return alpha(patchi);
return this->transport_.alphahe(patchi);
}
};

View File

@ -1,97 +0,0 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2012-2018 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software: you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
\page pageBoundaryConditions Boundary Conditions
\ref grpBoundaryConditions are required to 'close' the simulation problem.
Careful attention should be applied to their selection so as to create a
well-posed system of equations, which can be solved numerically.
\section secBoundaryConditionsOverview Overview
The set of available \ref grpBoundaryConditions comprise of basic, turbulent and
thermophysical types.
\subsection secBC1 Basic boundary conditions
- \ref grpConstraintBoundaryConditions
- \ref grpInletBoundaryConditions
- \ref grpOutletBoundaryConditions
- \ref grpGenericBoundaryConditions
- \ref grpCoupledBoundaryConditions
- \ref grpWallBoundaryConditions
\subsection secBC2 Turbulent flow boundary conditions
- \ref grpRASBoundaryConditions
\subsection secBC3 Thermophysical boundary conditions
- \ref grpThermoBoundaryConditions
\section secWallFunctions Wall-functions
Wall-functions in OpenFOAM are modelled as boundary conditions, applied to
the viscosity for momentum, and thermal diffusivity for energy.
Wall-functions
- \ref grpWallFunctions
Thermal wall-functions for incompressible flow
- \ref grpIcoWallFunctions
Thermal wall-functions for compressible flow
- \ref grpCmpWallFunctions
\section secBoundaryConditions Typical usage for pressure-velocity systems
The choice as to the most appropriate set of boundary conditions is dictated by
the type of flow problem. In many cases, multiple possible selections exist;
the following tables offer suggestions for subsonic flow.
subsonic inlet (flow specified):
\table
Variable | Symbol | Type
pressure | p | \link Foam::zeroGradientFvPatchField zeroGradient\endlink
velocity | U | \link Foam::fixedValueFvPatchField fixedValue\endlink
transported property | - | \link Foam::fixedValueFvPatchField fixedValue\endlink
derived property | - | \link Foam::calculatedFvPatchField calculated\endlink or \link Foam::zeroGradientFvPatchField zeroGradient\endlink
\endtable
subsonic outlet:
\table
Variable | Symbol | Type
pressure | p | \link Foam::fixedValueFvPatchField fixedValue\endlink
velocity | U | \link Foam::inletOutletFvPatchField inletOutlet\endlink or \link Foam::pressureInletOutletVelocityFvPatchVectorField pressureInletOutletVelocity\endlink
transported property | - | \link Foam::inletOutletFvPatchField inletOutlet\endlink
derived property | - | \link Foam::calculatedFvPatchField calculated\endlink or \link Foam::zeroGradientFvPatchField zeroGradient\endlink
\endtable
wall (impermeable, non-slip):
\table
Variable | Symbol | Type
pressure | p | \link Foam::zeroGradientFvPatchField zeroGradient\endlink
velocity | U | \link Foam::fixedValueFvPatchField fixedValue\endlink
transported property | - | \link Foam::fixedValueFvPatchField fixedValue\endlink
derived property | - | \link Foam::calculatedFvPatchField calculated\endlink or \link Foam::zeroGradientFvPatchField zeroGradient\endlink
\endtable
\*---------------------------------------------------------------------------*/

View File

@ -73,48 +73,33 @@ bool Foam::functionObjects::CourantNo::calc()
const surfaceScalarField& phi =
lookupObject<surfaceScalarField>(fieldName_);
tmp<volScalarField::Internal> Coi
tmp<volScalarField> tCo
(
new volScalarField
(
IOobject
(
resultName_,
mesh_.time().timeName(),
mesh_
),
mesh_,
dimensionedScalar("0", dimless, 0.0),
zeroGradientFvPatchScalarField::typeName
)
);
tCo->ref() =
byRho
(
(0.5*mesh_.time().deltaT())
*fvc::surfaceSum(mag(phi))()()
/mesh_.V()
)
);
if (foundObject<volScalarField>(resultName_))
{
volScalarField& Co = lookupObjectRef<volScalarField>(resultName_);
Co.ref() = Coi();
Co.correctBoundaryConditions();
}
else
{
tmp<volScalarField> tCo
(
new volScalarField
(
IOobject
(
resultName_,
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_,
dimensionedScalar("0", dimless, 0.0),
zeroGradientFvPatchScalarField::typeName
)
);
tCo.ref().ref() = Coi();
tCo.ref().correctBoundaryConditions();
mesh_.objectRegistry::store(tCo.ptr());
}
return true;
tCo->correctBoundaryConditions();
return store(resultName_, tCo);
}
else
{

View File

@ -51,25 +51,6 @@ Foam::functionObjects::processorField::processorField
fvMeshFunctionObject(name, runTime, dict)
{
read(dict);
volScalarField* procFieldPtr
(
new volScalarField
(
IOobject
(
"processorID",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_,
dimensionedScalar("0", dimless, 0.0)
)
);
mesh_.objectRegistry::store(procFieldPtr);
}
@ -91,10 +72,24 @@ bool Foam::functionObjects::processorField::read(const dictionary& dict)
bool Foam::functionObjects::processorField::execute()
{
mesh_.lookupObjectRef<volScalarField>("processorID") ==
dimensionedScalar("proci", dimless, Pstream::myProcNo());
word name("processorID");
return true;
tmp<volScalarField> tprocField
(
new volScalarField
(
IOobject
(
name,
mesh_.time().timeName(),
mesh_
),
mesh_,
dimensionedScalar(name, dimless, Pstream::myProcNo())
)
);
return store(name, tprocField);
}

View File

@ -71,25 +71,6 @@ Foam::functionObjects::turbulenceIntensity::turbulenceIntensity
logFiles(obr_, name),
writeLocalObjects(obr_, log)
{
volScalarField* turbulenceIntensityPtr
(
new volScalarField
(
IOobject
(
"I",
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_,
dimensionedScalar("0", dimless, 0.0)
)
);
mesh_.objectRegistry::store(turbulenceIntensityPtr);
read(dict);
resetName(typeName);
resetLocalObjectName("I");
@ -115,9 +96,6 @@ bool Foam::functionObjects::turbulenceIntensity::read(const dictionary& dict)
bool Foam::functionObjects::turbulenceIntensity::execute()
{
volScalarField& turbulenceIntensity =
mesh_.lookupObjectRef<volScalarField>("I");
if (mesh_.foundObject<turbulenceModel>(turbulenceModel::propertiesName))
{
const turbulenceModel& turbModel = mesh_.lookupObject<turbulenceModel>
@ -126,12 +104,19 @@ bool Foam::functionObjects::turbulenceIntensity::execute()
);
volScalarField uPrime(sqrt((2.0/3.0)*turbModel.k()));
turbulenceIntensity =
uPrime
/max
word name("I");
return
store
(
max(uPrime, mag(turbModel.U())),
dimensionedScalar("small", dimVelocity, small)
name,
uPrime
/max
(
max(uPrime, mag(turbModel.U())),
dimensionedScalar("small", dimVelocity, small)
)
);
}
else
@ -139,9 +124,9 @@ bool Foam::functionObjects::turbulenceIntensity::execute()
FatalErrorInFunction
<< "Unable to find turbulence model in the "
<< "database" << exit(FatalError);
}
return true;
return false;
}
}

View File

@ -58,15 +58,30 @@ void Foam::functionObjects::wallHeatFlux::writeFileHeader(const label i)
}
void Foam::functionObjects::wallHeatFlux::calcHeatFlux
Foam::tmp<Foam::volScalarField>
Foam::functionObjects::wallHeatFlux::calcWallHeatFlux
(
const volScalarField& alpha,
const volScalarField& he,
volScalarField& wallHeatFlux
const volScalarField& he
)
{
tmp<volScalarField> twallHeatFlux
(
new volScalarField
(
IOobject
(
type(),
mesh_.time().timeName(),
mesh_
),
mesh_,
dimensionedScalar("0", dimMass/pow3(dimTime), 0)
)
);
volScalarField::Boundary& wallHeatFluxBf =
wallHeatFlux.boundaryFieldRef();
twallHeatFlux.ref().boundaryFieldRef();
const volScalarField::Boundary& heBf =
he.boundaryField();
@ -97,6 +112,8 @@ void Foam::functionObjects::wallHeatFlux::calcHeatFlux
}
}
}
return twallHeatFlux;
}
@ -114,25 +131,6 @@ Foam::functionObjects::wallHeatFlux::wallHeatFlux
writeLocalObjects(obr_, log),
patchSet_()
{
volScalarField* wallHeatFluxPtr
(
new volScalarField
(
IOobject
(
type(),
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_,
dimensionedScalar("0", dimMass/pow3(dimTime), 0)
)
);
mesh_.objectRegistry::store(wallHeatFluxPtr);
read(dict);
resetName(typeName);
resetLocalObjectName(typeName);
@ -205,7 +203,7 @@ bool Foam::functionObjects::wallHeatFlux::read(const dictionary& dict)
bool Foam::functionObjects::wallHeatFlux::execute()
{
volScalarField& wallHeatFlux = lookupObjectRef<volScalarField>(type());
word name(type());
if
(
@ -221,11 +219,10 @@ bool Foam::functionObjects::wallHeatFlux::execute()
turbulenceModel::propertiesName
);
calcHeatFlux
return store
(
turbModel.alphaEff(),
turbModel.transport().he(),
wallHeatFlux
name,
calcWallHeatFlux(turbModel.alphaEff(), turbModel.transport().he())
);
}
else if (foundObject<solidThermo>(solidThermo::dictName))
@ -233,7 +230,7 @@ bool Foam::functionObjects::wallHeatFlux::execute()
const solidThermo& thermo =
lookupObject<solidThermo>(solidThermo::dictName);
calcHeatFlux(thermo.alpha(), thermo.he(), wallHeatFlux);
return store(name, calcWallHeatFlux(thermo.alpha(), thermo.he()));
}
else
{

View File

@ -108,11 +108,10 @@ protected:
virtual void writeFileHeader(const label i);
//- Calculate the heat-flux
void calcHeatFlux
tmp<volScalarField> calcWallHeatFlux
(
const volScalarField& alpha,
const volScalarField& he,
volScalarField& wallHeatFlux
const volScalarField& he
);

View File

@ -63,15 +63,35 @@ void Foam::functionObjects::wallHeatTransferCoeff::writeFileHeader
}
void Foam::functionObjects::wallHeatTransferCoeff::calcHeatTransferCoeff
Foam::tmp<Foam::volScalarField>
Foam::functionObjects::wallHeatTransferCoeff::calcHeatTransferCoeff
(
const volScalarField& nu,
const volScalarField& nut,
volScalarField& wallHeatTransferCoeff
const volScalarField& nut
)
{
tmp<volScalarField> twallHeatTransferCoeff
(
new volScalarField
(
IOobject
(
type(),
mesh_.time().timeName(),
mesh_
),
mesh_,
dimensionedScalar
(
"0",
dimMass/pow3(dimTime)/(dimTemperature/dimLength),
0
)
)
);
volScalarField::Boundary& wallHeatTransferCoeffBf =
wallHeatTransferCoeff.boundaryFieldRef();
twallHeatTransferCoeff.ref().boundaryFieldRef();
const volScalarField::Boundary& nuBf = nu.boundaryField();
const volScalarField::Boundary& nutBf = nut.boundaryField();
@ -84,6 +104,8 @@ void Foam::functionObjects::wallHeatTransferCoeff::calcHeatTransferCoeff
rho_*Cp_*(nuBf[patchi]/Prl_ + nutBf[patchi]/Prt_);
}
}
return twallHeatTransferCoeff;
}
@ -101,30 +123,6 @@ Foam::functionObjects::wallHeatTransferCoeff::wallHeatTransferCoeff
writeLocalObjects(obr_, log),
patchSet_()
{
volScalarField* wallHeatTransferCoeffPtr
(
new volScalarField
(
IOobject
(
type(),
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_,
dimensionedScalar
(
"0",
dimMass/pow3(dimTime)/(dimTemperature/dimLength),
0
)
)
);
mesh_.objectRegistry::store(wallHeatTransferCoeffPtr);
read(dict);
resetName(typeName);
resetLocalObjectName(typeName);
@ -202,8 +200,7 @@ bool Foam::functionObjects::wallHeatTransferCoeff::read(const dictionary& dict)
bool Foam::functionObjects::wallHeatTransferCoeff::execute()
{
volScalarField& wallHeatTransferCoeff =
lookupObjectRef<volScalarField>(type());
word name(type());
if
(
@ -219,11 +216,10 @@ bool Foam::functionObjects::wallHeatTransferCoeff::execute()
turbulenceModel::propertiesName
);
calcHeatTransferCoeff
return store
(
turbModel.nu(),
turbModel.nut(),
wallHeatTransferCoeff
name,
calcHeatTransferCoeff(turbModel.nu(), turbModel.nut())
);
}
else
@ -231,9 +227,9 @@ bool Foam::functionObjects::wallHeatTransferCoeff::execute()
FatalErrorInFunction
<< "Unable to find incompressible turbulence model in the "
<< "database" << exit(FatalError);
}
return true;
return false;
}
}

View File

@ -130,11 +130,10 @@ protected:
virtual void writeFileHeader(const label i);
//- Calculate the heat transfer coefficient
void calcHeatTransferCoeff
tmp<volScalarField> calcHeatTransferCoeff
(
const volScalarField& nu,
const volScalarField& nut,
volScalarField& wallHeatTransferCoeff
const volScalarField& nut
);

View File

@ -57,25 +57,42 @@ void Foam::functionObjects::wallShearStress::writeFileHeader(const label i)
}
void Foam::functionObjects::wallShearStress::calcShearStress
Foam::tmp<Foam::volVectorField>
Foam::functionObjects::wallShearStress::calcShearStress
(
const volSymmTensorField& Reff,
volVectorField& shearStress
const volSymmTensorField& Reff
)
{
shearStress.dimensions().reset(Reff.dimensions());
tmp<volVectorField> twallShearStress
(
new volVectorField
(
IOobject
(
type(),
mesh_.time().timeName(),
mesh_
),
mesh_,
dimensionedVector("0", Reff.dimensions(), Zero)
)
);
volVectorField::Boundary& wallShearStressBf =
twallShearStress.ref().boundaryFieldRef();
forAllConstIter(labelHashSet, patchSet_, iter)
{
label patchi = iter.key();
vectorField& ssp = shearStress.boundaryFieldRef()[patchi];
const vectorField& Sfp = mesh_.Sf().boundaryField()[patchi];
const scalarField& magSfp = mesh_.magSf().boundaryField()[patchi];
const symmTensorField& Reffp = Reff.boundaryField()[patchi];
ssp = (-Sfp/magSfp) & Reffp;
wallShearStressBf[patchi] = (-Sfp/magSfp) & Reffp;
}
return twallShearStress;
}
@ -93,30 +110,6 @@ Foam::functionObjects::wallShearStress::wallShearStress
writeLocalObjects(obr_, log),
patchSet_()
{
volVectorField* wallShearStressPtr
(
new volVectorField
(
IOobject
(
type(),
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_,
dimensionedVector
(
"0",
sqr(dimLength)/sqr(dimTime),
Zero
)
)
);
mesh_.objectRegistry::store(wallShearStressPtr);
read(dict);
resetName(typeName);
resetLocalObjectName(typeName);
@ -192,9 +185,6 @@ bool Foam::functionObjects::wallShearStress::execute()
typedef compressible::turbulenceModel cmpModel;
typedef incompressible::turbulenceModel icoModel;
volVectorField& wallShearStress =
mesh_.lookupObjectRef<volVectorField>(type());
tmp<volSymmTensorField> Reff;
if (mesh_.foundObject<cmpModel>(turbulenceModel::propertiesName))
{
@ -217,9 +207,9 @@ bool Foam::functionObjects::wallShearStress::execute()
<< "database" << exit(FatalError);
}
calcShearStress(Reff(), wallShearStress);
word name(type());
return true;
return store(name, calcShearStress(Reff));
}

View File

@ -117,10 +117,9 @@ protected:
virtual void writeFileHeader(const label i);
//- Calculate the shear-stress
void calcShearStress
tmp<volVectorField> calcShearStress
(
const volSymmTensorField& Reff,
volVectorField& shearStress
const volSymmTensorField& Reff
);

View File

@ -62,12 +62,28 @@ void Foam::functionObjects::yPlus::writeFileHeader(const label i)
}
void Foam::functionObjects::yPlus::calcYPlus
Foam::tmp<Foam::volScalarField> Foam::functionObjects::yPlus::calcYPlus
(
const turbulenceModel& turbModel,
volScalarField& yPlus
const turbulenceModel& turbModel
)
{
tmp<volScalarField> tyPlus
(
new volScalarField
(
IOobject
(
type(),
mesh_.time().timeName(),
mesh_
),
mesh_,
dimensionedScalar("0", dimless, 0.0)
)
);
volScalarField::Boundary& yPlusBf = tyPlus.ref().boundaryFieldRef();
volScalarField::Boundary d = nearWallDist(mesh_).y();
const volScalarField::Boundary nutBf =
@ -81,8 +97,6 @@ void Foam::functionObjects::yPlus::calcYPlus
const fvPatchList& patches = mesh_.boundary();
volScalarField::Boundary& yPlusBf = yPlus.boundaryFieldRef();
forAll(patches, patchi)
{
const fvPatch& patch = patches[patchi];
@ -108,6 +122,8 @@ void Foam::functionObjects::yPlus::calcYPlus
)/nuBf[patchi];
}
}
return tyPlus;
}
@ -124,25 +140,6 @@ Foam::functionObjects::yPlus::yPlus
logFiles(obr_, name),
writeLocalObjects(obr_, log)
{
volScalarField* yPlusPtr
(
new volScalarField
(
IOobject
(
type(),
mesh_.time().timeName(),
mesh_,
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh_,
dimensionedScalar("0", dimless, 0.0)
)
);
mesh_.objectRegistry::store(yPlusPtr);
read(dict);
resetName(typeName);
resetLocalObjectName(typeName);
@ -168,9 +165,6 @@ bool Foam::functionObjects::yPlus::read(const dictionary& dict)
bool Foam::functionObjects::yPlus::execute()
{
volScalarField& yPlus =
mesh_.lookupObjectRef<volScalarField>(type());
if (mesh_.foundObject<turbulenceModel>(turbulenceModel::propertiesName))
{
const turbulenceModel& model = mesh_.lookupObject<turbulenceModel>
@ -178,7 +172,9 @@ bool Foam::functionObjects::yPlus::execute()
turbulenceModel::propertiesName
);
calcYPlus(model, yPlus);
word name(type());
return store(name, calcYPlus(model));
}
else
{

View File

@ -95,10 +95,9 @@ class yPlus
virtual void writeFileHeader(const label i);
//- Calculate y+
void calcYPlus
tmp<volScalarField> calcYPlus
(
const turbulenceModel& turbModel,
volScalarField& yPlus
const turbulenceModel& turbModel
);
//- Disallow default bitwise copy construct

View File

@ -349,14 +349,14 @@ bool Foam::KinematicParcel<ParcelType>::move
p.age() += dt;
if (p.onFace())
if (p.active() && p.onFace())
{
cloud.functions().postFace(p, ttd.keepParticle);
}
cloud.functions().postMove(p, dt, start, ttd.keepParticle);
if (p.onFace() && ttd.keepParticle)
if (p.active() && p.onFace() && ttd.keepParticle)
{
p.hitFace(s, cloud, ttd);
}

View File

@ -52,7 +52,7 @@ namespace joints
void Foam::RBD::joints::composite::setLastJoint()
{
//last().joint::operator=(*this);
last().joint::operator=(*this);
}

View File

@ -243,6 +243,9 @@ public:
// Member Operators
//- Assignment
inline void operator=(const joint& j);
//- Return the unit quaternion for this joint
// if it uses a quaternion representation for rotation
inline quaternion unitQuaternion

View File

@ -64,6 +64,14 @@ inline const Foam::List<Foam::spatialVector>& Foam::RBD::joint::S() const
// * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * //
inline void Foam::RBD::joint::operator=(const joint& j)
{
S_ = j.S_;
index_ = j.index_;
qIndex_ = j.qIndex_;
}
inline Foam::quaternion Foam::RBD::joint::unitQuaternion
(
const scalarField& q

View File

@ -124,6 +124,7 @@ void Foam::sampledSets::lineFace::calcSamples
if (!sampleParticle.onBoundaryFace())
{
FatalErrorInFunction
<< "Failed to associate with the starting boundary face"
<< exit(FatalError);
}
}

View File

@ -422,21 +422,27 @@ public:
//- Thermal diffusivity for temperature of mixture [J/m/s/K]
virtual tmp<volScalarField> kappa() const = 0;
//- Thermal diffusivity for temperature
// of mixture for patch [J/m/s/K]
//- Thermal diffusivity for temperature of mixture
// for patch [J/m/s/K]
virtual tmp<scalarField> kappa
(
const label patchi
) const = 0;
//- Effective thermal diffusivity for temperature
//- Thermal diffusivity for energy of mixture [kg/m/s]
virtual tmp<volScalarField> alphahe() const = 0;
//- Thermal diffusivity for energy of mixture for patch [kg/m/s]
virtual tmp<scalarField> alphahe(const label patchi) const = 0;
//- Effective thermal turbulent diffusivity for temperature
// of mixture [J/m/s/K]
virtual tmp<volScalarField> kappaEff
(
const volScalarField&
) const = 0;
//- Effective thermal diffusivity for temperature
//- Effective thermal turbulent diffusivity for temperature
// of mixture for patch [J/m/s/K]
virtual tmp<scalarField> kappaEff
(
@ -444,13 +450,14 @@ public:
const label patchi
) const = 0;
//- Effective thermal diffusivity of mixture [kg/m/s]
//- Effective thermal turbulent diffusivity of mixture [kg/m/s]
virtual tmp<volScalarField> alphaEff
(
const volScalarField& alphat
) const = 0;
//- Effective thermal diffusivity of mixture for patch [kg/m/s]
//- Effective thermal turbulent diffusivity of mixture
// for patch [kg/m/s]
virtual tmp<scalarField> alphaEff
(
const scalarField& alphat,

View File

@ -794,6 +794,31 @@ Foam::tmp<Foam::scalarField> Foam::heThermo<BasicThermo, MixtureType>::kappa
}
template<class BasicThermo, class MixtureType>
Foam::tmp<Foam::volScalarField>
Foam::heThermo<BasicThermo, MixtureType>::alphahe() const
{
tmp<Foam::volScalarField> alphaEff(this->CpByCpv()*this->alpha_);
alphaEff.ref().rename("alphahe");
return alphaEff;
}
template<class BasicThermo, class MixtureType>
Foam::tmp<Foam::scalarField>
Foam::heThermo<BasicThermo, MixtureType>::alphahe(const label patchi) const
{
return
this->CpByCpv
(
this->p_.boundaryField()[patchi],
this->T_.boundaryField()[patchi],
patchi
)
*this->alpha_.boundaryField()[patchi];
}
template<class BasicThermo, class MixtureType>
Foam::tmp<Foam::volScalarField>
Foam::heThermo<BasicThermo, MixtureType>::kappaEff

View File

@ -268,18 +268,27 @@ public:
//- Thermal diffusivity for temperature of mixture [J/m/s/K]
virtual tmp<volScalarField> kappa() const;
//- Thermal diffusivity for temperature
// of mixture for patch [J/m/s/K]
//- Thermal diffusivity for temperature of mixture
// for patch [J/m/s/K]
virtual tmp<scalarField> kappa
(
const label patchi
) const;
//- Effective thermal diffusivity for temperature
// of mixture [J/m/s/K]
virtual tmp<volScalarField> kappaEff(const volScalarField&) const;
//- Thermal diffusivity for energy of mixture [kg/m/s]
virtual tmp<volScalarField> alphahe() const;
//- Effective thermal diffusivity for temperature
//- Thermal diffusivity for energy of mixture for patch [kg/m/s]
virtual tmp<scalarField> alphahe(const label patchi) const;
//- Effective thermal turbulent diffusivity for temperature
// of mixture [J/m/s/K]
virtual tmp<volScalarField> kappaEff
(
const volScalarField&
) const;
//- Effective thermal turbulent diffusivity for temperature
// of mixture for patch [J/m/s/K]
virtual tmp<scalarField> kappaEff
(
@ -287,13 +296,14 @@ public:
const label patchi
) const;
//- Effective thermal diffusivity of mixture [kg/m/s]
//- Effective thermal turbulent diffusivity of mixture [kg/m/s]
virtual tmp<volScalarField> alphaEff
(
const volScalarField& alphat
) const;
//- Effective thermal diffusivity of mixture for patch [kg/m/s]
//- Effective thermal turbulent diffusivity of mixture
// for patch [kg/m/s]
virtual tmp<scalarField> alphaEff
(
const scalarField& alphat,

View File

@ -67,7 +67,8 @@ greyDiffusiveRadiationMixedFvPatchScalarField
(
p,
ptf.emissivityMethod(),
ptf.emissivity_
ptf.emissivity_,
mapper
),
TName_(ptf.TName_)
{}
@ -143,6 +144,27 @@ greyDiffusiveRadiationMixedFvPatchScalarField
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void Foam::radiation::greyDiffusiveRadiationMixedFvPatchScalarField::autoMap
(
const fvPatchFieldMapper& m
)
{
mixedFvPatchScalarField::autoMap(m);
radiationCoupledBase::autoMap(m);
}
void Foam::radiation::greyDiffusiveRadiationMixedFvPatchScalarField::rmap
(
const fvPatchScalarField& ptf,
const labelList& addr
)
{
mixedFvPatchScalarField::rmap(ptf, addr);
radiationCoupledBase::rmap(ptf, addr);
}
void Foam::radiation::greyDiffusiveRadiationMixedFvPatchScalarField::
updateCoeffs()
{

View File

@ -171,6 +171,21 @@ public:
return TName_;
}
// Mapping functions
//- Map (and resize as needed) from self given a mapping object
virtual void autoMap
(
const fvPatchFieldMapper&
);
//- Reverse map the given fvPatchField onto this fvPatchField
virtual void rmap
(
const fvPatchScalarField&,
const labelList&
);
// Evaluation functions

View File

@ -58,9 +58,10 @@ greyDiffusiveViewFactorFixedValueFvPatchScalarField
(
patch(),
ptf.emissivityMethod(),
ptf.emissivity_
ptf.emissivity_,
mapper
),
qro_(ptf.qro_)
qro_(ptf.qro_, mapper)
{}
@ -128,6 +129,32 @@ greyDiffusiveViewFactorFixedValueFvPatchScalarField
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void Foam::radiation::greyDiffusiveViewFactorFixedValueFvPatchScalarField::
autoMap
(
const fvPatchFieldMapper& m
)
{
fixedValueFvPatchScalarField::autoMap(m);
radiationCoupledBase::autoMap(m);
qro_.autoMap(m);
}
void Foam::radiation::greyDiffusiveViewFactorFixedValueFvPatchScalarField::rmap
(
const fvPatchScalarField& ptf,
const labelList& addr
)
{
fixedValueFvPatchScalarField::rmap(ptf, addr);
radiationCoupledBase::rmap(ptf, addr);
const greyDiffusiveViewFactorFixedValueFvPatchScalarField& mrptf =
refCast<const greyDiffusiveViewFactorFixedValueFvPatchScalarField>(ptf);
qro_.rmap(mrptf.qro_, addr);
}
void Foam::radiation::greyDiffusiveViewFactorFixedValueFvPatchScalarField::
updateCoeffs()
{

View File

@ -168,6 +168,20 @@ public:
}
//- Map (and resize as needed) from self given a mapping object
virtual void autoMap
(
const fvPatchFieldMapper&
);
//- Reverse map the given fvPatchField onto this fvPatchField
virtual void rmap
(
const fvPatchScalarField&,
const labelList&
);
// Evaluation functions
//- Update the coefficients associated with the patch field

View File

@ -68,7 +68,8 @@ wideBandDiffusiveRadiationMixedFvPatchScalarField
(
p,
ptf.emissivityMethod(),
ptf.emissivity_
ptf.emissivity_,
mapper
),
TName_(ptf.TName_)
{}
@ -147,6 +148,27 @@ wideBandDiffusiveRadiationMixedFvPatchScalarField
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void Foam::radiation::wideBandDiffusiveRadiationMixedFvPatchScalarField::
autoMap
(
const fvPatchFieldMapper& m
)
{
mixedFvPatchScalarField::autoMap(m);
radiationCoupledBase::autoMap(m);
}
void Foam::radiation::wideBandDiffusiveRadiationMixedFvPatchScalarField::rmap
(
const fvPatchScalarField& ptf,
const labelList& addr
)
{
mixedFvPatchScalarField::rmap(ptf, addr);
radiationCoupledBase::rmap(ptf, addr);
}
void Foam::radiation::wideBandDiffusiveRadiationMixedFvPatchScalarField::
updateCoeffs()
{

View File

@ -165,6 +165,20 @@ public:
}
//- Map (and resize as needed) from self given a mapping object
virtual void autoMap
(
const fvPatchFieldMapper&
);
//- Reverse map the given fvPatchField onto this fvPatchField
virtual void rmap
(
const fvPatchScalarField&,
const labelList&
);
// Evaluation functions
//- Update the coefficients associated with the patch field

View File

@ -10,7 +10,7 @@
1.0
);
if (radiation->radiation())
if (!isType<radiation::noRadiation>(radiation()))
{
IOdictionary transportProperties
(

View File

@ -68,16 +68,20 @@ Foam::radiation::noRadiation::~noRadiation()
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool Foam::radiation::noRadiation::read()
{
return radiationModel::read();
}
void Foam::radiation::noRadiation::correct()
{}
void Foam::radiation::noRadiation::calculate()
{}
bool Foam::radiation::noRadiation::read()
{
return radiationModel::read();
}
Foam::tmp<Foam::volScalarField> Foam::radiation::noRadiation::Rp() const
{
return tmp<volScalarField>

View File

@ -85,6 +85,9 @@ public:
// Edit
//- Main update/correction routine
void correct();
//- Solve radiation equation(s)
void calculate();

View File

@ -74,19 +74,16 @@ Foam::IOobject Foam::radiation::radiationModel::createIOobject
void Foam::radiation::radiationModel::initialise()
{
if (radiation_)
{
solverFreq_ = max(1, lookupOrDefault<label>("solverFreq", 1));
solverFreq_ = max(1, lookupOrDefault<label>("solverFreq", 1));
absorptionEmission_.reset
(
absorptionEmissionModel::New(*this, mesh_).ptr()
);
absorptionEmission_.reset
(
absorptionEmissionModel::New(*this, mesh_).ptr()
);
scatter_.reset(scatterModel::New(*this, mesh_).ptr());
scatter_.reset(scatterModel::New(*this, mesh_).ptr());
soot_.reset(sootModel::New(*this, mesh_).ptr());
}
soot_.reset(sootModel::New(*this, mesh_).ptr());
}
@ -108,7 +105,6 @@ Foam::radiation::radiationModel::radiationModel(const volScalarField& T)
mesh_(T.mesh()),
time_(T.time()),
T_(T),
radiation_(false),
coeffs_(dictionary::null),
solverFreq_(0),
firstIter_(true),
@ -128,7 +124,6 @@ Foam::radiation::radiationModel::radiationModel
mesh_(T.mesh()),
time_(T.time()),
T_(T),
radiation_(lookupOrDefault("radiation", true)),
coeffs_(subOrEmptyDict(type + "Coeffs")),
solverFreq_(1),
firstIter_(true),
@ -136,11 +131,6 @@ Foam::radiation::radiationModel::radiationModel
scatter_(nullptr),
soot_(nullptr)
{
if (readOpt() == IOobject::NO_READ)
{
radiation_ = false;
}
initialise();
}
@ -167,7 +157,6 @@ Foam::radiation::radiationModel::radiationModel
mesh_(T.mesh()),
time_(T.time()),
T_(T),
radiation_(lookupOrDefault("radiation", true)),
coeffs_(subOrEmptyDict(type + "Coeffs")),
solverFreq_(1),
firstIter_(true),
@ -187,11 +176,25 @@ Foam::radiation::radiationModel::~radiationModel()
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
void Foam::radiation::radiationModel::correct()
{
if (firstIter_ || (time_.timeIndex() % solverFreq_ == 0))
{
calculate();
firstIter_ = false;
}
if (!soot_.empty())
{
soot_->correct();
}
}
bool Foam::radiation::radiationModel::read()
{
if (regIOobject::read())
{
lookup("radiation") >> radiation_;
coeffs_ = subOrEmptyDict(type() + "Coeffs");
solverFreq_ = lookupOrDefault<label>("solverFreq", 1);
@ -206,26 +209,6 @@ bool Foam::radiation::radiationModel::read()
}
void Foam::radiation::radiationModel::correct()
{
if (!radiation_)
{
return;
}
if (firstIter_ || (time_.timeIndex() % solverFreq_ == 0))
{
calculate();
firstIter_ = false;
}
if (!soot_.empty())
{
soot_->correct();
}
}
Foam::tmp<Foam::fvScalarMatrix> Foam::radiation::radiationModel::Sh
(
const basicThermo& thermo,

View File

@ -86,9 +86,6 @@ protected:
//- Reference to the temperature field
const volScalarField& T_;
//- Radiation model on/off flag
Switch radiation_;
//- Radiation model dictionary
dictionary coeffs_;
@ -211,12 +208,6 @@ public:
// Access
//- Radiation model on/off flag
const Switch radiation() const
{
return radiation_;
}
//- Source term component (for power of T^4)
virtual tmp<volScalarField> Rp() const = 0;

View File

@ -6,7 +6,7 @@ cd "${0%/*}" || exit 1 # Run from this directory
removeRegionDirs () {
# HACK to get regionDirs from materialProperties
_regionDirs="$(grep -E "^[a-Z]" constant/materialProperties | tail -n +2)"
_regionDirs="$(grep "^[a-zA-Z]" constant/materialProperties | tail -n +2)"
for _d in system constant
do

View File

@ -20,7 +20,7 @@ thermoType
mixture pureMixture;
transport const;
thermo hConst;
equationOfState perfectGas;
equationOfState perfectFluid;
specie specie;
energy sensibleEnthalpy;
}
@ -32,6 +32,11 @@ mixture
nMoles 1;
molWeight 18.0; // [g/mol]
}
equationOfState
{
R 3000; // [J/(kg K)]
rho0 1027; // [kg/m^3]
}
thermodynamics
{
Cp 4181; // [J/(kg K)] at T = 293 K

View File

@ -16,10 +16,6 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel none;
// ************************************************************************* //

View File

@ -14,9 +14,6 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel none;
// ************************************************************************* //

View File

@ -15,9 +15,6 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel none;
// ************************************************************************* //

View File

@ -15,9 +15,6 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel none;
// ************************************************************************* //

View File

@ -14,9 +14,6 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel none;
// ************************************************************************* //

View File

@ -16,9 +16,6 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel none;
// ************************************************************************* //

View File

@ -33,7 +33,7 @@ writeInterval 1e-2;
purgeWrite 0;
writeFormat ascii;
writeFormat binary;
writePrecision 10;

View File

@ -34,7 +34,8 @@ boundaryField
wing
{
type noSlip;
type movingWallVelocity;
value uniform (0 0 0);
}
#include "include/frontBackTopBottomPatches"

View File

@ -33,7 +33,7 @@ writeInterval 100;
purgeWrite 0;
writeFormat ascii;
writeFormat binary;
writePrecision 6;

View File

@ -18,7 +18,7 @@ runApplication -s collapseFaces \
runApplication checkMesh -allTopology -allGeometry -latestTime
latestTime=`foamListTimes -latestTime`
latestTime="$(foamListTimes -latestTime)"
# Move the mesh into polyMesh
rm -rf constant/polyMesh

View File

@ -12,6 +12,5 @@ zDir (0 0 1);
flowDir (1 0 0);
z0 uniform 0.1;
zGround uniform 935.0;
value $internalField;
// ************************************************************************* //

View File

@ -17,6 +17,6 @@ runParallel topoSet
runParallel $(getApplication)
runApplication reconstructParMesh -constant
runApplication reconstructPar
runApplication reconstructPar -constant
#------------------------------------------------------------------------------

View File

@ -15,8 +15,6 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel none;
// ************************************************************************* //

View File

@ -15,9 +15,6 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel none;
// ************************************************************************* //

View File

@ -15,10 +15,6 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel none;
// ************************************************************************* //

View File

@ -15,9 +15,6 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel none;
// ************************************************************************* //

View File

@ -15,8 +15,6 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel none;
// ************************************************************************* //

View File

@ -15,9 +15,6 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel none;
// ************************************************************************* //

View File

@ -15,9 +15,6 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel none;
// ************************************************************************* //

View File

@ -15,10 +15,6 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel none;
solverFreq 10;
// ************************************************************************* //

View File

@ -15,8 +15,6 @@ FoamFile
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
radiation off;
radiationModel none;
// ************************************************************************* //

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