Commit Graph

704 Commits

Author SHA1 Message Date
0dd2e97bd8 CodedFunction1: New Function1 which uses codeStream to dynamically compile the value function code
For example in the new tutorial case:
tutorials/incompressible/pimpleFoam/laminar/pitzDailyPulse
a cosine bell velocity pulse is specified at the inlet by directly defining the
code for it:

    inlet
    {
        type            uniformFixedValue;
        uniformValue    coded;

        name            pulse;

        codeInclude
        #{
            #include "mathematicalConstants.H"
        #};

        code
        #{
            return vector
            (
                0.5*(1 - cos(constant::mathematical::twoPi*min(x/0.3, 1))),
                0,
                0
            );
        #};
    }

which is then compiled automatically and linked into the running pimpleFoam
dynamically and executed to set the inlet velocity.
2020-01-31 23:39:59 +00:00
b55bc28698 sampledSurface::writers: Added writeFormat option to select ascii or binary
e.g. in tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/cuttingPlane

    surfaceFormat   vtk;
    writeFormat     binary;
    fields          (p U);

selects writing the VTK surface files in binary format which significantly
speeds-up reading of the files in paraview.

Currently binary writing is supported in VTK and EnSight formats.
2020-01-29 14:59:31 +00:00
ea3e891dab tutorials/mesh/snappyHexMesh/pipe: Calculate closeness from the pipe wall only 2020-01-27 15:14:11 +00:00
509f15a0c5 snappyHexMesh: Added new experimental region refinement strategy based on the local span
In the new tutorial mesh/snappyHexMesh/pipe the pipe diameter changes by a factor
of 2 but the number of cells across the pipe is specified to be constant along
the length using the new "span" refinement mode in which the number of cells
across the span is set to be at least 40:

    refinementRegions
    {
        pipe
        {
            mode span;
            levels ((1000 2));  // Maximum distance and maximum level
            cellsAcrossSpan 40;
        }
    }

This operates in conjunction with the "pointCloseness" option in surfaceFeatures
which writes a surfacePointScalarField of the local span of the domain.  Note
that the behaviour of this option is critically dependent on the quality of this
field and the surface may need to be re-triangulated more isotropically to
ensure the "pointCloseness" is accurate and representative of the domain and the
required mesh distribution.
2020-01-24 15:19:38 +00:00
87bce82854 coupledPolyPatch: Rewrite transformations and ordering
The calculation and input/output of transformations has been rewritten
for all coupled patches. This replaces multiple duplicated, inconsistent
and incomplete implementations of transformation handling which were
spread across the different coupled patch types.

Transformations are now calculated or specified once, typically during
mesh construction or manipulation, and are written out with the boundary
data. They are never re-calculated. Mesh changes should not change the
transformation across a coupled interface; to do so would violate the
transformation.

Transformations are now calculated using integral properties of the
patches. This is more numerically stable that the previous methods which
functioned in terms of individual faces. The new routines are also able
to automatically calculate non-zero centres of rotation.

