openfoam merge requestshttps://develop.openfoam.com/Development/openfoam//merge_requests20240701T10:21:32Zhttps://develop.openfoam.com/Development/openfoam//merge_requests/685Radiation modelling updates20240701T10:21:32ZAndrew HeatherRadiation modelling updatesCrossref GL #3121 and EP#2382
 Adds new viewFactorHeatFlux function object
 Adds temperature dependent radiation properties (absorption, emission, transmissivity)Crossref GL #3121 and EP#2382
 Adds new viewFactorHeatFlux function object
 Adds temperature dependent radiation properties (absorption, emission, transmissivity)v2406Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam//merge_requests/682Add support for reading ensight transient singlefile format20240529T14:05:39ZMark OLESENAdd support for reading ensight transient singlefile formatA number of changes in how ensight reading is done to accommodate the ensight transient singlefile format.
All changes made such that reading with "regular" ensight files continues to work as before.
Added the framework and provisionin...A number of changes in how ensight reading is done to accommodate the ensight transient singlefile format.
All changes made such that reading with "regular" ensight files continues to work as before.
Added the framework and provisioning for writing ensight transient singlefile format as well, but has not yet been plumbed all the way through.
OFstream now supports append with file rewriting (APPEND_ATE mode), which is requisite for ensight singlefile writing but which is also generally useful to have anyhow.v2406Kutalmış BerçinKutalmış Berçinhttps://develop.openfoam.com/Development/openfoam//merge_requests/675update to internal accounting for finitearea20240430T10:48:02ZMark OLESENupdate to internal accounting for finiteareaChanges the internal storage location of finitearea from the polyMesh registry to a dedicated registry.
This allows a clearer separation of field types without name clashes (eg, can now have "U" as a name for an area velocity field). It...Changes the internal storage location of finitearea from the polyMesh registry to a dedicated registry.
This allows a clearer separation of field types without name clashes (eg, can now have "U" as a name for an area velocity field). It is also a prerequisite to supporting multiple finitearea fields in the future.
Example of old locations:
```
0/Us
constant/faMesh
system/faSolution
```
New locations:
```
0/finitearea/Us
constant/finitearea/faMesh
system/finitearea/faSolution
```
The updated locations are handled by the `foamUpgradeFiniteArea` script, which provides a simple and transparent means of managing the upgrading without adding in multiple layers of compatibility handling within the code.v2406Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam//merge_requests/699ENH: solver function objects: add outerloop convergence checks20240906T10:02:32ZKutalmış BerçinENH: solver function objects: add outerloop convergence checks### Summary
 Introduced an outerloop convergence check in the solver function objects to allow for loop termination when possible.
 Updated the code in `scalarTransport` and `energyTransport` function objects to modern standards.
##...### Summary
 Introduced an outerloop convergence check in the solver function objects to allow for loop termination when possible.
 Updated the code in `scalarTransport` and `energyTransport` function objects to modern standards.
### Risks
~~The default value of the input entry `nCorr` has been changed from 0 to 1 to standardize the behavior of the solver function objects. This change should not impact behavior if `nCorr` is not explicitly specified. However, if `nCorr` is used, it needs to be increased by 1 to maintain the same output.~~
No risk.
#### Metadata
 [x] linux64ClangDPInt32Opt (clang15)
 [x] linux64GccDPInt32Opt
 [x] linux64GccSPDPInt64Debug
 [x] Alltest: No new error/No change in existing output
 [x] Test cases: [regressiontestsfeaturesolverfunctionobjectssolutioncontrol.zip](/uploads/75f712d75d7021a6c45ca89b8640363b/regressiontestsfeaturesolverfunctionobjectssolutioncontrol.zip)
