Commit Graph

4622 Commits

Author SHA1 Message Date
49ef558adb tutorials/heatTransfer/chtMultiRegionFoam/shellAndTubeHeatExchanger/constant/regionProperties: Corrected version 2020-07-21 12:23:41 +01:00
85c08332ef multiphaseEulerFoam: Reinstated two-phase tests
These single-cell tests were previously simulated using the now removed
reactingTwoPhaseEulerFoam.
2020-07-21 12:04:12 +01:00
f66bb63896 foamCreateVideo: change fallback encoder to ffmpeg instead of avconv
Resolves issue https://bugs.openfoam.org/view.php?id=3508
2020-07-20 13:19:09 +01:00
efd50eae81 dictionary::functionEntries::calcEntry: Change code dictionary construction so variable lookup works as expected
For example

    thermo:rho.air1
    {
        explicit 3e-07;
        implicit 0;
    }

    f1.air1.bubbles
    {
        value       3.5;
        explicit    #calc "$value*$../thermo:rho.air1/explicit";
        implicit    0;
    }

now works, whereas previously an extra level of '../' was required:

        explicit    #calc "$value*$../../thermo:rho.air1/explicit";

because #calc created its own sub-dictionary.  The '$value' would have also
needed a '../' except that the 'value' entry is in the direct parent and could
be looked-up automatically by the parent search.
2020-07-18 13:24:46 +01:00
68e4678221 reactingTwoPhaseEulerFoam: Replaced by multiphaseEulerFoam
The reactingtTwoPhaseEulerFoam solver has been replaced by the more general
multiphaseEulerFoam solver which supports two-phase and multiphase systems
containing fluid and stationary phases, compressible or incompressible, with
heat and mass transfer, reactions, size distribution and all the usual phase
interaction and transfer models.

All reactingtTwoPhaseEulerFoam tutorials have been ported to multiphaseEulerFoam
to demonstrate two-phase capability with a wide range of phase and
phase-interaction models.

When running with two-phases the optional referencePhase entry in
phaseProperties can be used to specify which phase fraction should not be
solved, providing compatibility with reactingtTwoPhaseEulerFoam, see

tutorials/multiphase/multiphaseEulerFoam/RAS/fluidisedBed
tutorials/multiphase/multiphaseEulerFoam/laminar/bubbleColumn

for examples.
2020-07-17 20:18:15 +01:00
02baeece45 multiphaseEulerFoam: Rationalised and updated the library names 2020-07-17 18:01:49 +01:00
51af92baae stringOps: Updated handling of environment variable lookup 2020-07-17 18:00:39 +01:00
557f73a8e4 planningHullW3/Allrun: corrected handling of -test 2020-07-17 17:59:00 +01:00
2de39480c5 solidSpecie: Removed redundant make files 2020-07-17 11:58:07 +01:00
5bfd3b2488 functionObjects::stopAtClockTime: New functionObject to stop the run when the specified clock time is exceeded
Description
    Stops the run when the specified clock time in second has been reached
    and optionally write results before stopping.

    The following actions are supported:
    - noWriteNow
    - writeNow
    - nextWrite (default)

    Examples of function object specification:
    \verbatim
    stop
    {
        type        stopAtClockTime;
        libs        ("libutilityFunctionObjects.so");
        stopTime    10;
        action      writeNow;
    }
    \endverbatim
    will stop the run at the next write after the file "stop" is created in the
    case directory.

Usage
    \table
        Property | Description              | Required | Default value
        type     | type name: stopAtClockTime | yes    |
        stopTime | Maximum elapsed time [s] | yes      |
        action   | Action executed          | no       | nextWrite
    \endtable
2020-07-17 11:13:46 +01:00
e1c41275ac stringOps: Added support for the dictionary "slash" variable scope syntax 2020-07-17 11:12:55 +01:00
af8488a191 etc/caseDicts/postProcessing: Moved files to more logical locations 2020-07-16 17:47:25 +01:00
7379f4525f functionObjects::stopAt: New abstract base class for run stop conditions
By default the case stops following the next write but stopping immediately with
or without writing are also options.

The stopAtFile functionObject derived from stopAt stops the run when a file
predefined file is created in the case directory:

