Commit Graph

265 Commits

Author SHA1 Message Date
8bb48df87f flowRateInletVelocityFvPatchVectorField: Added optional profile entry to specify the velocity profile
The unreliable extrapolateProfile option has been replaced by the more flexible
and reliable profile option which allows the velocity profile to be specified as
a Function1 of the normalised distance to the wall.  To simplify the
specification of the most common velocity profiles the new laminarBL (quadratic
profile) and turbulentBL (1/7th power law) Function1s are provided.

In addition to the new profile option the flow rate can now be specified as a
meanVelocity, volumetricFlowRate or massFlowRate, all of which are Function1s of
time.

The following tutorials have been updated to use the laminarBL profile:
    multiphase/multiphaseEulerFoam/laminar/titaniaSynthesis
    multiphase/multiphaseEulerFoam/laminar/titaniaSynthesisSurface

The following tutorials have been updated to use the turbulentBL profile:
    combustion/reactingFoam/Lagrangian/verticalChannel
    combustion/reactingFoam/Lagrangian/verticalChannelLTS
    combustion/reactingFoam/Lagrangian/verticalChannelSteady
    compressible/rhoPimpleFoam/RAS/angledDuct
    compressible/rhoPimpleFoam/RAS/angledDuctLTS
    compressible/rhoPimpleFoam/RAS/squareBendLiq
    compressible/rhoPorousSimpleFoam/angledDuctImplicit
    compressible/rhoSimpleFoam/angledDuctExplicitFixedCoeff
    compressible/rhoSimpleFoam/squareBend
    compressible/rhoSimpleFoam/squareBendLiq
    heatTransfer/chtMultiRegionFoam/shellAndTubeHeatExchanger
    heatTransfer/chtMultiRegionFoam/shellAndTubeHeatExchanger
    incompressible/porousSimpleFoam/angledDuctImplicit
    incompressible/porousSimpleFoam/straightDuctImplicit
    multiphase/interFoam/RAS/angledDuct

Class
    Foam::flowRateInletVelocityFvPatchVectorField

Description
    Velocity inlet boundary condition creating a velocity field with
    optionally specified profile normal to the patch adjusted to match the
    specified mass flow rate, volumetric flow rate or mean velocity.

    For a mass-based flux:
    - the flow rate should be provided in kg/s
    - if \c rho is "none" the flow rate is in m3/s
    - otherwise \c rho should correspond to the name of the density field
    - if the density field cannot be found in the database, the user must
      specify the inlet density using the \c rhoInlet entry

    For a volumetric-based flux:
    - the flow rate is in m3/s

Usage
    \table
        Property     | Description             | Required    | Default value
        massFlowRate | Mass flow rate [kg/s]   | no          |
        volumetricFlowRate | Volumetric flow rate [m^3/s]| no |
        meanVelocity | Mean velocity [m/s]| no |
        profile      | Velocity profile        | no          |
        rho          | Density field name      | no          | rho
        rhoInlet     | Inlet density           | no          |
        alpha        | Volume fraction field name | no       |
    \endtable

    Example of the boundary condition specification for a volumetric flow rate:
    \verbatim
    <patchName>
    {
        type                flowRateInletVelocity;
        volumetricFlowRate  0.2;
        profile             laminarBL;
    }
    \endverbatim

    Example of the boundary condition specification for a mass flow rate:
     \verbatim
    <patchName>
    {
        type                flowRateInletVelocity;
        massFlowRate        0.2;
        profile             turbulentBL;
        rho                 rho;
        rhoInlet            1.0;
    }
    \endverbatim

    Example of the boundary condition specification for a volumetric flow rate:
    \verbatim
    <patchName>
    {
        type                flowRateInletVelocity;
        meanVelocity        5;
        profile             turbulentBL;
    }
    \endverbatim

    The \c volumetricFlowRate, \c massFlowRate or \c meanVelocity entries are
    \c Function1 of time, see Foam::Function1s.

    The \c profile entry is a \c Function1 of the normalised distance to the
    wall.  Any suitable Foam::Function1s can be used including
    Foam::Function1s::codedFunction1 but Foam::Function1s::laminarBL and
    Foam::Function1s::turbulentBL have been created specifically for this
    purpose and are likely to be appropriate for most cases.

Note
    - \c rhoInlet is required for the case of a mass flow rate, where the
      density field is not available at start-up
    - The value is positive into the domain (as an inlet)
    - May not work correctly for transonic inlets
    - Strange behaviour with potentialFoam since the U equation is not solved

See also
    Foam::fixedValueFvPatchField
    Foam::Function1s::laminarBL
    Foam::Function1s::turbulentBL
    Foam::Function1s
    Foam::flowRateOutletVelocityFvPatchVectorField