The user input of transformations is backwards compatible, and permits
the user to manually specify varying amounts of the transformation
geometry. Anything left unspecified gets automatically computed from the
patch geometry. Supported specifications are:

    1) No specification. Transformations on cyclics are automatically
    generated, and cyclicAMI-type patches assume no transformation. For
    example (in system/blockMeshDict):

        cyclicLeft
        {
            type                cyclic;
            neighbourPatch      cyclicRight;
            faces               ((0 1 2 3));
        }

        cyclicRight
        {
            type                cyclic;
            neighbourPatch      cyclicLeft;
            faces               ((4 5 6 7));
        }

    2) Partial specification. The type of transformation is specified
    by the user, as well as the coordinate system if the transform is
    rotational. The rotation angle or separation vector is still
    automatically generated. This form is useful as the signs of the
    angle and separation are opposite on different sides of an interface
    and can be difficult to specify correctly. For example:

        cyclicLeft
        {
            type                cyclic;
            neighbourPatch      cyclicRight;
            transformType       translational;
            faces               ((0 1 2 3));
        }

        cyclicRight
        {
            type                cyclic;
            neighbourPatch      cyclicLeft;
            transformType       translational;
            faces               ((4 5 6 7));
        }

        cyclicAMILeft
        {
            type                cyclicAMI;
            neighbourPatch      cyclicAMIRight;
            transformType       rotational;
            rotationAxis        (0 0 1);
            rotationCentre      (0.05 -0.01 0);
            faces               ((8 9 10 11));
        }

        cyclicAMIRight
        {
            type                cyclicAMI;
            neighbourPatch      cyclicAMILeft;
            transformType       rotational;
            rotationAxis        (0 0 1);
            rotationCentre      (0.05 -0.01 0);
            faces               ((12 13 14 15));
        }

    3) Full specification. All parameters of the transformation are
    given. For example:

        cyclicLeft
        {
            type                cyclic;
            neighbourPatch      cyclicRight;
            transformType       translational;
            separaion           (-0.01 0 0);
            faces               ((0 1 2 3));
        }

        cyclicRight
        {
            type                cyclic;
            neighbourPatch      cyclicLeft;
            transformType       translational;
            separaion           (0.01 0 0);
            faces               ((4 5 6 7));
        }

        cyclicAMILeft
        {
            type                cyclicAMI;
            neighbourPatch      cyclicAMIRight;
            transformType       rotational;
            rotationAxis        (0 0 1);
            rotationCentre      (0.05 -0.01 0);
            rotationAngle       60;
            faces               ((8 9 10 11));
        }

        cyclicAMIRight
        {
            type                cyclicAMI;
            neighbourPatch      cyclicAMILeft;
            transformType       rotational;
            rotationAxis        (0 0 1);
            rotationCentre      (0.05 -0.01 0);
            rotationAngle       60;
            faces               ((12 13 14 15));
        }

Automatic ordering of faces and points across coupled patches has also
been rewritten, again replacing multiple unsatisfactory implementations.

The new ordering method is more robust on poor meshes as it
geometrically matches only a single face (per contiguous region of the
patch) in order to perform the ordering, and this face is chosen to be
the one with the highest quality. A failure in ordering now only occurs
if the best face in the patch cannot be geometrically matched, whether
as previously the worst face could cause the algorithm to fail.

The oldCyclicPolyPatch has been removed, and the mesh converters which
previously used it now all generate ordered cyclic and baffle patches
directly. This removes the need to run foamUpgradeCyclics after
conversion. In addition the fluent3DMeshToFoam converter now supports
conversion of periodic/shadow pairs to OpenFOAM cyclic patches.
2020-01-22 11:45:18 +00:00
aedb440750 reactingEulerFoam/.../ThermalPhaseChangePhaseSystem: Improvements
The thermal phase system now operates with saturation models specified
per phase-pair, and can therefore represent multiple transfer processes
across different interfaces. There is no longer a "phaseChange" switch;
instead the selection of a saturation model for a given interface
enables phase change across that interface. This includes both
interfacial phase change and nucleate wall boiling.

Both interfacial phase change and wall boiling models now include
support for there being a single specified volatile component which
undergoes phase change.

A correction has been made to the phase change energy transfer when only
interfacial phase change is enabled.

The thermal phase change tutorials have all been updated to reflect
these changes in the user interface.

Patch contributed by Juho Peltola, VTT.
2020-01-16 11:34:15 +00:00
26c0b39729 tutorials/mesh/foamyHexMesh/mixerVessel: Removed pending further development of foamyHexMesh
The mixerVessel case is currently fragile and needs some improvement along with
further development of foamyHexMesh to mesh reliably.
2020-01-15 23:33:25 +00:00
745c95849e coupledPolyPatch:transform() -> transformType()
to facilitate the change to using the transformer class.
2020-01-01 16:01:19 +00:00
02fc637645 coupledPolyPatch: Separated ordering from transformation controls
which will allow the transformation calculation functionality to be moved into
cyclic patches.
2019-12-31 20:24:52 +00:00
8ce46619b6 TurbulenceModels/.../kOmegaSSTSato: Made multiphase
The kOmegaSSTSata model can now be used in multiphase cases, provided
that there is a single, well defined continuous phase. As previously,
the continuous phase is the phase for which the model is selected (i.e.,
in the constant/turbulenceProperties.<continuous-phase-name>
dictionary).

