openfoam merge requestshttps://develop.openfoam.com/Development/openfoam/-/merge_requests2020-01-17T21:07:16Zhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/318ENH: improve BinSum container, and Test-BinSum app2020-01-17T21:07:16ZKutalmış BerçinENH: improve BinSum container, and Test-BinSum app```
BUG: protect against non-scalar or non-sum template specialisations
DOC: improve header/func docs
ENH: test Binsum constructors and member funcs
``````
BUG: protect against non-scalar or non-sum template specialisations
DOC: improve header/func docs
ENH: test Binsum constructors and member funcs
```v2006Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/323WIP: ENH: add 'outputCoeffs' and 'extendedOutput' options to forceCoeffs2020-01-17T21:07:23ZKutalmış BerçinWIP: ENH: add 'outputCoeffs' and 'extendedOutput' options to forceCoeffsENH: add 'extendedOutput' option that allows to output all constitutents
of all force coefficients, i.e. total, pressure, viscous, and porous
ENH: add 'outputCoeffs' option to allow to select coefficients to output
...ENH: add 'extendedOutput' option that allows to output all constitutents
of all force coefficients, i.e. total, pressure, viscous, and porous
ENH: add 'outputCoeffs' option to allow to select coefficients to output
ENH: remove redundant computations for porosity constituent when the option
porosity=false
DOC: improve header file and function declaration docs
BAKW: test backward compatibility and functionality in comparison to
v1906 by using `simpleFoam/motorBike` and `simpleFoam/bump2D`.
Tests have involved:
- Serial runs
- Parallel runs
- Serial restart
- Parallel restart
- Only binData = on (parallel)
- Only writeFields = on (parallel)
- Only extendedOutput = on (parallel)
- binData and extendedOutput = on (parallel)
- writeFields and extendedOutput = on (parallel)
- outputCoeffs and extendedOutput = on for arbitrarily chosen
(Cd CmRoll Cl) (parallel and serial)v2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/328WIP: Revisiting analytical eigen decompositions and polynomialEqns2020-01-17T21:07:33ZKutalmış BerçinWIP: Revisiting analytical eigen decompositions and polynomialEqnsv2006Andrew 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/372BUG: provide setup backward-compat for actuationDiskSourceCoeffs2020-06-18T20:59:51ZKutalmış BerçinBUG: provide setup backward-compat for actuationDiskSourceCoeffs#1732 @Prashant#1732 @Prashantv2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/371ENH: prevent natural-logarithm domain errors in nut wall functions2020-06-18T20:57:08ZKutalmış BerçinENH: prevent natural-logarithm domain errors in nut wall functions#1730#1730v2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/370DOC-STYLE: various release changes2020-06-16T12:50:23ZKutalmış BerçinDOC-STYLE: various release changes- Header-file documentation of various new functionalities was moved to the Extended Code Guide.
- Various corrections to the clashes in release commits #1726- Header-file documentation of various new functionalities was moved to the Extended Code Guide.
- Various corrections to the clashes in release commits #1726v2006Andrew 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/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 Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/367AMI code enhancements2020-06-24T21:12:39ZAndrew HeatherAMI code enhancements### Summary
**Note: this is beta-level code and will receive further updates in future releases**
This change set includes:
- New option for `cyclicAMI` and `cyclicACMI` patches to perform topological updates to enforce a 1-to-1 m...### Summary
**Note: this is beta-level code and will receive further updates in future releases**
This change set includes:
- New option for `cyclicAMI` and `cyclicACMI` patches to perform topological updates to enforce a 1-to-1 match between source and target patches to ensure conservation across AMI patches and greatly reduced pressure field perturbations. Changes based on ref [1]
- Deprecated `directAMI`; replaced by `nearestFaceAMI`
- Significant code refactoring
### Resolved bugs (If applicable)
- General AMI conservation issues/noisy pressure predictions
### Details of new models (If applicable)
- Backwards compatibility [should be] maintained
- New topological changes triggered by using a special mesh motion solver: `dynamicFvMesh dynamicMotionSolverFvMeshAMI;`
- this may be absorbed into the 'standard' `dynamicMotionSolverFvMesh` model in future releases
- Test case: [mixerVesselAMI2D_with-boundary-layers.tgz](/uploads/4ca838c78e139007cb6f2f06026bdf07/mixerVesselAMI2D_with-boundary-layers.tgz)
| dynamicMotionSolverFvMesh | dynamicMotionSolverFvMeshAMI |
| ------ | ------ |
| ![plot](/uploads/37f8e095ad01c8c10dcdb9ab40ffa74c/plot.png) v2006| ![plot](/uploads/ad90049926e774bd3127256f86f0e075/plot.png) v2006|
| ![plot](/uploads/7a0930907ab64ac5941c6bcf781e17ba/plot.png) v1912| |
Note: since the AMI code triggers topological updates, to reconstruct parallel cases:
- use `reconstructParMesh` to reconstruct the mesh at each time, followed by `reconstructPar` to reconstruct the fields; or
- use `redistributePar -reconstruct` to reconstruct both mesh and fields (in parallel)
- Code refactoring has enabled greater control of the AMI; the AMIMethod can now be set in the `polyMesh/boundary` file, e.g.
```
AMI2
{
type cyclicAMI;
inGroups 1(cyclicAMI);
nFaces 96;
startFace 6336;
matchTolerance 0.0001;
transform noOrdering;
neighbourPatch AMI1;
// New optional entries
AMIMethod faceAreaWeightAMI;
restartUncoveredSourceFace 1;
}
```
### Deprecations
The `directAMI` method has been deprecated and replaced by the faster and more robust, new `nearestFaceAMI` method. The new method creates a 1-to-1 mapping based on the nearest face.
### Risks
- Significant change to AMI code
- Not only affects cyclic patches, but other areas of the code that make use of the tooling, e.g.:
- mapped patches
- mapFieldsPar
- region models (film modelling)
- mapping function objects
### Known issues/to check
When using `dynamicMotionSolverFvMeshAMI`
- restart behaviour not currently available
### Tests
Checked on the following cases:
- pimpleFoam/laminar/mixerVesselAMI2D
- pimpleFoam/RAS/oscillatingInletACMI2D
- XiDyMFoam/annularCombustorTurbine
- {customer turbo machinery}
For each, the `dynamicMotionSolverFvMesh` option recovers v1912 behaviour
### References
[1] H.J. Aguerre, S. Márquez Damián J.M. Gimenez, N.M.Nigro, *Conservative handling of arbitrary non-conformal interfaces using an efficient supermesh*, Journal of Computational Physics 335(15)21-49. 2017. https://doi.org/10.1016/j.jcp.2017.01.018
### Acknowledgements
- Many thanks to Horacio Aguerre @aguerrehoracio and Santiago Márquez @santiagomarquezd for bringing the methodology to our attention and for many useful discussions and testing throughout these developments.v2006https://develop.openfoam.com/Development/openfoam/-/merge_requests/364ENH: Miscellaneous enhancement/features and bug fixes2020-06-11T12:30:36ZKutalmış BerçinENH: Miscellaneous enhancement/features and bug fixesv2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/363ENH: New atmospheric boundary layer (ABL) model suite (Part 1)2020-06-09T10:09:12ZKutalmış BerçinENH: New atmospheric boundary layer (ABL) model suite (Part 1)### Summary
This commit is the first main commit of a collaborative work between `OpenCFD Ltd.`-`ENERCON Gmbh`-`CENER`, for which there will be another comprehensive commit in the next release (may include SOWFA-6 - [see](https://gith...### Summary
This commit is the first main commit of a collaborative work between `OpenCFD Ltd.`-`ENERCON Gmbh`-`CENER`, for which there will be another comprehensive commit in the next release (may include SOWFA-6 - [see](https://github.com/NREL/SOWFA-6/issues/11) for exchange of ideas).
With this commit, OpenFOAM learns:
- How to comprehensively model (RANS) surface and Ekman atmosphere layers under (slightly/very) stable/unstable/neutral atmospheric stability conditions over spatiotemporal-variant terrain (e.g. partially forestry plain).
### Details
Please refer to the header file documentation for complete set of details.
- 8 new `fvOption`s that are usable with epsilon/omega-based RANS closure models:
- atmAmbientTurbSource
- atmBuoyancyTurbSource
- atmCoriolisUSource
- atmLengthScaleTurbSource
- atmPlantCanopyTurbSource
- atmPlantCanopyUSource
- atmPlantCanopyTSource
- atmNutSource
- 7 new `wall function`s shipped with `PatchFunction1` and `TimeFunction1` support for the input entries:
- atmAlphatkWallFunction
- atmEpsilonWallFunction
- atmNutkWallFunction
- atmNutUWallFunction
- atmNutWallFunction
- atmOmegaWallFunction
- atmTurbulentHeatFluxTemperature
- A new function object to quantify the [Obukhov length](http://glossary.ametsoc.org/wiki/Obukhov_length#:~:text=Obukhov%20length,consumption%20of%20turbulence%20kinetic%20energy.):
- ObukhovLength
- 3 new tutorials involving `buoyantBoussinesqSimpleFoam` verifications in comparison to field measurements:
- `verificationAndValidation/atmosphericFlows/atmFlatTerrain`
- verification with the `Leipzig` field experiment
- illustration of precursor/successor field mapping
- `verificationAndValidation/atmosphericFlows/atmForestStability`
- verification with the Sweden field experiment
- 2 new actuator disk modelling approaches in the existing `actuationDiskSource` wherein the incoming velocity measurements can now be held by using `topoSet`s.
### Resolved bugs (If applicable)
None.
### Verifications
The model suite was verified for `neutral stability` by the `Leipzig` experiment for which all the details can be found in, and can be reproduced by `verificationAndValidation/atmosphericFlows/atmFlatTerrain`
`buoyantBoussinesqSimpleFoam-kEpsilon`:
<img src="/uploads/96349ecee9d1561d196795b266d22cdd/u-z.png" width="250" height="500">
<img src="/uploads/146d8921d130e210f27b21f1c8a902ce/v-z.png" width="250" height="500">
`buoyantBoussinesqSimpleFoam-kOmegaSST`:
<img src="/uploads/aead7fafb086e2d918302d45660e8e61/u-z.png" width="250" height="500">
<img src="/uploads/bca10f4506b06986ed47c2114e9c43ad/v-z.png" width="250" height="500">
In addition, the model suite was verified for all spectrum of stability conditions with forestry ground by the `Sweden(?)` experiment for which all the details can be found in, and can be reproduced by `verificationAndValidation/atmosphericFlows/atmForestStability`
`buoyantBoussinesqSimpleFoam-kEpsilon` (wind speed, turbulent kinetic energy, and wind veer profiles, respectively):
<img src="/uploads/370aca91fc19f2fbb719ce4655ad4618/uNorm-zNorm.png" width="600" height="500">
<img src="/uploads/e024e77ee5460299774ccaeff9e360c5/kNorm-zNorm.png" width="600" height="500">
<img src="/uploads/d292e5901e01dbb0bc517d9c76be79b2/veer-zNorm.png" width="600" height="500">
with the Obukhov lengths:
veryStable = 44.7979
stable = 300.723
slightlyStable = 859.962
neutral = undefined
slightlyUnstable = -547.088
unstable = -265.992
`buoyantBoussinesqSimpleFoam-kOmegaSST` (wind speed, turbulent kinetic energy, and wind veer profiles, respectively):
<img src="/uploads/4e19e3e02e97044e8d2dda9e718e2e32/uNorm-zNorm.png" width="600" height="500">
<img src="/uploads/8803c8bbe63de1ac2015310615521fa2/kNorm-zNorm.png" width="600" height="500">
<img src="/uploads/c938b5ae2d5fd19e5116bd00b910809a/veer-zNorm.png" width="600" height="500">
with the Obukhov lengths:
veryStable = 67.5555
stable = 396.562
slightlyStable = 1147.69
neutral = undefined
slightlyUnstable = -707.885
unstable = -319.368
Furthermore, the persistence of atmospheric boundary layer inlet profiles downstream were quantified in comparison to the profiles near the outlet, and it was found out that the overall discrepancy is within 2%:
(wind speed, turbulent kinetic energy, turbulence intensity, and temperature horizontal profiles, respectively)
<img src="/uploads/e01e5f6429cb054adda7bddc649d4348/Horizontal_MagU.png" width="600" height="500">
<img src="/uploads/78472b8205b8c79a611793a9b0a6933a/Horizontal_k.png" width="600" height="500">
<img src="/uploads/f001568734ac5b398018ba1fd5349aa2/Horizontal_TI.png" width="600" height="500">
<img src="/uploads/21eaa5b3ec305eacb8f2af11c0226985/Horizontal_T.png" width="600" height="500">
### Risks
- **User input change:** `nutkAtmRoughWallFunction` is renamed without extra support to `atmNutkWallFunction` (ensured the bitwise regression)
- Since the majority of the utilities above are new, the potential effects on the existing utilities would only be unexpected.
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/361DOC: Elaborate the usage of topoSet2020-06-08T14:52:12ZKutalmış BerçinDOC: Elaborate the usage of topoSet### Summary
Documentation and usage examples for `topoSet` are considerably improved.
### Risks
Considerably low.### Summary
Documentation and usage examples for `topoSet` are considerably improved.
### Risks
Considerably low.v2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/360ENH: enable user to control re-writing of function object output file headers...2020-11-30T09:54:11ZAndrew HeatherENH: enable user to control re-writing of function object output file headers. See #1556v2006Andrew 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/356ENH: add directionalMeshWave functionality2020-04-30T10:32:17ZKutalmış BerçinENH: add directionalMeshWave functionality### Summary
For a given point within a given mesh, the existing `meshWave` method gives
the orthogonal distance to a patch. In meshes with very steep terrain (e.g.
a hill of 90 [deg]), this might be problematic for the fields th...### Summary
For a given point within a given mesh, the existing `meshWave` method gives
the orthogonal distance to a patch. In meshes with very steep terrain (e.g.
a hill of 90 [deg]), this might be problematic for the fields that require
the distance to the patch associated with the terrain surface.
`directionalMeshWave` is a variant of `meshWave` distance-to-patch method,
which ignores the component in the specified direction. Can be used e.g. to
calculate the distance in the z-direction only.
Requirement by CENER
Implementation by Mattijs Janssens
### Resolved bugs (If applicable)
None
### Details of new models (If applicable)
##### meshWave
![wallDistance_meshWave](/uploads/354fa2b0bc3c76b5beeb7cd5966dd204/wallDistance_meshWave.png)
##### directionalMeshWave
![wallDistance_directional](/uploads/d818fa02f4d32c3d4fc98e2c11f14008/wallDistance_directional.png)
### Risks
Nonev2006Mattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/355ENH: Injection models - added entry to ignore injection positions outside of ...2020-05-15T08:29:35ZAndrew HeatherENH: Injection models - added entry to ignore injection positions outside of the meshInjection models: added option to ignore injection locations that are out-of-bounds (outside of the domain)
Example in the injection model input dictionary:
// New entry to ignore injections out of bounds
ignoreOutOfBounds yes;Injection models: added option to ignore injection locations that are out-of-bounds (outside of the domain)
Example in the injection model input dictionary:
// New entry to ignore injections out of bounds
ignoreOutOfBounds yes;v2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/354ENH: Improve and verify atmBoundaryLayerInlet conditions2020-06-05T13:42:24ZKutalmış BerçinENH: Improve and verify atmBoundaryLayerInlet conditions### Summary
- Related to the log-law type ground-normal inflow boundary conditions for
wind velocity and turbulence quantities for homogeneous, two-dimensional,
dry-air, equilibrium and neutral atmospheric boundary layer (ABL) m...### Summary
- Related to the log-law type ground-normal inflow boundary conditions for
wind velocity and turbulence quantities for homogeneous, two-dimensional,
dry-air, equilibrium and neutral atmospheric boundary layer (ABL) modelling
- ENH: Generalises Richards-Hoxey expressions. This allows to input experimental profiles or heuristic spatial-variant profiles in a mathematically consistent way.
Yang, Y., Gu, M., Chen, S., & Jin, X. (2009).
New inflow boundary conditions for modelling the neutral equilibrium
atmospheric boundary layer in computational wind engineering.
J. of Wind Engineering and Industrial Aerodynamics, 97(2), 88-95.
DOI:10.1016/j.jweia.2008.12.001
- ENH: Adds new generalised `atmBoundaryLayerInletOmega` boundary condition by using:
Yang, Y., Gu, M., & Jin, X., (2009).
New inflow boundary conditions for modelling the
neutral equilibrium atmospheric boundary layer in SST k-ω model.
In: The Seventh Asia-Pacific Conference on Wind Engineering,
November 8-12, Taipei, Taiwan.
- ENH: Adds new verification case `tutorials/verificationAndValidation/atmosphericFlows/HargreavesWright_2007` by using:
Rectangular prism shown in FIG 1 of
Hargreaves, D. M., & Wright, N. G. (2007).
On the use of the k–ε model in commercial CFD software
to model the neutral atmospheric boundary layer.
Journal of wind engineering and
industrial aerodynamics, 95(5), 355-369.
DOI:10.1016/j.jweia.2006.08.002
Benchmark data:
HW, 2007 FIG 6
- BUG: Fixes value-entry behaviour in `atmBoundaryLayerInlet` (fixes #1578) (Thanks to @perjorgensen for the bug report).
- Without this change:
- for serial-parallel computations, if `value` entry is available in
an `atmBoundaryLayerInlet` BC, the theoretical ABL profile expressions
are not computed, and the `value` entry content is used as a profile data
- for parallel computations, if `value` entry is not available, `decomposePar`
could not be executed.
- With this change:
- assuming `value` entry is always be present, the use of `value` entry for
the ABL profile specification is determined by a flag `initABL`
- the default value of the optional flag `initABL` is `true`, but whenever
`initABL=true` is executed, `initABL` is overwritten as `false` for the
subsequent runs, so that `value` entry can be safely used.
- BUG: Ensures `atmBoundaryInlet` conditions are Galilean-invariant (fixes #1692)
- DOC: Improves `atmBoundaryLayerInlet` header documentation
### Resolved bugs (If applicable)
#1578
#1692
### Details of new models (If applicable)
##### kEpsilon-parallelHierarchical8-Gcc74DP:
![Ux_upstream](/uploads/8586589de26be6cbf33602f420b1872d/Ux_upstream.png)
![Ux_mid](/uploads/e89a57641ff4799d90e60b760bac2cb8/Ux_mid.png)
![Ux_downstream](/uploads/5227ff27d82ad807ed12b216f4d8d87e/Ux_downstream.png)
![epsilon](/uploads/75d3f250399b9ecd27ccab11f424299c/epsilon.png)
![k](/uploads/9796779be6eebebdc8ac92ec22e3335f/k.png)
##### kOmegaSST-parallelHierarchical8-Gcc74DP:
![Ux_upstream](/uploads/4a7d7c94ea8b5a3147b16d0b05013be4/Ux_upstream.png)
![Ux_mid](/uploads/be83cc10455335ae3c85f9237fc1e489/Ux_mid.png)
![Ux_downstream](/uploads/1f31d8d2ef9872f4be0ac0dba5e8234b/Ux_downstream.png)
![k](/uploads/ecbebd53a4c6614877dece10e61f2a71/k.png)
![omega](/uploads/0420c6c1d4637f756d92992b7f884568/omega.png)
### Risks
##### Regression
Bitwise regression is preserved.
##### Changes to user input
- `zGround` is silently deprecated, and its functionality is now inherently computed.
- `d` is introduced for `displacement height`.
- ~~`Uref` and `Zref` are noisily deprecated:~~
- ~~`Uref` is renamed as `uRef` since it refers to a scalar rather than a vector `U`.~~
- ~~`Zref` is renamed as `zRef` since it was always a scalar.~~
### Future work
- These inlet conditions are limited to the surface layer portion of the atmospheric boundary layer:
- Neutral-stratified
- Dry-air
- No Ekman layer
- These inlet conditions can/should be generalised to stable/unstable stratification as well as into the Ekman layer since neutral conditions are **very rare**.
- Spatial variation in input of aerodynamic roughness length, `z0`, and displacement height, `d`.
- Further consistent boundary conditions are required to improve the verification case in terms of `nut` predictions for
- Top boundaries
- Ground boundariesv2006Andrew HeatherAndrew Heatherhttps://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 Heather