Commit Graph

145 Commits

Author SHA1 Message Date
e63f3c1e98 rhoReactingBuoyantFoam: Added pRef 2020-07-04 09:51:04 +01:00
f544de4f81 setRDeltaT: Corrected typo 2020-06-24 14:40:29 +01:00
80f15bd984 thermophysicalModels: Refactored mixtures
to separate those based on pure species from the simplified combustion mixtures
based on composite reactant and product pseudo species.
2020-06-02 17:24:44 +01:00
fe89082f73 thermophysicalModels: Centralised instantiation macros
All models that require templating on the thermodynamic model, including
the thermodynamic models themselves, are now instantiated using a
centralised set of variadic macros. Seven macros exist to instantiate
models for different classes of thermodynamics model. These are:

   forGases:          All model combinations valid for gases

   forCommonGases:    The most commonly used gas models

   forAbsoluteGases:  A limited selection of gas models with absolute
                      forms of energy, for use with Xi-combustion models

   forLiquids:        All model combinations valid for liquids

   forCommonLiquids:  The most commonly used liquid models

   forPolynomials:    Model combinations with properties fitted to
                      polynomials

   forSolids:         All model combinations valid for solids

All the *ThermoPhysics typedefs have been removed, as this system was
fundamentally not extensible. The enormous lists of thermodynamic
instantiations that existed for reaction thermos, chemistry models,
tabulation methods, etc..., were extremely difficult to read and reason
about what combinations are valid under what circumstances. This change
centralises those decisions, makes them concise and readable, and makes
them consistent across the entire codebase.

Soot model selection has now been brought up to date in line with
chemistry, combustion, and others. The angle-bracketed part of the name
is no longer necessary; this information is determined directly from the
existing thermo model. So, now to select a mixture-fraction soot model,
the entry is simply:

    sootModel   mixtureFraction;

Rather than:

    sootModel   mixtureFraction<rhoReactionThermo,gasHThermoPhysics>;

The only place in which *ThermoPhysics typedefs are still required in
the selection name is in the thermalBaffle1D boundary condition. Here
there is no thermo model from which to determine a name. This eventually
needs resolving either by adding a selection mechanism similar to that
of the thermo packages themselves, or by removing this boundary
condition in favour of the (non-1D) thermal baffle boundary condition
and region model.
2020-04-30 14:16:08 +01:00
d4207f56c5 psiReactionThermophysicalTransportModel: ThermophysicalTransportModel instantiated on psiReactionThermo
Updated reacting solvers to use psiReactionThermophysicalTransportModel or
rhoReactionThermophysicalTransportModel as appropriate to provide support for
interacting heat and specie transport.
2020-04-20 09:57:42 +01:00
f50c2bdb68 ThermophysicalTransportModel: Added ThermoModel argument
ThermophysicalTransportModel is now instantiated on both the
MomentmumTransportModel and also the particular thermo model model rather than
obtaining the fluidThermo from the MomentmumTransportModel.  This gives direct
access to the higher-level thermo model used in the solver, for example
rhoReactionThermo so that complex ThermophysicalTransportModels requiring access
to the composition for example are instantiated only for thermo models that
provide it and also avoiding run-time up-casting of the thermo model.
2020-04-19 22:08:10 +01:00
b4cf4042d1 ThermophysicalTransportModels: Added j and divj functions for specie mass-fraction transport
Provides an abstraction of specie transport to support run-times selectable and
extensible multi-component thermal and specie laminar and turbulent transport.
2020-04-15 11:24:11 +01:00
de66b1be68 MomentumTransportModels: Update of the TurbulenceModels library for all flow types
providing the shear-stress term in the momentum equation for incompressible and
compressible Newtonian, non-Newtonian and visco-elastic laminar flow as well as
Reynolds averaged and large-eddy simulation of turbulent flow.

The general deviatoric shear-stress term provided by the MomentumTransportModels
library is named divDevTau for compressible flow and divDevSigma (sigma =
tau/rho) for incompressible flow, the spherical part of the shear-stress is
assumed to be either included in the pressure or handled separately.  The
corresponding stress function sigma is also provided which in the case of
Reynolds stress closure returns the effective Reynolds stress (including the
laminar contribution) or for other Reynolds averaged or large-eddy turbulence
closures returns the modelled Reynolds stress or sub-grid stress respectively.
For visco-elastic flow the sigma function returns the effective total stress
including the visco-elastic and Newtonian contributions.