2022-01-24 19:10:39 +00:00
b56f6d9109 cyclicFvPatchField: Corrected handling of rotated cyclic transformation for tensors
This correction applies to the handling of the implicit part of the matrix for
the segregates solution of the tensor components, e.g. when solving for the
Reynolds stress in cases with rotated cyclic patches.
2022-01-06 15:26:05 +00:00
689a4de88a entrainmentPressureFvPatchScalarField: Corrected documentation 2022-01-03 10:46:55 +00:00
5c4d42224f entrainmentPressureFvPatchScalarField: Apply fixed pressure to outflow
Pressure reduction is now applied only for entrained flow, fixed pressure is
applied to outflow to improve stability for complex recirculating flow exiting
the domain.  This is the same approach used in the totalPressure boundary
condition.
2021-12-08 10:37:25 +00:00
02a40ce77b transonicEntrainmentPressureFvPatchScalarField: Apply a fixed total-pressure condition for outflow 2021-12-06 11:33:48 +00:00
d10f229c4d transonicEntrainmentPressureFvPatchScalarField: New entrainment pressure boundary condition supporting supersonic jets
Description
    This boundary condition provides an entrainment condition for pressure
    including support for supersonic jets exiting the domain.

Usage
    \table
        Property     | Description                 | Required | Default value
        rho          | Density field name          | no       | rho
        psi          | Compressibility field name  | no       | thermo:psi
        gamma        | Heat capacity ratio (cp/Cv) | yes      |
        phi          | Flux field name             | no       | phi
        p0           | Reference pressure          | yes      |
    \endtable

    Example of the boundary condition specification:
    \verbatim
    <patchName>
    {
        type            transonicEntrainmentPressure;
        gamma           1.4;
        p0              uniform 1e5;
    }
    \endverbatim

See also
    Foam::entrainmentPressureFvPatchScalarField
    Foam::mixedFvPatchField
2021-12-03 14:57:22 +00:00
85e548df23 entrainmentPressureFvPatchScalarField: Added support for mass-flux -> velocity conversion
so that the entrainmentPressure BC can be applied to compressible and multiphase
cases.
2021-12-03 14:47:56 +00:00
0ad695b3c6 movingWallSlipVelocity: Better initialisation on null construct 2021-11-10 14:38:09 +00:00
80c1a65bc8 movingWallSlipVelocity: Added boundary condition
This boundary condition specifies a slip velocity on moving walls. It
works similarly to movingWallVelocity, except that the tangential
velocity is not constrained. It can be specified as follows:

    <patchName>
    {
        type            movingWallSlipVelocity;
        value           uniform (0 0 0); // Initial value
    }
2021-11-02 10:32:33 +00:00
8cc05a479e MULES: Removed use of slicing and syncTools
MULES no longer synchronises the limiter field using syncTools. Surface
boundary field synchronisation is now done with a surface-field-specific
communication procedure that should result in scaling benefits relative
to syncTools. This change also means that the limiter does not need to
be continuous face field which is then sliced; it can be a standard
surface field.
2021-10-28 13:10:48 +01:00
3ef3e96c3f Time: Added run-time selectable userTime option
replacing the virtual functions overridden in engineTime.

Now the userTime conversion function in Time is specified in system/controlDict
such that the solver as well as all pre- and post-processing tools also operate
correctly with the chosen user-time.

For example the user-time and rpm in the tutorials/combustion/XiEngineFoam/kivaTest case are
now specified in system/controlDict:

userTime
{
    type     engine;
    rpm      1500;
}

The default specification is real-time:

userTime
{
    type     real;
}

but this entry can be omitted as the real-time class is instantiated
automatically if the userTime entry is not present in system/controlDict.
2021-10-19 09:09:01 +01:00
686f7fb21a Time: Simplification and rationalisation of userTime
First step towards merging userTime into Time so that post-processing tools
operate with the same userTime mode as the solvers.
2021-10-14 15:05:14 +01:00
1c48685b09 waves: Improved reverse flow formulation and new test cases
It is now possible to use waveVelocity and waveAlpha boundary conditions
in cases in which the waves generate localised flow reversals along the
boundary. This means waves can be speficied at arbitrary directions and
with zero mean flow. Previously and integral approach, similar to
flowRateOutlet, was used, which was only correct when the direction of
wave propagation was aligned with the boundary normal.

This improvement has been achieved by reformulating the waveVelocity and
waveAlpha boundary conditions in terms of a new fixedValueInletOutlet
boundary condition type. This condition enforces a fixed value in all
cases except that of advection terms in the presence of outflow. In this
configuration a gradient condition is applied that will relax towards
the desired fixed value.

