Commit Graph

4115 Commits

Author SHA1 Message Date
4feee735a3 functionObjects::log: Added optional switch to disable dimension checking:
Description
    Calculates the natural logarithm of the specified scalar field.

    Performs \f$ln(max(x, a))\f$ where \f$x\f$ is the field and \f$a\f$ an
    optional clip to handle 0 or negative \f$x\f$.  Dimension checking can
    optionally be suspended for this operation if \f$x\f$ is dimensioned.

    Example of function object specification:
    \verbatim
    log1
    {
        type            log;
        libs            ("libfieldFunctionObjects.so");
        field           p;
        clip            1e-3;
        checkDimensions no;
    }
    \endverbatim

    or using \c postProcess
    \verbatim
    postProcess -func 'log(p, clip=1e-3, checkDimensions=no)'
    \endverbatim

Usage
    \table
        Property        | Description               | Required | Default value
        type            | Type name: log            | yes      |
        clip            | Clip value                | no       |
        checkDimensions | Dimension checking switch | no       |
    \endtable
2019-09-24 11:37:38 +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
9cbc90110d reacting*EulerFoam: phaseSystem: Renamed massTransfer method specieTransfer 2019-09-19 17:02:23 +01:00
975784d062 BlendedInterfacialModel: Removed unused methods 2019-09-19 17:02:23 +01:00
a9de972d7a reacting*EulerFoam: phaseSystem: Removed dmdt(pair) method
Mass transfer for a pair is now no longer available at the top level.
The solver should never need to know mass transfer rates individually;
the dmdts method (which returns all mass transfers simultaneously)
should be sufficient.

In addition the construction of zero-valued fields and addition of
fields into lists and tables within the phase system has been
simplified and code duplication removed.
2019-09-19 17:02:23 +01:00
66ad375c1d reacting*EulerFoam: Corrected pressure equation for incompressible variable-density phases
The density time-derivative terms should always appear in the pressure
equation except when the phase is isochoric (i.e., the equation of state
is constant density) and the phase is pure (as species fraction changes
can also generate changes in density, even for an isochoric equation of
state). The logic in the pressure equations of reactingTwoPhaseEulerFoam
and reactingMultphaseEulerFoam has been changed to fulfil this
requirement.

This has resolved a mass-conservation issue with the
waterAndIsopropanolEvaporation case, which uses a multi-component liquid
with a constant-density equation of state.
2019-09-19 17:01:39 +01:00
fc2e2b54da TwoResistanceHeatTransferPhaseSystem: Restored asymmetric stabilisation term
See commit 7e799e9f for details.
2019-09-19 17:01:39 +01:00
df683520c8 reacting*EulerFoam: Corrected mass transfer processes
A number of fixes have been made to the mass transfer implementations in
the phase system hierarchy in order to improve conservation of energy,
and other properties.

From an implementation perspective, each phase system that defines mass
transfer now has also to implement all property transfers that occur as
a result. The base classes no longer generate the transfers
automatically; it is not in general possible to correctly calculate the
property transfer terms from a single accumulated mass transfer rate.

To facilitate this additional burden on the derived layers, a number of
addDmdt? and addDmidt? methods have been added which compute and add
these transfers into the governing equations in a generic manner. In the
case of simple explicit mass transfers, a mass-transferring system need
only pass a table of the transfer rates to these functions in order to
generate the appropriate transfer terms.

The difference between the addDmdt? and addDmidt? methods is that the
former takes a table of bulk transfers across the interfaces, whilst the
latter takes a table-of-tables of individual species transfers.

