openfoam merge requestshttps://develop.openfoam.com/Development/openfoam//merge_requests20190613T14:47:10Zhttps://develop.openfoam.com/Development/openfoam//merge_requests/246ENH: functionObject: refactored coordinate system usage and new forceCoeffs members20190613T14:47:10ZKutalmış BerçinENH: functionObject: refactored coordinate system usage and new forceCoeffs members* If applied: This commit on top of the current forceCoeffs allows the user to compute:
* Side force coefficient whose direction in curl(lift,drag),
* Yaw moment coefficient whose rotation axis in dir(lift),
* Roll moment coef...* If applied: This commit on top of the current forceCoeffs allows the user to compute:
* Side force coefficient whose direction in curl(lift,drag),
* Yaw moment coefficient whose rotation axis in dir(lift),
* Roll moment coefficient whose rotation axis in dir(drag)
* Also, for developers:
* Destructor is = default
* Some divisions were replaced by multiplications
* Some repetitive multiplications were reduced to a single oper
* Name change: momentCoeff > pitchMomentCoeff
* Order of output is reorganised as moments(pitch,yaw,roll) and forces(lift,drag,side)
* For force coefs, the front and rear axles' contributions are computed
* Verification: Passed sanity checks and valgrindmemcheck
* What's next:
* Update for the Extended code guide entry
* Related:
* Designated pitch, yaw, roll orientation can be seen in:
en.wikipedia.org/wiki/Yaw_(rotation)#/media/File:Flight_dynamics_with_text.pngv1906AdminAdminhttps://develop.openfoam.com/Development/openfoam//merge_requests/245ENH: FO: Lamb vector and its divergence20191108T07:11:42ZKutalmış BerçinENH: FO: Lamb vector and its divergence If applied:
This commit allows the user to compute:
 the Lamb vector (https://en.wikipedia.org/wiki/Lamb_vector),
 (optionally) its divergence
 onthefly or via postProcess utility
 for a... If applied:
This commit allows the user to compute:
 the Lamb vector (https://en.wikipedia.org/wiki/Lamb_vector),
 (optionally) its divergence
 onthefly or via postProcess utility
 for a given volVectorField (one per functionObject entry)
 Why:
The motivation is the literaturereported quantitative connection
between the Lamb vector (divergence) and the spatially localised
instantaneous fluid motions, e.g. high and lowmomentum fluid
parcels, which possess considerable level of capacity to affect
the rate of change of momentum, and to generate forces such as drag.
 Verification:
 Smoothwall plane channel flow case (Moser et al. 1999) by
 Curtis et al. (2008) On the Lamb vector divergence
in Navier–Stokes flows, doi:10.1017/S0022112008002760
 What's next:
 The verificationshow case
 Extended code guide entry titled "Lamb vector"
 Related:
 "fvc::curl(U)^U" is computed twice when "divergence_" is on.
It will be reduced one.AdminAdminhttps://develop.openfoam.com/Development/openfoam//merge_requests/243Feature reflective solar load20190502T09:45:46ZSergio FerrarisFeature reflective solar load### Summary
Adding reflecting fluxes to Solar load radiation model.
Adding functionality to the boundary radiation models and new
place holder for basic wall types such as transparent, opaqueDiffusive,
opaqueReflective. Radiation wall ...### Summary
Adding reflecting fluxes to Solar load radiation model.
Adding functionality to the boundary radiation models and new
place holder for basic wall types such as transparent, opaqueDiffusive,
opaqueReflective. Radiation wall models are now runtime selectable.
Adding multiband capabilities to VF model and improving the set up
for using solar loads in VF and fvDOM radiation models.
### Details of new models (If applicable)
The new entry is useReflectedRays = true in the radiationProperties.
This calculates the reflected rays on reflective walls. It can handle first reflection
on surfaces. Not multiple reflection are considered.
The wall boundary type "opaqueReflective" handles specular reflection which a proportion
of diffusive heat flux
### Risks
(Possible regressions?)
The boundaryRadiationProperties entries key words are "type", not "mode". But a backward
compatibility reading was introduced.v1906AdminAdminhttps://develop.openfoam.com/Development/openfoam//merge_requests/242Reacting heterogeneous cloud20190502T18:40:27ZSergio FerrarisReacting heterogeneous cloud### Summary
New reacting heterogeneous cloud, solver and tutorial.
This cloud is formed of pure solid particles which reacts with the carrier phase.
It is derived from reacting cloud.
### Resolved bugs (If applicable)
(Links to issues...### Summary
New reacting heterogeneous cloud, solver and tutorial.
This cloud is formed of pure solid particles which reacts with the carrier phase.
It is derived from reacting cloud.
### Resolved bugs (If applicable)
(Links to issues)
### Details of new models (If applicable)
The only available reacting heterogeneous model is Heteregeneous noncatalytic reaction MUCS approach.
Reference:
D. Papanastassiou and G. Bitsianes, Modelling of Heterogeneous Gas
Solid Reactions, Metallurgical Transsactions, 480. Volume 4. 1973
### Risks
(Possible regressions?)
(Changes to user inputs?)v1906Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam//merge_requests/236Feature postpro20190220T19:43:43ZMark OLESENFeature postpro### Summary
Extension of insitu visualization (runTimePostProcessing):
 parallel rendering
 direct use of VTK cutting plane and isosurface filters
 *live* access to simulation data such as lagrangian clouds and geometry patches...### Summary
Extension of insitu visualization (runTimePostProcessing):
 parallel rendering
 direct use of VTK cutting plane and isosurface filters
 *live* access to simulation data such as lagrangian clouds and geometry patches
 the ability to use stored surfaces and fields originating from another function object (eg, sampledSurfaces)
Significant cleanup and reimplementation of the surface sampling function object and all the surface writers to allow persurface format specification. Added support for `.vtp` output of sampled surface with multiple fields in a single file.
Stored surface information can now be used for other field calculations (eg, `surfaceFieldValue`)
Images and description of the new functionality are attached to issue #1206v1906AdminAdminhttps://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.AdminAdminhttps://develop.openfoam.com/Development/openfoam//merge_requests/234Feature single precision20190610T14:46:52ZMattijs Janssens4Mattijs@users.noreply.develop.openfoam.comFeature single precision### Summary
Replace all linear solver (lduSolver) variables with new type 'solveScalar' instead of 'scalar'. In double precision this is the same as scalar (i.e. double), in single precision it is either double or scalar (=float).
...### Summary
Replace all linear solver (lduSolver) variables with new type 'solveScalar' instead of 'scalar'. In double precision this is the same as scalar (i.e. double), in single precision it is either double or scalar (=float).
### Resolved bugs (If applicable)
https://develop.openfoam.com/Development/OpenFOAMplus/issues/1086
### Details of new models (If applicable)
Currently: WM_PRECISION_OPTION:
 DP as usual
 SP as usual
 SPDP single precision except for linear solver, which is double precision
When using WM_SPDP argList now prints in Arch:
label=32;scalar=32;solveScalar=64
### Risks
Following tests before merging:
 DP = same performance
 SP = pure single precision same performance as current
 SPDP = mixed precision performance may need casebycase evaluationAdminAdminhttps://develop.openfoam.com/Development/openfoam//merge_requests/232Feature object registry search20190207T08:59:08ZMark OLESENFeature object registry searchMark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam//merge_requests/231Function object updates20190131T17:00:02ZAdminFunction object updatesRenamed the `residuals` function object to `solverInfo` since it now generates:
* residual fields
* solver type
* initial residual
* final residual
* number of solver iterations
* convergecnce flag
Added new `continuityError` function ...Renamed the `residuals` function object to `solverInfo` since it now generates:
* residual fields
* solver type
* initial residual
* final residual
* number of solver iterations
* convergecnce flag
Added new `continuityError` function object. Example usage:
continuityError1
{
type continuityError;
libs ("libfieldFunctionObjects.so");
...
writeToFile yes;
log yes;
phi phi;
}
\endverbatimv1906AdminAdminhttps://develop.openfoam.com/Development/openfoam//merge_requests/230Add minMax and clip field functions20190201T16:54:37ZMark OLESENAdd minMax and clip field functionsMark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam//merge_requests/229Feature snappy hex mesh check20190128T08:57:47ZMattijs Janssens4Mattijs@users.noreply.develop.openfoam.comFeature snappy hex mesh checkThis adds dryrun to snappyHexMesh to perform various checks on initial mesh and dictionaries.This adds dryrun to snappyHexMesh to perform various checks on initial mesh and dictionaries.https://develop.openfoam.com/Development/openfoam//merge_requests/228Feature run time control triggers20190124T05:50:29ZAdminFeature run time control triggersExtends the `runTimeControl` function object to set 'trigger' values, that can be used to start other function objects. For example, to run for 100 steps after the average drag coefficient converges (reported by a `forceCoeffs` function...Extends the `runTimeControl` function object to set 'trigger' values, that can be used to start other function objects. For example, to run for 100 steps after the average drag coefficient converges (reported by a `forceCoeffs` function object) the following could be used:
```
runTimeControl1
{
type runTimeControl;
libs ("libutilityFunctionObjects.so");
conditions
{
condition1
{
type average;
functionObject forceCoeffs1;
fields (Cd);
tolerance 1e3;
window 20;
windowType exact;
}
}
satisfiedAction setTrigger;
trigger 1;
}
runTimeControl2
{
type runTimeControl;
libs ("libutilityFunctionObjects.so");
controlMode trigger;
triggerStart 1;
conditions
{
condition1
{
type maxDuration;
duration 100;
}
}
satisfiedAction end;
}
```
See the `$FOAM_TUTORIALS/incompressible/simpleFoam/simpleCar tutorial`v1906AdminAdminhttps://develop.openfoam.com/Development/openfoam//merge_requests/226Feature merge OpenFOAM.org20190110T10:10:07ZMattijs Janssens4Mattijs@users.noreply.develop.openfoam.comFeature merge OpenFOAM.orgAdminAdminhttps://develop.openfoam.com/Development/openfoam//merge_requests/225ENH: Added new AMIWeights function object20181210T09:55:04ZAdminENH: Added new AMIWeights function objectReports the minmaxaverage AMI weights to text file and optionally
writes VTK surfaces of the sum of the weights, and mask field for
ACMI patches.
Example usage:
AMIWeights
{
type AMIWeights;
libs ...Reports the minmaxaverage AMI weights to text file and optionally
writes VTK surfaces of the sum of the weights, and mask field for
ACMI patches.
Example usage:
AMIWeights
{
type AMIWeights;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
writeFields yes;
}v1812AdminAdminhttps://develop.openfoam.com/Development/openfoam//merge_requests/224ENH: isoSurfaceTopo: replacement for isoSurfaceCell.20181206T15:56:27ZMattijs Janssens4Mattijs@users.noreply.develop.openfoam.comENH: isoSurfaceTopo: replacement for isoSurfaceCell.isoSurface: Improved isosurface algorithm
Includes topological point generation and optional removal of all points (and
triangles) that do not originate from mesh edges. This generates
polygons rather than triangles providing smoother...isoSurface: Improved isosurface algorithm
Includes topological point generation and optional removal of all points (and
triangles) that do not originate from mesh edges. This generates
polygons rather than triangles providing smoother surfaces and significantly
small files (~ factor of 34 smaller).AdminAdminhttps://develop.openfoam.com/Development/openfoam//merge_requests/223ENH: momentum field function (issue #1105)20181204T14:26:43ZMark OLESENENH: momentum field function (issue #1105)Calculates linear/angular momentum, reporting integral values
and optionally writing the fields.
Example
```
momentum1
{
type momentum;
libs ("libfieldFunctionObjects.so");
...
...Calculates linear/angular momentum, reporting integral values
and optionally writing the fields.
Example
```
momentum1
{
type momentum;
libs ("libfieldFunctionObjects.so");
...
selectionMode all;
writeMomentum yes;
writeVelocity no;
cylindrical true;
origin (0 0 0);
e1 (1 0 0);
e3 (0 0 1);
}
```AdminAdminhttps://develop.openfoam.com/Development/openfoam//merge_requests/222ENH: update handling of versioning and make control (issue #1010)20181208T21:57:46ZMark OLESENENH: update handling of versioning and make control (issue #1010) Use the OPENFOAM define (eg, 1806, 1812), which normally corresponds
to a major release, to define an API level. This remains consistent
within a release cycle and means that it is possible to manage
several subversions and c... Use the OPENFOAM define (eg, 1806, 1812), which normally corresponds
to a major release, to define an API level. This remains consistent
within a release cycle and means that it is possible to manage
several subversions and continue to have a consistent lookup.
The current API value is updated automatically during the build
and cached as meta data for later use, even when the wmake/ directory
is missing or OpenFOAM has not yet be initialized.
The version information reported on program start or with help
usage adjusted to reflect this. The build tag from git now also
carries the date as being more meaningful to trace than a hash
value.
 Update etc/bashrc and etc/cshrc to obtain the project directory
directly instead of via its prefix directory. The value obtained
corresponds to an absolute path, from which the prefix directory
can be obtained.
The combination of these changes removes the reliance on any
particular directory naming convention.
For example,
With an 1812 version (API level):
WM_PROJECT_VERSION=myVersion
installed as /some/path/somewhere/openfoammySandbox
This makes the prefix, foamInstall, projectVersion, version
values of foamEtcFiles, and similar entries for foamConfigurePaths
superfluous.
WM_PROJECT_INST_DIR is no longer required or used
CONFIG: relocate WM_PROJECT_SITE default
 was <prefix>/site, now <project>/site
This avoids several issues when installing OpenFOAM in clusters
without an intermediate OpenFOAMspecific installation prefix.
The 'site' directory may have a reserved meaning in these situations
and it is undesirable to 'leak' upwards into the parent directory to
look for configuration files.
Placing the default within the project directory avoids this.
Alternative locations can be given via the WM_PROJECT_SITE variable.
 removed foamExec, which was previously used when switching versions
and before the bash/csh discovery logic was used
ENH: add csh support to foamConfigurePathsv1812AdminAdminhttps://develop.openfoam.com/Development/openfoam//merge_requests/220Mapping injected faces through interpolation20181115T14:58:57ZMattijs Janssens4Mattijs@users.noreply.develop.openfoam.comMapping injected faces through interpolationImproved mapping of newly generated internal faces.
 these now get created (hexRef8) without supplying a master face/edge or point
 these get a mapped value by interpolating old surrounding faces
Code supplied by Daniel Rettenmaier <r...Improved mapping of newly generated internal faces.
 these now get created (hexRef8) without supplying a master face/edge or point
 these get a mapped value by interpolating old surrounding faces
Code supplied by Daniel Rettenmaier <rettenmaier@gsc.tudarmstadt.de>
Date: Mon Mar 6 17:17:06 2017 +0100
Fix mapping for nonflux surfaceVectorFields and fix mapping of newly created internal faces
A more generalized approach should be consideredMattijs Janssens4Mattijs@users.noreply.develop.openfoam.comMattijs Janssens4Mattijs@users.noreply.develop.openfoam.comhttps://develop.openfoam.com/Development/openfoam//merge_requests/219uniformFixedValue: avoid reevaluation on reading or mapping20181112T10:49:29ZMattijs Janssens4Mattijs@users.noreply.develop.openfoam.comuniformFixedValue: avoid reevaluation on reading or mappingv1812AdminAdminhttps://develop.openfoam.com/Development/openfoam//merge_requests/218Feature ioobjectlist registry20181112T11:39:01ZMark OLESENFeature ioobjectlist registryAdminAdmin