Commit Graph

7050 Commits

Author SHA1 Message Date
32a877d236 polyMesh: Prevent "no points/cells" warnings on processor cases 2023-07-28 14:52:04 +01:00
2f579ca041 fluidSolvers: Stabilise rDeltaT calculation
When the flow is stationary (e.g., at the beginning of a run) the
rDeltaT calculation now requires a maxDeltaT setting in the PIMPLE
sub-section of the fvSolution dictionary. This prevents floating point
errors associated with rDeltaT approaching zero.
2023-07-27 12:16:05 +01:00
9cba18a073 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2023-07-27 10:58:46 +01:00
1e79d0245c MomentumTransferPhaseSystem::partialElimination: Removed the phase velocity mean adjustment
The phase velocity mean adjustment was introduced for consistency with phase
flux mean adjustment which is necessary to ensure the mean flux divergence is
preserved.  However for systems with very high drag it has proved preferable to
not adjust the velocity of the phases to conserve momentum rather than ensure
consistency with the fluxes.
2023-07-27 10:54:52 +01:00
4acddc6ab0 solidThermo: Add rhoThermo interface
The old fluid-specific rhoThermo has been split into a non-fluid
specific part which is still called rhoThermo, and a fluid-specific part
called rhoFluidThermo. The rhoThermo interface has been added to the
solidThermo model. This permits models and solvers that access the
density to operate on both solid and fluid thermophysical models.
2023-07-27 09:20:43 +01:00
65f3050b35 thermophysicalModels: Renamed he*Thermo classes
The he*Thermo classes have been renamed to match their corresponding
basic thermo classes. E.g., rhoThermo now corresponds to RhoThermo,
rather than heRhoThermo.
2023-07-27 08:39:58 +01:00
3c542d664b thermophysicalModels: Primitive mixture classes
Mixture classes (e.g., pureMixtrure, coefficientMulticomponentMixture),
now have no fvMesh or volScalarField dependence. They operate on
primitive values only. All the fvMesh-dependent functionality has been
moved into the base thermodynamic classes. The 'composition()' access
function has been removed from multi-component thermo models. Functions
that were once provided by composition base classes such as
basicSpecieMixture and basicCombustionMixture are now implemented
directly in the relevant multi-component thermo base class.
2023-07-27 08:39:58 +01:00
966457788c IOerror: Split location into separate class
This simplifies the IOerror constructors and allows for the location to
be conveniently cached for errors that can't be triggered until after
the IO operation.
2023-07-27 08:39:58 +01:00
87ff44aeb8 tutorials: Simplified dimensionless specification from [0 0 0 0 0 0 0] -> [] 2023-07-26 18:37:57 +01:00
66188fac7a XiFluid, PDRFoam: Updated so that coefficients can be specified without dimensions
All associated combustion tutorials have been simplified using this functionality.
2023-07-26 14:44:10 +01:00
a9a75605cb Test-Function1: Minor clean-up 2023-07-26 12:35:59 +01:00
6655627b0d Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2023-07-26 12:35:42 +01:00
ab5b45c3be InjectionModel: Corrected normalisation of flowRateProfile for user time 2023-07-25 15:51:21 +01:00
d98d2c371a MPLIC: Add an explicit error detailing incompatibility with NCC
Resolves bug report https://bugs.openfoam.org/view.php?id=3999
2023-07-25 09:02:35 +01:00
dd53598fa2 functionObjects::wallHeatFlux: Improved the diagnostic message 2023-07-24 10:09:14 +01:00
c772291a9c engineCompRatio: Added support for specifying the combustion chamber cellSet/Zone
Application
    engineCompRatio

Description
    Calculate the compression ratio of the engine combustion chamber

    If the combustion chamber is not the entire mesh a \c cellSet or
    \c cellZone name of the cells in the combustion chamber can be provided.

Usage
    \b engineCompRatio [OPTION]

      - \par -cellSet \<name\>
        Specify the cellSet name of the combustion chamber

      - \par -cellZone zoneName
        Specify the cellZone name of the combustion chamber
2023-07-24 10:08:07 +01:00
764a7e570b updated etc/config.sh/bash_completion 2023-07-21 18:59:24 +01:00
6d36c53788 snappyHexMeshConfig: added '-firstLayerThickness' and '-layerExpansionRatio' options 2023-07-21 17:55:22 +01:00
2d39211826 foamExec: Improve correctness of splitting and check for envsubst 2023-07-21 09:11:07 +01:00
55e5b17d92 snappyHexMeshConfig: clean surfaces to improve closedness test 2023-07-20 18:08:47 +01:00
1608401ee6 tutorials/multiphaseEuler/wallBoilingIATE/0/T.gas: Corrected q 2023-07-20 17:39:18 +01:00
d194e63820 controlDict::maxDeltaT: Changed to user-time for consistency with other time controls 2023-07-20 17:24:00 +01:00
3f30f6135f domainDecomposition: Clear finite volume addressing on decompose
This prevents a crash when decomposing a time-series of topologically
varying meshes. This is not a common or advisable use case, but it is
natural to support it given the combinations of controls that are
available when performing decomposition.
2023-07-20 16:27:20 +01:00
86d8fa7d7f fvModels: Reinstated writeData for parallel transfer from master to slaves 2023-07-20 15:21:41 +01:00
2779442d2a functionObjects::fluidMaxDeltaT: New functionObject to set the maximum Courant number and time-step
at Function1s of time.

