Commit Graph

1376 Commits

Author SHA1 Message Date
5b4e84c97b reactingEulerFoam::MovingPhaseModel: Generalised support for derived fixedValue BCs using the assignable() member function
Resolves bug-report https://bugs.openfoam.org/view.php?id=3457
2020-02-23 22:17:54 +00:00
5ce2130f1a reactingEulerFoam/phaseSystems: Rationalised the handling of continuity error compensation
Updated the continuity error compensation term in the face momentum formulation
so that separate flow and source continuity errors are combined into a single
term.
2020-02-18 17:24:33 +00:00
75c332c6c8 reacting*EulerFoam/.../wallDampingModels: Fixed memory reuse issue and removed unused code 2020-02-18 08:38:07 +00:00
17afa7d79b reactingEulerFoam::AnisothermalPhaseModel: Added a continuity error compensation term to the internal energy pressure work
Reduced the accumulation of error for incompressible and low compressibility
cases.

Partly resolves report https://bugs.openfoam.org/view.php?id=3442
2020-02-17 14:04:45 +00:00
89439aa1ff tutorials/multiphase/reactingMultiphaseEulerFoam/laminar/damBreak4phase: New tutorial to demonstrate interface capturing in reactingMultiphaseEulerFoam
This case is an updated version of
tutorials/multiphase/multiphaseEulerFoam/damBreak4phase using the latest models
available in reactingMultiphaseEulerFoam for interface capturing.
2020-02-16 00:14:32 +00:00
6996bcb28c reacting*EulerFoam/.../interfaceCompositionModel: Fixed pair ordering bug 2020-02-14 12:23:34 +00:00
2d3b02c130 primitiveMeshGeometry, polyMeshGeometry: Removed unused code
The utilised static parts of polyMeshGeometry are now part of a
polyMeshCheck namespace. Everything else has been removed, as they were
unused, out of date, and/or duplicated elsewhere.
2020-02-13 14:33:18 +00:00
bc0175f7ca reactingMultiphaseEulerFoam/multiphaseSystem: Fix to correction fluxes
Correction fluxes need for a given phase need to be calculated relative
to all other phases, both moving and stationary.
2020-02-10 16:13:51 +00:00
c829ae0cfc reacting*EulerFoam: Added pressure referencing for incompressible phase systems
Patch contributed by Institute of Fluid Dynamics,
Helmholtz-Zentrum Dresden - Rossendorf (HZDR)
2020-02-10 13:42:25 +00:00
972af235a0 List: Corrected construction from SLList
Resolves bug-report https://bugs.openfoam.org/view.php?id=3448
2020-02-09 12:05:42 +00:00
b2c30b93ce reactingEulerFoam::phaseSystem: Corrected loops to start from 1 2020-02-06 14:49:09 +00:00
cdf95fa6ef reactingEulerFoam::phaseSystems: Ensure the sum of phase fractions of the moving phases has calculated BCs 2020-02-06 14:38:46 +00:00
082a3c3ff3 General maintenance: Replaced convertToRad with degToRad 2020-02-05 17:30:39 +00:00
d1170cd177 reactingMultiphaseEulerFoam: Added referencePhase option
In multiphase systems it is only necessary to solve for all but one of the
moving phases.  The new referencePhase option allows the user to specify which
of the moving phases should not be solved, e.g. in constant/phaseProperties of the
tutorials/multiphase/reactingMultiphaseEulerFoam/RAS/fluidisedBed tutorial case with

phases (particles air);

referencePhase air;

the particles phase is solved for and the air phase fraction and fluxes obtained
from the particles phase which provides equivalent behaviour to
reactingTwoPhaseEulerFoam and is more efficient than solving for both phases.
2020-02-05 16:49:22 +00:00
5f79067082 reactingTwoPhaseEulerFoam::YEqns.H: Removed temporary diagnostic messages 2020-02-05 16:46:36 +00:00
35565437f5 reactingMultiphaseEulerFoam::multiphaseSystem: Updated implicitPhasePressure handling to improve stability and allow larger time-steps 2020-02-05 10:56:12 +00:00
99725b178f phaseCompressibleTurbulenceModels/Make/options: Removed redundant include 2020-02-04 13:10:16 +00:00
1dfec06aac twoPhaseCompressibleTurbulenceModels: Removed duplicate instantiation of phase turbulence model base classes 2020-02-04 12:17:44 +00:00
7a717a6929 reactingEulerFoam/phaseCompressibleTurbulenceModels: New turbulence library for both two and multiphase reactingEulerFoam solvers
combining the multiphaseCompressibleTurbulenceModels and derivedFvPatchFields
libraries with the generic multiphase turbulence models from the
twoPhaseCompressibleTurbulenceModels library, kineticTheoryModels and
phasePressureModel into a single common library compiled and linked into both
reactingTwoPhaseEulerFoam and reactingMultiphaseEulerFoam.
2020-02-03 18:33:11 +00:00
01f4faa486 reactingEulerFoam::kineticTheoryModel: Generalised to handle any pair of phases in a multiphase system
If the system has more than two phases the continuous phase must be specified.

Patch contributed by Timo Niemi, VTT.
2020-02-03 18:29:42 +00:00
0bff8ef536 reactingMultiphaseEulerFoam: Completed support for LTS in the face momentum formulation
consistent with the treatment in reactingTwoPhaseEulerFoam and using the same
included files to avoid code duplication.
2020-02-03 11:16:00 +00:00
acdbf45534 Moved OBJstream into src/fileFormats/obj 2020-01-29 17:17:36 +00:00
58b2efd622 reactingParcelFoam: Updated density handling for consistency with rhoPimpleFoam 2020-01-29 15:02:50 +00:00
84759ee0b8 sampledSurface: Added support for writing surfaces in binary format
by specifying

    writeFormat binary;

