openfoam merge requestshttps://develop.openfoam.com/Development/openfoam/-/merge_requests2019-09-05T08:21:19Zhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/274BUG: add a warning in star4ToFoam for .cel files containing only shell entrie...2019-09-05T08:21:19ZKutalmış BerçinBUG: add a warning in star4ToFoam for .cel files containing only shell entries (#1425)AdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/277add stringOps::toScalar and '#eval' dictionary directive2019-09-30T19:54:46ZMark OLESENadd stringOps::toScalar and '#eval' dictionary directiveThe #eval directive is similar to the #calc directive, but for evaluating string expressions into scalar values using an internal parser for the evaluationThe #eval directive is similar to the #calc directive, but for evaluating string expressions into scalar values using an internal parser for the evaluationAdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/278Integration of OpenFOAM.org | Wall functions2019-10-03T10:34:11ZKutalmış BerçinIntegration of OpenFOAM.org | Wall functionsAdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/279TUT: add Allclean script into bump2D2019-10-03T11:00:07ZKutalmış BerçinTUT: add Allclean script into bump2DAdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/280improvements to stringOps::expand operations2019-10-08T12:38:29ZMark OLESENimprovements to stringOps::expand operations- added numerical evaluation in string expansion
- refactored expansion code to use common multi-parameter backend- added numerical evaluation in string expansion
- refactored expansion code to use common multi-parameter backendAdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/284Issue 1454 post process2019-10-17T12:26:30ZAdminIssue 1454 post processUpdated `postProcess` for mesh changes to update the function objects instead of performing a full clear-outUpdated `postProcess` for mesh changes to update the function objects instead of performing a full clear-outv1912AdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/291ENH: interpolationTable improvements2019-11-08T15:45:19ZMark OLESENENH: interpolationTable improvements- reduce code duplication, support returning multiple interpolations
as a Field- reduce code duplication, support returning multiple interpolations
as a FieldAdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/292bug-1108-turbulentDFSEMInlet2019-11-13T12:55:48ZKutalmış Berçinbug-1108-turbulentDFSEMInletAdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/295bug-1459-turbulentInflow2019-11-14T14:35:14ZKutalmış Berçinbug-1459-turbulentInflowpassed regression tests except inletCell sampling where I have changed the sampling method from face to midPoint to enable sampling from the cell centres thereat.passed regression tests except inletCell sampling where I have changed the sampling method from face to midPoint to enable sampling from the cell centres thereat.AdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/298Feature zipfields2019-11-18T09:35:31ZMark OLESENFeature zipfieldsAdds _"zip" fields_ function for combining component fields together and _"unzip" fields_ function for splitting a field into its component parts.Adds _"zip" fields_ function for combining component fields together and _"unzip" fields_ function for splitting a field into its component parts.v1912AdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/297BUG: adjointSolverName not set correctly in adjointWallVelocityLowRe (fixes #...2019-11-19T11:08:58ZVaggelis PapoutsisBUG: adjointSolverName not set correctly in adjointWallVelocityLowRe (fixes #1502)v1912AdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/296BUG: RASModelVariables::SpalartAllmaras cannot be combined with an...2019-11-19T11:09:23ZVaggelis PapoutsisBUG: RASModelVariables::SpalartAllmaras cannot be combined with an...BUG: RASModelVariables::SpalartAllmaras cannot be combined with an fvMotionSolver diffusivity which depends on wall distances (fixes #1501)BUG: RASModelVariables::SpalartAllmaras cannot be combined with an fvMotionSolver diffusivity which depends on wall distances (fixes #1501)v1912AdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/293Feature single precision solve type2019-11-19T11:10:08ZMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comFeature single precision solve typeAdds functionality to SPDP mode:
- all (field) summations done in double precision (end result still single precision)
- mesh face areas, face centres, cell volumes and cell centres calculated in double precision (but still stored in sin...Adds functionality to SPDP mode:
- all (field) summations done in double precision (end result still single precision)
- mesh face areas, face centres, cell volumes and cell centres calculated in double precision (but still stored in single precision)
- some mesh checks done in double precisionAdminAdminhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/300Feature expressions2019-12-10T12:10:28ZMark OLESENFeature expressions### Summary
This branch represents an implementation of what is considered to be the most useful aspects of swak4Foam ([Swiss-Army-Knife for FOAM](https://openfoamwiki.net/index.php/Contrib/swak4Foam)) from Bernhard Gschaider, namely ...### Summary
This branch represents an implementation of what is considered to be the most useful aspects of swak4Foam ([Swiss-Army-Knife for FOAM](https://openfoamwiki.net/index.php/Contrib/swak4Foam)) from Bernhard Gschaider, namely the ability to use text-based expressions instead of coding in C++ for the following cases:
- expression-based boundary conditions (also known as _groovy_ boundary conditions)
- expression-based setFields (also known as _funky_ set fields)
The idea of what we currently term *expressions* was pioneered by
(Bernhard Gschaider) and is now firmly established in `swak4Foam`.
Among other things, expressions attempt to bridge the gap between
using standard, predefined boundary conditions and writing dedicated,
special-purpose ones. Although part of this gap is now covered within
OpenFOAM by using dynamically compiled user coding (eg, coded boundary
conditions), there remains substantial areas where it can be
significantly more convenient to have a series of predefined functions
and expression sytax with some access to base OpenFOAM field
functionality that enables rapid deployment of boundary conditions, or
custom-defined `setFields` without writing code.
A significant portion of `swak4Foam` expressions has been adapted for
direct integration into OpenFOAM. During the integration and rewrite,
we have tried to pare things down to a smaller subset with the aim of
covering 90% or more of the common cases. The remaining cases are left
to be reassessed for extending the *expressions* functionality in the
future, but they also may be better served with other approaches (eg,
with coded conditions) that were not available when `swak4Foam` was
originally conceived.
To the greatest extent possible, the integrated *expressions* have
been designed to avoid name clashes with `swak` so it should remain
possible to use the most recent versions of `swak` without problem.
### Risks
- New functionality, so low chance of regression.
- The scope of the functionality will be revised in the future
### Naming (for `swak4Foam` users)
The following are the *expressions* correspondences to `swak`:
- The `exprFixedValue` and `exprGradient` boundary conditions are
roughly equivalent to the _groovy_ boundary conditions.
- The utilities `setExprFields` and `setExprBoundaryFields` are
roughly equivalent to the _funky_ utilities of similar name.
The naming of the boundary conditions and utilities not only reflects
the slightly different input requirements, but simultaneously seeks to
avoid any potential name-clash with `swak4Foam` in a mixed
environment.
The names for the boundary condition dictionary entries tend be
shorter and slightly different (eg, `valueExpr` vs `valueExpression`)
to serve as a small reminder that the *expressions* syntax is slightly
different than the *groovy* equivalents. It also allows the user to
fashion dictionary entries that are sufficient for **both** boundary
condition variants and quickly toggle between them simply by changing
the boundary condition `type`.v1912Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/301Feature particle patch postpro filtering2019-12-10T15:53:15ZAndrew HeatherFeature particle patch postpro filtering### Summary
Adds options to write particle-patch interactions to file, and to select particle fields to post-process for the `patchPostProcessing` cloud function object
### Resolved bugs (If applicable)
none
### Details of new mode...### Summary
Adds options to write particle-patch interactions to file, and to select particle fields to post-process for the `patchPostProcessing` cloud function object
### Resolved bugs (If applicable)
none
### Details of new models (If applicable)
Cloud patch interaction models:
Optionally write patch interaction statistics, e.g. number and mass of particles that stick, escape etc. to file using the optional `writeToFile` entry, e.g.
```
localInteractionCoeffs
{
patches
(
"(walls|cyc.*)"
{
type rebound;
}
"inlet|outlet"
{
type escape;
}
);
// New optional entry
writeToFile yes;
}
```
Cloud function objects:
New `fields` optional entry can be used to select which particle fields to post-process; if empty or the entry is not given all fields are written (to provide backwards compatibility)
```
patchPostProcessing1
{
type patchPostProcessing;
// Optional new entry
fields (position "U.*" d T nParticle);
maxStoredParcels 20;
patches
(
cycLeft_half0
cycLeft_half1
);
}
```
See the `$FOAM_TUTORIALS/lagrangian/reactingParcelFilm/filter` tutorial for an example
### Risks
Low riskv1912Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/302ENH: Added new scaledFixedValue boundary condition2019-12-11T10:45:32ZAndrew HeatherENH: Added new scaledFixedValue boundary conditionAdds new `scaledFixedValue` boundary condition
This condition applies a scalar multiplier to the value of another
boundary condition.
Usage
Property | Description | Required | Default value
scale ...Adds new `scaledFixedValue` boundary condition
This condition applies a scalar multiplier to the value of another
boundary condition.
Usage
Property | Description | Required | Default value
scale | Time varing scale | yes |
patch | patchField providing the raw patch value | yes |
Example of the boundary condition specification to scale a reference
velocity of (15 0 0) supplied as a fixedValue by a table of values
that ramps the scale from 0 to 1 over 1 second:
```
<patchName>
{
type scaledFixedValue;
scale table
(
( 0 0)
( 1.0 1.0)
(100.0 1.0)
);
patch
{
type fixedValue;
value uniform (15 0 0);
}
}
```v1912Mattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/306Feature mesh update controls2019-12-12T11:03:03ZAndrew HeatherFeature mesh update controls### Summary
Adds a new update function to `dynamicFvMesh` that enables users to control how often the mesh is updated for moving mesh cases.
### Details of new models (If applicable)
Adds a `timeControl` object to `dynamicFvMesh`, i....### Summary
Adds a new update function to `dynamicFvMesh` that enables users to control how often the mesh is updated for moving mesh cases.
### Details of new models (If applicable)
Adds a `timeControl` object to `dynamicFvMesh`, i.e. the same controls as used by function objects. This requires the top-level solver to call the new
mesh.controlledUpdate();
function instead of
mesh.update();
Currently applied to `pimpleFoam` and `rhoPimpleFoam` only for beta testing, and likely to be rolled out across other solvers in future releases.
Example usage in the `dynamicMeshDict`
updateControl timeStep;
updateInterval 5;
### Risks
Only applied to the solvers mentioned above (for now) - testing has not shown any regressions.v1912Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/305ENH|BUG: Misc2019-12-12T11:30:37ZKutalmış BerçinENH|BUG: MiscAndrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/307ENH: New adjont shape optimisation functionality2019-12-12T14:18:22ZVaggelis PapoutsisENH: New adjont shape optimisation functionalityThe adjoint library is enhanced with new functionality enabling
automated shape optimisation loops. A parameterisation scheme based on
volumetric B-Splines is introduced, the control points of which act as
the design variables in the op...The adjoint library is enhanced with new functionality enabling
automated shape optimisation loops. A parameterisation scheme based on
volumetric B-Splines is introduced, the control points of which act as
the design variables in the optimisation loop [1, 2]. The control
points of the volumetric B-Splines boxes can be defined in either
Cartesian or cylindrical coordinates.
The entire loop (solution of the flow and adjoint equations, computation
of sensitivity derivatives, update of the design variables and mesh) is
run within adjointOptimisationFoam. A number of methods to update the
design variables are implemented, including popular Quasi-Newton methods
like BFGS and methods capable of handling constraints like SQP or constraint projection.
The software was developed by PCOpt/NTUA and FOSS GP, with contributions from
Dr. Evangelos Papoutsis-Kiachagias,
Konstantinos Gkaragounis,
Professor Kyriakos Giannakoglou,
Dr. Andy Heather
[1] E.M. Papoutsis-Kiachagias, N. Magoulas, J. Mueller, C. Othmer,
K.C. Giannakoglou: 'Noise Reduction in Car Aerodynamics using a
Surrogate Objective Function and the Continuous Adjoint Method with
Wall Functions', Computers & Fluids, 122:223-232, 2015
[2] E. M. Papoutsis-Kiachagias, V. G. Asouti, K. C. Giannakoglou,
K. Gkagkas, S. Shimokawa, E. Itakura: ‘Multi-point aerodynamic shape
optimization of cars based on continuous adjoint’, Structural and
Multidisciplinary Optimization, 59(2):675–694, 2019Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/304ENH: Added new limitFields function object2019-12-13T20:04:07ZAndrew HeatherENH: Added new limitFields function object@roger @prashant - can you confirm this OK to go in? and any test case/updated tutorial that can be provided?
---
# Details of the new function object:
Limits fields to user-specified min and max bounds
Usage
Example of func...@roger @prashant - can you confirm this OK to go in? and any test case/updated tutorial that can be provided?
---
# Details of the new function object:
Limits fields to user-specified min and max bounds
Usage
Example of function object specification:
limitFields1
{
type limitFields;
libs ("libfieldFunctionObjects.so");
...
fields (U);
limit max;
max 100;
}
Where the entries comprise:
Property | Description | Required | Default value
type | type name: limitFields | yes |
fields | list of fields to process | yes |
limit | bound to limit - see below | yes |
The limit entry can take the value:
- min : specify a minimum value
- max : specify a maximum value
- both : specify a minimum value and a maximum valuev1912Mark OLESENMark OLESEN