- Dec 21, 2023
-
-
In steadyOptimisation mode, each time-step corresponds to an optimisation cycle and is sub-cycled, to allow for iterating the flow and adjoint equations. This sub-cycling does not allow the execution of function objects. This was circumvented in 8947735b, by explicitly calling the execution of the function objects in the simple solver of adjointOptimisationFoam. However, each sub-cycled iteration is a writeTime, if the current optimisation cycle corresponds to a writeTime. This means that function objects with a writeControl write; will be executed in each iteration of the flow equations, within this specific optimisation cycle, leading to a lot of disc space and file clutter, if the function object outputs fields (e.g. yPlus). 8947735b is partially rolled back, by protecting the call to the execution of the function objects with a bool that defaults to false.
-
- Dec 20, 2023
-
-
-
-
-
Mark OLESEN authored
- adjointOptimisation : missing link to fileFormats - snappyHexMesh : add fvMotionSolvers link (#3058) STYLE: remove remnant -DFULLDEBUG hints - now more easily covered with wmake -debug ...
-
mattijs authored
-
Mark OLESEN authored
- the fileHandler changes included setting cacheLevel(0) to avoid blocking with redistributePar. However, this meant if clouds were not uniformly present on all ranks the fileHandler would follow different code paths and lead to blocking. Now switch to distributed mode for the lagrangian operations within redistributePar based on the cacheLevel information. FIX: avoid triggering a false processor check in argList - when redistributing to few ranks
-
Mark OLESEN authored
- maintains the same code path within scotch
-
Andrew Heather authored
-
mattijs authored
-
- Dec 19, 2023
-
-
Andrew Heather authored
STYLE: checkMesh - removed writeChecks uppercase JSON option
-
Andrew Heather authored
ENH: add profiling hooks for Extrae into the OpenFOAM profiling (#3043) See merge request !652
-
- the hooks are defined as weak symbols and are compiled into OpenFOAM by default. If the library is not loaded (via LD_PRELOAD) the hooks have no effect. - https://tools.bsc.es/extrae - https://tools.bsc.es/paraver
-
- Dec 18, 2023
-
-
Andrew Heather authored
ENH: update of the adjoint library and introduction of topology optimisation See merge request !649
-
using the Borrvall-Petersson method to compute the source terms of the flow equations.
-
to update the design variables
-
The solution of the QP subproblem can become quite expensive, especially for cases with many design variables (e.g. topology optimisation). A (potentially dense) matrix with the size of the design variables is solved using a matrix-free CG solver. The convergence speed greatly depends on the used preconditioner. This commit adds preconditioner-vector products based on the L-BFGS inverse Hessian and, more importantly, a preconditioner computed using the Sherman-Morrison formula. The latter is applicable here since the LHS of the QP problem is computed as the sum of rank-2 L-BFGS updates, a sum of rank-1 updates (as many as the flow-related constraints) and a diagonal matrix depending on the bound constraints. Additionally, the QP subproblem could have no feasible points. To relax this, constraints can be applied gradually through the targetConstraintReduction enty (typical value of 0.1 for topology optimisation).
-
properly for continuation (written through SubField instead of Field)
-
whenever refering to topology optimisation.
-
Replaced 'convertToMeters' with 'scale' in blockMeshDicts and added the creation of the triSurface folder in some re-evaluation cases
-
-
(aTilda) in topology optimisation can now be provided through the 'wallValue' in the regularisation dictionary (defaults to 1)
-
runs can now be written to files using the 'writeAllFields' flag in the designVariables dictionary (defaults to false)
-
instead of targetPercentages, with a compatibility read on the latter. Changed corresponding tutorials too.
-
Most cases now rely on the nullSpace update method, instead of MMA, since it has proven more reliable. Also, added some constrained optimisation cases, including constraints on the flow rate partition and total pressure losses as well as cases targeting uniformity as the objective function. Added a 3D topology optimisation case which also includes constraints.
-
to keep the regularised design variables and the signed distance in different fields
-
of the STL written by topology optimisation. BUG: when determining which mesh faces are cut by iso-surface faces, only append the latter if it contains more than two points
-
of the objective and constraint gradients in MMA, at a specific optimisation cycle
-
by a small amount, if all of them lay on the lower or upper bounds at the beginning of the optimisation, to avoid singular matrices when computing the update of the design variables.
-
based on phi, instead of U & Sf
-
-
-
-
and the Jacobian of the objective function wrt the turbulence variables is called (rare/unorthodox case). Additionally, objectivePowerDissipation dissipation can now be used in topology optimisation, adding the necessary blockage dependency to it.
-
- Building the iso-surface spliting fluid and solid parts in topology optimisation has been re-worked to obtain an iso-surface with unique point numbering - The mechanism behind marchingCells for dynamicTopODesignVariables has been slightly reworked
-
based on the product of the Reynolds and Darcy numbers
-
-
The derivatives of the objective and constraint functions can optionally be normalised in each optimisation cycle, so that MMA does not put an excesive stress on the constraints, which can negatively affect the course of the optimisation
-
- Minor code style - virtual functions - added some noexcept
-
-