Commit Graph

4665 Commits

Author SHA1 Message Date
51d763685e thermophysicalModels: Removed pressure field from solid thermos
Solid thermo no longer requires a pressure field, so solid regions of
chtMultiRegionFoam cases no longer need a 0/<solidRegionName>/p file.

In order for solidThermo to continue to use heThermo and the low level
thermo classes, it now constructs a uniformGeometricScalarField for the
pressure with the value NaN. This is passed into the low-level thermo
models by heThermo. The enforces the requirement that low-level thermo
models used by solidThermo should have no pressure dependence. If an
instantiation is made with pressure dependence, the code will fail with
a floating point error.
2020-08-07 12:32:20 +01:00
49510919f8 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2020-08-06 16:51:40 +01:00
1ce62c6ff5 phaseSystemSolve: Update the reference phase fraction during sub-cycling
for the phir flux.
2020-08-06 16:50:56 +01:00
1eab1b7ffe tutorials/lagrangian/.../verticalChannel*: Updated particle tracks configuration
Resolves bug report https://bugs.openfoam.org/view.php?id=3528
2020-08-06 14:32:58 +01:00
66f0e8f4ba Added .gitattributes file to make language reporting more accurate 2020-08-05 12:28:12 +01:00
cbad002697 gnuplotGraph: added offset keyword and terminal consistent with gnuplotSetWriter
Resolves bug-report https://bugs.openfoam.org/view.php?id=3527
2020-08-05 12:03:53 +01:00
fdfe5f3517 MomentumTransportModels::kkLOmega: Implemented the Lopez, Walters, (2016) correction
This turbulence model is described in:
    \verbatim
        Walters, D. K., & Cokljat, D. (2008).
        A three-equation eddy-viscosity model for Reynolds-averaged
        Navier–Stokes simulations of transitional flow.
        Journal of Fluids Engineering, 130(12), 121401.
    \endverbatim

    corrected according to:

    \verbatim
        Furst, J. (2013).
        Numerical simulation of transitional flows with laminar kinetic energy.
        Engineering Mechanics, 20(5), 379-388.
    \endverbatim

    and includes the improvements proposed in:

    \verbatim
        Lopez, M., and Keith Walters, D. (2016).
        A Recommended Correction to the kT−kL−ω Transition-Sensitive
        Eddy-Viscosity Model.
        Journal of Fluids Engineering, 139(2), 024501.
    \endverbatim
2020-08-04 22:42:53 +01:00
94323816d5 MomentumTransportModels::kkLOmega: Implemented the Lopez, Walters, (2016) correction
This turbulence model is described in:
    \verbatim
        Walters, D. K., & Cokljat, D. (2008).
        A three-equation eddy-viscosity model for Reynolds-averaged
        Navier–Stokes simulations of transitional flow.
        Journal of Fluids Engineering, 130(12), 121401.
    \endverbatim

    corrected according to:

    \verbatim
        Furst, J. (2013).
        Numerical simulation of transitional flows with laminar kinetic energy.
        Engineering Mechanics, 20(5), 379-388.
    \endverbatim

    and includes the improvements proposed in:

    \verbatim
        Lopez, M., and Keith Walters, D. (2016).
        A Recommended Correction to the kT−kL−ω Transition-Sensitive
        Eddy-Viscosity Model.
        Journal of Fluids Engineering, 139(2), 024501.
    \endverbatim
2020-08-04 21:58:23 +01:00
ff20398245 fvOptions: Changed the source, constraint and correct functions to const
Most fvOptions change the state of the fields and equations they are applied to
but do not change internal state so it makes more sense that the interface is
const, consistent with MeshObjects.  For the few fvOptions which do maintain a
changing state the member data is now mutable.
2020-08-04 15:40:40 +01:00
87f17b66bb tutorials/Alltest: Removed no longer functional code 2020-08-04 11:27:16 +01:00
2f6543b9c6 debug: Registered the debug switches of some classes 2020-08-04 11:26:24 +01:00
5893e29241 debug: Fixed behaviour of -listSwitches argument
There is now only one -listSwitches argument available to the
applications; -listUnsetSwitches and -listRegisteredSwitches have been
removed. -listSwitches prints everything, now also including the values.
It also categorises the output based on whether the switch has a
default, if it has the same value as that default, and whether or not it
is registered with a re-reader.