Description
    Stops the run when the specified file is created in the case directory.

    The default name of the trigger file is \c $FOAM_CASE/<name> where \c
    <name> is the name of the functionObject entry and the default action is \c
    nextWrite.

    Currently the following action types are supported:
    - noWriteNow
    - writeNow
    - nextWrite

    Examples of function object specification:
    \verbatim
    stop
    {
        type stopAtFile;
        libs ("libutilityFunctionObjects.so");
    }
    \endverbatim
    will stop the run at the next write after the file "stop" is created in the
    case directory.

    \verbatim
    stop
    {
        type stopAtFile;
        libs ("libutilityFunctionObjects.so");
        file "$FOAM_CASE/stop";
        action writeNow;
    }
    \endverbatim
    will write the fields and stop the run when the file "stop" is created in
    the case directory.

Usage
    \table
        Property | Description            | Required | Default value
        type     | type name: stopAtFile  | yes      |
        file     | Trigger file path name | no       | $FOAM_CASE/<name>
        action   | Action executed        | no       | nextWrite
    \endtable
2020-07-16 17:44:51 +01:00
c140e681cb Removed temporary redirection scripts from version 7 2020-07-16 17:38:18 +01:00
9fd9172913 Rationalised the named of uncoupled particle tracing solvers and functionObject
Solvers
    icoUncoupledKinematicParcelFoam -> particleFoam
    uncoupledKinematicParcelFoam -> rhoParticleFoam

functionObjects
    icoUncoupledKinematicCloud -> particles
2020-07-16 13:06:08 +01:00
627a8caf5d planningHullW3/Allrun: Added dummy -test argument support 2020-07-16 00:06:18 +01:00
9cebc18bb4 Standardised naming convention for source files containing New selector functions 2020-07-16 00:05:21 +01:00
1d2f2aba3f flowWithOpenBoundary/Allrun: Added dummy -test argument support 2020-07-15 21:59:27 +01:00
49c9766c44 multiphaseEulerFoam: Updated name of functionObjects library 2020-07-15 20:53:05 +01:00
b832453b72 multiphaseEulerFoam: replacement for reactingMultiphaseEulerFoam
The new multiphaseEulerFoam is based on reactingMultiphaseEulerFoam with some
improvements and rationalisation to assist maintenance and further development.

The phase system solution has been enhanced to handle two phases more
effectively and all two-phase specific models updated for compatibility so that
multiphaseEulerFoam can also replace reactingTwoPhaseEulerFoam.
When running multiphaseEulerFoam with only two-phases the default behaviour is
to solve for both phase-fractions but optionally a reference phase can be
specified so that only the other phase-fraction is solved, providing better
compatibility with the behaviour of reactingTwoPhaseEulerFoam.

All reactingMultiphaseEulerFoam and reactingTwoPhaseEulerFoam tutorials have
been updated for multiphaseEulerFoam.
2020-07-15 18:13:40 +01:00
1d9ad9aa8e reactingEulerFoam::phaseSystem: Merged with multiphaseSystem
The base phaseSystem now provides all the functionality needed for
reactingMultiphaseEulerFoam and twoPhaseSystem is a specialisation, simplifying
maintenance.
2020-07-14 15:51:44 +01:00
98d4937ee3 functionObjects::abort: Added documentation 2020-07-14 12:12:24 +01:00
1c9004358d reactingEulerFoam::functionObjects::phaseMap: Corrected documentation 2020-07-14 12:11:58 +01:00
35a04f0fb8 reactingEulerFoam::functionObjects::phaseMap: New functionObject to write the phase map field
Description
    This functionObject writes the phase-fraction map field alpha.map with
    incremental value ranges for each phase
    e.g., with values 0-1 for water, 1-2 for air, 2-3 for oil etc.

    Example of function object specification:
    \verbatim
    phaseMap
    {
        type            phaseMap;
        libs            ("libreactingEulerFoamFunctionObjects.so");
        writeControl    writeTime;
    }
    \endverbatim

Usage
    \table
        Property     | Description             | Required    | Default value
        type         | type name: phaseMap     | yes         |
    \endtable