By default, now, all other moving phases are considered to be dispersed
bubble phases, and the effect of all of them is summed to calculate the
overall bubble induced turbulence.

This behaviour can be overridden by means of a "dispersedPhases" entry,
which takes a list of the phases to be considered dispersed by the
model.

Patch contributed by Timo Niemi, VTT.
2019-12-20 15:15:12 +00:00
7cd43ea5f8 tutorials/incompressible/simpleFoam/roomResidenceTime/validation/plotPos1Data.*: Removed shebang
These scripts are executed directly in gnuplot so the shebang is not necessary
and gnuplot may not be installed in /bin.
2019-12-15 18:48:33 +00:00
0ad918f659 surfaceFilmModels: Rewritten in mass conservative form
All of the film transport equations are now formulated with respect to the film
volume fraction in the region cell layer rather than the film thickness which
ensures mass conservation of the film even as it flows over curved surfaces and
around corners.  (In the previous formulation the conservation error could be as
large as 15% for a film flowing around a corner.)

The film Courant number is now formulated in terms of the film cell volumetric
flux which avoids the stabilised division by the film thickness and provides a
more reliable estimate for time-step evaluation.  As a consequence the film
solution is substantially more robust even though the time-step is now
significantly higher.  For film flow dominated problem the simulations now runs
10-30x faster.

The inconsistent extended PISO controls have been replaced by the standard
PIMPLE control system used in all other flow solvers, providing consistent
input, a flexible structure and easier maintenance.

The momentum corrector has been re-formulated to be consistent with the momentum
predictor so the optional PIMPLE outer-corrector loop converges which it did not
previously.

nonuniformTransformCyclic patches and corresponding fields are no longer needed
and have been removed which paves the way for a future rationalisation of the
handling of cyclic transformations in OpenFOAM to improve robustness, usability
and maintainability.

Film sources have been simplified to avoid the need for fictitious boundary
conditions, in particular mappedFixedPushedInternalValueFvPatchField which has
been removed.

Film variables previously appended with an "f" for "film" rather than "face"
have been renamed without the unnecessary and confusing "f" as they are
localised to the film region and hence already directly associated with it.

All film tutorials have been updated to test and demonstrate the developments
and improvements listed above.

Henry G. Weller
CFD Direct Ltd.
2019-12-12 10:34:08 +00:00
a2bb959e23 tutorials/combustion/XiFoam/RAS/moriyoshiHomogeneous: Simplification
Re-scripted the tutorials to take advantage of foamDictionary and .orig
2019-11-28 14:47:18 +00:00
5eaf74c3a4 dictionary scalar lookup: simplified syntax using the type templated lookup function
Replaced
    readScalar(dict.lookup("name"))
with
    dict.lookup<scalar>("name")
2019-11-27 14:56:32 +00:00
612164005d foamDictionary: Removed the -disableFunctionEntries option 2019-11-19 13:28:40 +00:00
cebc401534 reacting*EulerFoam: populationBalanceModel: Improvements to updates of mass transfer rate and sources
The update of mass transfer rates in the population balance system is
now done at the same time as other source terms. This benefits
synchronisation of the mass transfer rate and the source terms and
prevents the system converging to an incorrect state.

Patch contributed by VTT Technical Research Centre of Finland Ltd and
Institute of Fluid Dynamics, Helmholtz-Zentrum Dresden - Rossendorf (HZDR).
2019-11-14 11:13:19 +00:00
da429d77f5 reactingTwoPhaseEulerFoam: Significantly improved handling of the particle pressure
In order to improve stability and robustness of fluidised bed cases the
semi-implicit treatment of the particle pressure (pPrime) is now applied within
the time-step sub-cycling along with the phase differential flux update.  This
allows the simulations to be performed reliably at a significantly increased
maximum Courant number (up to 5 for some cases) without introducing
chequerboarding patterns in regions of low particle phase fraction which
occurred with the previous algorithm.

The fluidisedBed tutorial has been updated to be more representative of real
bubbling bed cases and to demonstrate the new pPrime functionality.