The list of debug switches in etc/controlDict has been reduced to only
the switches which have non-zero values. In general the list of valid
switches varies per application and per library, so it is not possible
to keep a single definitive list of all switches. The -listSwitches
argument provides the definitive list on a per applicaton basis.

Setting of defaults for named enum optimisation switches has been added.
2020-08-04 09:36:42 +01:00
b5ea22d339 Added "= delete" to some disabled copy constructors and assignment operators 2020-08-04 09:36:42 +01:00
b8f9ed8062 fvOptions: Changed to be a MeshObject to support automatic update for mesh changes
Now cellSetOption correctly handles the update of the cell set following mesh
topology changes rather than every time any of the fvOption functions are
called for moving meshes.  This is more efficient and consistent with the rest
of OpenFOAM and avoids a lot of unnecessary clutter in the log.
2020-08-02 18:46:20 +01:00
5f3c604d05 reactingParticleFoam: Support singleComponentMixtures
This is useful for testing purposes in comparison with rhoPimpleFoam.

Also made a fix to the handling of multivariate convection schemes in
chtMultiRegionFoam.
20200722
2020-07-31 11:38:59 +01:00
208e5f1b33 etc/config.sh/bash_completion: Re-generated for new lagrangian solvers 2020-07-31 09:35:12 +01:00
43d66b5e7c lagrangian: Run-time selectable clouds
The standard set of Lagrangian clouds are now selectable at run-time.
This means that a solver that supports Lagrangian modelling can now use
any type of cloud (with some restrictions). Previously, solvers were
hard-coded to use specific cloud modelling. In addition, a cloud-list
structure has been added so that solvers may select multiple clouds,
rather than just one.

The new system is controlled as follows:

- If only a single cloud is required, then the settings for the
  Lagrangian modelling should be placed in a constant/cloudProperties
  file.

- If multiple clouds are required, then a constant/clouds file should be
  created containing a list of cloud names defined by the user. Each
  named cloud then reads settings from a corresponding
  constant/<cloudName>Properties file. Clouds are evolved sequentially
  in the order in which they are listed in the constant/clouds file.

- If no clouds are required, then the constant/cloudProperties file and
  constant/clouds file should be omitted.

The constant/cloudProperties or constant/<cloudName>Properties files are
the same as previous cloud properties files; e.g.,
constant/kinematicCloudProperties or constant/reactingCloud1Properties,
except that they now also require an additional top-level "type" entry
to select which type of cloud is to be used. The available options for
this entry are:

    type    cloud;                   // A basic cloud of solid
                                     // particles. Includes forces,
                                     // patch interaction, injection,
                                     // dispersion and stochastic
                                     // collisions. Same as the cloud
                                     // previously used by
                                     // rhoParticleFoam
                                     // (uncoupledKinematicParticleFoam)

    type    collidingCloud;          // As "cloud" but with resolved
                                     // collision modelling. Same as the
                                     // cloud previously used by DPMFoam
                                     // and particleFoam
                                     // (icoUncoupledKinematicParticleFoam)

    type    MPPICCloud;              // As "cloud" but with MPPIC
                                     // collision modelling. Same as the
                                     // cloud previously used by
                                     // MPPICFoam.

    type    thermoCloud;             // As "cloud" but with
                                     // thermodynamic modelling and heat
                                     // transfer with the carrier phase.
                                     // Same as the limestone cloud
                                     // previously used by
                                     // coalChemistryFoam.

    type    reactingCloud;           // As "thermoCloud" but with phase
                                     // change and mass transfer
                                     // coupling with the carrier
                                     // phase. Same as the cloud
                                     // previously used in fireFoam.

    type    reactingMultiphaseCloud; // As "reactingCloud" but with
                                     // particles that contain multiple
                                     // phases. Same as the clouds
                                     // previously used in
                                     // reactingParcelFoam and
                                     // simpleReactingParcelFoam and the
                                     // coal cloud used in
                                     // coalChemistryFoam.

    type    sprayCloud;              // As "reactingCloud" but with
                                     // additional spray-specific
                                     // collision and breakup modelling.
                                     // Same as the cloud previously
                                     // used in sprayFoam and
                                     // engineFoam.