For thermal flow the heat-flux generated by thermal diffusion is now handled by
the separate ThermophysicalTransportModels library allowing independent run-time
selection of the heat-flux model.

During the development of the MomentumTransportModels library significant effort
has been put into rationalising the components and supporting libraries,
removing redundant code, updating names to provide a more logical, consistent
and extensible interface and aid further development and maintenance.  All
solvers and tutorials have been updated correspondingly and backward
compatibility of the input dictionaries provided.

Henry G. Weller
CFD Direct Ltd.
2020-04-14 20:44:22 +01:00
08e686eb18 TurbulenceModels: Refactored to transfer all heat and specie transport to the new ThermophysicalTransportModels library
This provides an extensible and run-time selectable framework to support complex
energy and specie transport models, in particular multi-component diffusion.
Currently only the Fourier for laminar and eddyDiffusivity for RAS and LES
turbulent flows are provided but the interface is general and the set of models
will be expanded in the near future.
2020-04-12 10:35:52 +01:00
25b34809c7 ThermophysicalTransportModels: New library to handle the transport of energy and species
The simplistic energy transport support in compressibleTurbulenceModels has been
abstracted and separated into the new ThermophysicalTransportModels library in
order to provide a more general interface to support complex energy and specie
transport models, in particular multi-component diffusion.  Currently only the
Fourier for laminar and eddyDiffusivity for RAS and LES turbulent flows are
provided but the interface is general and the set of models will be expanded in
the near future.

The ThermalDiffusivity and EddyDiffusivity modelling layers remain in
compressibleTurbulenceModels but will be removed shortly and the alphat boundary
conditions will be moved to ThermophysicalTransportModels.
2020-04-10 18:18:51 +01:00
3bd86e85e5 TurbulenceModels: Removed the redundant propertiesName constructor and selector argument 2020-04-08 11:46:24 +01:00
27ab3edc5e buoyantPimpleFoam, chtMultiRegionFoam, rhoReactingBuoyantFoam: Share pEqn.H 2020-03-05 18:08:45 +00:00
b5363ca324 rhoPimpleFoam, rhoSimpleFoam, reactingFoam: Combined pEqn.H and pcEqn.H to reduce duplication 2020-03-04 17:24:56 +00:00
97cda40634 rhoPimpleFoam: Operate in SIMPLE mode
rhoPimpleFoam now produces identical results to rhoSimpleFoam when run
with a steady-state time-scheme. The intention is that this solver can
now be used as a reference when adding steady-state support to other
compressible solvers for which no SIMPLE variant exists.

rhoReactingFoam has also been updated to support SIMPLE operation, as it
shares a pressure equation with rhoPimpleFoam.
2020-03-04 15:31:06 +00:00
5eaf74c3a4 dictionary scalar lookup: simplified syntax using the type templated lookup function
Replaced
    readScalar(dict.lookup("name"))
with
    dict.lookup<scalar>("name")
2019-11-27 14:56:32 +00:00
81fca4c43a Corrected typos in comments
found using cspell.

Patch contributed by Timo Niemi, VTT.
2019-10-18 11:46:20 +01:00
ebc46492ca reactingFoam, rhoPorousSimpleFoam, chtMultiRegionFoam, reactingParcelFoam, sprayFoam: Updated the handling of HbyA
Changed the interpolation of HbyA from

    fvc::flux(rho*HbyA)

to

    fvc::interpolate(rho)*fvc::flux(HbyA)

for consistency with the latest compressible p-U algorithm in rhoPimpleFoam.

For most cases this change does not affect the results but test on highly
compressible, transonic and supersonic cases have shown a small but clear
benefit in the new form.
2019-10-02 14:31:06 +01:00
54f379f668 Changed species' diffusivity to alphaEff
All multi-specie solvers function on the assumption that the
mass-diffusivities of the different species are the same. A consequence
of this is that the diffusivities of energy and mass must be the same,
otherwise mass diffusivity results in unphysical temperature
fluctuations. This change enforces this requirement across all
multi-species solvers.

