openfoam merge requestshttps://develop.openfoam.com/Development/openfoam/-/merge_requests2020-06-05T13:35:59Zhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/353ENH: Robust Iterative Eigendecomposition and Parallel Low-Memory Dynamic Mode Decomposition2020-06-05T13:35:59ZKutalmış BerçinENH: Robust Iterative Eigendecomposition and Parallel Low-Memory Dynamic Mode Decomposition### Summary
**New robust solver/container: Iterative eigendecomposition:**
The new iterative eigen decomposition functionality is derived from:
Passalacqua et al.'s OpenQBMM (openqbmm.org/),
which is mostly d...### Summary
**New robust solver/container: Iterative eigendecomposition:**
The new iterative eigen decomposition functionality is derived from:
Passalacqua et al.'s OpenQBMM (openqbmm.org/),
which is mostly derived from JAMA (math.nist.gov/javanumerics/jama/).
**New field function object: Parallel low-memory dynamic mode decomposition:**
STDMD (i.e. Streaming Total Dynamic Mode Decomposition) is a variant of
a data-driven dimensionality reduction method.
STDMD is being used as a mathematical post-processing tool to compute
a set of dominant modes out of a given flow (or dataset) each of which is
associated with a constant frequency and decay rate, so that dynamic
features of a given flow may become interpretable, and tractable.
Among other Dynamic Mode Decomposition (DMD) variants, STDMD is presumed
to provide the general DMD method capabilities alongside economised and
feasible memory and CPU usage.
STDMD and mode-sorting algorithms (tags:K, HRDC, KZ, HWR):
Kiewat, M. (2019).
Streaming modal decomposition approaches for vehicle aerodynamics.
PhD thesis. Munich: Technical University of Munich.
URL:mediatum.ub.tum.de/doc/1482652/1482652.pdf
Hemati, M. S., Rowley, C. W., Deem, E. A., & Cattafesta, L. N. (2017).
De-biasing the dynamic mode decomposition for applied Koopman
spectral analysis of noisy datasets.
Theoretical and Computational Fluid Dynamics, 31(4), 349-368.
DOI:10.1007/s00162-017-0432-2
Kou, J., & Zhang, W. (2017).
An improved criterion to select dominant modes from dynamic mode
decomposition.
European Journal of Mechanics-B/Fluids, 62, 109-129.
DOI:10.1016/j.euromechflu.2016.11.015
Hemati, M. S., Williams, M. O., & Rowley, C. W. (2014).
Dynamic mode decomposition for large and streaming datasets.
Physics of Fluids, 26(11), 111701.
DOI:10.1063/1.4901016
Parallel classical Gram-Schmidt process (tag:Ka):
Katagiri, T. (2003).
Performance evaluation of parallel Gram-Schmidt re-orthogonalization
methods.
In: Palma J. M. L. M., Sousa A. A., Dongarra J., Hernández V. (eds)
High Performance Computing for Computational Science — VECPAR 2002.
Lecture Notes in Computer Science, vol 2565, p. 302-314.
Berlin, Heidelberg: Springer.
DOI:10.1007/3-540-36569-9_19
Parallel direct tall-skinny QR decomposition (tags:BGD, DGHL):
Benson, A. R., Gleich, D. F., & Demmel, J. (2013).
Direct QR factorizations for tall-and-skinny matrices in MapReduce
architectures.
2013 IEEE International Conference on Big Data.
DOI:10.1109/bigdata.2013.6691583
Demmel, J., Grigori, L., Hoemmen, M., & Langou, J. (2012).
Communication-optimal parallel and sequential QR and LU
factorizations.
SIAM Journal on Scientific Computing, 34(1), A206-A239.
DOI:10.1137/080731992
DMD properties:
Brunton S. L. (2018).
Dynamic mode decomposition overview.
Seattle, Washington: University of Washington.
youtu.be/sQvrK8AGCAo (Retrieved:24-04-20)
**New extensive, true-false type unit tests for Matrix classes**
### Resolved bugs (If applicable)
**Improved robustness in Moore-Penrose matrix inverse function**
### Details of new models (If applicable)
**A verification example for STDMD: Two-dimensional steady-inflow cylinder test:**
Left-top = MATLAB (using serial data)
Left-bottom = OpenFOAM (serial)
Right-top = MATLAB (using parallel data)
Right-bottom = OpenFOAM (parallel/8-procs)
![Screenshot_from_2020-04-24_16-05-10](/uploads/07ba4e4cbefa9307b69a912958c06180/Screenshot_from_2020-04-24_16-05-10.png)
![Screenshot_from_2020-04-24_16-05-18](/uploads/ad0cbf546bef5091d9049a8869ae2169/Screenshot_from_2020-04-24_16-05-18.png)
![Screenshot_from_2020-04-24_16-05-26](/uploads/844e40652c4a1b3e7ff2e78f4e513e98/Screenshot_from_2020-04-24_16-05-26.png)
### Risks
- STDMD is in its **beta** phase; therefore, small-to-medium changes in input/output interfaces and internal structures should be expected in the next versions depending on the unknown
- Peer-review, or any type of feedback for any part of the code is more than welcomed:
- STDMD internal structure, and IO @mark @andy
- Eigendecomposition @albertop
- Low risk to the existing code status.v2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/352Enabled postProcess on film region for reactingParcelFoam2020-03-27T09:35:53ZAndrew HeatherEnabled postProcess on film region for reactingParcelFoamThis change enables function objects to be executed on the film region using the postProcess utility/option.
Cross-ref EP 1105
@PrashantThis change enables function objects to be executed on the film region using the postProcess utility/option.
Cross-ref EP 1105
@Prashantv2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/351Feature VOF mass models2020-04-20T19:58:34ZSergio FerrarisFeature VOF mass modelsAdding interfaceHeatResistance mass transfer model
1) Add interfaceHeatResistance model to icoReactingMultiphaseInterFoam
This model uses a spread source for the continuity Eq.
It is recommended for cases with good...Adding interfaceHeatResistance mass transfer model
1) Add interfaceHeatResistance model to icoReactingMultiphaseInterFoam
This model uses a spread source for the continuity Eq.
It is recommended for cases with good mesh resolution.
2) Adding iso-surface type of calculation for the interface for
the kineticGasEvaporation model
3) Add switch for option to take into account volume change
New pool evaporation tutorial with heat flux at the bottom. See fig:
![Total_dmdt](/uploads/a470ef35b55a319ba4b5673725c003fa/Total_dmdt.png)
The experimental value is in average 1.2e-4 Kg/s. This tutorial uses the updated model
kineticGasEvaporationv2006Mattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/350ENH: New wall-function blending approaches2020-06-17T15:26:52ZKutalmış BerçinENH: New wall-function blending approaches### Summary
This merge request is a discussion placeholder for two topics:
- ~~Potential improvements to the wall-function hierarchies~~
- Wall-function blending treatments between viscous and inertial sublayers
##### ~~Wall-func...### Summary
This merge request is a discussion placeholder for two topics:
- ~~Potential improvements to the wall-function hierarchies~~
- Wall-function blending treatments between viscous and inertial sublayers
##### ~~Wall-function hierarchy~~
~~Arguably, the wall-function hierarchies need a reexamination as the relations have "grown organically" in the course of time. One recent problem is that `{omega,epsilon,k}Wall` functions use data members from `nutWallFunction` base class even though the former group is not derived from the latter.~~
~~One practical consequence is that `{omega,epsilon,k}Wall` always require a `nut` wall function is defined in the `nut` dictionary, otherwise simulation in question noisily fails without informing the user with useful information, e.g. [CFD-Online:Error with k-omega SST and simpleFoam (21-Feb-20)](https://www.cfd-online.com/Forums/openfoam-solving/224476-error-k-omega-sst-simplefoam.html), and the bug-fix:55776069975061c488a6294a5e81a7a92b04db45.~~
##### Wall-blending treatments
- Four wall-function blending treatments were introduced:
- `STEPWISE`
- `MAX`
- `BINOMIAL`
- `EXPONENTIAL`
- .. For the following wall functions:
- `epsilonWallFunction`
- `omegaWallFunction`
- `nut{k,U}WallFunction`
- The header-file documentations were improved for the following wall functions for which the blending treatments were not applicable (e.g. due to the continuous treatment in `nutUSpaldingWallFunction`):
- `nutU{Spalding,Tabulated,Blended}WallFunction`
- `nut{k,U}RoughWallFunction`
- `nutLowReWallFunction`
- `{kLowRe,kqR}WallFunction`
- Based on:
- Viegas and Rubesin (1983); Viegas et al. (1985) (i.e. the option: `STEPWISE`)
- Menter and Esch (2001) (i.e. the option: `BINOMIAL`)
- Popovac and Hanjalić (2007) (i.e. the options: `MAX`, `EXPONENTIAL`)
- Knopp et al. (2006) (i.e. the option: `TANH` only for `omega`)
### Resolved bugs
N/A
### Risks
High risk, yet bitwise backward compatibility, and regression were verified for each modified functionality.
@mark @Sergio @Mattijs v2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/348DOC: Elaborate the usage of function objects2020-06-08T14:44:34ZKutalmış BerçinDOC: Elaborate the usage of function objects### Summary
Documentation and usage examples are limited for some of the function objects. This somewhat hampers the efforts of users to access all capabilities of them.
Therefore, we decided to elaborate the usage of function obje...### Summary
Documentation and usage examples are limited for some of the function objects. This somewhat hampers the efforts of users to access all capabilities of them.
Therefore, we decided to elaborate the usage of function objectcs in:
- Extended Code Guide (comprises the full spectrum of details)
- Header files (comprises the minimal set of info, directing the users to the central info hub, the Extended Code Guide)
In parallel to the `Extended Code Guide` improvements (corresponding: [Extended Code Guide:doc-FOs-part-1](https://develop.openfoam.com/Documentation/Extended-Code-Documentation/tree/doc-FOs-part-1)), it is useful:
- to provide a minimal documentation in the header files of the function objects
- to provide at least one example of usage per function object in tutorials
In addition, style/implementation consistency across function objects can be imposed for:
- update libs of etc/caseDicts/postProcess items
- ensure `destructor=default`
- ensure `no copy construct`/`no copy assignment`
- static data members
- ensure constness
- change `lookupOrDefault()` to `getOrDefault()`
### Resolved bugs
#1594
### Risks
Considerably low.
Regression tests are pending.v2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/347TUT: clean up multiphase tutorials2020-05-07T16:32:26ZKutalmış BerçinTUT: clean up multiphase tutorialsWIP to ensure bitwise regression.
FYI: @Prashant
FYI-relevant to .org files: @mark @albertopWIP to ensure bitwise regression.
FYI: @Prashant
FYI-relevant to .org files: @mark @albertopv2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/344ENH: improve access to the inner content of turbulence models2020-04-08T10:53:57ZKutalmış BerçinENH: improve access to the inner content of turbulence models~~WIP for `Clang` compilation test.~~ [log.linux64GccDPInt32Opt.zip](/uploads/42d7ada437728c6c6772aca28683ab81/log.linux64GccDPInt32Opt.zip) (Gcc 7.4)
[log.linux64ClangDPInt32Opt.zip](/uploads/92ba2973af16077b4f17197e0a385ae9/log.linux6...~~WIP for `Clang` compilation test.~~ [log.linux64GccDPInt32Opt.zip](/uploads/42d7ada437728c6c6772aca28683ab81/log.linux64GccDPInt32Opt.zip) (Gcc 7.4)
[log.linux64ClangDPInt32Opt.zip](/uploads/92ba2973af16077b4f17197e0a385ae9/log.linux64ClangDPInt32Opt.zip) (LLVM 9.0)
[testLoopReport.PASS.zip](/uploads/b65f5e0e1a43e1608e2ed96aee84a2cc/testLoopReport.zip)
### Summary
The commits provide access to:
- `omega` field estimations for non-omega turbulence models,
- model coefficients of turbulence models for `fvOptions`.
### Resolved bugs (If applicable)
n/a
### Details of new models (If applicable)
n/a
### Risks
- No change to the current behaviourv2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/343Feature surface handling2020-03-13T17:19:15ZMark OLESENFeature surface handlingAdjust sampling to avoid triangulation.Adjust sampling to avoid triangulation.v2006Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/342ENH: improve analytic eigen for small off-diagonals2020-02-28T10:50:51ZKutalmış BerçinENH: improve analytic eigen for small off-diagonals~~WIP for `Clang9` scratch-compilation.~~
### Summary
The analytic eigendecomposition methods were further improved and tested for **small off-diagonal entries**.
Numerical diagonalisation of 2x2 or 3x3 matrices with analytic me...~~WIP for `Clang9` scratch-compilation.~~
### Summary
The analytic eigendecomposition methods were further improved and tested for **small off-diagonal entries**.
Numerical diagonalisation of 2x2 or 3x3 matrices with analytic methods are, like the methods currently being used in OpenFOAM, inherently error prone. **Despite its speed, the analytic methods may becomes inaccurate or may even fail completely if the matrix entries differ greatly in magnitude, particularly with large off-diagonal elements.**
Accordingly, there will always be a combination of value-set that the considerably improved eigendecomposition suite will fail.
The remedy is to sacrifice the speed by using iterative methods (like LAPACK, GNU-Sci, MATLAB, NumPy etc. etc. no matter what the size of matrix is), or hybrid analytic/iterative methods like the publication below: (Kopp, 2008) arXiv.org: physics/0610206 https://www.mpi-hd.mpg.de/personalhomes/globes/3x3/index.htm
Might to consider to look for funding to incorporate such slow-yet-more-stable methods for small eigendecompositions.
Otherwise, we will need to live with it, I'm afraid, by covering the corner cases as they appear in the course of time.
### Caveats
- Will always be a value-set combination for eigendecompositions will fail
- Single- or mixed-precision computation of eigendecompositions will likely and noisily fail as double-precision computation was the only intention
### Tests
`Clang9` = `PASS`: [log.linux64ClangDPInt32Opt.gz](/uploads/534036a6b4c3ff6697f9c1dc4def9725/log.linux64ClangDPInt32Opt.gz) with HEAD~1 = `a456e9ae92 - (origin/develop, develop)`
`Alltest-TUT` = `PASS`: [testLoopReport.gz](/uploads/4a7f88dc4179df5b57a6e487379a116e/testLoopReport.gz)
The logs of the below were not attached due to their sizes, yet the return log was given.
`Test-SymmTensor` = `PASS`: `#### Passed all 10010170 tests #### `
`Test-SymmTensor2D` = `PASS`: `#### Passed all 1260123 tests ####`
`Test-Tensor` = `PASS`: `#### Passed all 8030254 tests ####`
`Test-Tensor2D` = `PASS`: `#### Passed all 4380204 tests ####`v2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/341Feature write object2020-02-19T09:26:37ZMark OLESENFeature write objectMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/340ENH: Improve polynomial equations and analytical eigendecompositions2020-02-18T17:31:35ZKutalmış BerçinENH: Improve polynomial equations and analytical eigendecompositions### Summary
Analytical eigendecomposition routines show irregular numerical instabilities particularly for cases wherein off-diagonal elements of a tensor involve noise. The issue revealed to be caused by the polynomialEqn containers,...### Summary
Analytical eigendecomposition routines show irregular numerical instabilities particularly for cases wherein off-diagonal elements of a tensor involve noise. The issue revealed to be caused by the polynomialEqn containers, particularly `cubicEqn`.
In addition, the analytical eigendecomposition routines seem to be mathematically inconsistent since tensors are not allowed to return complex types, which is nevertheless the norm for asymmetric matrices.
Accordingly, this set of commits aims to improve the numerical stability of analytical eigendecompositions, and to provide a group of verification tests to prevent future breaks in the workflow.
[unit-test-notebooks-17-Feb-20.zip](/uploads/bd21eee046e249f3ae4830537472e625/unit-test-notebooks-17-Feb-20.zip)
### Resolved bugs
#1311 #1312 #1527 #1575 #1596
### Risks
Low.
`polynomialEqns` and analytical eigendecomposition routines were considerably isolated from the rest of the code.
@markv2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/339Feature ensight parts2020-02-18T11:10:43ZMark OLESENFeature ensight partsAndrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/338Feature.interPCFoam2020-02-19T15:33:41ZSergio FerrarisFeature.interPCFoamENH: Adding features for phase change solvers
1) Adding interfaceHeight FO
2) Adding interfaceHeatResistance mass transfer model to
interCondensatingEvaporatingFoam with spread source approach
3) Reworking fr...ENH: Adding features for phase change solvers
1) Adding interfaceHeight FO
2) Adding interfaceHeatResistance mass transfer model to
interCondensatingEvaporatingFoam with spread source approach
3) Reworking framework for icoReactingMultiphaseInterFoamMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/337TUT: cleanup compressible tutorials2020-01-29T21:13:55ZKutalmış BerçinTUT: cleanup compressible tutorialsComplete regression: https://ftpbox.esi-group.com/?u=IDXq6Cpj&p=manSCW6c&path=/logs-cleanup-compressible-tuts.tar.gzComplete regression: https://ftpbox.esi-group.com/?u=IDXq6Cpj&p=manSCW6c&path=/logs-cleanup-compressible-tuts.tar.gzv2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/336COMP: backport of updates for gcc-92 compilation2020-01-29T16:54:18ZMark OLESENCOMP: backport of updates for gcc-92 compilationAndrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/335Generated methods2020-01-30T12:39:49ZMark OLESENGenerated methodsExplicit define generated methods where the pairing (constructor/assignment) is partly broken by the existence of user-defined methods.
In some cases, it can be sufficient to simply remove the user definition and rely entirely on genera...Explicit define generated methods where the pairing (constructor/assignment) is partly broken by the existence of user-defined methods.
In some cases, it can be sufficient to simply remove the user definition and rely entirely on generated methods. In other cases, the user-defined methods are useful to retain. So we need to declare defaulted versions. This change is largely driven by new warnings from gcc-9.2.Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/334ENH: lduMatrix: new matrix solvers: PPCG,PPCR2020-03-11T13:53:05ZMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comENH: lduMatrix: new matrix solvers: PPCG,PPCRPPCG is pipelined version of PCG, PPCR is conjugate
residual version.PPCG is pipelined version of PCG, PPCR is conjugate
residual version.Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/333support eulersolver heat transfer fo2020-05-21T14:21:40ZSergio Ferrarissupport eulersolver heat transfer foThe lib in src/phaseSystemModels/reactingEulerFoam/phaseSystems/
was not fully linked due to cyclic dependencies. When used in 'fieldFunctionObject' (to get the
HTC for multiphase), created a problem of linking in two apps:
appli...The lib in src/phaseSystemModels/reactingEulerFoam/phaseSystems/
was not fully linked due to cyclic dependencies. When used in 'fieldFunctionObject' (to get the
HTC for multiphase), created a problem of linking in two apps:
applications/utilities/preProcessing/createExternalCoupledPatchGeometry/Make/options
applications/solvers/multiphase/reactingEulerFoam/functionObjects/Make/options
And surely when called from controlDict in the tutorials.
Previously the missing libs were provided in the solvers (Euler solvers).
As we need a fully linked phaseSystems lib. I compiled last this lib in rc/phaseSystemModels/reactingEulerFoam/Allwmake. This creates a complete lib usable in fieldFunctionObject.
Some changes were needed in the intermediate libs as well for compilation.Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/332ENH: stream adjustments2020-01-23T15:43:57ZMark OLESENENH: stream adjustments- make stream constructors explicit
- remove "using std::ifstream", "using std::iofstream" statements
for a cleaner namespace.
* copy/move assignments for ITstream
* IStringStream: default construct and construct from std::string
...- make stream constructors explicit
- remove "using std::ifstream", "using std::iofstream" statements
for a cleaner namespace.
* copy/move assignments for ITstream
* IStringStream: default construct and construct from std::string
instead of Foam::string
- reduce some overhead in masterOFstream
- simplify Pstream handling of string variants (#1525)Mattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/330SUBMODULE: added OpenQBMM submodule - see #15222020-01-25T02:11:02ZAndrew HeatherSUBMODULE: added OpenQBMM submodule - see #1522### Summary
Adds the OpenQBMM library from https://www.openqbmm.org/
OpenQBMM is a suite of solvers to simulate polydisperse multiphase flows using
Quadrature-Based Moment Methods (QBMM).
Main author: Alberto Passalacqua @alber...### Summary
Adds the OpenQBMM library from https://www.openqbmm.org/
OpenQBMM is a suite of solvers to simulate polydisperse multiphase flows using
Quadrature-Based Moment Methods (QBMM).
Main author: Alberto Passalacqua @albertop
### Details of new models (If applicable)
OpenQBMM implements methods to describe polydisperse multiphase flows, from the simplest size evolution of non-inertial particles in a carrier fluid to more complex cases with bubbles in a gas-liquid system and inertial particles in a gas-particle flow. These capabilities are implemented in a suite of solvers, among which:
- `pbeFoam` solves a population balance equation in a single control volume. This solver is useful to test kernel functions in the population balance equation and to solve spatially homogeneous problems. Example cases can be found in OpenQBMM/validation/pbeFoam/ which show the validation cases discussed in E. Madadi-Kandjani, A. Passalacqua, An extended quadrature-based moment method with log-normal kernel density functions, Chemical Engineering Science. 131 (2015) 323–339. https://doi.org/10.1016/j.ces.2015.04.005.
- `pbeTransportFoam` allows a frozen flow field to be used to solve a population balance equation with pre-imposed flow motion. A validation case is available in OpenQBMM/validation/pbeTransportFoam/serraTaylorCouette/ and discussed in A. Passalacqua, F. Laurent, E. Madadi-Kandjani, J.C. Heylmun, R.O. Fox, An open-source quadrature-based population balance solver for OpenFOAM, Chemical Engineering Science. 176 (2018) 306–318. https://doi.org/10.1016/j.ces.2017.10.043.
- `buoyantPbePimpleFoam` allows a transient flow with population balance equation to be modelled.
- `polydisperseBubbleFoam` is a specialized solver for gas-liquid flows with evolution of the bubble size due to coalescence and breakup. Bubbles can have a velocity distribution also accounting for polycelerity, with bubbles with different sizes in the same control volume allowed to have different velocities. Example cases are available in OpenQBMM/validation/polydisperseBubbleFoam/ while the implementation is discussed in the article J.C. Heylmun, B. Kong, A. Passalacqua, R.O. Fox, A quadrature-based moment method for polydisperse bubbly flows, Computer Physics Communications. 244 (2019) 187–204. https://doi.org/10.1016/j.cpc.2019.06.005.
- `denseAGFoam` implements an anisotropic Gaussian model for dense gas-particle flows. Implementation details are discussed in B. Kong, R.O. Fox, A solution algorithm for fluid–particle flows across all flow regimes, Journal of Computational Physics. 344 (2017) 575–594. https://doi.org/10.1016/j.jcp.2017.05.013.
- The solvers in the `velocityDistribitionTransport` implement quadrature-based moment methods for velocity distributions. These methods are suitable to describe disperse flows with non-equilibrium velocity distributions, such as crossing jets of particles or droplets. The `diluteVdfTransportFoam` solver implements the quadrature-based velocity distribution transport algorithm for a disperse phase, not coupled to a carrier fluid. One-way coupling between the disperse phase and the carrier fluid is implemented `oneWayCoupledVdfTransportFoam`. In both solvers, the particle size can evolve in space and time and particles can interact through collisions.
### Risks
Low - added as a submodulev2006Mark OLESENMark OLESEN