Developed in collaboration with Timo Niemi, VTT.
2019-11-11 14:41:35 +00:00
5f22607df3 tutorials/*/DTCHull, propeller: Clone meshes, if available
These cases now check for a mesh in geometrically identical cases and
copy rather than re-generate if possible. This reduces the run-time of
the test loop by about 20 minutes.
2019-11-04 11:40:40 +00:00
6cc02fc0f9 tutorials/combustion/reactingFoam/RAS/SandiaD_LTS: Prevent end time alteration in the test loop 2019-11-01 12:32:38 +00:00
76ba65be69 tutorials: Clean up geometry resources
A surface geometry file should be stored in
$FOAM_TUTORIALS/resources/geometry if it is used in multiple cases,
otherwise it should be stored locally to the case. This change enforces
that across all tutorials.
2019-11-01 12:32:33 +00:00
bcc86701bc specieTransfer: Added adsorption boundary condition
An adsorption condition has been added for species mass fraction. This
models a surface on which one or more species deposit at a rate
proportional to the quantity of that specie present. The property that
the rate is assumed proportional to can be chosen to be mass fraction,
mole fraction, molar concentration, or partial pressure.

Example specification in 0/CH4, 0/O2, etc...:

    <patchName>
    {
        type            adsorptionMassFraction;
        property        molarConcentration;
        c               1e-3; // <-- Transfer coefficient
        value           $internalField;
    }

"c" is the constant of proportionality between the property value and
the mass transfer rate. If a specie does not adsorb, this should be set
to zero, or be omitted entirely.

This condition must be supplied for all species, and corresponding
specie transfer boundary conditions must also be applied to velocity and
temperature.

Example specification in 0/U and 0/T:

    <patchName>
    {
        type            specieTransferVelocity;
        value           $internalField;
    }

    <patchName>
    {
        type            specieTransferTemperature;
        value           $internalField;
    }

In addition, the semi-permeable baffle conditions have been refactored
to share functionality with the new adsorption conditions. They can now
also be used with the species-transfer temperature condition, which
corrects an energy error that was present previously. The parameter
"input" has been renamed "property", consistently with the adsorption
entries listed above. Molar concentration has also been added as an
option for the property driving the transfer, so the available controls
are the same as for adsorption.

Example specification in 0/CH4, 0/O2, etc...:

    <patchName>
    {
        type            semiPermeableBaffleMassFraction;
        samplePatch     <neighbourPatchName>;
        property        molarConcentration;
        c               1e-3; // <-- Transfer coefficient
        value           $internalField;
    }
    <neighbourPatchName>
    {
        type            semiPermeableBaffleMassFraction;
        samplePatch     <patchName>;
        property        molarConcentration;
        c               1e-3; // <-- Transfer coefficient
        value           $internalField;
    }

Velocity and temperature conditions should be set in the same way as for
adsorption.

In order for the temperature condition to function satisfactorily and
not introduce unphysical variations in temperature as a result of the
linearisation to an energy boundary condition, two new base classes for
temperature conditions which explicitly set the parameters of either
gradient or mixed energy conditions have been added. The mixed condition
forms the base of the specieTransferTemperature condition.

As a result of its generalisation, the library has been renamed from
"libsemiPermeableBaffle.so" to "libspecieTransfer.so".
2019-10-31 16:45:14 +00:00
640027e73a solidDisplacementFoam: Updated thermophysical property handling to use solidDisplacementThermo
derived from solidThermo.  This allows the standard heat transfer boundary
conditions, for example externalWallHeatFluxTemperature, to be used with
solidDisplacementFoam and also significantly simplifies the code.

Additionally solidDisplacementFoam and solidEquilibriumDisplacementFoam have
been updated to handle spatially varying physical properties in a conservative
manner both for the stress and heat transfer.  This means that the stress field
sigma is now dynamic rather than kinematic as it was previously.  For uniform
property fields the behaviour of the solvers is the same as it was before this
update.
2019-10-30 15:17:34 +00:00
ba49dfa991 Reactions: Removed "Reaction" from the end of the reaction names
This part of the name is unnecessary, as it is clear from context that
the name refers to a reaction. The selector has been made backwards
compatible so that old names will still read successfuly.
2019-10-25 10:37:13 +01:00
ace3d0e06d Reactions: Camel-cased all reaction names
Reaction names are now consistently camel-cased for readability. Most
names have not been affected because the reaction rate name is a proper
noun and is therefore already capitalised (e.g., Arrhenius, Janev,
Landau, etc ...). Reactions that have been affected are as follows.

    Old name                                              New name

    irreversibleinfiniteReaction                          irreversibleInfiniteReaction
    irreversiblepowerSeriesReaction                       irreversiblePowerSeriesReaction
    irreversiblethirdBodyArrheniusReaction                irreversibleThirdBodyArrheniusReaction
    nonEquilibriumReversibleinfiniteReaction              nonEquilibriumReversibleInfiniteReaction
    nonEquilibriumReversiblethirdBodyArrheniusReaction    nonEquilibriumReversibleThirdBodyArrheniusReaction
    reversibleinfiniteReaction                            reversibleInfiniteReaction
    reversiblepowerSeriesReaction                         reversiblePowerSeriesReaction
    reversiblethirdBodyArrheniusReaction                  reversibleThirdBodyArrheniusReaction
    irreversiblefluxLimitedLangmuirHinshelwoodReaction    irreversibleFluxLimitedLangmuirHinshelwoodReaction
    irreversiblesurfaceArrheniusReaction                  irreversibleSurfaceArrheniusReaction
    reversiblesurfaceArrheniusReaction                    reversibleSurfaceArrheniusReaction
2019-10-25 10:37:02 +01:00
7ab73932cf Function1: Generalisation and removal of unused code
Function1 has been generalised in order to provide functionality
previously provided by some near-duplicate pieces of code.

The interpolationTable and tableReader classes have been removed and
their usage cases replaced by Function1. The interfaces to Function1,
Table and TableFile has been improved for the purpose of using it
internally; i.e., without user input.

Some boundary conditions, fvOptions and function objects which
previously used interpolationTable or other low-level interpolation
classes directly have been changed to use Function1 instead. These
changes may not be backwards compatible. See header documentation for
details.

In addition, the timeVaryingUniformFixedValue boundary condition has
been removed as its functionality is duplicated entirely by
uniformFixedValuePointPatchField.
2019-10-23 13:13:53 +01:00
dcf4d0c505 Function1: Implemented integral evaluations
Integral evaluations have been implemented for all the ramp function1-s,
as well as the sine and square wave. Bounds handling has also been added
to the integration of table-type functions.

In addition, the sine wave "t0" paramater has been renamed "start" for
consistency with the ramp functions.
2019-10-22 08:31:29 +01:00
280c055ef6 functionObjects::comfort: New functionObject to calculate fields relating to thermal comfort
Description
    Calculates the thermal comfort quantities predicted mean vote (PMV) and
    predicted percentage of dissatisfaction (PPD) based on DIN ISO EN 7730:2005.

Usage
    \table
        Property      | Description                  | Required  | Default value
        clothing      | The insulation value of the cloth | no   | 0
        metabolicRate | The metabolic rate      | no        | 0.8
        extWork       | The external work        | no        | 0
        Trad          | Radiation temperature | no | -1
        relHumidity   | Relative humidity of the air | no | 50
        pSat          | Saturation pressure of water | no | -1
        tolerance     | Residual control for the cloth temperature | no | 1e-5
        maxClothIter  | Maximum number of iterations | no       | 0
        meanVelocity  | Use a constant mean velocity in the whole domain | no |\
        false
    \endtable

    \table
        Predicted Mean Vote (PMV)   | evaluation
        + 3                         | hot
        + 2                         | warm
        + 1                         | slightly warm
        + 0                         | neutral
        - 1                         | slightly cool
        - 2                         | cool
        - 3                         | cold
    \endtable

    \verbatim
    comfortAnalysis
    {
        type            comfort;
        libs            ("libfieldFunctionObjects.so");

        executeControl  writeTime;
        writeControl    writeTime;
    }
    \endverbatim

The new tutorial case heatTransfer/buoyantSimpleFoam/comfortHotRoom is provided
to demonstrate the calculation of PMV and PPD using the comfort functionObject.

This work is based on code and case contributed by Tobias Holzmann.
2019-10-19 23:08:34 +01:00
9b21cf6993 tutorials/heatTransfer/buoyantSimpleFoam/iglooWithFridges: Improved convergence 2019-10-18 16:25:12 +01:00
81fca4c43a Corrected typos in comments
found using cspell.

Patch contributed by Timo Niemi, VTT.
2019-10-18 11:46:20 +01:00
2b0c5028a4 Corrected typos in comments and in name of solidEquilibriumEnergySource fvOption
Patch contributed by Timo Niemi, VTT.
Resolves bug report https://bugs.openfoam.org/view.php?id=3369
2019-10-14 09:21:43 +01:00
4f1ee482ec Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2019-10-10 16:17:17 +01:00
e62ded842f functionObjects::age: Added caching of the age field
to allow post-processing, e.g. sampling, cutting planes, averaging etc.
2019-10-10 16:16:24 +01:00
96f10fa31a reacting*EulerFoam: Various consistency improvements
Mass transfer rates now have a more comprehensive naming convention.
"dmdt" means a bulk/mixture transfer, whilst "dmidt" is for a
specie-specific transfer. "dmdt" implies a transfer into a phase, whilst
"dmdtf" means a transfer across an interface. Tables or lists of
transfers are denoted by pluralising the name with the suffix "s"; e.g.,
"dmdtfs". All registered mass transfer rate fields have names which
include the name of the sub-model or phase system which generated them.

The phaseTransfer models have been changed so that the mixture and the
specie-specific mass transfers are independent. This simplifies the
naming convention required for registering the resulting mass transfers
and reduces the amount of logic necessary in the phase system.

The inheritance pattern of the alphat wall functions has been altered so
that the code and parameters relating to phase change are reused, and so
that the base (the Jayatilleke wall function) more closely resembles the
library implementation. This should make it easier to remove it when the
library function is generalised enough to use it directly.

The phaseSystem::zero*Field construction functions have been removed as
their behaviour regarding registration was not clear, and in most
instances of their usage the GeometriField<...>::New methods are
similarly convenient.
2019-10-10 09:31:40 +01:00
7381f45d03 reacting*EulerFoam: PhaseTransferPhaseSystem: Added non uniform specie transfer support
This change extends phaseTransferModel and PhaseTransferPhaseSystem to
allow non-uniform specie transfer between phases.

A reactionDriven phaseTransfer model is added which represents change of
selected species from one phase to another due to a reaction occurring
within one of the phases.

Following the change, the reactionDriven nucleation models and the
phaseChange drift models in populationBalanceModel have been updated to
use the new functionality in PhaseTransferPhaseSystem. The
PopulationBalancePhaseSystem has been simplified significantly as a
result.

The functionality is demonstrated by a tutorial case simulating the
vapour phase synthesis of titania by titanium tetrachloride oxidation
where both nucleation and surface reactions models are active at the
same time.

Patch contributed by VTT Technical Research Centre of Finland Ltd and
Institute of Fluid Dynamics, Helmholtz-Zentrum Dresden - Rossendorf (HZDR).
2019-10-09 16:53:35 +01:00
a2a74cbb79 functionObjects::age: add optinoal diffusion term and convergence control
to enable the calculation of the residence time for a fluid; mainly used in HVAC
analysis. E.g. residence time of air inside a ventilated room, see the new
tutorial roomResidenceTime.

Contributed by Tobias Holzmann
2019-10-08 16:14:38 +01:00
c8ab2a6e0c tutorials: Updated and simplified using the blockMesh defaultPatch entry
Rather than defining patches for all external block faces to provide name and
type use the defaultPatch entry to collect undefined faces into a single named
and typed patch, e.g.

defaultPatch
{
    name walls;
    type wall;
}
2019-10-07 16:49:11 +01:00
be0ccd2e38 tutorials/multiphase/interFoam/RAS/floatingObject: Removed temporary force restraint 2019-10-04 16:51:56 +01:00
639a90c645 rigidBodyDynamics::restraints::externalForce: New restraint to apply a time-varying force
Description
    Time-dependent external force restraint using Function1.

Usage
    Example applying a constant force to the floatingObject:
    restraints
    {
        force
        {
            type        externalForce;
            body        floatingObject;
            location    (0 0 0);
            force       (100 0 0);
        }
    }

Based on code contributed by SeongMo Yeon
Resolves contribution request https://bugs.openfoam.org/view.php?id=3358
2019-10-04 16:45:22 +01:00
d94a7bf590 tutorials/incompressible/simpleFoam/turbineSiting: Replaced file copying with foamDictionary and .orig 2019-10-01 15:00:55 +01:00
826c380fa3 tutorials/lagrangian/reactingParcelFoam/splashPanel: Resolved divergence
The side surfaces in this tutorial have been made symmetry planes to
match the corresponding boundaries in the film region, and the top has
had its pressure condition changed to totalPressure. The case now runs
successfully to completion.

Previously the pressure-velocity boundary condition combination on the
non-film patches was incorrect in that in regions of outflow a pressure
value was not being specified. This resulted in divergence.
2019-10-01 13:39:26 +01:00
54f379f668 Changed species' diffusivity to alphaEff
All multi-specie solvers function on the assumption that the
mass-diffusivities of the different species are the same. A consequence
of this is that the diffusivities of energy and mass must be the same,
otherwise mass diffusivity results in unphysical temperature
fluctuations. This change enforces this requirement across all
multi-species solvers.

For the same reason, the turbulent Schmidt number has been removed from
the multi-component phase model in reactingEulerFoam. In order to obey
physical constraints this Schmidt number had to be exactly the same as
the Prandtl number. This condition is now enforced by the solver, rather
than relying on the input being correct.
2019-09-30 16:32:39 +01:00
474962ffcc reacting*EulerFoam: Pair-storage and specification of interface composition models
Interface composition models are now specified in
constant/phaseProperties like so:

   interfaceComposition.gas
   (
        (gas and water)
        {
            // ...
        }
        (gas and oil)
        {
            // ...
        }
   );
   interfaceComposition.water
   (
        (water and gas)
        {
            // ...
        }
        // ...
   );
   // ...

I.e., the models associated with diffusive transfer within a phase
"<phase>" are specified in the list "interfaceComposition.<phase>".
Within the list, models are specified in unordered phase pairs
corresponding to the interface.

This replaces a system where models were specified in a single
interfaceComposition list, with the ordered pair entry "(<phase1> in
<phase2>)" meaning transfer within phase1 at the interface with phase2.
This ordered pair syntax is otherwise used for distinguishing between
continuous and dispersed phases. This dual meaning was considered
counter-intuitive. The new entries also more closely resemble the
associated two-resistance heat and mass transfer model specifications.
2019-09-23 09:13:14 +01:00
396c552949 reacting*EulerFoam: Renamed massTransfer models diffusiveMassTransfer
There are now many types of mass transfer, so massTransfer is now too
generic a term for what these models do. These models generate a
diffusivity which when multiplied by a concentration difference results
in mass transfer, hence the new name.

This change is not backwards compatible. Cases running the interface
composition system will need "massTransfer" entries renamed to
"diffusiveMassTransfer".
2019-09-23 08:43:29 +01:00
b77dacd0b9 tutorials/*/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporatingDissolving: Fixed air properties 2019-09-19 17:01:39 +01:00
a79786f7c8 Merge branch 'master' of github.com-OpenFOAM:OpenFOAM/OpenFOAM-dev 2019-09-16 09:00:03 +01:00
0284c2c906 tutorials/incompressible/simpleFoam/pitzDaily: Removed duplicate functions entry 2019-09-16 08:59:27 +01:00
7651bbaf62 tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting: Restored endTime 2019-09-12 11:24:23 +01:00
d1acbe25bb tutorials/combustion/reactingFoam/RAS/membrane: Clean up
Removed unused species and made the schemes appropriate for a
non-orthogonal mesh.
2019-09-10 11:01:22 +01:00
d4042c0e49 tutorials/reactingTwoPhaseEulerFoam/.../titaniaSynthesis: Corrected parameters and fixed file permissions
Patch contributed by Institute of Fluid Dynamics, Helmholtz-Zentrum Dresden -
Rossendorf (HZDR) and VTT Technical Research Centre of Finland Ltd.
2019-09-09 09:31:33 +01:00
f84708c689 mixtureKEpsilon: Added a phase fraction limiter for bubble generated turbulence
The new optional entry alphap is the as phase fraction below which bubble
generated turbulence is included.  The default is 1 for backward compatibility.

The purpose of this limiter is to avoid spurious turbulence generation at and
around the interface where bubbles are not present.
2019-09-06 17:55:42 +01:00