in the sampledSurface dictionary.
2020-01-29 12:42:05 +00:00
3631f13a98 sampledSurface/writers: Removed unnecessary "verbose" argument 2020-01-28 22:46:00 +00:00
9ff1e2e168 foamToVTK: Rationalised the low-level write function to avoid 3x duplication
Moved the writeFuns into the vtkWriteOps namespace which is extensible, see the
the write functions in setSet as an example of this.
2020-01-28 16:12:57 +00:00
a296733a76 hashedWordList: Removed the "contains" member function
the same functionality is provided by the standard HashTable "found" function.
2020-01-28 16:09:03 +00:00
f4e47fccbc Corrected typos in comments
Patch contributed by Timo Niemi, VTT.
Resolves patch request https://bugs.openfoam.org/view.php?id=3437
2020-01-26 13:40:14 +00:00
8a6cb87b79 createPatch: Removed obsolete code
Removed a synchronisation step that is no longer necessary now that
coupled patches have uniform transformations
2020-01-24 15:38:31 +00:00
3217f90703 refineWallLayer: Further improvement to the cellSet selection 2020-01-24 13:49:37 +00:00
c8a1c95b06 IOobject: Added localPath and localObjectPath member functions
For many information and diagnostic messages the absolute path of the object is
not required and the local path relative to the current case is sufficient; the
new localObjectPath() member function of IOobject provides a convenient way of
printing this.
2020-01-24 11:52:45 +00:00
3c1456571e foamUpgradeCyclics: Removed, no longer required 2020-01-24 11:43:09 +00:00
0876ca78c6 refineWallLayer: Improved efficiency of the -inSet option 2020-01-24 10:52:05 +00:00
d7a452ccf2 refineWallLayer: Changed name of the -useSet option to -inSet, corrected operation and documentation
Resolves bug-report https://bugs.openfoam.org/view.php?id=3435
2020-01-24 10:39:58 +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
d38a680dae surfaceFeatures: Separated "closness" option into "faceCloseness" and "pointCloseness"
For complex geometries the calculation of surface face and point "closeness" can
be quite time consuming and usually only one or other is required; the new
options allow the user to specify which should be calculated and written.
2020-01-18 23:04:49 +00:00
05966af49c surfaceFeatureExtract: Removed deprecated utility, replaced by surfaceFeatures 2020-01-18 23:04:00 +00:00
3097097003 gmshToFoam: Updated the reading of tags starting with '$' as variables rather than words
Resolves bug-report https://bugs.openfoam.org/view.php?id=3431
2020-01-17 15:03:05 +00:00
86f2d8a40c reactingEulerFoam/.../populationBalanceModel: Reset source update counter on restart
The source update counter is now always initialised to zero. Previously
an attempt was made to determine the current number of iterations
reached so that on restart the source updates occur at the same
intervals as they would have had the simulation not been stopped. The
problem with this is that the sources themselves are not stored to disk,
so on restart a simulation could progress for quite some time before the
sources were properly initialised at the next update.

Resetting the counter to zero does not give a perfect restart (i.e., as
if the simulation had continued without stopping), but it does provide a
stable and consistent solution sequence. Perfect restart could only be
achieved with this iteration procedure by writing all the sources to
disk and reading them back in again. This is considered a worse
compromise due to the amount of disk space that it would require.

Patch contributed by Timo Niemi, VTT.
2020-01-16 12:22:04 +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
d8209247b1 foamDictionary: Allow functionEntry expansion with -entry option
Resolves bug-report https://bugs.openfoam.org/view.php?id=3422
2020-01-07 21:25:09 +00:00
50d1355fa1 coupled patches: Refactored transformPosition function
reducing code duplication and removing associated errors thus simplifying
maintenance.
2020-01-07 21:23:09 +00:00
bf6de2bcc2 Rationalised and standardised the naming of neighbour patch functions in the cyclic patch implementations 2020-01-04 19:32:52 +00:00
fe7f362d57 cyclic patches: Removed unnecessary definitions of and calls to doTransform 2020-01-02 20:27:30 +00:00
4f0e38ce4a cyclic patches: Rationalised the handling of transformation
A single transformer object is now maintained within cyclic patches and returned
from a single virtual functions massively simplifying the interface and allowing
for further rationalisation of the calculation of the transformation.
2020-01-02 17:05:01 +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
03207b1538 Coupled patch transformations: Removed the hideous and unphysical non-uniform transformation support
The implementation of the optional non-uniform transformations in coupled
patches was based on transform property lists which could be either length 0 for
no transformation, 1 for uniform transformation or n-faces for non-uniform
transformation.  This complexity was maintenance nightmare but kept to support
the hack in the original film implementation to partially work around the
conservation error.  Now that film has been re-implemented in fully mass
conservative form this unphysical non-uniform transformation support is no
longer needed and the coupled patch transformations have been completely
refactored to be simpler and more rational with single values for the
transformation properties and boolians to indicate which transformations are
needed.
2019-12-25 11:26:30 +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
89023d2f5d reacting*EulerFoam: Improved order of thermo/reaction/specie-fraction corrections
The correction of thermodynamics, reactions, and the enforcement of the
specie fraction sum are now done in the same sequence as other reacting
solvers.

Patch contributed by Juho Peltola, VTT.
2019-12-20 14:11:05 +00:00