Commit Graph

6525 Commits

Author SHA1 Message Date
fbda1df996 particleFoam, rhoParticleFoam: Replaced by solvers::functions with the fvModel functionObject
particleFoam has been superseded and replaced by the more general functions
solver module executed by the foamRun application:

    foamRun -solver functions

The incompressibleFluid solver specified by either the subSolver or if not
present the solver entry in the controlDict is instantiated to provide the
physical fields needed by fvModel functionObject in which the clouds fvModel is
selected to evolve the Lagrangian particles.  See:

    tutorials/modules/incompressibleFluid/hopperParticles
    tutorials/modules/incompressibleFluid/mixerVessel2DParticles

rhoParticleFoam has been superseded and replaced by the more general functions
solver module executed by the foamRun application:

    foamRun -solver functions

The isothermalFluid solver specified by either the subSolver or if not present
the solver entry in the controlDict is instantiated to provide the physical
fields needed by fvModel functionObject in which the clouds fvModel is selected
to evolve the Lagrangian particles.
2023-01-28 21:02:23 +00:00
9f6eac8eb1 functionObjects::fvModel: functionObject to instantiate and execute an fvModel
Description
    functionObject to instantiate and execute an fvModel

    With this \c functionObject it is possible to use the \c clouds \c fvModel
    to track particles without introducing sources into the continuous phase
    transport equations, i.e. one-way coupling.  When executed from the \c
    functions solver module the particles are tracked without evolving the
    continuous phase and without drag or other transfer terms there is no
    coupling, i.e. a pure Lagrangian simulation.

    Example of function object specification:
    \verbatim
    clouds
    {
        type            fvModel;

        executeAtStart  false;

        fvModel
        {
            type    clouds;
            libs    ("liblagrangianParcel.so");
        }
    }
    \endverbatim

See also
    Foam::functionObject
    Foam::functionObjects::fvMeshFunctionObject
2023-01-28 21:00:01 +00:00
3d2cd9a3b2 fvModels, fvConstraints: Updated constructor argument order for consistency with functionObjects
Following the convention chosen for functionObjects the coefficients dictionary
argument is last in constructor argument list.
2023-01-28 10:28:29 +00:00
5d55e0483d functionObjects::phaseScalarTransport: Corrected member data documentation 2023-01-28 10:15:15 +00:00
59409fb463 tutorials/modules/incompressibleFluid/pitzDailyScalarTransport: Added coded functionObject
which stops the run when the mixing defined as mean(T)/max(T) > 0.9.
2023-01-27 16:40:22 +00:00
2da6c4cc62 functionObjects::scalarTransport: diffusion -> diffusivity
It in more logical to name the diffusivity entry, types and variables
"diffusivity" rather than "diffusion".
2023-01-27 14:49:01 +00:00
9d1fad9909 applications/solvers/modules/Allwmake: Added functions 2023-01-27 14:48:46 +00:00
0dd042bd5d etc/config.sh/bash_completion: Updated 2023-01-27 14:44:43 +00:00
8de6cd744e solvers::functions: New solver module to execute functionObjects in a time-loop
Description
    Solver module to execute the \c functionObjects for a specified solver

    The solver specified by either the \c subSolver or if not present the \c
    solver entry in the \c controlDict is instantiated to provide the physical
    fields needed by the \c functionObjects.  The \c functionObjects are then
    instantiated from the specifications are read from the \c functions entry in
    the \c controlDict and executed in a time-loop also controlled by entries in
    \c controlDict and the \c maxDeltaT() returned by the sub-solver.

    The fields and other objects registered by the sub-solver are set to
    NO_WRITE as they are not changed by the execution of the functionObjects and
    should not be written out each write-time.  Fields and other objects created
    and changed by the execution of the functionObjects are written out.

solvers::functions in conjunction with the scalarTransport functionObject
replaces scalarTransportFoam and provide more general handling of the scalar
diffusivity.
2023-01-27 14:31:58 +00:00
260a8502f0 solvers::movingMesh: New solver module to move the mesh
Executes the mover, topoChanger and distributor specified in the
dynamicMeshDict.