Updates to PopulationBalancePhaseSystem and
ThermalPhaseChangePhaseSystem were provided by Timo Niemi, and Juho
Peltola, VTT.
2019-09-19 17:01:39 +01:00
bfbaddc5e5 test/multiphase/reactingTwoPhaseEulerFoam/interfaceComposition: Added mass and energy conservation plots 2019-09-19 17:01:39 +01:00
b77dacd0b9 tutorials/*/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving: Fixed air properties 2019-09-19 17:01:39 +01:00
ea129bca76 reacting*EulerFoam: MomentumTransferSystem: Corrected turbulent dispersion force handling for multiple phases 2019-09-19 16:38:37 +01:00
210cf4f361 reacting*EulerFoam: phaseSystem: Corrected blended model pair order
Blended models are now constructed with the same phase order as the
corresponding pair stored by the phase system. This should ultimately
prevent some of the sign comparisons that are currently necessary when
applying models.
2019-09-19 16:08:54 +01:00
29e4cc592a constrainHbyA: Added constrainPhiHbyA to constrain the predicted flux directly 2019-09-18 16:37:36 +01:00
4718103136 blockMesh: Improved block face orientation check and added an optional switch
//- Switch checking block face orientation
        //  to ensure that all faces are outward-pointing.
        //  This check may fail if the block is intentionally very twisted
        //  for curved edges to be applied and can be switched off.
        static Switch checkBlockFaceOrientation;

To switch this check off set

checkBlockFaceOrientation false;

in blockMeshDict.
2019-09-18 11:16:41 +01:00
c1b52700c3 solidParticle: Corrected typo
Resolves bug-report https://bugs.openfoam.org/view.php?id=3350
2019-09-17 17:39:12 +01:00
a79786f7c8 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2019-09-16 09:00:03 +01:00
0284c2c906 tutorials/incompressible/simpleFoam/pitzDaily: Removed duplicate functions entry 2019-09-16 08:59:27 +01:00
7651bbaf62 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting: Restored endTime 2019-09-12 11:24:23 +01:00
216cb0f0fe chemkinToFoam: Added -lchemistryModel 2019-09-11 11:46:57 +01:00
124c70a90d reactingEulerFoam: Use the turbulent dispersion face flux in the face based algorithm.
For reactingTwoPhaseEulerFoam or if only two phases are present in
reactingMultiphaseEulerFoam, new and old formulations are equivalent. In case,
gradients of alpha of more than two phases appear at the same point, it is
necessary to use face based force formulations of turbulent dispersion models,
which take the respective disperse phase fractions into account, and
subsequently blend those.

Patch contributed by Institute of Fluid Dynamics,
Helmholtz-Zentrum Dresden - Rossendorf (HZDR)
2019-09-11 09:45:10 +01:00
0a5dc8e3af reactions: Moved from specie to chemistryModel to avoid linkage order problems 2019-09-10 19:56:57 +01:00
d1acbe25bb tutorials/combustion/reactingFoam/RAS/membrane: Clean up
Removed unused species and made the schemes appropriate for a
non-orthogonal mesh.
2019-09-10 11:01:22 +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
99fc24102f reactingEulerFoam/.../aerosolDrag: Fixed reference to tmp
Patch contributed by Institute of Fluid Dynamics, Helmholtz-Zentrum Dresden -
Rossendorf (HZDR) and VTT Technical Research Centre of Finland Ltd.
2019-09-09 09:26:14 +01:00
11748012ad DPMFoam: Added support for the kOmegaSST turbulence model 2019-09-08 20:05:49 +01:00
107b5d161d patchSummary: Added printing of the actual patchField types
Now for the wall in the simpleFoam pitzDaily tutorial case the following
patchField types are printed

group   : wall
    scalar              v2              v2WallFunction
    scalar              nut             nutkWallFunction
    scalar              k               kqRWallFunction
    scalar              nuTilda         zeroGradient
    scalar              p               zeroGradient
    scalar              omega           omegaWallFunction
    scalar              f               fWallFunction
    scalar              epsilon         epsilonWallFunction
    vector              U               noSlip

instead of

group   : wall
    scalar              v2              generic
    scalar              nut             generic
    scalar              k               generic
    scalar              nuTilda         zeroGradient
    scalar              p               zeroGradient
    scalar              omega           generic
    scalar              f               generic
    scalar              epsilon         generic
    vector              U               noSlip
2019-09-08 16:39:45 +01:00
a9bfb223ff pointPatchField: Define typedef value_type locally as it is not inherited from UList 2019-09-08 16:36:54 +01:00
f2fe387423 turbulenceFieldsTemplates: omega not registered on construction 2019-09-08 16:36:12 +01:00
cbae0c8cc0 foamDictionary: Improved handling of header for binary files 2019-09-07 20:55:23 +01:00
723b1d6024 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2019-09-06 18:08:19 +01:00
f1912cac1e Merged 2019-09-06 18:08:01 +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
dea9da987c interfacialCompositionModel: Reinstated Lewis number correction 2019-09-05 15:45:04 +01:00
a9e35875b1 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2019-09-05 15:43:52 +01:00
bf3e8f7e4b reactingEulerFoam: Added support for generalizedNewtonian laminar flow
in which the following non-Newtonian models are currently supported:

    BirdCarreau
    Casson
    CrossPowerLaw
    HerschelBulkley
    powerLaw
    strainRateFunction
2019-09-05 15:31:20 +01:00
0f5fbb7ab1 particle: Do not use moving mesh tracking algorithm when possible
The moving mesh tracking algorithm is deactivated on moving meshes when
the step fraction is 1 and (if the operation requires it) when the
requested tracking fraction is 0. This optimises usage for
post-processing, in which tracking is done at a single point in time at
which the mesh geometry is fixed, rather than over a time-step across
which the mesh moves. It also prevents the need for the storage of
old-time cell centres for such purposes.

Resolves bug report https://bugs.openfoam.org/view.php?id=3343
2019-09-05 09:21:16 +01:00
9066479c86 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting: Reduced write frequency 2019-09-05 09:21:16 +01:00
686ea2623c reactingEulerFoam: Un-templated interface composition models
The recent field-evaluation additions to basicSpecieMixture means that
the interface composition models no longer need knowledge of the
thermodynamic type in order to do efficient evaluation of individual
specie properties, so templating on the thermodynamics is unnecessary.
This greatly simplifies the implementation.
2019-09-05 09:21:16 +01:00
3c64dc6788 kkLOmega: Improved stabilisation of the fTaul term 2019-09-05 09:09:53 +01:00
7e83c24ecc decompositionMethod: Removed diagnostics message 2019-09-04 14:24:00 +01:00
f75da73d7a DTCHullMoving: Updated for consistency with the current DTCHull tutorial case 2019-09-03 10:11:43 +01:00
d9fc4501dd pressureInletOutletVelocityFvPatchVectorField: Changed the optional tangentialVelocity entry to a Function1
to support for example flow ramping in towing-tank simulations.
2019-09-03 10:09:12 +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
6e9801e7e8 functionObjectList: Added support for arguments to added to the object list
If the functionObject requires an object list rather than a field list the
non-named arguments are now inserted into the object list, for example

functions
{
    #includeFunc writeObjects(kEpsilon:G)
}

which is equivalent to

functions
{
    #includeFunc writeObjects(objects = (kEpsilon:G))
}
2019-09-01 15:30:09 +01:00
30cceb42c0 objectRegistry: Corrected caching of registered temporary objects
For example the generation term in the k-epsilon turbulence kEpsilon:G is a
temporary field that is specifically named and registered so that it can be
looked-up be the wall-function boundary conditions and requires slightly
different handling compared to normal temporary fields which are not registered.

The tutorials/incompressible/simpleFoam/pitzDaily case now demostrates this
functionality with the addition of

cacheTemporaryObjects
(
    kEpsilon:G
);

functions
{
    #includeFunc writeObjects(objects = (kEpsilon:G))
}

in controlDict which caches kEpsilon:G and writes it at every write time.
2019-09-01 10:18:45 +01:00
c909bdc38d heSolidThermo: Updated to use the corrected equation of state coefficient mixing 2019-08-31 12:13:59 +01:00
c8d4346a54 Equations of state: Corrected coefficient mixing
and removed it from equations of state for which it is too inaccurate to be
useful, in particular from perfectFluid which has been superseded by rPolynomial
which is more accurate and naturally support coefficient mixing.
2019-08-31 12:04:57 +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
7c133e3952 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2019-08-30 11:24:44 +01:00