openfoam merge requestshttps://develop.openfoam.com/Development/openfoam/-/merge_requests2020-06-17T13:17:51Zhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/120Feature lumped point motion2020-06-17T13:17:51ZMark OLESENFeature lumped point motionVersion v1706Mark OLESENMark OLESENhttps://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/350ENH: New wall-function blending approaches2020-06-17T15:26:52ZKutalmış BerçinENH: New wall-function blending approaches### Summary
This merge request is a discussion placeholder for two topics:
- ~~Potential improvements to the wall-function hierarchies~~
- Wall-function blending treatments between viscous and inertial sublayers
##### ~~Wall-func...### Summary
This merge request is a discussion placeholder for two topics:
- ~~Potential improvements to the wall-function hierarchies~~
- Wall-function blending treatments between viscous and inertial sublayers
##### ~~Wall-function hierarchy~~
~~Arguably, the wall-function hierarchies need a reexamination as the relations have "grown organically" in the course of time. One recent problem is that `{omega,epsilon,k}Wall` functions use data members from `nutWallFunction` base class even though the former group is not derived from the latter.~~
~~One practical consequence is that `{omega,epsilon,k}Wall` always require a `nut` wall function is defined in the `nut` dictionary, otherwise simulation in question noisily fails without informing the user with useful information, e.g. [CFD-Online:Error with k-omega SST and simpleFoam (21-Feb-20)](https://www.cfd-online.com/Forums/openfoam-solving/224476-error-k-omega-sst-simplefoam.html), and the bug-fix:55776069975061c488a6294a5e81a7a92b04db45.~~
##### Wall-blending treatments
- Four wall-function blending treatments were introduced:
- `STEPWISE`
- `MAX`
- `BINOMIAL`
- `EXPONENTIAL`
- .. For the following wall functions:
- `epsilonWallFunction`
- `omegaWallFunction`
- `nut{k,U}WallFunction`
- The header-file documentations were improved for the following wall functions for which the blending treatments were not applicable (e.g. due to the continuous treatment in `nutUSpaldingWallFunction`):
- `nutU{Spalding,Tabulated,Blended}WallFunction`
- `nut{k,U}RoughWallFunction`
- `nutLowReWallFunction`
- `{kLowRe,kqR}WallFunction`
- Based on:
- Viegas and Rubesin (1983); Viegas et al. (1985) (i.e. the option: `STEPWISE`)
- Menter and Esch (2001) (i.e. the option: `BINOMIAL`)
- Popovac and Hanjalić (2007) (i.e. the options: `MAX`, `EXPONENTIAL`)
- Knopp et al. (2006) (i.e. the option: `TANH` only for `omega`)
### Resolved bugs
N/A
### Risks
High risk, yet bitwise backward compatibility, and regression were verified for each modified functionality.
@mark @Sergio @Mattijs v2006Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/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/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/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/349CONT: Addition of compressibleIsoInterFoam and PLIC2020-06-22T11:17:41ZSergio FerrarisCONT: Addition of compressibleIsoInterFoam and PLICContribution by Henning Scheufler and Johan Roenby. Headers reviewed. Rebased to the latest develop.
1) Implementation of the compressibleIsoInterFOam solver
2) Implementation of a new PLIC interpolation scheme.
3) New tuto...Contribution by Henning Scheufler and Johan Roenby. Headers reviewed. Rebased to the latest develop.
1) Implementation of the compressibleIsoInterFOam solver
2) Implementation of a new PLIC interpolation scheme.
3) New tutorials associated with the solvers
This implementation was carried out by Henning Scheufler (DLR) and Johan
Roenby (DHI), following :
\verbatim
Henning Scheufler, Johan Roenby,
Accurate and efficient surface reconstruction from volume fraction data
on general meshes, Journal of Computational Physics, 2019, doi
10.1016/j.jcp.2019.01.009
\endverbatim
The integration of the code was carried out by Andy Heather and Sergio
Ferraris from OpenCFD Ltd.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/375Feature dynamic library - issue #17372020-07-14T15:41:40ZMark OLESENFeature dynamic library - issue #1737Some minor cleanup for dlLibraryTable handling to avoid multiple closing of duplicate libnames, mutable access to libs, a global singleton.Some minor cleanup for dlLibraryTable handling to avoid multiple closing of duplicate libnames, mutable access to libs, a global singleton.v2012Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/378autoPtr/tmp cleanup2020-07-17T15:29:17ZMark OLESENautoPtr/tmp cleanupMostly style (declutter) changes for autoPtr/tmp. The `valid()` and `empty()` methods tended to result (IMO) dense, hard to read code. Worst case example is an autoPtr wrapping of a tmp:
```
if (data.valid() && data().valid())
```
Wh...Mostly style (declutter) changes for autoPtr/tmp. The `valid()` and `empty()` methods tended to result (IMO) dense, hard to read code. Worst case example is an autoPtr wrapping of a tmp:
```
if (data.valid() && data().valid())
```
Which is somewhat easier to read with direct testing of the pointer, and a pointer deference:
```
if (data && data->valid())
```
Other cases of opaque code arise from the `empty()` with a negation:
```
if (!ptr.empty()) ... can use the pointer
```
instead of simply
```
if (ptr) ... can use the pointer
```
Removed some pre-nullObject (2014) code remnants from the tmp logic.v2012Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/379remove cyclic dependencies for phase systems2020-08-06T06: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/380ENH: finer granularity for handling functionObject failure (#1779)2020-08-06T16:15:10ZMark OLESENENH: finer granularity for handling functionObject failure (#1779)- additional "errors" entry with enumerated values
(default|warn|ignore|strict) for defining warning or error at
construct or runtime stage
- default : construct = warn, runtime = fatal
- warn : construct = warn, runtime = warn
-...- additional "errors" entry with enumerated values
(default|warn|ignore|strict) for defining warning or error at
construct or runtime stage
- default : construct = warn, runtime = fatal
- warn : construct = warn, runtime = warn
- ignore : construct = silent, runtime = silent
- strict : construct = fatal, runtime = fatal
The errors control can be added at the top-level and/or for individual
function objects.v2012Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/377New Evap-Cond Lagrangian model (FuchsKnudsen) for solution (liquid + solid)...2020-09-22T15:37:04ZSergio FerrarisNew Evap-Cond Lagrangian model (FuchsKnudsen) for solution (liquid + solid) dropletsAdding evap-cond Lagrangian model for solution droplets
1) Adding LiquidEvapFuchsKnudsen model for Lagrangian evaporation.
This models is based on a diffusion type of evaporation/
condensation on particles composed...Adding evap-cond Lagrangian model for solution droplets
1) Adding LiquidEvapFuchsKnudsen model for Lagrangian evaporation.
This models is based on a diffusion type of evaporation/
condensation on particles composed of solution (liquid + solid).
2) Adding modes of calculating the particle rho and volume change.
The new keyword in constantProperties is volumeUpdateMethod
which three options:
a) constantRho
b) constantVolume
c) updateRhoAndVol
3) The entry rho0 is now optional for multicomponent parcels.
If defined , it is used but if it is not the actuall mixture
provided is used to calculate rho0 of the particle
T0 is still used as initial T and Cp0 is over-written in the
multi-component cloudAndrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/382Pstream ranges2020-09-30T11:25:35ZMark OLESENPstream rangesv2012Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/383Feature block mesh edges2020-10-06T08:37:12ZMark OLESENFeature block mesh edges- adds a new, more natural way to specify block mesh _arc_ edges using the arc origin that eliminates tedious and error-prone calculations. For example,
```
arc 0 1 origin (0 0 0);
```
When the keyword is missing, this corresponds to the...- adds a new, more natural way to specify block mesh _arc_ edges using the arc origin that eliminates tedious and error-prone calculations. For example,
```
arc 0 1 origin (0 0 0);
```
When the keyword is missing, this corresponds to the traditional means of specifying the arc via an additional point on the circumference (full backward compatibility). For example,
```
arc 0 1 (0.707 0.707 0);
```Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/389Feature rationalize mpi configs2020-11-12T17:25:09ZMark OLESENFeature rationalize mpi configsThe configuration files, user preferences and wmake rules for MPI had become rather confusing and cumbersome. This is especially noticeable when trying to add in minor differences for handling system-level openmpi2 vs openmpit4 etc. Usin...The configuration files, user preferences and wmake rules for MPI had become rather confusing and cumbersome. This is especially noticeable when trying to add in minor differences for handling system-level openmpi2 vs openmpit4 etc. Using a single directory name 'openmpi-system' makes it difficult (impossible) to properly handle different major openmpi versions on the same system.
And additional problem was posed by the choice of preference names. An 'etc/config.sh/mpi' handles all MPI-related dispatch, whereas `etc/config.sh/openmpi` handles ThirdParty adjustments only. Thus make preferences clearly marked with a "prefs." prefix.
Reorganized MPI make rules for more commonality.
Incompatibility name change for advanced user:
- "openmpi-system" -> prefs.sys-openmpi
- "openmpi" -> prefs.openmpi
Prefix system-related mpi with `sys-`, for sorting and consistency.v2012Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/387Miscellaneous code changes - Nov 202020-11-13T09:22:38ZKutalmış BerçinMiscellaneous code changes - Nov 20PS: approval/feedback please @mark @Sergio @andy @Prashant
heatTransferCoeff -> @SergioPS: approval/feedback please @mark @Sergio @andy @Prashant
heatTransferCoeff -> @SergioAndrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/386ENH: PatchParticleHistogram: add a new cloud FO2020-11-13T09: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/391corrections and improvements for Function12020-11-20T15:18:27ZMark OLESENcorrections and improvements for Function1- easier support for non-mandatory functions.
- support for compatibility lookups
- support frequency or period for Sine/Cosine/Square Function1- easier support for non-mandatory functions.
- support for compatibility lookups
- support frequency or period for Sine/Cosine/Square Function1v2012Andrew 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 Heather