Skip to content
Snippets Groups Projects
  1. Dec 09, 2021
    • Vaggelis Papoutsis's avatar
      ENH: added functionality for smoothing the sensitivity derivatives · 3ef0d19e
      Vaggelis Papoutsis authored and Andrew Heather's avatar Andrew Heather committed
      A Helmholtz-like filter is applied to the original field of sensitivity
      derivatives. The corresponding PDE is solved on the sensitivity patches,
      using the finite area infrastructure. A smoothing radius is needed,
      which is computed based on the average 'length' of the boundary faces,
      if not provided by the user explicitly.
      
      If an faMesh is provided, it will be used; otherwise it will be created
      on the fly based on either an faMeshDefinition dictionary in system or
      one constructed internally based on the sensitivity patches.
      3ef0d19e
  2. Nov 26, 2021
  3. Nov 05, 2021
  4. Aug 05, 2021
  5. Jul 28, 2021
  6. Jul 15, 2021
  7. Apr 26, 2021
  8. Mar 17, 2021
  9. Mar 05, 2021
  10. Dec 18, 2020
  11. Dec 11, 2020
    • Vaggelis Papoutsis's avatar
      BUG: globalSum needed in the merit functions' directional derivative (fixes #1949) · 7ffa36df
      Vaggelis Papoutsis authored and Andrew Heather's avatar Andrew Heather committed
      Does not affect the current functionality of shape optimisation.
      7ffa36df
    • Vaggelis Papoutsis's avatar
      BUG: Wrong First extrapolated value of the merit function (fixes #1948) · 2eae536a
      Vaggelis Papoutsis authored and Andrew Heather's avatar Andrew Heather committed
      Affected only the first optimisation cycle, if line search was enabled
      
      If eta was not set explicitly, it was computed after evaluating the
      directional derivative of the merit function, which was computed
      wrongly, leading to an erroneous value of the extrapolated merit
      function value.
      2eae536a
    • Vaggelis Papoutsis's avatar
    • Vaggelis Papoutsis's avatar
    • Vaggelis Papoutsis's avatar
      ENH: da is appended by the adjoint solver name · 36159cb1
      Vaggelis Papoutsis authored
      if useSolverNameForFields is set to true. This facilitates continuation.
      36159cb1
    • Vaggelis Papoutsis's avatar
      ENH: deprecation of fvOptionsAdjoint · 95748b01
      Vaggelis Papoutsis authored
      fvOptionsAdjoint was needlessly duplicating a lot of the functionality
      of fvOptions in order to add an interface for computing sensitivity
      contributions emerging from fvOptions. To reduce this code duplication:
      
      - fvOptionsAdjoint was removed
      - the corresponding sensitivity contributions have moved to fvOptions through
        virtual functions (returning a zero contribution in the base so
        backwards compatibility is retained)
      - all sensitivity classes that were using fvOptionsAdjoint have been
        modified appropriately
      - all adjoint solvers are now grabbing a reference to an fvOptionList
        from the database instead of constructing an fvOptionsAdjointList
      
      Hence, all fvOptions contributions to the adjoint equations
      or the sensitivity derivatives can be given through system/fvOptions,
      removing the need for separate sub-dictionaries within optimisationDict.
      95748b01
    • Vaggelis Papoutsis's avatar
      ENH: changes in objective::write · 7d83fb79
      Vaggelis Papoutsis authored
      - Expanded the write function in the base class so that it can manage
        input coming from the derived ones. This reduces a lot of code
        duplication in the latter but keeps the functionality.
      - Added a default width for all entries in the objective files.
      - If a normalisation factor or a target is set, they are written on the
        header of the objective file.
      - Cosmetic/code consistency changes in various files.
      7d83fb79
    • Vaggelis Papoutsis's avatar
      ENH: objectiveManager now writes the weighted objective function · 4981061c
      Vaggelis Papoutsis authored
      to files, if the corresponding adjoint solver has more than one
      objectives.
      4981061c
    • Vaggelis Papoutsis's avatar
      ENH: changes in adjointSimple · ae674b28
      Vaggelis Papoutsis authored
      - Added preLoop, loop and postLoop functions
      - Added preIter, mainIter and postIter functions for each SIMPLE
        iteration
      - Added addMomentumSource and addPressureSource virtual functions, to
        allow for additions by derived classes
      ae674b28
    • Vaggelis Papoutsis's avatar
      ENH: changed the treatment of fvOptions in primal solvers · ba300c3c
      Vaggelis Papoutsis authored
      fvOptions are no longer a member of incompressiblePrimalSolver but are
      looked up from the registry in each iteration of each primal solver.
      This means that the main system/fvOptions dictionary is read by ALL
      instances of the primal solvers and the latter no longer have their
      own fvOptions dict in optimisationDict. This is safe since each fvOption
      is applied to a specific field and in case of many primal solvers, the
      primal fields are named differently for each of them.
      
      In addition, simple is now split in preLoop, loop and postLoop phase.
      Furthermore, each SIMPLE iteration is broken down to
      a preIter, mainIter and postIter phase, to allow for different behaviour
      by derived classes.
      ba300c3c
    • Vaggelis Papoutsis's avatar
      ENH: adjointRASModel now returns a reference · 0fb51529
      Vaggelis Papoutsis authored
      to the primal and adjoint solver names
      0fb51529
    • Vaggelis Papoutsis's avatar
      ENH: change in the discretization of part of the (E)SI sensitivity terms · aee0c30a
      Vaggelis Papoutsis authored
      Part of the (E)SI shape sensitivities depends of grad(Ua) & nf computed
      on the boundary. Up to now, the code was only computing the normal part
      of grad(Ua), to avoid the potentially spurious tangential component
      which is computed on the cell center and extrapolated to the boundary
      faces. However, for some objectives that are strongly related to the
      stresses (e.g. moment, stresses), including also the tangential part of
      grad(Ua) is necessary for E-SI to replicate the outcome of FI.
      
      Extensive testing on a number of objectives/cases showed
      - No regression when including the tangential part
      - Improved behaviour in some rare cases (moment, stresses)
      
      Hence, the tangential part is now included by default. The previous code
      behaviour can be replicated by setting the useSnGradInTranposeStresses
      flag to true.
      aee0c30a
    • Vaggelis Papoutsis's avatar
      ENH: Minor NURBS3DVolume refactoring · c2204eaa
      Vaggelis Papoutsis authored
      - controlPointsDefinition is now controled by a class with
        runTimeSelection.
      - Added a new controlPointsDefinition option that translates, rotates
        and scales a given box. The required entries have the same meaning as
        in the Paraview 'Transform' filter, facilitating the transition between the
        visual placement of control boxes (e.g. in Paraview) and their setup
        in the code.
      - Improved performance during the parameterization, sensitivity
        computation and grid displacement phases by re-using already computed
        basis functions.
      c2204eaa
    • Vaggelis Papoutsis's avatar
      ENH: add the solver name to the MRF constructor of simple · 24d64972
      Vaggelis Papoutsis authored
      in case useSolverNameForFields is set to true.
      Used for multi-point optmisation runs.
      24d64972
    • Vaggelis Papoutsis's avatar
      GIT: removed the deprecated forceTarget objective · 5ec8a4d4
      Vaggelis Papoutsis authored
      since its behaviour can be replicated by the more general framework for
      setting objective targets introduced in 6ee7bc66.
      5ec8a4d4
  12. Dec 07, 2020
  13. Dec 03, 2020
  14. Aug 05, 2020
  15. Jul 28, 2020
    • Mark OLESEN's avatar
      COMP: fix sloppy (and now ambiguous) use of PtrList::set() · c77afff4
      Mark OLESEN authored
      - constructs such as the following will no longer worked, but that is
        also a good thing.
      
           ptrlist.set(i, scalarField(nFaces, Zero));
      
        this called set(.., const tmp<scalarField>&), which meant under
        the hood:
      
           - create local temporary const scalarField&
           - wrap as const tmp&
           - use tmp::ptr(), to clone the const-ref
      
        This implies an additional allocation (for the const scalarField&)
        which is immediately discarded. Doubtful that compiler optimization
        would do anything.
      c77afff4
  16. Jul 16, 2020
  17. Jul 15, 2020
  18. Jun 24, 2020
  19. Jun 17, 2020
  20. Jun 12, 2020