This replaces the alphas functionality previously built-in to
reactingMultiphaseEulerFoam so that the storage, calculation and writing of the
phase map field is now under user control.
2020-07-14 10:18:00 +01:00
c3d72345fb reactingMultiphaseEulerFoam: Improved the handling of the optional referencePhase
The optional reference phase fraction field is not read even if the file is
present, it is constructed with "calculated" BCs as it is a derived field.  All
other phase fraction field files are read and now must be present.
2020-07-13 18:06:44 +01:00
077138942f Intel MPI configuration: Updated for versions 19 and higher
Resolves feature request https://bugs.openfoam.org/view.php?id=3519
2020-07-11 17:20:25 +01:00
7412cc47e1 MomentumTransportModels::mixtureKEpsilon: Used the dispersed phase drag only for bubble generated turbulence 2020-07-10 23:49:29 +01:00
4b959ba566 multiphaseEulerFoam: Superseded by the much more general and extensible reactingMultiphaseEulerFoam 2020-07-10 20:17:25 +01:00
2db948188f tutorials/multiphase/reactingMultiphaseEulerFoam: Added reactingTwoPhaseEulerFoam tutorials 2020-07-10 20:09:17 +01:00
5c1f24054d reactingMultiphaseEulerFoam: Simplified the velocity and flux correction after partial elimination 2020-07-10 12:04:08 +01:00
2e62bfe5bc reactingMultiphaseEulerFoam: Updated remaining two-phase turbulent transport and IATE models
for compatibility with reactingMultiphaseEulerFoam when run with two-phases.
Some of these two-phase models could be enhanced to operate with multiple
dispersed phases in the future.

In order to update these models for reactingMultiphaseEulerFoam it has been
necessary to break compatibility with the now redundant twoPhaseEulerFoam solver
which has been superseded by the much more capable reactingEulerFoam solvers and
now removed.
2020-07-10 09:37:48 +01:00
27ce5a0a18 reactingMultiphaseEulerFoam: Updated partial elimination
to ensure the velocity and flux of the phases sum the conservative mixture
values obtained from the pressure solution.

Also corrected handling of MRF and updated to work with partial elimination.
2020-07-09 15:37:35 +01:00
b507f38a8f CellZoneInjection: Correction to cell tet volume fractions
The cellZoneInjection now correctly fills all tets of a given cell with
a random distribution of particles. Previously an error in the
calculation of the cumulative tet volume fractions for a cell meant that
one tet never had any particles injected into it.
2020-07-09 15:15:14 +01:00
282fbbd78c lagrangian: Rationalised trackPart enumerations 2020-07-08 16:03:25 +01:00
ccd45f53a6 foamyQuadMesh: Prevent indexing beyond end of face-vertices array 2020-07-07 16:19:51 +01:00
e63f3c1e98 rhoReactingBuoyantFoam: Added pRef 20200705 2020-07-04 09:51:04 +01:00
8addff24f0 chemPointISAT.H: Corrected documentation 2020-07-03 15:45:31 +01:00
3cc2ded6d0 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2020-07-03 15:45:18 +01:00
2f30c1364b heatTransfer solvers: Added optional pressure reference
Added optional pressure reference pRef to p_rgh in buoyantPimpleFoam,
buoyantSimpleFoam and chtMultiRegionFoam which handles cases in which the
pressure variation is small compared to the pressure level more accurately.

The pRef value is provided in the optional constant/pRef file.

All tutorials and templates have been updated to use pRef as appropriate.
2020-07-03 15:41:58 +01:00
3f5df8fb78 reacting*EulerFoam/.../kineticTheoryModel: Run without drag
This change protects the lookup of the drag model so that if it is not
found then the drag terms in the Theta equation are set to zero. This is
not likely to be correct usage in physical cases, but is useful for
doing uncoupled simulations for the purpose of model verification.
2020-07-03 09:04:32 +01:00
1611e0dbfb PLIC,MPLIC: New piecewise-linear interface compression schemes
A new family of interface compression interpolation schemes based on
piecewise-linear interface calculation (PLIC). PLIC represents an interface by
surface-cuts which split each cell to match the volume fraction of the phase in
that cell. The surface-cuts are oriented according to the point field of the
local phase fraction. The phase fraction on each cell face — the interpolated
value — is then calculated from the amount submerged below the surface-cut.