Replaces the moveMesh and earlier moveDynamicMesh utilities.
2023-01-27 14:27:52 +00:00
06220b10fc gaussConvectionScheme: Added caching of the explicit correction flux 2023-01-26 11:50:02 +00:00
64ce9b2e25 lagrangian: Add missing clone/restore functions
Patch contributed by Timo Niemi, VTT.
Resolves bug-report https://bugs.openfoam.org/view.php?id=3953
2023-01-26 08:53:46 +00:00
fcab778f57 solvers: Adjust time step even if Courant number is zero
This change means that even if the Courant number is zero, the time step
is adjusted based on maximum time step settings and/or constraints
specified by active fvModels. If none of these additional constraints
are present then adjustment is deactivated.
2023-01-26 08:34:07 +00:00
bc23162499 tutorials: Remove unused combustionProperties files 2023-01-26 08:31:21 +00:00
fce874d671 makeThermoCombustionModel: Removed
No combustion models remain that are templated on the form of the
low-level thermodynamics, so this set of instantation macros is no
longer needed.
2023-01-26 08:31:17 +00:00
0f5f4ed62c solver: Registered to database
This change lets the solver be looked up from the region database, so
that aspects of the solution algorithm can be accessed by
functionObjects and fvModels and similar. For example, a fluid solver
could be looked up as follows:

    const solvers::fluid& s =
        mesh().lookupObject<solvers::fluid>(solver::typeName);
2023-01-26 08:31:02 +00:00
b34e17784a applications/solvers/modules/Allwmake: Added shockFluid 2023-01-25 19:24:18 +00:00
513578ebd0 tutorials/modules/shockFluid/shockTube: Apply nOuterCorrectors
applying 2 outer correctors allows an increase in time-step from 1e-6 to 5e-6
without introducing numerical wiggles in the solution.
2023-01-25 15:53:04 +00:00
97c23eaa11 shockFluid: Updated includes 2023-01-25 11:00:34 +00:00
6a82f5b9e6 Standardised formatting 2023-01-25 11:00:16 +00:00
5fadbeb5f1 MomentumTransportModels: Simplified code using the momentumTransportModel::groupName function 2023-01-24 22:02:00 +00:00
104be8eae9 Corrected typos 2023-01-24 22:01:34 +00:00
00ca8905a0 Minor typo corrections
Patch contributed by Timo Niemi, VTT.
2023-01-24 18:27:37 +00:00
9875bfb418 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2023-01-24 18:22:22 +00:00
9fadb7fccf solvers::shockFluid: Now solves for rho, U and e while conserving rho*U and rho*E
By solving for U and e rather than rhoU and rhoE the convection and stress
matrices can be combined and solved together avoiding the need for Strang
splitting.  Conservation of rho*U and rho*E is ensured by constructing and
solving the three equations in sequence, constructing each using the results of
the solution of the previous equations.
2023-01-24 18:17:46 +00:00
4e827263ff momentumTransportModels::linearViscousStress::divDevTau: Refactored for flux()
The divDevTau matrix now caches the explicit correction flux if fluxRequired is
true for U so that calling flux() on the matrix returns the flux of the complete
stress, not just the implicit part.
2023-01-24 18:14:20 +00:00
1182d3fcfb fvm::divc: New div function returning the explicit matrix
containing the div(flux) source and the cached flux if fluxRequired
2023-01-24 18:12:07 +00:00
cf84c1da93 lagrangian/distributionModels/massRosinRammler: Clarified documentation 2023-01-24 16:49:58 +00:00
8268e091d3 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2023-01-24 16:43:48 +00:00
9adabe8cbd compressible::alphatWallBoilingWallFunction: Naming consistency
Tutorials have been updated to use the new consistent names within the
wall boiling system. The changes are backwards compatible so all
tutorials should run both before and after this change.
2023-01-24 14:27:41 +00:00
870f4e9dae compressible::alphatWallBoilingWallFunction: Naming consistency
Wall boiling properties and state have been named consistently through
the wall boiling boundary conditions and all of its related sub-models.
All changes are backwards compatible. Changes to tutorials will follow
in a separate commit.
2023-01-24 14:27:31 +00:00
c44a9d1097 populationBalanceModel: Stabilise dilatation error term
A small SuSp stabilisation has been added to the dilation error term to
prevent edge-cases in which the dilation correction exactly cancels out
all implicit transport terms and sources.
2023-01-24 14:10:59 +00:00
377080de52 compressible::alphatWallBoilingWallFunction: Improved solution procedure
This boundary condition now solves for the wall temperature by interval
bisection, which should be significantly more robust than the previous
fixed-point iteration procedure. There is a new non-dimensional
"tolerance" setting that controls how tightly this solution procedure
solves the wall temperature. The "relax" setting is no longer used.