The first three clouds are not thermally coupled, so are available in
all Lagrangian solvers. The last four are thermally coupled and require
access to the carrier thermodynamic model, so are only available in
compressible Lagrangian solvers.

This change has reduced the number of solvers necessary to provide the
same functionality; solvers that previously differed only in their
Lagrangian modelling can now be combined. The Lagrangian solvers have
therefore been consolidated with consistent naming as follows.

    denseParticleFoam: Replaces DPMFoam and MPPICFoam

    reactingParticleFoam: Replaces sprayFoam and coalChemistryFoam

    simpleReactingParticleFoam: Replaces simpleReactingParcelFoam

    buoyantReactingParticleFoam: Replaces reactingParcelFoam

fireFoam and engineFoam remain, although fireFoam is likely to be merged
into buoyantReactingParticleFoam in the future once the additional
functionality it provides is generalised.

Some additional minor functionality has also been added to certain
solvers:

- denseParticleFoam has a "cloudForceSplit" control which can be set in
  system/fvOptions.PIMPLE. This provides three methods for handling the
  cloud momentum coupling, each of which have different trade-off-s
  regarding numerical artefacts in the velocity field. See
  denseParticleFoam.C for more information, and also bug report #3385.

- reactingParticleFoam and buoyantReactingParticleFoam now support
  moving mesh in order to permit sharing parts of their implementation
  with engineFoam.
2020-07-31 09:35:12 +01:00
165bcee48b PackedList: Added documentation 2020-07-31 09:28:29 +01:00
ccae22cbc5 PackedList: Added default constructor to avoid warning from clang 2020-07-31 09:25:38 +01:00
20ce9298d2 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2020-07-30 21:23:05 +01:00
9269ea6964 chemistrySolver::EulerImplicit: Added include for clang 2020-07-30 21:22:20 +01:00
0b09e38c54 fvsPatchFields.C: Use the new macros 2020-07-30 21:21:57 +01:00
e603417ef7 bin/tools/foamGenerateBashCompletion: Improved robustness of bracket parsing
Also minor formatting changes
2020-07-30 16:47:29 +01:00
074dbec0a5 etc/config.sh/bash_completion: Updated for new solvers and arguments
Also added foamGenerateBashCompletion to $WM_PROJECT_DIR/bin/tools to
generate the bash_completion file
2020-07-30 15:41:58 +01:00
37db7718ac foamListTimes: Added -withFunctionEntries option to execute functionEntries 2020-07-30 13:52:54 +01:00
9ff320a8da multiphaseEulerFoam: Updated documentation 2020-07-30 12:30:26 +01:00
f4facbc664 multiphaseEulerFoam: Updated documentation
Patch contributed by Institute of Fluid Dynamics,
Helmholtz-Zentrum Dresden - Rossendorf (HZDR)
2020-07-30 12:27:35 +01:00
e0e448a8bb slicedFvPatchField, slicedFvsPatchField: Removed from New selection tables
Sliced Fv? patch fields are explicitly constructed and lookup from the
fv?PatchField constructor tables is not necessary or appropriate
2020-07-29 21:51:59 +01:00
bddd829fc2 chemistrySolver::EulerImplicit: Updated to use the StandardChemistryModel reaction Jacobian 2020-07-29 19:09:40 +01:00
6637ed0e9f slicedFvsPatchField: Set empty internal field in constructor
is reset by shallowCopy in SlicedGeometricField
2020-07-29 14:07:57 +01:00
a29d6f6a15 heRhoThermo: Corrected template argument name 2020-07-27 17:15:50 +01:00
1a7f10a986 sampledSurfaces: Put inside functionObjects namespace 2020-07-24 14:11:36 +01:00
dee1e4f4c2 plane: Removed unnecessary sub-dictionaries from caseDicts and tutorials 2020-07-24 14:11:36 +01:00
36731b2fe9 tutorials: Prevent foamDictionary output from printing during test loop
foamDictionary executions are now wrapped by runApplication like any
other execution so that they do not print during a test loop.
foamDictionary does not produce a conforming log, however, so
log.foamDictionary has been filtered out of the formation of the test
loop report so that false failures are not reported.
2020-07-24 14:11:32 +01:00
bf7ade04d8 sampledSurfaces: Added documentation 2020-07-24 12:12:19 +01:00
4b6d0aefc3 plane: Made the sub-dictionary optional
This means a plane can now be specified like this:

    planeType   pointAndNormal;
    point       (0 0 0);
    normal      (0 0 1);