For the same reason, the turbulent Schmidt number has been removed from
the multi-component phase model in reactingEulerFoam. In order to obey
physical constraints this Schmidt number had to be exactly the same as
the Prandtl number. This condition is now enforced by the solver, rather
than relying on the input being correct.
2019-09-30 16:32:39 +01:00
f536328544 pimpleControl: Enabled residualControls in all pimple solvers
Resolves bug report https://bugs.openfoam.org/view.php?id=3336
2019-08-27 13:52:52 +01:00
ba7f87fe76 solidChemistryModel: Removed pending a rewrite based on the latest StandardChemistryModel
solidChemistryModel is not implemented in a general way but specialised to form
the basis of the highly specific pyrolysis mode.  The handling of reactions is
hard-coded for forward reactions only, the Jacobian was present but incomplete
so any ODE solvers requiring the Jacobian would either fail, diverge or produce
incorrect results.  It is not clear if many or any parts of the
solidChemistryModel are correct, in particular there is no handling for the
solid surface area per unit volume.  After a lot of refactoring work it has
become clear that solidChemistryModel needs a complete rewrite and can benefit
from all the recent development work done on the now more general
StandardChemistryModel.
2019-08-13 15:44:39 +01:00
05208f64dc StandardChemistryModel: Separate the reaction system from the mixture thermodynamics
This allows much greater flexibility in the instantiation of reaction system
which may in general depend on fields other than the thermodynamic state.  This
also simplifies mixture thermodynamics removing the need for the reactingMixture
and the instantiation of all the thermodynamic package combinations depending on
it.
2019-08-03 15:11:00 +01:00
5dbbac7c86 Solvers: standardised the class declaration section comments to correspond to the foamNewSource template 2019-06-20 13:53:03 +01:00
96b69f6f88 Standardised and rationalised the way in which units are written in function documentation 2019-06-20 10:54:14 +01:00
213319ae30 Standardised the class declaration section comments to correspond to the foamNewSource template 2019-06-19 15:01:35 +01:00
8e9f692aa4 Standardised the class declaration section comments to correspond to the foamNewSource template 2019-06-13 21:26:33 +01:00
9140984cf4 Added "= delete" to disabled bitwise copy constructors and assignment operators
Currently these deleted function declarations are still in the private section
of the class declarations but will be moved by hand to the public section over
time as this is too complex to automate reliably.
2019-05-28 15:26:45 +01:00
30bea84fac C++11 conformance and consistency: Added "move" constructors and assignment operators to OpenFOAM containers
Replaced all uses of complex Xfer class with C++11 "move" constructors and
assignment operators.  Removed the now redundant Xfer class.

This substantial changes improves consistency between OpenFOAM and the C++11 STL
containers and algorithms, reduces memory allocation and copy overhead when
returning containers from functions and simplifies maintenance of the core
libraries significantly.
2019-05-25 17:40:39 +01:00
111cdf3a65 solutionControl: Renaming and improved final logic
The sub-loops of the solution control are now named more consistently,
with ambiguously named methods such as finalIter replaced with ones
like finalPimpleIter, so that it is clear which loop they represent.

In addition, the final logic has been improved so that it restores state
after a sub-iteration, and so that sub-iterations can be used on their
own without an outer iteration in effect. Previously, if the
non-orthogonal loop were used outside of a pimple/piso iteration, the
final iteration would not execute with final settings.
2019-02-15 16:55:11 +00:00
c59c82ac0e radiationModels: Relocation, namespace changes, and fixed Qdot access
The radiation modelling library has been moved out of
thermophysicalProperties into the top-level source directory. Radiation
is a process, not a property, and belongs alongside turbulence,
combustion, etc...

The namespaces used within the radiation library have been made
consistent with the rest of the code. Selectable sub-models are in
namespaces named after their base classes. Some models have been
renamed remove the base type from the suffix, as this is unnecessary.
These renames are:

    Old name:                       New name:

    binaryAbsorptionEmission        binary
    cloudAbsorptionEmission         cloud
    constantAbsorptionEmission      constant
    greyMeanAbsorptionEmission      greyMean/greyMeanCombustion
    greyMeanSolidAbsorptionEmission greyMeanSolid
    wideBandAbsorptionEmission      wideBand/wideBandCombustion

    cloudScatter                    cloud
    constantScatter                 constant

    mixtureFractionSoot             mixtureFraction

Some absorption-emission models have been split into versions which do
and don't use the heat release rate. The version that does has been
given the post-fix "Combustion" and has been moved into the
combustionModels library. This removes the dependence on a registered
Qdot field, and makes the models compatible with the recent removal of
that field from the combustion solvers.
2019-02-11 08:38:56 +00:00
4221e43dfc combustion: Removed Qdot field from solvers
The Qdot field has been removed from all reacting solvers, in favour of
computing on the fly whenever it is needed. It can still be generated
for post-processing purposes by means of the Qdot function object. This
change reduces code duplication and storage for all modified solvers.

