openfoam merge requestshttps://develop.openfoam.com/Development/openfoam/-/merge_requests2022-12-08T11:36:30Zhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/571ENH: Evapotranspiration utilities2022-12-08T11:36:30ZKutalmış BerçinENH: Evapotranspiration utilitiesEP1950EP1950v2212Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/569ENH: resolutionIndex: new function object to evaluate LES/DES resolution2022-11-24T10:16:58ZKutalmış BerçinENH: resolutionIndex: new function object to evaluate LES/DES resolution#### Acknowledgement
OpenCFD would like to acknowledge and thank **[Prof. Ismail Celik](https://directory.statler.wvu.edu/faculty-staff-directory/ismail-celik)** for his contributions, elaborate suggestions and help, and critical recomm...#### Acknowledgement
OpenCFD would like to acknowledge and thank **[Prof. Ismail Celik](https://directory.statler.wvu.edu/faculty-staff-directory/ismail-celik)** for his contributions, elaborate suggestions and help, and critical recommendations. Highly appreciated.
#### Problem statement
Grid independency studies and grid
adaptation for implicit LES/DES are nontrivial
and intractable due to the inherent coupling
between spatial resolution and subgrid-scale
modelling.
#### Problem solution
- In the literature, various metrics which do not
use any experimental or DNS data and which
is based on a single mesh were introduced.
- To enable assessments for LES/DES
resolution, a single-mesh resolution index
with three submodels is introduced:
- Pope (2000)'s index using turbulent kinetic
energy variables,
- Celik et al. (2005) and Celik et al. (2009)'s
index using
- Effective Kolmogorov length scale, and
- Effective viscosity.
#### Theory
<img src="/uploads/ad75d2ce147e118b0d200a05b7ad4744/Screenshot_from_2022-11-15_15-16-45.png" width="50%" height="50%">
<img src="/uploads/9669fbd2183fd483fc759fec5abfa443/Screenshot_from_2022-11-15_15-17-35.png" width="50%" height="50%">
<img src="/uploads/d98e042f34c73f8908cbf4a477174f46/Screenshot_from_2022-11-15_15-17-42.png" width="50%" height="50%">
#### Usage
<img src="/uploads/78433a8ae1a87f96c21ecfb341fb22ea/Screenshot_from_2022-11-15_15-17-50.png" width="50%" height="50%">
<img src="/uploads/0ca3187362cd7ab19aa28cfa9537d47c/Screenshot_from_2022-11-15_15-17-58.png" width="50%" height="50%">
<img src="/uploads/bc3db2cd28f3421b59d0cccc09328870/Screenshot_from_2022-11-15_15-18-06.png" width="50%" height="50%">
<img src="/uploads/9531120c8da53982b8be355003dfb596/Screenshot_from_2022-11-15_15-18-14.png" width="50%" height="50%">
#### Tests
[resolutionIndex-tests.zip](/uploads/889447b92fa794ac6482894b63e40b6d/resolutionIndex-tests.zip)
#### Results
![Screenshot_from_2022-11-15_15-22-13](/uploads/397de8e179ac7d423aec04436fea533f/Screenshot_from_2022-11-15_15-22-13.png)
![Screenshot_from_2022-11-15_15-22-22](/uploads/2cbd8f4146a4af6a822612af3aa23353/Screenshot_from_2022-11-15_15-22-22.png)
![Screenshot_from_2022-11-15_15-22-29](/uploads/ba00ded6583dd4bb9cdb6340a50f7d75/Screenshot_from_2022-11-15_15-22-29.png)
![Screenshot_from_2022-11-15_15-22-39](/uploads/b2b5bfd848dcd71a221540aa32e5cc65/Screenshot_from_2022-11-15_15-22-39.png)
#### Discussion
- Resolution-index models need good
estimators for the subgrid-scale turbulent
kinetic energy (ksgs) field.
- The DES models of `SpalartAllmaras` seem to
produce zero-valued ksgs fields – Bug ticket
is issued: [GL2620](https://develop.openfoam.com/Development/openfoam/-/issues/2620)
- DES models may need a chain of
operations – see 'system/{controlDict,FOresolutionIndex}' in
DES cases in order to mask out the RANS regions.
#### References
- Pope, S. B. (2000). Turbulent flows. Cambridge, UK: Cambridge Univ. Press
- Celik, I. B., Cehreli Z. N., Yavuz I. (2005). Index of resolution quality for large
eddy simulations. Journal of Fluids Engineering. 127:949–958.
- Celik, I., Klein, M., & Janicka, J. (2009). Assessment measures for engineering LES applications.
Journal of fluids engineering, 131(3)
#### Metadata
EP#1997
* [x] `linux64ClangDPInt32Opt` (clang13)
* [x] `linux64GccDPInt32Opt`
* [x] `linux64GccSPDPInt64Debug`
* [x] Alltest: No new errorv2212Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/568Add spatial filtering and ensight support to MappedFile and external file sou...2023-05-30T18:58:14ZMark OLESENAdd spatial filtering and ensight support to MappedFile and external file source (#2609)- Sampling from high resolution onto lower resolution surfaces adds spatial frequency aliasing.
- Adding a multi-sweep median filter helps alleviate this problem.
- Added support for EnSight format is useful, since it allows visual post-...- Sampling from high resolution onto lower resolution surfaces adds spatial frequency aliasing.
- Adding a multi-sweep median filter helps alleviate this problem.
- Added support for EnSight format is useful, since it allows visual post-processing results to also be reused for input.
Depends on !573v2212Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/566More consistent use of combineReduce, simpler and/or reductions2022-11-08T16:48:23ZMark OLESENMore consistent use of combineReduce, simpler and/or reductions- update code base to reflect the consolidated list/map reductions
- replace old code use of `returnReduce(list.size(), sumOp<label>())` in favour of `returnReduceOr(list.size())` which is cleaner to write/understand and also marginally...- update code base to reflect the consolidated list/map reductions
- replace old code use of `returnReduce(list.size(), sumOp<label>())` in favour of `returnReduceOr(list.size())` which is cleaner to write/understand and also marginally more efficient
General overview under
https://develop.openfoam.com/Development/openfoam/-/wikis/coding/patterns/parallel
- [broadcast](https://develop.openfoam.com/Development/openfoam/-/wikis/coding/patterns/parallel#broadcast)
- [reductions](https://develop.openfoam.com/Development/openfoam/-/wikis/coding/patterns/parallel#plain-reductions)
- [more reductions](https://develop.openfoam.com/Development/openfoam/-/wikis/coding/patterns/parallel#other-reductions)v2212Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/564ENH: chtMultiRegionFoam - add frozenFlow option2022-12-14T10:59:02ZKutalmış BerçinENH: chtMultiRegionFoam - add frozenFlow optionAdds `frozenFlowOption` into `chtMultiRegion*` solvers.
#### Meta-data
* EP1924
* Test case: [multiRegionHeater.zip](/uploads/a7273dfb758f76e5ef9f99a76f299939/multiRegionHeater.zip)
* [x] `linux64ClangDPInt32Opt` (clang11)
* [x] `linux...Adds `frozenFlowOption` into `chtMultiRegion*` solvers.
#### Meta-data
* EP1924
* Test case: [multiRegionHeater.zip](/uploads/a7273dfb758f76e5ef9f99a76f299939/multiRegionHeater.zip)
* [x] `linux64ClangDPInt32Opt` (clang11)
* [x] `linux64GccDPInt32Opt`
* [x] `linux64GccSPDPInt64Debug`
* [x] Alltest: No new error/No change in existing outputv2212Kutalmış BerçinKutalmış Berçinhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/563ENH: functionObjects: refactor and extend histogram2022-11-14T17:34:56ZKutalmış BerçinENH: functionObjects: refactor and extend histogram- new submodels:
- 'equalBinWidth': groups data into bins of equal widths (previous behaviour)
- 'unequalBinWidth': groups data into bins of unequal widths
- output files per time-step are replaced with a single output file
- silen...- new submodels:
- 'equalBinWidth': groups data into bins of equal widths (previous behaviour)
- 'unequalBinWidth': groups data into bins of unequal widths
- output files per time-step are replaced with a single output file
- silently deprecates the input entries: 'setFormat' and 'formatOptions'
#### Meta-data
* EP1969
* [x] `linux64ClangDPInt32Opt` (clang11)
* [x] `linux64GccDPInt32Opt`
* [x] `linux64GccSPDPInt64Debug`
* [x] Alltest: No new error/No change in existing outputv2212Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/562ENH: noiseModels - replaced graph usage by writeFile2022-10-04T13:50:34ZAndrew HeatherENH: noiseModels - replaced graph usage by writeFileHeader information now includes, e.g.
f [Hz] vs P(f) [Pa]
Lower frequency: 2.500000e+01
Upper frequency: 5.000000e+03
Window model: Hanning
Window number: 2
Window samples: 512
Window overlap %: 5.000000e+01
...Header information now includes, e.g.
f [Hz] vs P(f) [Pa]
Lower frequency: 2.500000e+01
Upper frequency: 5.000000e+03
Window model: Hanning
Window number: 2
Window samples: 512
Window overlap %: 5.000000e+01
dBRef : 2.000000e-05
Area average: false
Area sum : 6.475194e-04
Number of faces: 473
Note: output files now have `.dat` extension
Testing: check output from
`$FOAM_TUTORIALS/incompressible/pimpleFoam/LES/vortexShed`v2212Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/561ENH: faceZoneReferenceTemperature: new heatTransferCoeff model2022-11-21T15:59:47ZKutalmış BerçinENH: faceZoneReferenceTemperature: new heatTransferCoeff modelEP1947 - see `faceZoneReferenceTemperature.H` for model usage.EP1947 - see `faceZoneReferenceTemperature.H` for model usage.v2212Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/560Integration of grey area turbulence models from Upstream CFD2022-11-07T11:33:34ZAndrew HeatherIntegration of grey area turbulence models from Upstream CFD## Summary
- Refactoring of Spalart-Allmaras (SA) models
- New class hierarchy to reduce code duplication
- Trip term (ft2) now on a user switch
- Was previously active, now deactivated by default
- Enhancements to DES models...## Summary
- Refactoring of Spalart-Allmaras (SA) models
- New class hierarchy to reduce code duplication
- Trip term (ft2) now on a user switch
- Was previously active, now deactivated by default
- Enhancements to DES models to include grey area model effects in collaboration with @MarianFuchs, Upstream CFD GmbH
- sigma extension for SA and k-omega DES, DDES models
- New LES delta functions
- `DeltaOmegaTilde`
- `SLADelta`
- New sigma LES model
- Extended `turbulenceFields` function object
- Added writing of DES shielding function (fd) and LES region indicator fields
- Added warnings for DES model usage; DDES forms should be employed instead
## Details of new models (If applicable)
### Grey area turbulence
The new sigma treatment is available for the models:
- `SpalartAllmarasDES`, `SpalartAllmarasDDES`, `SpalartAllmarasIDDES`
- `kOmegaSSTDES`, `kOmegaSSTDDES`, `kOmegaSSTIDDES`
and activated via the `useSigma` switch, e.g.
```
simulationType LES;
LES
{
LESModel SpalartAllmarasDDES;
SpalartAllmarasDDESCoeffs
{
useSigma true; // <-- new entry
}
//delta SLADelta; // DeltaOmegaTilde;
delta DeltaOmegaTilde;
DeltaOmegaTildeCoeffs
{}
...
}
```
Test case: [wallMountedHump.tgz](/uploads/cea302870310f2b2bf17dc81ff1fbcae/wallMountedHump.tgz) provided by @MarianFuchs
References:
- Mockett, C. et al. (2015). Two Non-zonal Approaches to Accelerate RANS to LES Transition of Free Shear Layers in DES. In: Girimaji, S., Haase, W., Peng, SH., Schwamborn, D. (eds) Progress in Hybrid RANS-LES Modelling. Notes on Numerical Fluid Mechanics and Multidisciplinary Design, vol 130. Springer, Cham. https://doi.org/10.1007/978-3-319-15141-0_15
- Fuchs, M. et al. (2016). Further Assessment of the Grey-Area Enhanced σ-DES Approach for Complex Flows. ERCOFTAC Bulletin 108
- Fuchs, M. et al. (2015). Assessment of novel DES approach with enhanced SGS modelling for prediction of separated flow over a delta wing. AIAA 2015-3433. https://doi.org/10.2514/6.2015-3433
### Extended turbulenceFields function object
The `turbulenceFields` function object now included writing for:
- `fd` : DES shielding function
- `LESRegion` : LES indicator field
An example usage has been added to the `$FOAM_TUTORIALS/incompressible/pimpleFoam/LES/vortexShed` case:
```
functions
{
turbulenceFields1
{
type turbulenceFields;
libs (fieldFunctionObjects);
writeControl writeTime;
fields (fd LESRegion);
}
...
```
### Risks
- Possible regressions in SA models following code refactoringv2212Kutalmış BerçinKutalmış Berçinhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/555overset modifications: allow overset pacthes overlap, allow fringe faces walk...2022-11-14T15:49:00ZSergio Ferrarisoverset modifications: allow overset pacthes overlap, allow fringe faces walk, mass conservation update### Summary
This merge addresses three main topics:
1) Allow overset patches displace outside the background domain.
2) Allow fringe faces away from the HOLE cells in the background domain
3) Some option to improve mass conservation in...### Summary
This merge addresses three main topics:
1) Allow overset patches displace outside the background domain.
2) Allow fringe faces away from the HOLE cells in the background domain
3) Some option to improve mass conservation in overset
1) overset patches can displace outside the domain. The problem of selecting the correct donors was addressed creating a new type of cell type named "POROUS". In these cells, DONORS can't be selected as they lay close to the end of the background domain. Any attempt to find a suitable donor proved to be unstable. Therefore these cells are not interpolated but let connected withing its mesh and solved locally. As these cells are normally close to wall without a proper BC applied , if left unweighted they lead to divergency, to avoid this a small damping effect is introduce using fvOption. Tests showed that damping U is robust enough to keep U-p stable.
Tutorials:
/tutorials/multiphase/overInterDyMFoam/twoSquaresOutDomain/
/tutorials/incompressible/overPimpleDyMFoam/rotatingSquare/
The fvOption is as:
limitU
{
type velocityDampingConstraint;
active true;
selectionMode cellType;
UMax 0;
C 1;
}
A constant C of '1' seems to be working generally. Of course , the solution on this cell is not accurate as an artificial porous cell is being introduced, on the other hand, cells next to wall will damp U anyway by shear stress.
NOTE: This feature was tested for inverseDistance, trackingInverseDistance, volumeWeight cell stencils. This approach does not support the overlapping of two inset meshes on top of the background mesh.
2) Allow fringe faces away from the HOLE cells in the background domain
In the overset approach is advantageous if the interpolated cells are far removed from areas were the flow experiences large gradients. Specially next to HOLES cells created by the inset mesh on the background mesh. Initially, the INTERPOLATED cells where located next to the
HOLES cells. This created a extra burden to the solver to solve for continuity which resulted in pressure peaks.
As a result we developed a way to make a 'walk' away from the HOLE cells into the bulk of the domain in order to interpolate smoother fields.
To use a different layers for the interpolated cells In the fvSchemes is specified:
oversetInterpolation
{
method inverseDistance;
searchBox (0 0 0)(0.1 0.1 0.1);
searchBoxDivisions (130 130 1);
holeLayers 4;
useLayer 2;
}
`holeLayers` specifies how many layer out of the HOLE cells will be walked. The code will report an average ratio of the volume on each mesh, ideally one. In the obove set up the walk will be done for 4 layers and layer 2 will be used.
Tutorial :
tutorials/incompressible/overPimpleDyMFoam/simpleRotor/
tutorials/multiphase/overInterDyMFoam/floatingBody/
tutorials/multiphase/overInterDyMFoam/rigidBodyHull/
The following is a typical improvement expected on residuals for p:
![pResNoLayers](/uploads/185098ed4e69c09aa6b78271076be9ff/pResNoLayers.png)
![pRes4Layers](/uploads/7f22e45f76cc5010463f8e781bef0606/pRes4Layers.png)
NOTE: This feature was tested for inverseDistance, trackingInverseDistance, volumeWeight cell stencils
This feature was not extensibly tested to work with 1) (overlapping patches). So, the walks to find the layers could need to be reviewed.
3) Some options to improve mass conservation in overset
The overset solvers were updated to make them more consistent. Experimental keyword were removed. i.e:
massFluxInterpolation
ddtCorr
correctPhi
The new option `oversetAdjustPhi` adds a flux correction outside the pressure Eq. This flag adjusts the flux in and out of the fringes faces in the inner loop of PIMPLE.
This feature is still experimental as the outcome of this approach is still under investigation.
It proved to work in some cases. The flag is specified in the fvSolution:
tutorials/multiphase/overInterDyMFoam/simpleRotor/
PIMPLE
{
momentumPredictor no;
nOuterCorrectors 1;
nCorrectors 3;
nNonOrthogonalCorrectors 0;
oversetAdjustPhi true;
}
the mass conservation with and without oversetAdjustPhi for the above tutorial case:
![NonOuterMassCorr](/uploads/635ecca36e8ce847314f9dda3ea6974b/NonOuterMassCorr.png)
![outerMassCorr](/uploads/3929f131a440f7f1e0403eec8665a9e4/outerMassCorr.png)
The other option for mass conservation is the implicit correction specified on the field patch as:
free
{
type overset;
massCorrection true;
value uniform 300;
}
The overset patch was made an lduInterface in order to have a hook inside the linear solver to add a sum(phi) = 0 on fringe faces. It is important to note that this restriction is added in a Amul function and in the linear solvers the actual variable being converged is to the field itself but a pre-condition variable, only the first residuals are calculated using p and its flux. Therefore, the application of this restriction have some theoretical gaps. Nonetheless, the flux balance on these faces out of the linear solver DO satisfy sum(phi) = 0.
See example for overLaplacian
tutorials/basic/overLaplacianDyMFoam/1DheatTransferMassConservation/
Switching oh/off the massCorrection flag results in a better flux across the overset patch.
This approach wasn't very successful when applied to overInterFoam cases and more study might be needed, even when the sum(phi) does go to zero, the overall conservation is not fully conserved.
NOTE: It was observed that using interpolated cells as donors is possible as far as the relative number is not too large. By default `allowInterpolatedDonors` is true. But under some circumstance the user might prefer not to use them.v2212Mattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/550s2s linear system solution using lduMatrix2022-06-15T12:26:28ZSergio Ferrariss2s linear system solution using lduMatrix s2s linear system solution using lduMatrix for qr s2s linear system solution using lduMatrix for qrv2206Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/549support surface writer output transform (#2505)2022-06-13T11:37:19ZMark OLESENsupport surface writer output transform (#2505)- this allows the "relocation" of sampled surfaces. For example,
to reposition into a different coordinate system for importing
into CAD.
- incorporate output scaling for all surface writer types.
This was previously done on an a...- this allows the "relocation" of sampled surfaces. For example,
to reposition into a different coordinate system for importing
into CAD.
- incorporate output scaling for all surface writer types.
This was previously done on an adhoc basis for different writers,
but with now included in the base-level so that all writers
can automatically use scale + transform.
Example:
```
formatOptions
{
vtk
{
scale 1000; // m -> mm
transform
{
origin (0.05 0 0);
rotation axisAngle;
axis (0 0 1);
angle -45;
}
}
}
```
An example of transform in action. Used to reposition the output slices:
![transform-surfaceWrite](/uploads/69bf67dbc06c8622a008d84eed4dd8cc/transform-surfaceWrite.png)v2206Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/548species and heat adsorption BC's and fvOption source2022-06-14T11:28:42ZSergio Ferrarisspecies and heat adsorption BC's and fvOption sourceImplementation of species and heat adsorption BC's.
Implementation of a fvOption source on cells attached to patchesImplementation of species and heat adsorption BC's.
Implementation of a fvOption source on cells attached to patchesv2206Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/547ENH: DMD: add multi-patch input functionality2022-06-08T13:23:09ZKutalmış BerçinENH: DMD: add multi-patch input functionalityEP#1796, EP#1873
### Summary
This feature allows users to specify multiple patches in DMD calculations:
```
DMD1
{
// Optional entries
// Option-1
patch <word>;
// Option-2
patches ...EP#1796, EP#1873
### Summary
This feature allows users to specify multiple patches in DMD calculations:
```
DMD1
{
// Optional entries
// Option-1
patch <word>;
// Option-2
patches (<wordRes>);
}
```
The DMD snapshots concatenate each patch field, e.g. for velocity field:
`(u1 v1 w1 u2 v2 w2 u1_o v1_o w1_o u2_o v2_o w2_o)`
where "1" and "2" indicate different patches, "u v w" different components of a vector, and "o" the previous DMD step.
Also, the most expensive parts of the `STDMD` implementation were identified and reworked resulting in various reductions in calculation runtime.
For example, the timing of the standard "cylinder2D" tutorial (i.e. with all `STDMD` function objects are active), the duration of the parallel 12-processor simulation has been reduced from ~200secs to ~80secs during local tests, approximately a ~60% reduction.
Another test of DrivAer was reported to provide approximately 10x speedup.
### Tests
* [x] `linux64ClangDPInt32Opt` (clang11)
* [x] `linux64GccDPInt32Opt`
* [x] `linux64GccSPDPInt64Debug`
* [x] Alltest: No new errorv2206Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/546ENH: new tabulated anisotropic solid transport model2022-06-08T12:59:50ZKutalmış BerçinENH: new tabulated anisotropic solid transport modelEP1878
#### Summary
This feature allows users to specify tabulated anisotropic thermal conductivity
properties for solid thermodynamics with an optional coordinate system specification.
The transport model is called `tabulatedAnIso`, ...EP1878
#### Summary
This feature allows users to specify tabulated anisotropic thermal conductivity
properties for solid thermodynamics with an optional coordinate system specification.
The transport model is called `tabulatedAnIso`, and as an example, the model
is specified in `thermophysicalProperties` file as follows:
```
thermoType
{
type heSolidThermo;
mixture pureMixture;
transport tabulatedAnIso;
thermo hTabulated;
equationOfState icoPolynomial;
specie specie;
energy sensibleEnthalpy;
}
mixture
{
specie
{
molWeight 50;
}
transport
{
kappa table
(
// T kappa
( 200 (80 80 80) )
( 400 (80 80 80) )
);
// kappa <Function1<scalar>>;
}
thermodynamics
{
Hf 0;
Cp
(
( 200 450)
( 400 450)
);
Sf 0;
}
equationOfState
{
rhoCoeffs<8> (8000 0 0 0 0 0 0 0);
}
}
coordinateSystem
{
type cylindrical;
origin (0 0 0);
rotation
{
type cylindrical;
axis (1 0 0);
}
}
```
#### Tests
- [x] `linux64ClangDPInt32Opt`
- [x] `linux64GccDPInt32Opt`
- [x] `linux64GccSPDPInt64Debug`
- [x] Alltestv2206Mattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/545ENH: setTurbulenceFields: new automatic initialisation method for turbulence ...2022-06-14T13:22:18ZKutalmış BerçinENH: setTurbulenceFields: new automatic initialisation method for turbulence fields#### Acknowledgement
OpenCFD would like to acknowledge and thank **Prof. Rémi Manceau** for providing the governing equations for `setTurbulenceFields`, elaborate suggestions and critical recommendations. Highly appreciated.
#### Aim...#### Acknowledgement
OpenCFD would like to acknowledge and thank **Prof. Rémi Manceau** for providing the governing equations for `setTurbulenceFields`, elaborate suggestions and critical recommendations. Highly appreciated.
#### Aim
Implement and evaluate the two-step automatic initialization procedure for RANS computations introduced by Manceau (n.d.).
#### Methodology
- Plane channel flow at ReTau=180, 395, 590 (Moser et al., 1991) and =4179 (Lozano-Duran & Jimenez, 2014)
- NASA Turbulence Modelling Resource on various physics:
- 2DCC: 2D Convex curvature boundary layer
- 2DML: 2D Mixing layer
- 2DB: 2D Bump-in-channel
- 2DZP: 2D Zero pressure gradient flat plate
- 2DANW: 2D Airfoil near-wake
#### Results
**2DML: 2D Mixing layer**
<img src="/uploads/e00398017af9f013108c7ecb5dd288cb/Screenshot_from_2022-05-31_11-25-20.png" width="75%" height="75%">
<img src="/uploads/f1866890400631b1306f31713c981074/Screenshot_from_2022-05-31_11-25-30.png" width="75%" height="75%">
**Plane channel flow, ReTau=4179**
<img src="/uploads/f085f52634d45a085bd90d05da3be854/Screenshot_from_2022-05-31_11-31-54.png" width="75%" height="75%">
### Meta-data
EP#1805
* [x] `linux64ClangDPInt32Opt` (clang11)
* [x] `linux64GccDPInt32Opt`
* [x] `linux64GccSPDPInt64Debug`
* [x] Alltest: No new error
### Discussion
- The initialisation method may help to improve convergence in the first `O(10)` time steps, and fidelity of results.
- The initialisation method does not take input turbulence intensity and/or input viscosity ratios (mut/mu) into account.v2206Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/544ENH: EBRSM: new elliptic-blending Reynolds-stress turbulence model2022-06-08T10:41:01ZKutalmış BerçinENH: EBRSM: new elliptic-blending Reynolds-stress turbulence model#### Acknowledgement
OpenCFD would like to acknowledge and thank **Prof. Rémi Manceau**, **Dr. Michael Karl Stoellinger**, and **Dr. Ardalan Javadi** for their contributions, elaborate suggestions and help, and critical recommendations....#### Acknowledgement
OpenCFD would like to acknowledge and thank **Prof. Rémi Manceau**, **Dr. Michael Karl Stoellinger**, and **Dr. Ardalan Javadi** for their contributions, elaborate suggestions and help, and critical recommendations. Highly appreciated.
#### Aim
Implement and evaluate the elliptic-blending Reynolds-stress turbulence models proposed by [Manceau (2015) - Appendix C](https://doi.org/10.1016/j.ijheatfluidflow.2014.09.002).
#### Methodology
- Plane channel flow at ReTau=180, 395, 590 (Moser et al., 1991) and =4179 (Lozano-Duran & Jimenez, 2014)
- NASA Turbulence Modelling Resource on various physics:
- 2DCC: 2D Convex curvature boundary layer
- 2DML: 2D Mixing layer
- 2DB: 2D Bump-in-channel
- 2DZP: 2D Zero pressure gradient flat plate
- 2DANW: 2D Airfoil near-wake
#### Results
**Plane channel flow, ReTau=180**
<img src="/uploads/6c9899cad5929f65d869d3d63a90c55f/all_setups_yPlus_vs_uPlus.png" width="25%" height="25%">
<img src="/uploads/6520c01105e1aaa63434d67badf9b83e/all_setups_yPlus_vs_Ruu.png" width="25%" height="25%">
<img src="/uploads/1f99612fea236e501b1c117c43b3a694/all_setups_yPlus_vs_Rvv.png" width="25%" height="25%">
<img src="/uploads/439522e1fa9c3735e0cd244b1369e297/all_setups_yPlus_vs_Rww.png" width="25%" height="25%">
<img src="/uploads/52a8f9c9f28106cea6abe6ce7c33bad4/all_setups_yPlus_vs_Ruv.png" width="25%" height="25%">
<img src="/uploads/9b2f1e92fabff3104609ae03bbdd51fd/all_setups_yPlus_vs_epsilonPlus.png" width="25%" height="25%">
<img src="/uploads/c1d4cddd0b62a53bd317c655d3da9e48/all_setups_yPlus_vs_kPlus0.png" width="25%" height="25%">
<img src="/uploads/5056b4ce464c70c2c9d4b7c3037f1382/yPlus_vs_f.png" width="25%" height="25%">
**Plane channel flow, ReTau=4179**
<img src="/uploads/ad6eec1e96e581e4f617487a3fb092c3/all_setups_yPlus_vs_uPlus.png" width="25%" height="25%">
<img src="/uploads/3f5b20a7fe449a1964e8a937ddaafe50/all_setups_yPlus_vs_Ruu.png" width="25%" height="25%">
<img src="/uploads/2ffc52fe7918911d3cfcc8873bdf737b/all_setups_yPlus_vs_Rvv.png" width="25%" height="25%">
<img src="/uploads/8f9a7156be4fdf8e185535fff44ff845/all_setups_yPlus_vs_Rww.png" width="25%" height="25%">
<img src="/uploads/1cd605e4beb3c201fdce620b94e45559/all_setups_yPlus_vs_Ruv.png" width="25%" height="25%">
<img src="/uploads/8016b8dcc9a4ac15878e4351afb5107c/yPlus_vs_f.png" width="25%" height="25%">
**2DCC: 2D Convex curvature boundary layer**
<img src="/uploads/98cf3ae928d18f353728139aff7e90ac/all_setups_u_vs_y.png" width="25%" height="25%">
<img src="/uploads/362d12cc1f2386a13b493310bd4fe5b5/all_setups_Ruu_vs_y.png" width="25%" height="25%">
<img src="/uploads/1ed623a0b9a551169db65812d170f927/all_setups_Rvv_vs_y.png" width="25%" height="25%">
<img src="/uploads/c62dbb4686d4e4f4f190f8be87c4d7cf/all_setups_Ruv_vs_y.png" width="25%" height="25%">
<img src="/uploads/c1af0cb694fc137cd04273b464721fe4/x_vs_Cf_bottom.png" width="25%" height="25%">
<img src="/uploads/f2f1b39122d2c97dbf7d146cd30274b5/x_vs_Cp_bottom.png" width="25%" height="25%">
**2DML: 2D Mixing Layer**
<img src="/uploads/725943103926d796e672bbe984661fc6/all_setups_u_vs_y.png" width="25%" height="25%">
<img src="/uploads/25fb821f6490576c16e60d9e2c7c76ed/all_setups_Ruu_vs_y.png" width="25%" height="25%">
<img src="/uploads/8733ada0f7d73afbc7c0765dcbec5b52/all_setups_Rvv_vs_y.png" width="25%" height="25%">
<img src="/uploads/1cb31d6fda8b755f3d85accdaee2f876/all_setups_Rww_vs_y.png" width="25%" height="25%">
<img src="/uploads/a4cc5479508bb025d19c8c5d7539ab65/all_setups_Ruv_vs_y.png" width="25%" height="25%">
### Meta-data
EP#1805
* [x] `linux64ClangDPInt32Opt` (clang11)
* [x] `linux64GccDPInt32Opt`
* [x] `linux64GccSPDPInt64Debug`
* [x] Alltest: No new error
### Discussion
- In general, `EBRSM` yields better predictions for `R` and turbulence quantities in comparison to `kOmegaSST` model.
- But _not always_: For example, for `2DML: 2D Mixing Layer`, the `R` predictions of `EBRSM` is worse than those of `kOmegaSST`. The reason seems to be that the `EBRSM` could not reach the target convergence levels for this specific case.
- Predictions for `U` are similar.
- In general, less stable than `kOmegaSST`.
- For example, `2DZP: 2D Zero pressure gradient flat plate` and `2DANW: 2D Airfoil near-wake` cases are unstable.
- Initial values/initialisations seem to be important to
`EBRSM` in terms of numerical stability
and fidelity.
- The two-step automatic initialisation method proposed by (Manceau (n.d.)) should be preferred
over precursor simulations.
- Low-quality mesh cases are challenging,
especially meshes with high-aspect ratios
are prone to instabilities.
- Max relaxation factor for `R=0.4`. Avoid `R~O(0.05)` at all costs.
- Realizability conditions are not
automatically satisfied.
- Multiphase and compressible cases are
not explored by the academia.
### Future work
- Test scope should be extended further for:
- Multiphase-flow cases
- Compressible flow cases
- Dynamic-mesh cases
- Overset meshes
- Mesh (un)refinements
- Collated-data format
- Hybrid and single precisions
- New methods should be developed to stabilise `EBRSM` for low-quality meshes.v2206Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/543Adding external heat to greyDiffusive BC and new Doses FO2022-05-27T09:15:36ZSergio FerrarisAdding external heat to greyDiffusive BC and new Doses FO### Summary
Adding Lagrangian dose function object. Additional external radiative heat flux to ray greyDiffusive BC for fvDOM
### Details of new models (If applicable)
qRadExt and qRadExtDir new optional entries to specified heat flu...### Summary
Adding Lagrangian dose function object. Additional external radiative heat flux to ray greyDiffusive BC for fvDOM
### Details of new models (If applicable)
qRadExt and qRadExtDir new optional entries to specified heat flux. This is added to the closest ray direction.
If qRadExtDir is not specified the heat flux is add normal to the face.
### Risks
Minimalv2206Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/542General enhancement to icoReactingMultiphaseInterFoam solver, sub-models and ...2022-06-22T09:18:53ZSergio FerrarisGeneral enhancement to icoReactingMultiphaseInterFoam solver, sub-models and FO's1) Name changing and namespace used for some multi phase class used in icoReactingMultiphaseInterFoam.
2) Creating a new derivedFvPatch for thermal BC's (detached from TurbulenceCompressible) which allows to
use phase system models i...1) Name changing and namespace used for some multi phase class used in icoReactingMultiphaseInterFoam.
2) Creating a new derivedFvPatch for thermal BC's (detached from TurbulenceCompressible) which allows to
use phase system models in FO's. This new lib was added to all the thermal solvers
3) Adding new diffusion-based mass transfer model to icoReactingMultiphaseInterFoam
4) Improving consistency of Hf between phases (updated tutorials entries)
5) HeatFlux and htc FO's are available to use with icoReactingMultiphaseInterFoam
NOTE: There is memory leak problem at the end of the run when using icoReactingMultiphaseInterFoam and 'fieldFunctionObjects' is loaded usng lddOpen. NEED TO BE REVIEWEDv2206Sergio FerrarisSergio Ferrarishttps://develop.openfoam.com/Development/openfoam/-/merge_requests/541New function objects2022-05-25T23:18:21ZAndrew HeatherNew function objects## New function objects
### multiFieldValue
- Previously, the `multiFieldValue` function object was limited to operate on lists of `fieldValue` function objects.
- Any function objects that generate results can now be used, e.g.
```
p...## New function objects
### multiFieldValue
- Previously, the `multiFieldValue` function object was limited to operate on lists of `fieldValue` function objects.
- Any function objects that generate results can now be used, e.g.
```
pressureAverage
{
type multiFieldValue;
libs (fieldFunctionObjects);
operation average;
functions
{
inlet
{
type surfaceFieldValue;
operation areaAverage;
regionType patch;
name inlet;
fields (p);
writeFields no;
writeToFile no;
log no;
resultFields (areaAverage(inlet,p));
}
outlet
{
type surfaceFieldValue;
operation areaAverage;
regionType patch;
name outlet;
fields (p);
writeFields no;
writeToFile no;
log no;
}
average
{
type valueAverage;
functionObject testSample1;
fields (average(p));
writeToFile no;
log no;
}
}
}
```
Test case : [filter-multiFieldValue.tgz](/uploads/8a6ad51f582260e625ebbebe5313580f/filter-multiFieldValue.tgz) - see `system/pressureDifference` function object
### particleZoneInfo
Reports cloud information for particles passing through a specified cell zone.
Example usage:
```
cloudFunctions
{
particleZoneInfo1
{
type particleZoneInfo;
cellZone leftFluid;
// Optional entries
//writer vtk;
}
}
```
Results are written to file:
- `\<case\>/postProcessing/lagrangian/\<cloudName\>/\<functionName\>/\<time\>`
```
# cellZone : leftFluid
# time : 1.0000000000e+00
#
# origID origProc (x y z) time0 age d0 d mass0 mass
```
Where
- `origID` : particle ID
- `origProc` : processor ID
- `(x y z)` : Cartesian co-ordinates
- `time0` : time particle enters the `cellZone`
- `age` : time spent in the `cellZone`
- `d0` : diameter on entry to the `cellZone`
- `d` : current diameter
- `mass0` : mass on entry to the `cellZone`
- `mass` : current mass
If the optional `writer` entry is supplied, cloud data is written in the specified format.
During the run, output statistics are reported after the cloud solution, e.g.:
```
particleZoneInfo:
Cell zone = leftFluid
Contributions = 257
```
Here, `Contributions` refers to the number of incremental particle-move contributions recorded during this time step. At write times, the output is extended, e.g.:
```
particleZoneInfo:
Cell zone = leftFluid
Contributions = 822
Number of particles = 199
Written data to "postProcessing/lagrangian/reactingCloud1/
```
Test case: [filter-particleZoneInfo.tgz](/uploads/4872ea54688374b5a7e475015f3efe93/filter-particleZoneInfo.tgz) - see `constant/reactingCloud1Properties`v2206Sergio FerrarisSergio Ferraris