As well as this:

    planeType   pointAndNormal;
    pointAndNormalDict
    {
        point       (0 0 0);
        normal      (0 0 1);
    }
2020-07-24 12:12:19 +01:00
b2c402365e fvMatrix: Added division by scalar and scalar fields scaling operations 2020-07-24 12:02:10 +01:00
6c8732df5b dictionary: Set the default scoping syntax to 'slash'
The new optional 'slash' scoping syntax is now the default and provides a more
intuitive and flexible syntax than the previous 'dot' syntax, corresponding to
the common directory/file access syntax used in UNIX, providing support for
reading entries from other dictionary files.

In the 'slash' syntax
    '/' is the scope operator
    '../' is the parent dictionary scope operator
    '!' is the top-level dictionary scope operator

Examples:

    internalField 3.4;

    active
    {
        type            fixedValue;
        value.air       $internalField;
    }

    inactive
    {
        type            anotherFixedValue;

        value           $../active/value.air;
        anotherValue    $!active/value.air;

        sub
        {
            value           $../../active/value.air;
            anotherValue    $!active/value.air;
        }
    }

    "U.*"
    {
        solver GAMG;
    }

    e.air
    {
        $U.air;
    }

    external
    {
        value $testSlashDict2!active/value.air;
    }

    active2
    {
        $testSlashDict2!active;
    }

If there is a part of the keyword before the '!' then this is taken to be the
file name of the dictionary from which the entry will be looked-up using the
part of the keyword after the '!'.  For example given a file testSlashDict containing

    internalField 5.6;

    active
    {
        type            fixedValue;
        value.air       $internalField;
    }

entries from it can be read directly from another file, e.g.

    external
    {
        value $testSlashDict2!active/value.air;
    }

    active2
    {
        $testSlashDict2!active;
    }

    which expands to

    external
    {
        value           5.6;
    }

    active2
    {
        type            fixedValue;
        value.air       5.6;
    }

These examples are provided in applications/test/dictionary.

The the default syntax can be changed from 'slash' to 'dot' in etc/controlDict
to revert to the previous behaviour:

OptimisationSwitches
{
.
.
.
    // Default dictionary scoping syntax
    inputSyntax slash;  // Change to dot for previous behaviour
}

or within a specific dictionary by adding the entry

See applications/test/dictionary/testDotDict.
2020-07-23 20:36:51 +01:00
0257ab1459 Updated to C++14 standard
gcc version 5 and above and clang version 3.4 and above fully support the C++14
standard and the compilation rules of OpenFOAM-dev now require this support
allowing for further development and maintenance to benefit from the additional
language features provided in C++14.
2020-07-23 15:31:07 +01:00
9cbaefddff Updated for OpenFOAM-8 version-8 2020-07-21 17:51:46 +01:00
4ed94497d6 tutorials/multiphase/interFoam/planingHullW3: Scripting fixes for test loop 20200721 2020-07-21 14:09:26 +01:00
5e76801920 tutorials/multiphase/interFoam/planingHullW3: Corrected spelling of directory 2020-07-21 14:09:25 +01:00
b5db891c3e tutorials/incompressible/pimpleFoam/RAS/elipsekkLOmega/Allrun: Removed unnecessary rm 2020-07-21 12:24:10 +01:00
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