The Qdot function object has been applied to a number of tutorials in
order to retain the existing output.

A fix to Qdot has also been applied for multi-phase cases.
2019-01-24 14:29:17 +00:00
6dc48b62d9 Changed tmp<volField> and tmp<surfaceField> construction to use the new simpler "New" method
avoiding unnecessary database registration of temporary fields
2018-12-21 18:37:13 +00:00
146a59e46c GeometricField: Temporary fields are no longer registered on the database by default
Registration occurs when the temporary field is transferred to a non-temporary
field via a constructor or if explicitly transferred to the database via the
regIOobject "store" methods.
2018-12-20 11:00:37 +00:00
6faadcb45c Removed the unnecessary ".0" from dimensionedScalar constructors 2018-12-19 14:24:41 +00:00
bcf4e68901 Further rationalisation of the handling of "Final" solver settings
The selection of the "Final" solver settings is now handled automatically within
the "<equation>.solve()" call and there is no longer any need no provide a bool
argument for specific cases.  This simplifies the solution algorithm loop
structures and ensures consistency in behaviour across all solvers.

All tutorials have been updated to correspond to the now consistent rules.
2018-11-20 11:28:02 +00:00
ee443e201f Rationalised the handling of "Final" solver and relaxation factor settings
Now for transient simulations "Final" solver settings are required for ALL
equations providing consistency between the solution of velocity, energy,
composition and radiation properties.

However "Final" relaxation factors are no longer required for fields or
equations and if not present the standard value for the variable will be
applied.  Given that relaxation factors other than 1 are rarely required for
transient runs and hence the same for all iterations including the final one
this approach provide simpler input while still providing the flexibility to
specify a different value for the final iteration if required.  For steady cases
it is usual to execute just 1 outer iteration per time-step for which the
standard relaxation factors are appropriate, and if more than one iteration is
executed it is common to use the same factors for both.  In the unlikely event
of requiring different relaxation factors for the final iteration this is still
possible to specify via the now optional "Final" specification.
2018-11-17 19:42:23 +00:00
b80f0d3cdd chemFoam: Added support for constant temperature
By setting

    constantProperty temperature;

in constant/initialConditions the composition evolves at constant temperature.
2018-11-12 17:44:38 +00:00
c3c09229be PDRFoam: Added betav to ddtCorr
Resolves bug-report https://bugs.openfoam.org/view.php?id=3014
2018-08-13 14:47:30 +01:00
8662f99ac1 Corrected typos in comments
Resolves bug-report https://bugs.openfoam.org/view.php?id=3017
2018-07-31 17:11:21 +01:00
29fc94d3e2 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev into mergeDyM 2018-07-10 20:10:01 +01:00
bf54ab67e1 Updated OpenFOAM Foundation web-link in headers 2018-07-06 21:42:54 +01:00
ae76568896 rhoReactingFoam: Added moving and changing mesh functionality
Re-based on the latest rhoPimpleFoam which includes moving and changing mesh
functionality.
2018-07-05 21:07:38 +01:00
b43292e0c0 chemFoam: factored the thermo type functions into a separate file 2018-06-25 10:53:01 +01:00
19fb483c6d MichaelisMentenReactionRate: Michaelis-Menten reaction rate for enzymatic reactions
Updated chemFoam to support liquid reactions
2018-06-25 10:28:21 +01:00
85e249e61d chemFoam: Changed from psi to rho thermo to support both liquid and gaseous reactions 2018-06-21 21:59:59 +01:00
227db6deb3 Added underscores to #ifndef/#define statements with namespaces 2018-06-20 16:31:07 +01:00
dea88d883a utilities: Removed the -list.* options which are only useful for solver applications
Avoids unnecessary clutter printed by the -help option
2018-06-20 14:10:56 +01:00
21b3d19575 thermophysicalModels::Reaction: Refactored to remove unnecessary solid reaction specific functions 2018-06-15 16:15:42 +01:00
f416eea2e9 Make/options: Rationalized LIB_SRC entries 2018-05-31 09:59:52 +01:00
08cadfde74 Make/options: Added -I options for the now wmkdep 2018-05-08 19:55:28 +01:00
400cd4a889 wmake options files: Removed -I options referring to non-existent directories
Resolves bug-report https://bugs.openfoam.org/view.php?id=2917
2018-05-04 17:16:46 +01:00