Underlying this new functionObject is a generalisation of the handling of the
maximum time-step in the modular solvers to allow complex user-specification of
the maximum time-step used in a simulation, not just the time-dependency
provided by fluidMaxDeltaT but functions of anything in the simulation by
creating a specialised functionObject in which the maxDeltaT function is
defined.

The chemical and combustion time-scale functionObjects adjustTimeStepToChemistry
and adjustTimeStepToCombustion have been updated and simplified using the above
mechanism.
2023-07-20 14:37:18 +01:00
634b8d1cee incompressibleDenseParticleFluid: Included the phase-fraction in the momentum source
fvModels().source(alphac, Uc)
2023-07-20 10:01:53 +01:00
15e50ca9e4 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2023-07-19 12:11:40 +01:00
9aaf943e05 solver: Added optional run-time setting of deltaTFactor
The deltaTFactor used in the automatic time-step adjustment to smoothly increase
the time-step when permitted can now be specified in the system/controlDict but
defaults to 1.2 as used previously.  For example in the
tutorials/incompressibleVoF/damBreak/damBreak case the rate at which the
time-step is increased after the slamming event can be reduced to 10% per
time-step by setting

.
.
.
maxDeltaT       1;
deltaTFactor    1.1;

Alternatively the case can be set to continue with the smallest time-step
without further adjustment by setting deltaTFactor to 1.
2023-07-19 12:05:36 +01:00
bd33ee85c4 Merge branch 'master' of github.com:OpenFOAM/OpenFOAM-dev 2023-07-19 11:43:53 +01:00
a71bbe5c6f snappyHexMeshConfig: write out a meshQualityDict file 2023-07-19 11:43:26 +01:00
54c945ba7a domainDecomposition: Fix is-conformal logic 2023-07-19 11:41:17 +01:00
afdaf49b4f snappyHexMeshConfig: use implicitFeatures by default
and make '-explicitFeatures' the option to use explicitFeatures. When implicitFeatures
is used, a surfaceFeaturesDict file is not written out to the system directory
2023-07-19 11:38:19 +01:00
31679117a4 snappyHexMeshConfig: write addLayersControls sub-dictionary always 2023-07-19 11:31:05 +01:00
fbc36b8d21 test/dictionary/testCalcNewton: Added a #codeStream graph writing example 2023-07-18 17:31:29 +01:00
146e4c61c8 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2023-07-18 15:27:54 +01:00
cc9991e9a3 test/dictionary/testCalcNewton: Example of #calc with #{...#} to find the root of a function
using Newton-Raphson iteration.
2023-07-18 15:26:46 +01:00
19d08671d2 foamExec: Support commands with wildcards and environment variables
The following commands are now possible. Note that the '$' sigil on the
FOAM_TUTORIALS environment variable has been escaped with '\' to prevent
it from being expanded to nothing in the outer/interactive shell.

    ~/OpenFOAM/OpenFOAM-dev/bin/foamExec ls \$FOAM_TUTORIALS/*
    ~/OpenFOAM/OpenFOAM-dev/bin/foamExec cp -r \$FOAM_TUTORIALS/incompressibleFluid/pitzDaily .
2023-07-18 15:02:08 +01:00
bebe584842 test/dictionary/testCalc: Added example of a HashTable entry and access in #calc
namedU          (U0 (1.1 2.1 1.1) U1 (2.1 3.2 4.1) U2 (4.3 5.3 0));
magU2           #calc "mag($<HashTable<vector>>namedU[\"U2\"])";
2023-07-17 20:59:51 +01:00
1f6ceeb3d6 test/dictionary/testCalc: Added examples of lists and fields
// List of vectors example
listU           ((1.1 2.1 1.1) (2.1 3.2 4.1) (4.3 5.3 0));
magU1           #calc "mag($<List<vector>>listU[1])";

// Field of vectors and scalars example
magUs           #calc "mag($<Field<vector>>listU)";
magSqrU1        #calc "sqr($<Field<scalar>>magUs[1])";
2023-07-17 20:30:22 +01:00
11fa5d1d15 fvModels::rotorDiskSource: Simplified force writing 2023-07-17 17:55:32 +01:00
8b8a062420 Removed temporary diagnostic messages 2023-07-17 15:19:04 +01:00
6fb82953fa OUForce: Added a write function to write the energy spectrum 2023-07-17 15:15:32 +01:00
821be4d281 fvModels: Added virtual writeObject function
which calls the fvModel::write function which defaults to doing nothing but can
be overridden in derived fvModels to write useful state information at the end
of the write-times.
2023-07-17 15:13:34 +01:00
730f7f371a functionObjects::fieldExpression: Read the log and executeAtStart options 2023-07-17 15:12:52 +01:00
cf06107c8b dnsFoam: replaced by the incompressibleFluid solver module with the OUForce fvModel
The bin/dnsFoam redirection script is provided to help users update dnsFoam
cases.
2023-07-16 19:50:57 +01:00
f0ee706fb0 fv::OUForce: New random Ornstein-Uhlenbeck) process force fvModel
Description
    Calculates and applies the random OU (Ornstein-Uhlenbeck) process force to
    the momentum equation for direct numerical simulation of boxes of isotropic
    turbulence.

    The energy spectrum is calculated and written at write-times which is
    particularly useful to test and compare LES SGS models.

Note
    This random OU process force uses a FFT to generate the force field which
    is not currently parallelised.  Also the mesh the FFT is applied to must
    be isotropic and have a power of 2 cells in each direction.

Usage
    Example usage:
    \verbatim
    OUForce
    {
        type    OUForce;

        libs    ("librandomProcesses.so");

        sigma   0.090295;
        alpha   0.81532;
        kUpper  10;
        kLower  7;
    }
    \endverbatim

The tutorials/incompressibleFluid/boxTurb16 tutorial case is an updated version
of the original tutorials/legacy/incompressible/dnsFoam/boxTurb16 case,
demonstrating the use of the OUForce fvModel with the incompressibleFluid solver
module to replicate the behaviour of the legacy dnsFoam solver application.
2023-07-16 19:36:03 +01:00
85f248ed29 includeFvModelEntry.H: Removed surfaceFilms example
The surfaceFilms fvModel has been superseded by the more general isothermalFilm
and film solver modules.
2023-07-16 18:13:13 +01:00
795d408dce extrudeMesh, splitMeshRegions: Removed the redundant writing of dummy fvSchemes and fvSolution files 2023-07-15 21:56:07 +01:00
6fce005097 multiphaseExternalTemperatureFvPatchScalarField: New multiphase version of externalTemperatureFvPatchScalarField
for the multiphaseEuler solver module, replacing the more specific
uniformFixedMultiphaseHeatFluxFvPatchScalarField as it provide equivalent
functionality if the heat-flux q is specified.

multiphaseExternalTemperatureFvPatchScalarField is derived from the refactored
and generalised externalTemperatureFvPatchScalarField, overriding the
getKappa member function to provide the multiphase equivalents of kappa and
other heat transfer properties.  All controls for
multiphaseExternalTemperatureFvPatchScalarField are the same as for
externalTemperatureFvPatchScalarField:

Class
    Foam::externalTemperatureFvPatchScalarField

Description
    This boundary condition applies a heat flux condition to temperature
    on an external wall. Heat flux can be specified in the following ways:

      - Fixed power: requires \c Q
      - Fixed heat flux: requires \c q
      - Fixed heat transfer coefficient: requires \c h and \c Ta

    where:
    \vartable
        Q  | Power Function1 of time [W]
        q  | Heat flux Function1 of time [W/m^2]
        h  | Heat transfer coefficient Function1 of time [W/m^2/K]
        Ta | Ambient temperature Function1 of time [K]
    \endvartable

    Only one of \c Q or \c q may be specified, if \c h and \c Ta are also
    specified the corresponding heat-flux is added.

    If the heat transfer coefficient \c h is specified an optional thin thermal
    layer resistances can also be specified through thicknessLayers and
    kappaLayers entries.

    The patch thermal conductivity \c kappa is obtained from the region
    thermophysicalTransportModel so that this boundary condition can be applied
    directly to either fluid or solid regions.

Usage
    \table
    Property     | Description                 | Required | Default value
    Q            | Power [W]                   | no       |
    q            | Heat flux [W/m^2]           | no       |
    h            | Heat transfer coefficient [W/m^2/K] | no |
    Ta           | Ambient temperature [K]     | if h is given  |
    thicknessLayers | Layer thicknesses [m]    | no |
    kappaLayers  | Layer thermal conductivities [W/m/K] | no |
    relaxation   | Relaxation for the wall temperature | no | 1
    emissivity   | Surface emissivity for radiative flux to ambient | no | 0
    qr           | Name of the radiative field | no | none
    qrRelaxation | Relaxation factor for radiative field | no | 1
    \endtable

    Example of the boundary condition specification:
    \verbatim
    <patchName>
    {
        type            externalTemperature;

        Ta              constant 300.0;
        h               uniform 10.0;
        thicknessLayers (0.1 0.2 0.3 0.4);
        kappaLayers     (1 2 3 4);

        value           $internalField;
    }
    \endverbatim

See also
    Foam::mixedFvPatchScalarField
    Foam::Function1
2023-07-15 21:50:14 +01:00
75106dcb62 uniformFixedMultiphaseHeatFluxFvPatchScalarField: Added fixesValue() returning false
so that the energy-> temperature conversion in *heThermo updates the wall
temperature.
2023-07-15 17:42:03 +01:00