The stabilisation term for the heat transfer with the interface
temperature has been changed to mirror the local heat transfer in the
phase, rather than an effective heat transfer across both phases. This
makes the stabilisation term match the actual temperature-based transfer
terms more accurately. The difference is particularly significant when
the mass transfer rate is high, and cases of this type gain a
significant stability benefit from this change as a result.
Patch contributed by Juho Peltola, VTT.
Latent heat is now evaluated at Tsat instead of Tf for the thermal phase
change method. This provides a smooth transition of the interface
temperature field as the phase fraction tends to zero.
Patch contributed by Juho Peltola, VTT.
The phase which the function object relates to is now selected with the
keyword "phase", rather than "phaseName". This is consistent with other
name entries such as the "phi" entry for an inletOutlet boundary.
The Qdot field has been removed from all reacting solvers, in favour of
computing on the fly whenever it is needed. It can still be generated
for post-processing purposes by means of the Qdot function object. This
change reduces code duplication and storage for all modified solvers.
The Qdot function object has been applied to a number of tutorials in
order to retain the existing output.
A fix to Qdot has also been applied for multi-phase cases.
This is a heat transfer model with a constant fixed value for the
Nusselt number. It requires a single "Nu" entry to be specified.
Patch contributed by Juho Peltola, VTT
This had been removed by commit e1c95941, as most of the time it was
only being used to control writing of the diameter field. IATE does
require it, however, so it has been reinstated for that model.
Registration occurs when the temporary field is transferred to a non-temporary
field via a constructor or if explicitly transferred to the database via the
regIOobject "store" methods.
The energy transfer associated with phase change has been corrected in
the case that the variable being solved for is internal energy.
Patch contributed by Juho Peltola, VTT.
The selection of the "Final" solver settings is now handled automatically within
the "<equation>.solve()" call and there is no longer any need no provide a bool
argument for specific cases. This simplifies the solution algorithm loop
structures and ensures consistency in behaviour across all solvers.
All tutorials have been updated to correspond to the now consistent rules.
Now for transient simulations "Final" solver settings are required for ALL
equations providing consistency between the solution of velocity, energy,
composition and radiation properties.
However "Final" relaxation factors are no longer required for fields or
equations and if not present the standard value for the variable will be
applied. Given that relaxation factors other than 1 are rarely required for
transient runs and hence the same for all iterations including the final one
this approach provide simpler input while still providing the flexibility to
specify a different value for the final iteration if required. For steady cases
it is usual to execute just 1 outer iteration per time-step for which the
standard relaxation factors are appropriate, and if more than one iteration is
executed it is common to use the same factors for both. In the unlikely event
of requiring different relaxation factors for the final iteration this is still
possible to specify via the now optional "Final" specification.
This can be used to speedup simulations that converge to a steady state
by only updating the source terms once every few iterations. The number
of iterations between each update is set in fvSolution as follows:
solvers
{
bubbles
{
sourceUpdateInterval 10;
}
// etc ...
}
By default the interval is 1, and so the sources update every time.
Based on a patch contributed by Juho Peltola, VTT.
Qdot is only relevant for reacting cases, and even then it is only
written out for post-processing purposes. It has been removed from
chtMultiRegionFoam as this solvers' typical usage is for non-reacting
simulations.
If it is desired to obtain Qdot from a chtMultiRegionFoam simulation,
then a better way would be to implement a function object to look up the
reaction model and write it out.
Commit 674bff40 was in the right direction, but pressure dependence also
has to be corrected for, whether the phase is pure or not. The phase now
always updates the thermo whilst maintaining a constant temperature.
An isothermal phase still needs to trigger a thermo update in it's base
classes, primarily to ensure that any inert species fractions get
updated. This will not trigger an actual update of the thermodynamics,
as that is done in AnisothermalPhaseModel.
This is a model for the diameter of vapour bubbles. It calculates the
diameter as a linear function of the liquid sub-cooling.
Also removed the correct method from diameterModel, as it wasn't really
doing anything except facilitating the update of diameter fields to be
written out. Derived sub-models can control this locally without
polluting the base interface.
Based on patch contributed by by Juho Peltola, VTT.
Zeroing a dimensioned field can now be achieved by assignment to the
zero type. This prevents the clutter associated with constructing an
appropriate dimensioned type, or having to use multiply-equals-zero as a
workaround.
The phaseForces function object now only calulates and writes out forces
when the corresponding model exists.
Patch contributed by Institute of Fluid Dynamics, Helmholtz-Zentrum
Dresden - Rossendorf (HZDR)
Changed to using of UPtrList<Type> instead of List<*Type> for storing
reference to size and velocity groups, as this removes de-referencing
clutter. Fixed lookup of critical film thickness in PrinceBlanch
coalescence model. Added functionality calculating the overall diameter,
void fraction and void fraction weighted velocity for multiple velocity
groups.
Patch contributed by Institute of Fluid Dynamics, Helmholtz-Zentrum
Dresden - Rossendorf (HZDR)
This change fixes an issue where mass transfer models were being looked
up on the wrong side of the interface. This also means that specifying
mass transfer just on one side of an interface is now possible without
generating errors.
Description
Fixed traction boundary condition for the standard linear elastic, fixed
coefficient displacement equation in which the traction is caused by
the hydrostatic pressure of an external liquid reservoir.
To switch-off radiation set
radiationModel none;
in radiationProperties which instantiates "null" model that does not read any
data or coefficients or evaluate any fields.
The semiPermeableBaffleMassFraction boundary condition can now calculate
the mass flux as proportional to the difference in mole fraction or
partial pressure. A mass fraction difference driven transfer is also
still possible. An additional keyword, "input" has been added which is
used to select the variable used to calculate the transfer. An example
specification is as follows:
baffle
{
type semiPermeableBaffleMassFraction;
samplePatch membranePipe;
c 0.1;
input massFraction;
value uniform 0;
}
In order to facilitate this, a "W" method to get the molar mass on a
patch has been added to the thermodynamics. To avoid name-clashes,
methods that generate per-species molar masses have been renamed "Wi".
This work was supported by Georg Skillas, at Evonik