openfoam merge requestshttps://develop.openfoam.com/Development/openfoam/-/merge_requests2019-12-14T15:34:16Zhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/308Integration feature numerics2019-12-14T15:34:16ZSergio FerrarisIntegration feature numericsMerging weightedFlux scheme and modified laplacianFoam solver
to use dimScalar or volScalar for DMerging weightedFlux scheme and modified laplacianFoam solver
to use dimScalar or volScalar for DMark OLESENMark OLESENhttps://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/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/265ENH: add PDRsetFields utility2019-12-17T10:07:43ZMark OLESENENH: add PDRsetFields utility- the PDRsetFields utility processes a set of geometrical obstructions
to determine the equivalent blockage effects.
These fields are necessary inputs for PDRFoam calculations.
![simple-cage](/uploads/6782621d04c86e360314258cc...- the PDRsetFields utility processes a set of geometrical obstructions
to determine the equivalent blockage effects.
These fields are necessary inputs for PDRFoam calculations.
![simple-cage](/uploads/6782621d04c86e360314258cc96f3bc0/simple-cage.png)v1912Sergio FerrarisSergio Ferrarishttps://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/674topoSet: allow use of 'zone' instead 'set', 'zones' instead of 'sets' in all ...2024-03-27T10:25:42ZMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comtopoSet: allow use of 'zone' instead 'set', 'zones' instead of 'sets' in all set sources### Summary
Everywhere a topoSetSource uses a (file-based) set allow use of a (mesh-based) zone.
### Resolved bugs (If applicable)
### Details of new models (If applicable)
If the keyword 'zone' is found instead of 'set' it instead u...### Summary
Everywhere a topoSetSource uses a (file-based) set allow use of a (mesh-based) zone.
### Resolved bugs (If applicable)
### Details of new models (If applicable)
If the keyword 'zone' is found instead of 'set' it instead uses the name to lookup the corresponding zone from the mesh. The advantage of a mesh-based zone is that they get updated if the mesh is updated.
### Risks
Change to user input: everywhere in a topoSetDict can use 'zone' or 'zones' instead of 'set' or 'sets'.Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/672misc changes for reduced stringstream and MPI overhead2024-03-07T18:11:39ZMark OLESENmisc changes for reduced stringstream and MPI overheadv2406Kutalmış BerçinKutalmış Berçinhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/671Improve streaming matrix and internal memory management2024-03-07T10:18:28ZMark OLESENImprove streaming matrix and internal memory management- Adjust procLduMatrix etc to allow default construct and reading from stream, which enables simpler transfer of data between ranks.
- Internal memory management with unique_ptr (modernize and simplifies code).- Adjust procLduMatrix etc to allow default construct and reading from stream, which enables simpler transfer of data between ranks.
- Internal memory management with unique_ptr (modernize and simplifies code).v2406Kutalmış BerçinKutalmış Berçinhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/668Feature topo set2024-03-18T16:13:53ZMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comFeature topo set- add documentation to topoSetSource
- add to etc/annotated/caseDict/topoSetSourcesDict
- add testcase
- work out what a good solidBodyMotionFunction is- add documentation to topoSetSource
- add to etc/annotated/caseDict/topoSetSourcesDict
- add testcase
- work out what a good solidBodyMotionFunction isMark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/666ensight cloud functionObject2024-02-02T13:31:20ZMark OLESENensight cloud functionObjectAdditional function-object to generate EnSight output for lagrangian. cross-ref EP2316Additional function-object to generate EnSight output for lagrangian. cross-ref EP2316Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/665Updates to reduce unnecessary registration of tmp fields2024-02-21T15:28:12ZMark OLESENUpdates to reduce unnecessary registration of tmp fieldsAs outlined in #2723 the registration/deregistration of tmp fields adds unnecessary hashing operations.
These changes remove most of these cases and make more extensive use of various factory methods to simplify future changes. The large...As outlined in #2723 the registration/deregistration of tmp fields adds unnecessary hashing operations.
These changes remove most of these cases and make more extensive use of various factory methods to simplify future changes. The largest contributor to tmp items is GeometricField (eg, volScalarField).
In general, the preference is to use more compact factory methods when dealing with tmp/autoPtr/refPtr.
For example,
```
auto tfld = tmp<scalarField>::New(patch.size());
auto& fld = tfld.ref();
```
instead of
```
tmp<scalarField> tfld(new scalarField(patch.size()));
auto& fld = tfld.ref();
```
When dealing with `regIOobject` types (which can be registered in an `objectRegistry`), the syntax with the `IOobject` becomes messier. Thus for tmp GeometricFields etc there is are dedicated factory methods that use the current timeName and the relevant mesh for the registry. For example,
```
auto tfld = volScalarField::New("foo", mesh, dimensionedScalar(dimless, Zero));
auto& fld = tfld.ref();
```
instead of
```
auto tfld = tmp<volScalarField>::New
(
IOobject
(
"foo",
mesh.time().timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE,
IOobject::NO_REGISTER
),
mesh,
dimensionedScalar(dimless, Zero)
);
auto& fld = tfld.ref();
```
There are however instances when the tmp field **must** registered (eg, used for boundary conditions). In those cases it is also possible to explicitly specify the preferred registration handling:
```
auto tfld = volScalarField::New("foo", IOobject::REGISTER, mesh, dimensionedScalar(dimless, Zero));
auto& fld = tfld.ref();
```Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/664Remove obsolete Pstream functions2024-02-01T13:52:51ZMark OLESENRemove obsolete Pstream functionsCleanup of items that have been obsoleted and unused since around early 2022 (mostly related to broadcast functionality).
Issue #3087.Cleanup of items that have been obsoleted and unused since around early 2022 (mostly related to broadcast functionality).
Issue #3087.Mattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/663Misc. changes in the regionFaModels2024-02-23T15:54:11ZKutalmış BerçinMisc. changes in the regionFaModelsAndrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/662FIX: replaced temp internalField with DimensionedField::null (fixes #3082)2024-01-24T20:47:17ZVaggelis PapoutsisFIX: replaced temp internalField with DimensionedField::null (fixes #3082)`GeometricField::Boundary` allocated using createZeroBoudnaryPtr held a dangling reference to a temporary object (see also #3082).
This dangling reference was never accessed, so it didn't cause any wrong memory access. It did however i...`GeometricField::Boundary` allocated using createZeroBoudnaryPtr held a dangling reference to a temporary object (see also #3082).
This dangling reference was never accessed, so it didn't cause any wrong memory access. It did however increase the peak memory consumption.
Replaced the temporary object with `DimensionedField<Type, volMesh>::null`Mark OLESENMark OLESENhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/661Misc. changes in the finite-area module2024-03-05T18:14:15ZKutalmış BerçinMisc. changes in the finite-area moduleAndrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/660Use factory Clone for patch fields2024-01-23T11:22:22ZMark OLESENUse factory Clone for patch fields- simplifies some code.- simplifies some code.Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/659ENH: mapped: keep coupling info. Fixes #30902024-01-25T13:35:03ZMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comENH: mapped: keep coupling info. Fixes #3090Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/658factory Clone method for handling member clone() methods2024-01-09T11:56:53ZMark OLESENfactory Clone method for handling member clone() methods- reduces code clutter, simplifies modification for new types.
Handled classes:
Function1, PatchFunction1, coordinateRotation, coordinateSystem,
particle, liquidProperties, solidProperties- reduces code clutter, simplifies modification for new types.
Handled classes:
Function1, PatchFunction1, coordinateRotation, coordinateSystem,
particle, liquidProperties, solidPropertiesAndrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/657BUG: ISQP crashing with the ShermanMorrison preconditiooner and no bounds (fi...2024-01-09T11:57:45ZVaggelis PapoutsisBUG: ISQP crashing with the ShermanMorrison preconditiooner and no bounds (fixes #3077)ISQP crashed during the first update of the design variables, if the
latter had no bounds and the ShermanMorrison preconditiooner was used.ISQP crashed during the first update of the design variables, if the
latter had no bounds and the ShermanMorrison preconditiooner was used.Andrew HeatherAndrew Heatherhttps://develop.openfoam.com/Development/openfoam/-/merge_requests/656Code adjustments to avoid gcc-13 warnings about dangling references2024-01-11T10:08:47ZMattijs Janssens4-Mattijs@users.noreply.develop.openfoam.comCode adjustments to avoid gcc-13 warnings about dangling referencesMark OLESENMark OLESEN