The boundary condition no longer triggers re-evaluation of the
temperature condition in order to re-calculate the heat flux within the
solution iteration. Instead, it extracts physical coefficients from the
form of the boundary condition and uses these to form a linearised
approximation of the heat flux. This is a more general approach, and
will not trigger side-effects associated with re-evaluating the
temperature condition.

The fixedMultiphaseHeatFlux condition has been replaced by a
uniformFixedMultiphaseHeatFlux condition, which constructs a mixed
constraint which portions a specified heat flux between the phases in
such a way as to keep the boundary temperature uniform across all
phases. This can be applied to all phases. It is no longer necessary to
apply a heat flux model to one "master" phase, then map the resulting
temperature to the others. An example specification of this boundary
condition is as follows:

    wall
    {
        type            uniformFixedMultiphaseHeatFlux;
        q               1000;
        relax           0.3;
        value           $internalField;
    }

The wall boiling tutorials have been updated to use these new functions,
and time-varying heat input has been used to replace the
stop-modify-restart pattern present in the single-region cases.
2023-01-24 10:28:59 +00:00
e9df26cbb8 surfaceFilmModels::momentumSurfaceFilm: Minor code improvements 2023-01-22 11:47:39 +00:00
42c35a23a8 fvc::flux: Templated and generalised to support vector fluxes 2023-01-20 16:09:00 +00:00
b8d1f3b552 surfaceFilmModels::momentumSurfaceFilm: Removed unused code 2023-01-20 16:08:24 +00:00
022519fcf3 multiphaseEuler::populationBalanceModel: Make precomputation of diameter-independent expressions depend on the source term update interval
Patch contributed by Institute of Fluid Dynamics,
Helmholtz-Zentrum Dresden - Rossendorf (HZDR)
and VTT Technical Research Centre of Finland Ltd.
20230118
2023-01-18 14:52:44 +00:00
fe5a991ade solvers::shockFluid: New solver module for density-based solution of compressible flow
executed with foamRun for single region simulations of foamMultiRun for
multi-region simulations.  Replaces rhoCentralFoam and all the corresponding
tutorials have been updated and moved to tutorials/modules/shockFluid.

Unlike rhoCentralFoam shockFluid supports mesh refinement/unrefinement, topology
change, run-time mesh-to-mesh mapping, load-balancing in addition to general
mesh-motion.

The tutorials/modules/shockFluid/movingCone case has been updated to demonstrate
run-time mesh-to-mesh mapping mesh topology change based on the
tutorials/modules/incompressibleFluid/movingCone.  shockFluid s

Description
    Solver module for density-based solution of compressible flow

    Based on central-upwind schemes of Kurganov and Tadmor with support for
    mesh-motion and topology change.

    Reference:
    \verbatim
        Greenshields, C. J., Weller, H. G., Gasparini, L.,
        & Reese, J. M. (2010).
        Implementation of semi‐discrete, non‐staggered central schemes
        in a colocated, polyhedral, finite volume framework,
        for high‐speed viscous flows.
        International journal for numerical methods in fluids, 63(1), 1-21.
    \endverbatim

SourceFiles
    shockFluid.C

See also
    Foam::solvers::fluidSolver
    Foam::solvers::incompressibleFluid
2023-01-18 14:10:48 +00:00
fb405a3f0e chemistryModel: Consistent complilation of all reaction types 2023-01-17 15:36:02 +00:00
d0016c5fd5 tutorials/modules/fluid/shockTube: Updated for consistency with the rhoCentralFoam case 2023-01-16 16:33:20 +00:00
20d30d2d1e tutorials/modules/fluid/forwardStep: Updated for consistency with the rhoCentralFoam case 2023-01-16 16:32:30 +00:00
864dba76dc tutorials/compressible/rhoCentralFoam/shockTube: simplified schemes 2023-01-16 16:31:22 +00:00
9b76ddb257 ParaView: Updated default version to 5.10.1 2023-01-16 16:29:48 +00:00
3055b16c90 rhoCentralFoam: Further reorganisation 2023-01-16 16:29:06 +00:00
ec7afd8386 alphatPhaseChangeWallFunctions: Clean up
The fixedDmdt phase change boundary condition has been removed as this
is not a physical model and was only ever needed for testing.

