Commit Graph

271 Commits

Author SHA1 Message Date
c8ab2a6e0c tutorials: Updated and simplified using the blockMesh defaultPatch entry
Rather than defining patches for all external block faces to provide name and
type use the defaultPatch entry to collect undefined faces into a single named
and typed patch, e.g.

defaultPatch
{
    name walls;
    type wall;
}
2019-10-07 16:49:11 +01:00
be0ccd2e38 tutorials/multiphase/interFoam/RAS/floatingObject: Removed temporary force restraint 2019-10-04 16:51:56 +01:00
639a90c645 rigidBodyDynamics::restraints::externalForce: New restraint to apply a time-varying force
Description
    Time-dependent external force restraint using Function1.

Usage
    Example applying a constant force to the floatingObject:
    restraints
    {
        force
        {
            type        externalForce;
            body        floatingObject;
            location    (0 0 0);
            force       (100 0 0);
        }
    }

Based on code contributed by SeongMo Yeon
Resolves contribution request https://bugs.openfoam.org/view.php?id=3358
2019-10-04 16:45:22 +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
474962ffcc reacting*EulerFoam: Pair-storage and specification of interface composition models
Interface composition models are now specified in
constant/phaseProperties like so:

   interfaceComposition.gas
   (
        (gas and water)
        {
            // ...
        }
        (gas and oil)
        {
            // ...
        }
   );
   interfaceComposition.water
   (
        (water and gas)
        {
            // ...
        }
        // ...
   );
   // ...

I.e., the models associated with diffusive transfer within a phase
"<phase>" are specified in the list "interfaceComposition.<phase>".
Within the list, models are specified in unordered phase pairs
corresponding to the interface.

This replaces a system where models were specified in a single
interfaceComposition list, with the ordered pair entry "(<phase1> in
<phase2>)" meaning transfer within phase1 at the interface with phase2.
This ordered pair syntax is otherwise used for distinguishing between
continuous and dispersed phases. This dual meaning was considered
counter-intuitive. The new entries also more closely resemble the
associated two-resistance heat and mass transfer model specifications.
2019-09-23 09:13:14 +01:00
396c552949 reacting*EulerFoam: Renamed massTransfer models diffusiveMassTransfer
There are now many types of mass transfer, so massTransfer is now too
generic a term for what these models do. These models generate a
diffusivity which when multiplied by a concentration difference results
in mass transfer, hence the new name.