PS: Please squash the commits after the review.Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam//merge_requests/602ENH: Coulomb: new particle electric force model calculating Coulomb forces20230515T15:35:14ZKutalmış BerçinENH: Coulomb: new particle electric force model calculating Coulomb forces#### Problem
OpenFOAM lacked a Lagrangian model for electrostatic forces acting on particles based on their diameters.
#### Solution
The present commits furnish a model of this kind, along with essential underlying changes in the 'ele...#### Problem
OpenFOAM lacked a Lagrangian model for electrostatic forces acting on particles based on their diameters.
#### Solution
The present commits furnish a model of this kind, along with essential underlying changes in the 'electricPotential' function object for evaluating the electric field. The coupling is one way (for now).
#### Metadata
* EP1880
* [x] `linux64ClangDPInt32Opt` (clang13)
* [x] `linux64GccDPInt32Opt`
* [x] `linux64GccSPDPInt64Debug`
* [x] Alltest: No new error/No change in existing output
* [x] No output change in all operating conditions except the following:
 The electric field is computed according to the new Boolean input `electricField` instead of `writeDerivedFields` toogle.Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam//merge_requests/579ENH: solidIsothermalReactionRate: new solid reaction rate model20221129T14:31:17ZKutalmış BerçinENH: solidIsothermalReactionRate: new solid reaction rate modelEP2005, EP1629