The wavePressure boundary condition has been removed, as it is no longer
necessary or advisable to locally switch between velocity and pressure
formulations along a wave boundary. Wave boundaries should now have the
general fixedFluxPressure or fixedFluxExtrapolatedPressure conditions
applied to the pressure field.

Two new tutorial cases have been created to demonstrate the new
functionality. The multiphase/interFoam/laminar/wave3D case demonstrates
wave generation with zero mean flow and at arbitrary angles to the
boundaries, and incompressible/pimpleFoam/RAS/waveSubSurface
demonstrates usage for sub-surface problems.
2021-09-01 10:55:23 +01:00
d83c873f93 Resolve warning messages generated by Gcc-11 and Clang-12 2021-07-15 10:10:28 +01:00
2fe27ab56e patchFields: Consistent patchType handling across field types
The patchType override logic has been simplified and made consistent
between fv, fvs and point patch fields. The "constraintType" attribute
has been removed from point fields as it was not being used.
2021-07-02 08:44:56 +01:00
261d5ccd6d patchFields: Fixes to patchType handling
This change fixes failures that occur with the mapping of fields with
patchType overrides. It fixes a crash that previously occurred when
redistributing patch fields with patchType overrides. It also makes
decomposition correctly maintain patchType overrides on cyclics when
those cyclics are separated and become processorCyclics.

These fixes have been achieved by removing the patchType override data
from the fv and point patches. Whether or not the field overrides the
underlying patchType constraint is now determined on the fly from the
patch and field names and what is available on the field run-time
selection table.
2021-07-01 16:13:05 +01:00
0bf8a28f80 fvPatchFields: Removed mapping checks that fail for valid redistribution 2021-06-24 14:49:29 +01:00
e566172eda MapFvSurfaceField: Generalised the mapping of surfaceField
to differentiate between flux field which require face-flipping and
non-extensive surface fields which do not.  Currently flux fields are
distinguished by being surfaceScalarField with dimensions of either volumetric
or mass flux.

This change corrects the handling of the surfaceVectorField Uf which was
previously mapped incorrectly on faces requiring the flipping of the flux
orientation.
2021-06-22 19:31:53 +01:00
bf0889e15f Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2021-06-22 17:41:09 +01:00
7801f04dff dimensionSets: Added dimFlux (volumetric flux) and dimMassFlux (mass flux) 2021-06-22 17:32:31 +01:00
3168d93a38 dimensionSets: Added dimFlux (volumetric flux) and dimMassFlux (mass flux) 2021-06-22 16:56:40 +01:00
7e97a9b234 internalFvPatchField, internalFvsPatchField: Added mapping for redistribution 2021-06-18 16:37:16 +01:00
5204403f3e fvMeshSubset: Added new constraint patch type 'internal' into which exposed internal faces are added
This new constraint type is preferable to the 'empty' type used previously as it
support patch field values for post-processing and other purposes.

The internalFvPatchField operates as a 'zeroGradient' type so that the adjacent
cell values are displayed on the faces exposed by the sub-setting.

The internalFvsPatchField operates as a 'calculated' type so that the internal
face values are displayed on the faces exposed by the sub-setting.

The immediate benefit of this change can be seen when using 'subsetMesh' without
the '-noFields' option to create and write a sub-set of an 'fvMesh' with field
values, now the face values of the 'exposed' internal faces can be visualised.
2021-06-16 19:05:58 +01:00
fa766e8f3d fvPatchFields: Reordered constructor definitions to match declarations 2021-06-16 12:10:39 +01:00
ee777e4083 Standardise on British spelling: -ize -> -ise
OpenFOAM is predominantly written in Britain with British spelling conventions
so -ise is preferred to -ize.
2021-06-01 19:11:58 +01:00
55f751641e Standardise on British spelling: initialize -> initialise
OpenFOAM is predominantly written in Britain with British spelling conventions
so -ise is preferred to -ize.
2021-06-01 14:51:48 +01:00
178828a921 codedBase: Merged with CodedBase to simplify and rationalise the implementation 2021-05-19 17:59:52 +01:00
bc6f4bd319 fixedValueFvPatchField, fvsPatchField: Added support for fvMeshDistribute 2021-05-18 16:25:03 +01:00
2c071b329e rotatingWallVelocity boundary condition: updated Description 2021-01-12 14:49:32 +00:00
b43dac58f5 PrghPressureFvPatchScalarField: Added optional "rho" name specification
Resolves bug-report https://bugs.openfoam.org/view.php?id=3605
2020-12-06 22:19:13 +00:00
4e183e33d4 Function1::Table: simplified and rationalised
TableBase, TableFile and Table now combined into a single simpler Table class
which handle both the reading of embedded and file data using the generalised
TableReader.  The new EmbeddedTableReader handles the embedded data reading
providing the functionality of the original Table class within the same
structure that can read the data from separate files.

