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...2020-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/327ENH: shm: support for automatic faceZones2020-01-16T12:22:03ZMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comENH: shm: support for automatic faceZones### Summary
Extends meshing of faceZones to allow having multiple faceZones per surface
### Details of new models (If applicable)
Currently a single (explicitly named) faceZone can be specified for a surface. This new function...### Summary
Extends meshing of faceZones to allow having multiple faceZones per surface
### Details of new models (If applicable)
Currently a single (explicitly named) faceZone can be specified for a surface. This new functionality extends it to have a separate faceZone for every region of the surface.
### Risks
The default behaviour has not changed. A new keyword, faceZoneNaming, can switch on the new behaviour. See the new mesh/snappyHexMesh/faceZoneRegions tutorial
v2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/362ENH: unify use of dictionary method names2020-06-03T08:31:01ZMark OLESENENH: unify use of dictionary method names- previously introduced `getOrDefault` as a dictionary _get_ method,
now complete the transition and use it everywhere instead of
`lookupOrDefault`. This avoids mixed usage of the two methods that
are identical in behaviour, makes ...- previously introduced `getOrDefault` as a dictionary _get_ method,
now complete the transition and use it everywhere instead of
`lookupOrDefault`. This avoids mixed usage of the two methods that
are identical in behaviour, makes for shorter names, and promotes
the distinction between "lookup" access (ie, return a token stream,
locate and return an entry) and "get" access (ie, the above with
conversion to concrete types such as scalar, label etc).v2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/373ENH: Updated Curle function object2020-06-18T20:56:18ZAndrew HeatherENH: Updated Curle function objectThe Curle function object now computes the acoustic pressure for a set of observer locations as opposed to creating a very approximate volume field. The locations can either be supplied as a list, or extracted from the face centres of a...The Curle function object now computes the acoustic pressure for a set of observer locations as opposed to creating a very approximate volume field. The locations can either be supplied as a list, or extracted from the face centres of a user-supplied surface.
These changes also include fixes for reading the ensight geometry files where the mask was not correctly replaced by the appropriate zero padded index. Note that the `surfaceNoise` model currently requires the data to be provided in ascii format.
For testing, the `vortexShed` tutorial has been updated to process both the point- and surface-based options, and correctly recovers the shedding frequency of approx 0.1 Hz.v2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/359Feature build granularity2020-05-19T06:14:08ZMark OLESENFeature build granularity- improvements for building with additional MPI layers
- additional flexibility handling libraries- improvements for building with additional MPI layers
- additional flexibility handling librariesv2006Andrew 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/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/271lumped point motion using local linear basic functions (#1341)2020-06-17T14:15:52ZMark OLESENlumped point motion using local linear basic functions (#1341)Extends lumped point motion to support multiple connectivity.
Examples include structures such as bridges.Extends lumped point motion to support multiple connectivity.
Examples include structures such as bridges.v2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/369New Weber number cloud function object2020-06-11T14:00:37ZAndrew HeatherNew Weber number cloud function objectExample usage:
cloudFunctions
{
WeberNumber1
{
type WeberNumber;
}
}
This will calculate and write the Weber number field as a 'standard' cloud field, available for post-proces...Example usage:
cloudFunctions
{
WeberNumber1
{
type WeberNumber;
}
}
This will calculate and write the Weber number field as a 'standard' cloud field, available for post-processing alongside other lagrangian fields in the lagrangian/<cloudName> directory.
See example in `$FOAM_TUTORIALS/lagrangian/sprayFoam/aachenBomb/constant/sprayCloudProperties`v2006Andrew HeatherAndrew Heatherhttps://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 OLESENhttps://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/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/324TUT: misc cleanup in various tutorials2020-01-12T11:10:18ZKutalmış BerçinTUT: misc cleanup in various tutorialsv2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/368Updates for the adjoint optimisation library2020-06-12T14:04:50ZVaggelis PapoutsisUpdates for the adjoint optimisation libraryA number of updates related to the adjoint optimisation library.
The branch contains mainly enhancements in the infrastructure of the objective functions, the computation of sensitivity derivatives for shape optimisation and some minor...A number of updates related to the adjoint optimisation library.
The branch contains mainly enhancements in the infrastructure of the objective functions, the computation of sensitivity derivatives for shape optimisation and some minor new features like the adjoint to the rotatinWallVelocity boundary condition and the introduction of a new objective function minimising the square of the turbulent viscosity over a certain volume, which can be used to qualitatively approximate (and then minimise) noise (see also the header of the corresponding class for a bibliographic reference).v2006Andrew HeatherAndrew Heather