##### Usage example
In `combustion/fireFoam/LES/simplePMMApanel/constant/panelRegion/reactions`:
```
reactions
{
_tmp_
{
#include "<constant>/panelRegion/thermo.solid"
}
charReaction
{
...EP2005, EP1629
##### Usage example
In `combustion/fireFoam/LES/simplePMMApanel/constant/panelRegion/reactions`:
```
reactions
{
_tmp_
{
#include "<constant>/panelRegion/thermo.solid"
}
charReaction
{
type irreversibleIsothermalSolidReaction;
reaction "PMMA = gas";
C <scalar>;
Tpc <scalar>;
Elat <scalar>;
Cp ${../_tmp_/PMMA/thermodynamics/Cp};
}
#remove _tmp_
}
```
* [x] `linux64ClangDPInt32Opt` (clang13)
* [x] `linux64GccDPInt32Opt`
* [x] `linux64GccSPDPInt64Debug`
* [x] Alltest: No new errorMark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam//merge_requests/557ENH: fvOptions: refactor and extend effectivenessHeatExchangerSource20220907T13:55:04ZKutalmış BerçinENH: fvOptions: refactor and extend effectivenessHeatExchangerSource#### Summary
 rename effectivenessHeatExchangerSource > heatExchangerSource
 introduce submodels:
 effectivenessTable (previous behaviour)
 referenceTemperature
 the referenceTemperature submodel uses a reference temperature
...#### Summary
 rename effectivenessHeatExchangerSource > heatExchangerSource
 introduce submodels:
 effectivenessTable (previous behaviour)
 referenceTemperature
 the referenceTemperature submodel uses a reference temperature
which is either a scalar or calculated from a 2D interpolation
table in order to calculate the heat exchange.
 the following figure shows the verification level of
the comparisons between the original and refactored `referenceTemperature`
modules in terms of average temperature.
<img src="/uploads/40d9aad34807cfb724ecc81442327e5b/image.png" width="50%" height="50%">
#### Metadata
 EP1903
 diligently reviewed and tested by @Tobi (thanks Tobi)
 see `v2212/01heatExchangerSource` for a test caseAndrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam//merge_requests/529dynamic mesh (un)refinement: compatible with mesh motion20220307T16:07:20ZMattijs Janssens4Mattijs@users.noreply.develop.openfoam.comdynamic mesh (un)refinement: compatible with mesh motion### Summary
See #2395### Summary
See #2395Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam//merge_requests/425ENH: new solvers: overPhaseChangeInterFoam and overCompressibleInterDyMFoam20210324T13:15:23ZSergio FerrarisENH: new solvers: overPhaseChangeInterFoam and overCompressibleInterDyMFoamKutalmış BerçinKutalmış Berçinhttps://develop.openfoam.com/Development/openfoam//merge_requests/407Feature iso distance surface20201211T16:45:34ZMark OLESENFeature iso distance surface Adds improved handling of distance surface edges (#1950)
 freshened some of the isosurface and sampling surface infrastructure to eliminate duplicate code, support cellZones for all isosurface types.
 support multiple offsets for c... Adds improved handling of distance surface edges (#1950)
 freshened some of the isosurface and sampling surface infrastructure to eliminate duplicate code, support cellZones for all isosurface types.
 support multiple offsets for cutting planes and multiple isovaluesAndrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam//merge_requests/399ENH: outletMappedUniformInlet: add optional fraction and offset20201216T18:28:32ZKutalmış BerçinENH: outletMappedUniformInlet: add optional fraction and offset### Summary
The new functionality optionally allows the patchaveraged
value to be scaled and/or offset by a pair of specified values.
Example of the boundary condition specification:
```
<patchName>
{
// Mandatory entries...### Summary
The new functionality optionally allows the patchaveraged
value to be scaled and/or offset by a pair of specified values.
Example of the boundary condition specification:
```
<patchName>
{
// Mandatory entries (unmodifiable)
type outletMappedFilterInlet;
outletPatch <outletPatchName>;
// Optional entries (unmodifiable)
fraction 0.1;
offset 10; // (1 0 0);
phi phi;
// Optional (inherited) entries
...
}
```
### Details of new models
**The tutorial `airRecirculationRoom` and related visualisations are exclusively prepared by _Alseny Diallo_**.
![Screenshot_from_20201210_172244](/uploads/0ca11fb914f02e7f7563d0df3e800b07/Screenshot_from_20201210_172244.png)
![Screenshot_from_20201210_183108](/uploads/10d4056dd7bdaed45d29b6e0aaddadc5/Screenshot_from_20201210_183108.png)
![Screenshot_from_20201210_181730](/uploads/83048e2a11c6ace6f8ac13cdf266fd5d/Screenshot_from_20201210_181730.png)
![Screenshot_from_20201210_172411](/uploads/cb9d2e00f334ee41f3ec8e7ff07d6902/Screenshot_from_20201210_172411.png)
![Screenshot_from_20201210_172420](/uploads/38cb29fa995ff837ed520b05c9ab37a6/Screenshot_from_20201210_172420.png)
![Screenshot_from_20201210_172319](/uploads/64a9c92d494ff19cd90e8df1a5b02bc7/Screenshot_from_20201210_172319.png)
![Screenshot_from_20201210_180954](/uploads/40806bc5b100b397998d6e5db55c3e4f/Screenshot_from_20201210_180954.png)
### Risks
 The bug fix may further need to be tested.
 No change to user input.Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam//merge_requests/386ENH: PatchParticleHistogram: add a new cloud FO20201113T09:23:26ZKutalmış BerçinENH: PatchParticleHistogram: add a new cloud FO### Summary
Computes a histogram for the distribution of particle diameters
and corresponding number of particles hitting on a given list of patches.
A minimal example by using `constant/reactingCloud1Properties.cloudFunctions`:
...### Summary
Computes a histogram for the distribution of particle diameters
and corresponding number of particles hitting on a given list of patches.
A minimal example by using `constant/reactingCloud1Properties.cloudFunctions`:
```
patchParticleHistogram1
{
// Mandatory entries (unmodifiable)
type patchParticleHistogram;
patches (<patch1> <patch2> ... <patchN>);
nBins 10;
min 0.1;
max 10.0;
maxStoredParcels 20;
}
```
### Risks
No change to user inputs / no risk to regression.
PS: approval/feedback please @mark @Sergio @Mattijs @PrashantAndrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam//merge_requests/379remove cyclic dependencies for phase systems20200806T06:23:44ZMark OLESENremove cyclic dependencies for phase systems### centralize more libraries in src/phaseSystemModels
### avoid phaseSystem cyclic dependencies, reduce number of libraries
Previously the phaseSystems had a number of smaller libraries to
provide interface and model properties. ...### centralize more libraries in src/phaseSystemModels
### avoid phaseSystem cyclic dependencies, reduce number of libraries
Previously the phaseSystems had a number of smaller libraries to
provide interface and model properties. However, the cyclic
dependencies between phaseSystem and the models (and turbulence)
causes extreme difficultly for mingw linking. The potential
additional flexibility is not actually used anywhere.
 libincompressibleMultiphaseSystems
 removed: libmassTransferModels
 libmultiphaseSystem
 removed: libcompressibleMultiphaseEulerianInterfacialModels
 libreactingMultiphaseSystem
 removed: libreactingPhaseSystem
 removed: libreactingEulerianFvPatchFields
 removed: libreactingEulerianInterfacialCompositionModels
 removed: libreactingEulerianInterfacialModels
 removed: libmultiphaseReactingTurbulenceModels
 libreactingTwoPhaseSystem
 removed: libreactingPhaseSystem
 removed: libreactingEulerianFvPatchFields
 removed: libreactingEulerianInterfacialCompositionModels
 removed: libreactingEulerianInterfacialModels
### Avoid duplicate symbol for phaseCompressibleTurbulenceModels.
Common turbulence models are defined in libreactingMultiphaseSystem,
and libmultiphaseReactingTurbulenceModels is now redundant.
The libtwoPhaseReactingTurbulenceModels extends the common models
for reactingTwoPhaseSystem.Sergio FerrarisSergio Ferrarishttps://develop.openfoam.com/Development/openfoam//merge_requests/331Submodule visualization20200123T14:24:33ZMark OLESENSubmodule visualizationThis finalises the work done to collect visualizationrelated items:
 catalyst
 paraviewplugins
 runTimePostProcessing
into a single place.
 Makes it easier to make related code changes.
 Makes it easier to mix and match differen...This finalises the work done to collect visualizationrelated items:
 catalyst
 paraviewplugins
 runTimePostProcessing
into a single place.
 Makes it easier to make related code changes.
 Makes it easier to mix and match different combinations of VTK/ParaView versions and capabilities (Eg, MESA, MPI etc).
Replaces the standalone catalyst submodule.Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam//merge_requests/305ENHBUG: Misc20191212T11:30:37ZKutalmış BerçinENHBUG: MiscAndrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam//merge_requests/50Feature noise20160629T20:44:40ZAdminFeature noiseNew functionality includes:
 runtime selectable noise models: pointsurface
 runtime selectable window models: Hanning (+ options symmetric, extended), uniform
 calculates PSD (Pa^2/Hz) and dB/HZ; SPL (Pa^2) and dB
 calculates ...New functionality includes:
 runtime selectable noise models: pointsurface
 runtime selectable window models: Hanning (+ options symmetric, extended), uniform
 calculates PSD (Pa^2/Hz) and dB/HZ; SPL (Pa^2) and dB
 calculates 1/3 octave data, with centre frequency 1kHz
surfaceNoise only:
 reads ascii/binary ensight surface data (requires collateTimes option)
 generates graphs for surface average quantities
 operates in parallelAdminAdminhttps://develop.openfoam.com/Development/openfoam//merge_requests/70Reworking of the ensight infrastructue and new ensightWrite function object20161103T08:24:53ZMark OLESENReworking of the ensight infrastructue and new ensightWrite function objectAdminAdminhttps://develop.openfoam.com/Development/openfoam//merge_requests/235DigitalFilter Based Synthetic Turbulence Generation Method for LES/DES Inflow20190621T12:10:50ZKutalmış BerçinDigitalFilter Based Synthetic Turbulence Generation Method for LES/DES Inflow### Summary
Velocity boundary condition generating synthetic turbulencealike
timeseries for LES and DES turbulent flow computations.
To this end, two synthetic turbulence generators can be chosen:
...### Summary
Velocity boundary condition generating synthetic turbulencealike
timeseries for LES and DES turbulent flow computations.
To this end, two synthetic turbulence generators can be chosen:
 Digitalfilter methodbased generator (DFM)
\verbatim
Klein, M., Sadiki, A., and Janicka, J.
A digital filter based generation of inflow data for spatially
developing direct numerical or large eddy simulations,
Journal of Computational Physics (2003) 186(2):652665.
doi:10.1016/S00219991(03)000901
\endverbatim
 Forwardstepwise methodbased generator (FSM)
\verbatim
Xie, Z.T., and Castro, I.
Efficient generation of inflow conditions for large eddy simulation of
streetscale flows, Flow, Turbulence and Combustion (2008) 81(3):449470
doi:10.1007/s1049400891515
\endverbatim
In DFM or FSM, a random number set (mostly white noise), and a group
of target statistics (mostly mean flow, Reynolds stress tensor profiles and
lengthscale sets) are fused into a new number set (stochastic timeseries,
yet consisting of the statistics) by a chain of mathematical operations
whose characteristics are designated by the target statistics, so that the
realised statistics of the new sets could match the target.
Random number sets >

DFM or FSM > New stochastic timeseries consisting
 turbulence statistics
Turbulence statistics >
The main difference between DFM and FSM is that the latter replaces the
streamwise convolution summation in DFM by a simpler and a quantitatively
justified equivalent procedure in order to reduce computational costs.
Accordingly, the latter potentially brings resource advantages for
computations involving relatively large lengthscale sets and small
timesteps.
### Resolved bugs (If applicable)
Verified for `serial`, `scotchparallel (4)`, `hierar.parallel (1 2 2)`, `hierar.parallel (1 2 4)`, `serialrestart`, and `parallelrestart` in terms of input Reynolds stress tensor components through `channel395DFSEM` tutorial (onecell domain).
Checked for various possible (commonly encountered) wrong inputs, e.g. arbitrary Reynolds stress tensor components.
### Details of new models (If applicable)
**The model input**:
1. Spatialvariant Reynolds stress symmetric tensor (6components)
2. Spatialvariant mean velocity profile
3. Spatialinvariant (for now) integrallength scale tensor (9components)
**The model output**: Stochastic timeseries involving the statistics of the model input sets.
**The model computation has four subsequent steps:**
1. Generation of randomnumber sets obeying the standard normal probability distribution function
2. Analytical computation of digitalfilter coefficients as a function of integrallength scales in either Gaussian or exponential form
3. Convolution summation between randomnumber sets and digitalfilter coefficients
4. Embedment of Reynolds stress tensor and mean velocity input into the digitalfiltered randomnumber sets via elementwise multiplication and summation
**Fidelity**:
Preliminary statisticallystationary results from a channelheight profile on the patch (onecell domain `channel395DFSEM` case: `hierar.parallel (1 2 4)`):
![stress](/uploads/8dce71846496e6bbc87aca3c78c52bcb/stress.png)
Preliminary **notstatistically developed** (0.6 sec run, ongoing) with **nonoptimal input** results from full `channel395DFSEM` case:
![DG1](/uploads/49f04599abdd34ec9adec65166c8908f/DG1.png)
**Performance**:
Preliminary comparisons with DFSEM suggests that the current model is ~1.8x faster for the `channel395DFSEM` tutorial.
### Risks
1. Model is itself not divergencefree (yet convertible); therefore, should not be preferred for aeroacoustic applications as is. Nonetheless, the mass flow rate correction reduces the inlet pressure fluctuations to the level of Poletto et al.'s DFSEM (quantified and verified by Bercin in comparison to Moser et al'. DNS data for pressure fluctuations and correlations).
2. For now, Taylor's frozen turbulence hypothesis is applied in the streamwise direction.
3. For now, `bilinear interpolation` is not fully functional.
4. Code duplications with DFSEM exist for template funcs.
5. For now, integrallength scale set (9components) is spatialinvariant across patch.
6. Further verification is ongoing through highorder statistics from Moser et al.'s DNS data, e.g. correlations, kinetic energy budget, enstrophy and so on.AdminAdmin