The basic PLIC method generates a single cut so cannot handle cells in which
there are multiple interfaces or where the interface is not fully resolved. In
those cells, the interpolation reverts to an alternative scheme, typically
standard interface compression. PLIC, with a fallback to interface compression,
produces robust solutions for real engineering cases. It can run with large time
steps so can solve problems like hydrodynamics of a planing hull, with rigid
body motion of the hull (above). The user selects PLIC by the following setting
in fvSchemes:

    div(phi,alpha)      Gauss PLIC interfaceCompression vanLeer 1;

The multicut PLIC (MPLIC) scheme extends PLIC to handle multiple
surface-cuts. Where a single cut is insufficient, MPLIC performs a topological
face-edge-face walk to produce multiple splits of a cell. If that is still
insufficient, MPLIC decomposes the cell into tetrahedrons on which the cuts are
applied. The extra cutting carries an additional computational cost but requires
no fallback. The user selects MPLIC by the following setting in the fvSchemes
file:

    div(phi,alpha)      Gauss MPLIC;

Variants of the PLIC and MPLIC schemes are also available which use velocities
at the face points to calculate the face flux. These PLICU and MPLICU schemes
are likely to be more accurate in regions of interface under high shear.

More details can be found here:
https://cfd.direct/openfoam/free-software/multiphase-interface-capturing

Jakub Knir
CFD Direct Ltd.
2020-07-02 13:24:05 +01:00
fa79bab863 interfaceCompression: New run-time selectable VoF interface compression scheme
A new run-time selectable interface compression scheme framework has been added
to the two-phase VoF solvers to provide greater flexibility, extensibility and
more consistent user-interface.  The previously built-in interface compression
is now in the standard run-time selectable surfaceInterpolationScheme
interfaceCompression:

Class
    Foam::interfaceCompression

Description
    Interface compression corrected scheme, based on counter-gradient
    transport, to maintain sharp interfaces during VoF simulations.

    The interface compression is applied to the face interpolated field from a
    suitable 2nd-order shape-preserving NVD or TVD scheme, e.g.  vanLeer or
    vanAlbada.  A coefficient is supplied to control the degree of compression,
    with a value of 1 suitable for most VoF cases to ensure interface integrity.
    A value larger than 1 can be used but the additional compression can bias
    the interface to follow the mesh more closely while a value smaller than 1
    can lead to interface smearing.

    Example:
    \verbatim
    divSchemes
    {
        .
        .
        div(phi,alpha)     Gauss interfaceCompression vanLeer 1;
        .
        .
    }
    \endverbatim

The separate scheme for the interface compression term "div(phirb,alpha)" is no
longer required or used nor is the compression coefficient cAlpha in fvSolution
as this is now part of the "div(phi,alpha)" scheme specification as shown above.

Backward-compatibility is provided by checking the specified "div(phi,alpha)"
scheme against the known interface compression schemes and if it is not one of
those the new interfaceCompression scheme is used with the cAlpha value
specified in fvSolution.

More details can be found here:
https://cfd.direct/openfoam/free-software/multiphase-interface-capturing

Henry G. Weller
CFD Direct Ltd.
2020-07-02 10:13:15 +01:00
70cfa1a47c Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2020-07-02 09:45:06 +01:00
5ef8edfc0c tutorials/heatTransfer/chtMultiRegionFoam/reverseBurner: Changed to perfectGas
Only perfectGas and real-gas equations of state are consistent with standard
Janaf thermo data based on Cp.  Using other equations of state is possible but
the Janaf Cp data would have to be modified for consistency.
2020-07-02 09:42:07 +01:00
da7627910f Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-dev 2020-07-01 14:43:04 +01:00
197b148010 flowWithOpenBoundary: tutorial case to explore p and U boundary conditions at an open boundary 2020-07-01 14:42:33 +01:00
e8a2c4570b surfaceFeatures: Prevent floating point error when edge is parallel to plane 2020-07-01 14:33:41 +01:00
559e6f9ce5 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2020-07-01 13:27:21 +01:00
6a76542985 fvOptions::fixedTemperatureConstraint: Added phase support 2020-07-01 13:26:48 +01:00
08603410b6 basicThermo, basicSpecieMixture: Added sensible enthalpy methods 2020-06-30 08:34:15 +01:00