This change is not backwards compatible. Cases running the interface
composition system will need "massTransfer" entries renamed to
"diffusiveMassTransfer".
2019-09-23 08:43:29 +01:00
b77dacd0b9 tutorials/*/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving: Fixed air properties 2019-09-19 17:01:39 +01:00
7651bbaf62 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting: Restored endTime 2019-09-12 11:24:23 +01:00
d4042c0e49 tutorials/reactingTwoPhaseEulerFoam/.../titaniaSynthesis: Corrected parameters and fixed file permissions
Patch contributed by Institute of Fluid Dynamics, Helmholtz-Zentrum Dresden -
Rossendorf (HZDR) and VTT Technical Research Centre of Finland Ltd.
2019-09-09 09:31:33 +01:00
f84708c689 mixtureKEpsilon: Added a phase fraction limiter for bubble generated turbulence
The new optional entry alphap is the as phase fraction below which bubble
generated turbulence is included.  The default is 1 for backward compatibility.

The purpose of this limiter is to avoid spurious turbulence generation at and
around the interface where bubbles are not present.
2019-09-06 17:55:42 +01:00
9066479c86 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting: Reduced write frequency 2019-09-05 09:21:16 +01:00
f75da73d7a DTCHullMoving: Updated for consistency with the current DTCHull tutorial case 2019-09-03 10:11:43 +01:00
dbe9fb3b76 functionObjectList: Removed warning for optional entries
Simplified the residuals functionObject call in the tutorials
2019-09-01 21:16:37 +01:00
4817971e13 rPolynomial: New equation of state for liquids and solids
Description
    Reciprocal polynomial equation of state for liquids and solids

    \f[
        1/\rho = C_0 + C_1 T + C_2 T^2 - C_3 p - C_4 p T
    \f]

    This polynomial for the reciprocal of the density provides a much better fit
    than the equivalent polynomial for the density and has the advantage that it
    support coefficient mixing to support liquid and solid mixtures in an
    efficient manner.

Usage
    \table
        Property     | Description
        C            | Density polynomial coefficients
    \endtable

    Example of the specification of the equation of state for pure water:
    \verbatim
    equationOfState
    {
        C (0.001278 -2.1055e-06 3.9689e-09 4.3772e-13 -2.0225e-16);
    }
    \endverbatim
    Note: This fit is based on the small amount of data which is freely
    available for the range 20-65degC and 1-100bar.

This equation of state is a much better fit for water and other liquids than
perfectFluid and in general polynomials for the reciprocal of the density
converge much faster than polynomials of the density.  Currently rPolynomial is
quadratic in the temperature and linear in the pressure which is sufficient for
modest ranges of pressure typically encountered in CFD but could be extended to
higher order in pressure and/temperature if necessary.  The other huge advantage
in formulating the equation of state in terms of the reciprocal of the density
is that coefficient mixing is simple.

Given these advantages over the perfectFluid equation of state the libraries and
tutorial cases have all been updated to us rPolynomial rather than perfectFluid
for liquids and water in particular.
2019-08-31 11:57:17 +01:00
888cb50536 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubblePipe: Referencing 2019-08-29 17:01:57 +01:00
9adf943be1 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubblePipe: Added turbulence settings 2019-08-29 14:22:57 +01:00
2be90fd7b2 tutorials/multiphase/reactingTwoPhaseEulerFoam: Added bubblePipe tutorial
Patch contributed by Juho Peltola, VTT.
2019-08-29 12:21:58 +01:00
627f1810f4 tutorials::DTCHull: No need to renumber fields before setFields 2019-08-22 21:35:00 +01:00
f103a18d6e tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting: Removed unused files and entries
Resolves bug report https://bugs.openfoam.org/view.php?id=3332
2019-08-22 10:13:20 +01:00
8d00f37425 tutorials: reactingEulerFoam: wallBoiling*: Corrected name of zero wall distance 2019-08-13 10:41:38 +01:00
6ecd5b24ed tutorials: reactingMultiphaseEulerFoam: Removed unnecessary Allclean script 2019-08-13 10:41:38 +01:00
cfbb389fd3 reactingEulerFoam: populationBalanceModel: Added fractal shape modelling support
This change adds representation of the shape of a dispersed phase. A
layer has been added to model the relationship between the
characteristic volume of a sizeGroup and its physical diameter.
Previously this relationship was represented by a constant form factor.

Currently, two shape models are available:

  - spherical

  - fractal (for modelling fractal agglomerates)

The latter introduces the average surface area to volume ratio, kappa,
of the entities in a size group as a secondary field-dependent internal
variable to the population balance equation, which makes the population
balance approach "quasi-"bivariate. From kappa and a constant mass
fractal dimension, a collisional diameter can be derived which affects
the coagulation rates computed by the following models:

  - ballisticCollisions

  - brownianCollisions

  - DahnekeInterpolation

  - turbulentShear

The fractal shape modelling also takes into account the effect of sintering
of primary particles on the surface area of the aggregate.

Further additions/changes:

  - Time scale filtering for handling large drag and heat transfer
    coefficients occurring for particles in the nanometre range

  - Aerosol drag model based on Stokes drag with a Knudsen number based
    correction (Cunningham correction)

  - Reaction driven nucleation

  - A complete redesign of the sizeDistribution functionObject

The functionality is demonstrated by a tutorial case simulating the
vapour phase synthesis of titania by titanium tetrachloride oxidation.

Patch contributed by Institute of Fluid Dynamics, Helmholtz-Zentrum Dresden -
Rossendorf (HZDR) and VTT Technical Research Centre of Finland Ltd.
2019-08-13 10:40:25 +01:00
af2baeb6d1 reactingEulerFoam: New wall boiling tutorials
All reactingEulerFoam wall boiling tutorials have been replaced with
cases that are more representative of real applications.

The wall boiling tutorials for reactingTwoPhaseEulerFoam are:

    RAS/wallBoiling:
        Axi-symmetric wall boiling case with constant bubble diameter

    RAS/wallBoilingPolyDisperse:
        As wallBoiling, but with a homogenous class method population
        balance for modelling the bubble diameters

    RAS/wallBoilingIATE:
        As wallBoiling, but with an interfacial area transport equation
        for modelling the bubble diameters

The wall boiling tutorials for reactingMultiphaseEulerFoam are:

    RAS/wallBoilingPolydisperseTwoGroups:
        As wallBoiling, but with an inhomogenous class method population
        balance for modelling the bubble diameters

Patch contributed by Juho Peltola, VTT.
2019-08-12 10:56:36 +01:00
52cb55a27c reactingEulerFoam::dragModels::segregated: Corrected ReI 2019-08-09 16:56:17 +01:00
45bdc71319 chemistryModel: Added support for constructing reactions with access to the region database (objectRegistry)
Added new reaction rate fluxLimitedLangmuirHinshelwoodReactionRate which is a
variant of the standard LangmuirHinshelwoodReactionRate but with a surface flux
limiter dependent on the surface area per unit volume Av which can be supplied
either as a uniform value or a field name which is looked-up from the region
database (objectRegistry).

Description
    Langmuir-Hinshelwood reaction rate for gaseous reactions on surfaces
    including the optional flux limiter of Waletzko and Schmidt.

    References:
    \verbatim
        Hinshelwood, C.N. (1940).
        The Kinetics of Chemical Change.
        Oxford Clarendon Press

        Waletzko, N., & Schmidt, L. D. (1988).
        Modeling catalytic gauze reactors: HCN synthesis.
        AIChE journal, 34(7), 1146-1156.
    \endverbatim
2019-08-06 11:22:11 +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
5acfe8b20a reactingMixture: Rationalised the reading of the species thermo and reactions
which are now read directly from the thermophysicalProperties dictionary for
consistency with non-reacting mixture thermodynamics.  The species thermo and
reactions lists can still be in separate files if convenient and included into
the thermophysicalProperties file using the standard dictionary #include.
2019-08-02 22:47:45 +01:00
4baf73b54d reactingMixture: use the foamChemistryReader directly rather than chemistryReader::New
This formalises the flexible and extensible OpenFOAM thermodynamics and reaction
format as the direct input to OpenFOAM solvers.  The CHEMKIN format is still
supported by first converting to the OpenFOAM format using the chemkinToFoam
utility.
2019-08-02 14:47:37 +01:00
332b72d561 tutorials: reactingTwoPhaseEulerFoam: Updates to steamInjection
Added limiters for the phase temperatures to prevent divergence, and
monitors to report the minimum and maximum values. Removed the
setTimeStep functionObject as the temperature limiters make this
unnecessary. Dereased the number of energy correctors and set a higher
Courant number limit to reduce the execution-time of the case.

Patch contributed by Juho Peltola, VTT.
2019-07-31 16:01:56 +01:00
b942ba07e0 ractingEulerFoam: populationBalance: Refactored scaling
Refactored the function for scaling the size group volume fractions to
better handle situations in which their sum drifts away from unity.
Scaling is now turned on by default, and can be turned off in the
solution dictionary for the population balance.

Additional revision and renaming of *Polydisperse tutorials

Patch contributed by Institute of Fluid Dynamics,
Helmholtz-Zentrum Dresden - Rossendorf (HZDR)
2019-07-25 12:27:09 +01:00
7af67fbf3f reactingEulerFoam: Corrected LaakkonenAlopaeusAittamaa daughter size distribution model
This fix also required a generalization of the corresponding base class,
which allows the user to specify the number of daughter particles per
breakup event separately.

Patch contributed by Institute of Fluid Dynamics,
Helmholtz-Zentrum Dresden - Rossendorf (HZDR)
2019-07-25 12:12:05 +01:00
e947e4d301 tutorials: Updated to use the new dictionary "slash" syntax 2019-07-11 19:44:29 +01:00
9cc193398f tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/bed: Increased water flow rate 2019-07-08 15:57:28 +01:00
fb6eff2c87 Moved tutorials/multiphase/compressibleInterFoam/RAS/sloshingTank2D to tutorials/multiphase/compressibleInterFoam/laminar/sloshingTank2D
Resolves bug-report https://bugs.openfoam.org/view.php?id=3296
2019-06-24 14:40:36 +01:00
251f91cfa5 fvOptions::isotropicDamping: New wave damping fvOption
This implicit isotropic damping function relaxes the velocity field towards a
specified uniform value which can be set to (0 0 0) if no flow is required.
This is particularly appropriate to damp the waves in a closed wave tank with no
mean flow.

Testing on the interFoam wave has shown that for this simple case with uniform
mean flow the new isotropicDamping fvOption provides more rapid and complete
damping than the original verticalDamping.
2019-06-18 22:06:17 +01:00
784244790f DTCHull tutorials: rename fields to .orig
to avoid them being overwritten during renumbering
2019-04-29 19:26:50 +01:00
cb6eb31d42 tutorials/multiphase/interFoam/RAS/DTCHullMoving/Allrun: Corrected call to renumberMesh 2019-04-08 20:37:58 +01:00
1909f9cf85 DTCHull tutorials: renumberMesh after meshing, before decomposition
Avoids the need to renumber the decompositon/reconstruction maps
2019-04-05 17:01:13 +01:00
2dd53c898a turbulenceModels/laminar/Giesekus: Giesekus model for visco-elasticity
Implementation of the Giesekus model for visco-elasticity, derived from the new
generalised form of the Maxwell model which now support additional sources.

    Giesekus, H., 1982.
    A simple constitutive equation for polymer fluids based on the
    concept of deformation-dependent tensional mobility.
    J. Non-Newton. Fluid. 11, 69–109.

This implementation is instantiated for incompressible, compressible and VoF
two-phase flow.
2019-03-28 22:10:59 +00:00
51edeaaa1f tutorials/multiphase/interFoam/RAS/mixerVesselAMI: Rationalised phase names and properties 2019-03-16 18:10:33 +00:00
2dd8b51d2a Removed redundant file 2019-03-15 11:52:15 +00:00
8f0772d7d2 tutorials::floatingObject: Added rigidBodyState functionObject 2019-03-01 13:51:59 +00:00
756d10c37c reactingEulerFoam: sizeDistribution: Naming conventions
The keyword which selects how the subset over which the function
operates is generated has been renamed to "selectionMode", to make it
more consistent with other parts of the OpenFOAM (e.g., fvOptions). It
can still take the value "all" or "cellZone". A cell zone is now
specified with a "cellZone", again for consistency.

Error messaging has also been overhauled.

Patch contributed by Institute of Fluid Dynamics,
Helmholtz-Zentrum Dresden - Rossendorf (HZDR)
2019-02-04 09:18:36 +00:00
5e2f17a9af populationBalanceModel: phaseChange: Improvements
A number of improvements have been made to the population balance phase
change drift model.

- The model now checks the ordering of the phase pairs and changes the
sign of the drift rate accordingly.

- The phase change mass flux and weights are calculated for each
velocity group, so the drift rate and phase change mass flux should be
consistent for each velocity group.

- By default the phase change mass flux is distributed between the size
groups based on the interfacial area of each group. For backward
compatibility number weighting can be enabled with a new
"numberWeighted" option.

The model now requires the user to provide a list of phase pairs in the
usual parenthesised form, rather than using the name. For example:

    phaseChange
    {
        pairs ((gas and liquid));
    }

Patch contributed by Juho Peltola, VTT.
2019-01-28 16:47:34 +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
c5db440298 dynamicMeshDict: standardised indentation 2019-01-23 11:45:23 +00:00
457c02e63f sampledSurface::writers:noSurfaceWriter: new rational and consistent class to disable surface writing
Selected by

    surfaceFormat none;

rather than the previous inconsistent

    surfaceFormat null;
2019-01-22 11:10:24 +00:00
19c3584d4b functionObject::timeControl: Rationalised naming timeStart -> startTime, timeEnd -> endTime
Support for timeStart and timeEnd is maintained for backward-compatibility but
these names are deprecated.
2019-01-18 13:41:08 +00:00
610c61bd2a tutorials: reactingTwoPhaseEulerFoam: Fixed divergence in wallBoilingIATE
Patch contributed by Juho Peltola, VTT.
2019-01-16 15:23:12 +00:00
5bba828399 tutorials/wave: Removed obsolete arguments from setWaves 2018-12-18 12:10:57 +00:00