The phase change wall function interface has been simplified and made a
mix-in, rather than a derivation from a fixed value patch field. This
reduces forwarding and mapping code and permits wall functions to derive
from patch fields other than fixed value.

Minor style and consisteny improvements have been made to the wall
boiling wall function.
2023-01-13 14:25:56 +00:00
f6342ac8dd alphatWallBoilingWallFunction: Improvements for Low-Re operation
This change introduces a more physical limiter for the logarithmic
liquid temperature extrapolation employed in the model. It also adds an
operation to turn off extrapolation alltogether for cases with very low
y+ in which the extrapolation behaviour becomes unreliable.

Patch contributed by Juho Peltola, VTT.
2023-01-13 10:40:13 +00:00
320e70af1d mappedPatchBase: Add "samePatch" option
This option means that a one field can be mapped to another within the
same patch without specifying the patch name. E.g.:

    walls
    {
        type            mappedValue;

        //neighbourPatch  walls; // <-- Previously required. Still supported.

        samePatch       yes;     // <-- New alternative specification

        field           T.liquid;
        value           $internalField;
    }

This is useful when the boundary condition is specified using a regular
expression for the patch name.

    "wall_.*"
    {
        type            mappedValue;

        //neighbourPatch  ???;   // <-- No unique name can be given

        samePatch       yes;     // <-- Still works

        field           T.liquid;
        value           $internalField;
    }
2023-01-13 09:19:08 +00:00
35256e5280 rhoCentralFoam: Added 'const' to constant field declarations to improve readability 2023-01-10 18:48:41 +00:00
64e1e4e097 solvers::compressibleMultiphaseVoF: New solver module for compressible multiphase VoF simulations
executed with foamRun for single region simulations of foamMultiRun for
multi-region simulations.  Replaces compressibleMultiphaseInterFoam and all the
corresponding tutorials have been updated and moved to
tutorials/modules/compressibleMultiphaseVoF.

compressibleMultiphaseVoF is derived from the multiphaseVoFSolver which adds
compressible multiphase capability to the VoFSolver base-class used as the basis
of all two-phase and multiphase VoF solvers.

Class
    Foam::solvers::compressibleMultiphaseVoF

Description
    Solver module for the solution of multiple compressible, isothermal
    immiscible fluids using a VOF (volume of fluid) phase-fraction based
    interface capturing approach, with optional mesh motion and mesh topology
    changes including adaptive re-meshing.

    The momentum and other fluid properties are of the "mixture" and a single
    momentum equation is solved.

    A mixture approach for momentum transport is provided in which a single
    laminar, RAS or LES model is selected to model the momentum stress.

    Uses the flexible PIMPLE (PISO-SIMPLE) solution for time-resolved and
    pseudo-transient and steady simulations.

SourceFiles
    compressibleMultiphaseVoF.C

See also
    Foam::solvers::VoFSolver
    Foam::solvers::multiphaseVoFSolver
2023-01-10 16:01:49 +00:00
ffdb211bdc solvers::incompressibleMultiphaseVoF: New solver module for multiphase VoF simulations
executed with foamRun for single region simulations of foamMultiRun for
multi-region simulations.  Replaces multiphaseInterFoam and all the
corresponding tutorials have been updated and moved to
tutorials/modules/incompressibleMultiphaseVoF.

incompressibleMultiphaseVoF is derived from the multiphaseVoFSolver which adds
multiphase capability to the VoFSolver base-class used as the basis of all
two-phase and multiphase VoF solvers.

Class
    Foam::solvers::incompressibleMultiphaseVoF

Description
    Solver module for the solution of multiple incompressible, isothermal
    immiscible fluids using a VOF (volume of fluid) phase-fraction based
    interface capturing approach, with optional mesh motion and mesh topology
    changes including adaptive re-meshing.

    The momentum and other fluid properties are of the "mixture" and a single
    momentum equation is solved.

    A mixture approach for momentum transport is provided in which a single
    laminar, RAS or LES model is selected to model the momentum stress.

    Uses the flexible PIMPLE (PISO-SIMPLE) solution for time-resolved and
    pseudo-transient and steady simulations.

SourceFiles
    incompressibleMultiphaseVoF.C

See also
    Foam::solvers::VoFSolver
    Foam::solvers::multiphaseVoFSolver
2023-01-10 10:12:43 +00:00