This cloud function object will write out a lagrangian field of the
relative velocity between the parcels and the surrounding fluid. It
does not have any additional controls.
Now uses previous valueFraction and refValue values rather than the previous
boundary temperature for relaxation.
Resolves bug-report https://bugs.openfoam.org/view.php?id=3175
The current Courant number limited formulation is preferable for cases running
with VERY small Courant numbers but there are stability issues with it on some
cases for which the previous flux-normalised scheme worked well. Overall the
previous scheme has proved more reliable and fvcDdtPhiCoeff has been reverted to
it pending further research and development in this area which will require
funding:
https://openfoam.org/news/funding-2019/https://openfoam.org/maintenance/
The sub-loops of the solution control are now named more consistently,
with ambiguously named methods such as finalIter replaced with ones
like finalPimpleIter, so that it is clear which loop they represent.
In addition, the final logic has been improved so that it restores state
after a sub-iteration, and so that sub-iterations can be used on their
own without an outer iteration in effect. Previously, if the
non-orthogonal loop were used outside of a pimple/piso iteration, the
final iteration would not execute with final settings.
This is like the scalarTrasport function except that the transported
scalar is confined to a single phase of a multiphase simulation. In
addition to the usual specification for the scalarTransport function
(i.e., a field, schemes and solution parameters), the user needs to
specify the phase-flux or a pressure field which can be used to generate
it.
Example usage for interFoam:
phaseScalarTransport1
{
type phaseScalarTransport;
libs ("libsolverFunctionObjects.so");
field s.water;
p p_rgh;
}
Example usage for reactingTwoPhaseEulerFoam:
phaseScalarTransport1
{
type phaseScalarTransport;
libs ("libsolverFunctionObjects.so");
field s.water;
alphaPhi alphaRhoPhi.water;
rho thermo:rho.water;
}
The function will write out both the per-unit-phase field that is solved
for (s.water in the above examples) and also the mixture-total field
(alphaS.water), which is often more convenient for post-processing.
If the iteration fails it now re-runs the iteration printing the temperature,
energy, heat-capacity and updated temperature for each iteration to help
diagnose which of the properties is causing the convergence failure.
The optimisation work done as commit 81947c80 introduced a failure mode
where an ACMI interaction could repeat indefinitely. This has now been
corrected.
Resolves bug report https://bugs.openfoam.org/view.php?id=3166
The radiation modelling library has been moved out of
thermophysicalProperties into the top-level source directory. Radiation
is a process, not a property, and belongs alongside turbulence,
combustion, etc...
The namespaces used within the radiation library have been made
consistent with the rest of the code. Selectable sub-models are in
namespaces named after their base classes. Some models have been
renamed remove the base type from the suffix, as this is unnecessary.
These renames are:
Old name: New name:
binaryAbsorptionEmission binary
cloudAbsorptionEmission cloud
constantAbsorptionEmission constant
greyMeanAbsorptionEmission greyMean/greyMeanCombustion
greyMeanSolidAbsorptionEmission greyMeanSolid
wideBandAbsorptionEmission wideBand/wideBandCombustion
cloudScatter cloud
constantScatter constant
mixtureFractionSoot mixtureFraction
Some absorption-emission models have been split into versions which do
and don't use the heat release rate. The version that does has been
given the post-fix "Combustion" and has been moved into the
combustionModels library. This removes the dependence on a registered
Qdot field, and makes the models compatible with the recent removal of
that field from the combustion solvers.
The occurrence is from cells with vertices that are shared between two faces
only (these vertices can originate from hex refinement). Decomposing both faces
can occasionally produce triangles with identical vertices and this results in a
non-manifold edge which triggers the erosion procedure.
Avoided by detecting cells with these special vertices and making sure the tet-decomposition
never uses the same points on the faces using them.
Patch contributed by Mattijs Janssens
Sometimes the initial point and boundary intersection searches can
generate duplicate information which can lead to line-type sampled sets
having duplicated points. This change explicitly filters these
additional points out, so that the resulting set is optimal.
Resolves bug report https://bugs.openfoam.org/view.php?id=3161
The tracking hit criteria have been modified slightly so that particles
do not exit a tetrahedron due to a local displacement smaller than the
round-off error. This prevents unresolvable interactions along edges
where the particle considers itself to be leaving every tet along the
edge.
The advantage of using this constructor for user-input dimensioned model
parameters is that it handles a variety of input; from just the value to
the full name-dimensions-value set. As more is specified, more is
checked.
Some other minor formatting improvements to the reactingEulerFoam
sub-modeling libraries have also been made.
Patch contributed by Institute of Fluid Dynamics,
Helmholtz-Zentrum Dresden - Rossendorf (HZDR)
This tutorial serves as a reference of how to create a multi-region
mesh with layer addition.
The multiRegionHeater tutorial and it's variants have been removed as
the geometry is not meaningful and the functionality is now all
represented elsewhere.
This allows coefficients of the constantAbsorptionEmission and
constantScatter to be entered as pure numbers, with the name and
dimensions set automatically, rather than having to specify them
manually.
The keyword which selects how the subset over which the function
operates is generated has been renamed to "selectionMode", to make it
more consistent with other parts of the OpenFOAM (e.g., fvOptions). It
can still take the value "all" or "cellZone". A cell zone is now
specified with a "cellZone", again for consistency.
Error messaging has also been overhauled.
Patch contributed by Institute of Fluid Dynamics,
Helmholtz-Zentrum Dresden - Rossendorf (HZDR)
Added the breakup and coalescence models of Lehr et al. (2002), and the
coalescence model of Luo (1993).
Patch contributed by Institute of Fluid Dynamics,
Helmholtz-Zentrum Dresden - Rossendorf (HZDR)
Prior to this commit, the drift term implementation was invalid for a
ratio x_{i+1}/x_i >= 2 between the characteristic volumes of two
subsequent size groups.
Patch contributed by Institute of Fluid Dynamics,
Helmholtz-Zentrum Dresden - Rossendorf (HZDR)
References:
Luo, H., & Svendsen, H. F. (1996).
Theoretical model for drop and bubble breakup in turbulent dispersions.
AIChE Journal, 42(5), 1225-1233.
Eq. 27, p. 1229.
Bannari, R., Kerdouss, F., Selma, B., Bannari, A., & Proulx, P. (2008).
Three-dimensional mathematical modeling of dispersed two-phase flow
using class method of population balance in bubble columns.
Computers & chemical engineering, 32(12), 3224-3237.
Eq. 49, p. 3230.
Patch contributed by Institute of Fluid Dynamics, Helmholtz-Zentrum
Dresden - Rossendorf (HZDR)
The dynamic code functionality has been generalised so that the names of
the code entries in the specifying dictionary can be set by the caller.
This means that functions which utilise dynamic code but use different
entry names (e.g., codedFunctionObject uses codeExecute, codeEnd,
etc..., instead of code) now function correctly. The differently named
entries now form part of the library hash, and re-building triggers
appropriately as they are modified.
Face merging in the layer addition phase can now be controlled at a
per-patch level. By default, faces that are connected to the same cell
and patch, and which do not differ in orientation by more than the
planar angle, are merged if the patch they belong to is associated with
meshed geometry. This has not changed, but it can now be overridden with
a new "mergeFaces" keyword. This can be set in addLayersControls to
control the default behaviour on all patches, and it can be overridden
in the layer settings associated with each patch. For example:
addLayersControls
{
mergeFaces true; // <-- Merge faces on all patches, not just those
// associated with geometry
layers
{
wall1
{
nSurfaceLayers 2;
}
wall2
{
nSurfaceLayers 2;
mergeFaces false; // <-- Do not merge faces on this patch
}
}
}
In addition, the patch-association has been fixed so that faces are no
longer merged on patches which are set not to merge, but are
cell-connected to patches which are.
This change makes it possible to guarantee that the surface mesh retains
the same geometry before and after layer addition, and therefore add
layers to coupled interfaces.