The input format defaults to 'embedded' unless the 'file' entry is present and
the Table class is added to the run-time selection table under the name 'table'
and 'tableFile' which provides complete backward comparability.  However it is
advisable to migrate cases to use the new 'table' entry and all tutorial cases
have been updated.
2020-11-16 23:48:47 +00:00
bf10406cf7 Corrected file formatting 2020-10-30 12:38:15 +00:00
164972b19c fixedNormalInletOutletVelocityFvPatchVectorField: Provide the internal field to the clone of the normalVelocity 2020-10-03 22:23:57 +01:00
7e3f4976a8 PatchFields: Removed simple copy constructors and clone functions
These do not necessarily set the internal field reference correctly and it is
safer that the correct internal field is provided as an argument.
2020-10-03 22:16:10 +01:00
1238383597 Coded classes: Fixed IO of compilation settings 2020-09-29 15:13:04 +01:00
8221b25875 coded classes: Added "codeOptions"
Resolves bug-report https://bugs.openfoam.org/view.php?id=3555
2020-09-25 16:41:47 +01:00
def4772281 Documentation: Centred the Class Declaration comment
Patch contributed by Institute of Fluid Dynamics,
Helmholtz-Zentrum Dresden - Rossendorf (HZDR)
2020-08-28 13:28:58 +01:00
d82d47c74b regIOobject.H: Rationalised includes 2020-08-21 08:40:47 +01:00
e872c54992 calculatedFvPatchField: Changed fixesValue to return false
While calculatedFvPatchField would be considered as a BC which fixes the value
during solution it cannot be used for that purpose and under all other
conditions it does not fix the boundary value as the '=' operator changes the
value.  However calculatedFvPatchField is used for the reference phase in
multiphase systems and if it is considered to fix the boundary value it interferes
with the operation of the MULES limiter and hence it is far preferable if it
does not fix the value.
2020-08-08 20:58:43 +01:00
0b09e38c54 fvsPatchFields.C: Use the new macros 2020-07-30 21:21:57 +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
6637ed0e9f slicedFvsPatchField: Set empty internal field in constructor
is reset by shallowCopy in SlicedGeometricField
2020-07-29 14:07:57 +01:00
4250d7ce42 Added "using" statements to avoid warning messages from clang 2020-06-02 21:37:36 +01:00
f7bcc19ad2 freestreamVelocity: changed to use mean of patchInternalField and patch value
for valueFraction calculation
2020-04-17 18:46:47 +01:00
b6e3838dbd freestreamVelocityFvPatchVectorField: Constructor call corrected for clang 2020-04-16 22:27:27 +01:00
1a1381d093 freestreamVelocity BC: changed to use patchInternalField for valueFraction calculation
to prevent the valueFraction "locking" to 1 when a velocity points exactly normal and inwards to the face
2020-04-16 12:49:06 +01:00
4f1beb3830 flowRateInletVelocity: Added alpha option for use with interstitial velocities 2020-04-15 09:47:24 +01:00
de66b1be68 MomentumTransportModels: Update of the TurbulenceModels library for all flow types
providing the shear-stress term in the momentum equation for incompressible and
compressible Newtonian, non-Newtonian and visco-elastic laminar flow as well as
Reynolds averaged and large-eddy simulation of turbulent flow.

The general deviatoric shear-stress term provided by the MomentumTransportModels
library is named divDevTau for compressible flow and divDevSigma (sigma =
tau/rho) for incompressible flow, the spherical part of the shear-stress is
assumed to be either included in the pressure or handled separately.  The
corresponding stress function sigma is also provided which in the case of
Reynolds stress closure returns the effective Reynolds stress (including the
laminar contribution) or for other Reynolds averaged or large-eddy turbulence
closures returns the modelled Reynolds stress or sub-grid stress respectively.
For visco-elastic flow the sigma function returns the effective total stress
including the visco-elastic and Newtonian contributions.

For thermal flow the heat-flux generated by thermal diffusion is now handled by
the separate ThermophysicalTransportModels library allowing independent run-time
selection of the heat-flux model.

During the development of the MomentumTransportModels library significant effort
has been put into rationalising the components and supporting libraries,
removing redundant code, updating names to provide a more logical, consistent
and extensible interface and aid further development and maintenance.  All
solvers and tutorials have been updated correspondingly and backward
compatibility of the input dictionaries provided.

Henry G. Weller
CFD Direct Ltd.
2020-04-14 20:44:22 +01:00
876845d0f4 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2020-04-10 09:30:12 +01:00
3f13de8369 Corrected typos
Patch contributed by Timo Niemi, VTT.
2020-04-10 09:26:54 +01:00