Skip to content

Latest commit

 

History

History
333 lines (168 loc) · 21.4 KB

CHANGELOG.rst

File metadata and controls

333 lines (168 loc) · 21.4 KB

Release Notes

These are cashocs' release notes. Note, that only major and minor releases are covered here as they add new functionality or might change the API. For a documentation of the maintenance releases, please take a look at https://github.com/sblauth/cashocs/releases.

2.3.0 (in development)

2.2.0 (August 28, 2024)

  • Add a wrapper for PETSc's SNES solver for nonlinear equations. This is used internally in cashocs whenever possible. For the solution of the state system, our own Newton solver is the default for backwards compatibility. Users can use the new SNES backend by specifying :ini:`backend = petsc` in the Section StateSystem of the configuration.
  • Allows nesting of PETSc Fieldsplit PCs with the command line option "pc_fieldsplit_%d_fields <a,b,...>, as explained at https://petsc.org/main/manualpages/PC/PCFieldSplitSetFields/
  • Increase the precision of the Gmsh output from cashocs
  • New configuration file parameters:

2.1.0 (February 6, 2024)

  • The class :py:class:`cashocs.DeformationHandler` cannot be used anymore. Instead, use the class by calling :py:class:`cashocs.geometry.DeformationHandler`.
  • Add the keyword arguments :python:`pre_callback` and :python:`post_callback` to define callbacks when an optimization problem is instanciated.
  • Callbacks can now have one parameter - the parameter supplied when being called during runtime is the optimization problem itself
  • Add a new function :py:func:`cashocs.io.extract_mesh_from_xdmf` which extracts (any, not only Gmsh) meshes from some XDMF state file (e.g. written by cashocs) and saves the underlying mesh in Gmsh file format.
  • Add a new command line interface :bash:`cashocs-extract_mesh` which can be used to invoke :py:func:`cashocs.io.extract_mesh_from_xdmf`.
  • The output routines save the xdmf files not in a folder called xdmf anymore, but the folder is called checkpoints
  • The output parameter :ini:`save_mesh` does now not only save the optimized mesh, but also writes a Gmsh .msh file of the current iterated mesh for each iteration. This is very useful for restarting simulations.
  • Added the function :py:func:`cashocs.io.import_function` which can be used to load a XDMF Function with a function space. This is very useful for checkpointing (first, read the saved mesh, define the function space, then call :py:func:`cashocs.io.import_function`.
  • :py:func:`cashocs.import_mesh` can now also directly import a Gmsh mesh file. Internally, the mesh is directly converted to xdmf and then read. At the moment, this only supports the conversion mode physical.
  • Add the kwargs linear_solver and (where applicable) adjoint_linear_solver. These can be used to define custom python KSP objects via petsc4py, most importantly, custom python-based preconditioners can be used with these. The feature is covered in the undocumented demo "demos/shape_optimization/python_pc".
  • Add the kwarg newton_linearization to the optimization problem classes. This can be used to specify which (alternative) linearization techniques can be used for solving the nonlinear state systems.
  • The function :py:func:`cashocs.newton_solve` does not change the user-specified tolerance (in the ksp_options) anymore, unless the kwarg inexact=True is set. This means, that the user can use custom "inexact Newton" schemes (e.g., gain one digit in accuracy) too. The old default was to use the relative tolerance of the nonlinear iteration multiplied with a safety factor (0.1).
  • New configuration file parameters:
    • Section LineSearch
      • :ini:`fail_if_not_converged` determines, whether the line search is cancelled once the state system cannot be solved or if a new iterate is tried instead.
    • Section ShapeGradient
    • Section MeshQuality

2.0.0 (May 16, 2023)

1.8.0 (July 6, 2022)

  • cashocs now has a better memory efficiency
  • The printing and file output of cashocs has been modified to better readable and fit the default console window
  • The ksp keyword argument for solver routines in the :python:`_utils` module has been removed. Now, KSP objects can be interfaced only directly via :python:`ksp_options`
  • Rename the default branch from "master" to "main"
  • Implement the "guard against poor scaling" for the stepsize computation from Kelley, but only for the initial stepsize
  • New configuration file parameters
    • Section OptimizationRoutine
      • :ini:`safeguard_stepsize` is a boolean parameter which dis-/enables the guard against poor scaling for the initial iteration

1.7.0 (April 20, 2022)

  • MPI Support - cashocs now has full MPI support. All of its features, including remeshing, now work out of the box in parallel. Nearly any script using cashocs can be run in parallel by invoking it via :bash:`mpirun -n p python script.py`, where :bash:`p` is the number of MPI processes. Note, that running in parallel may sometimes cause unexpected behavior as it is not tested as well as the serial usage. If you should encounter any bugs, please report them.

1.6.0 (April 4, 2022)

1.5.0 (December 22, 2021)

1.4.0 (September 3, 2021)

1.3.0 (June 11, 2021)

  • Improved the remeshing workflow and fixed several smaller bugs concerning it
  • New configuration file parameters:
    • Section Output
      • :ini:`save_pvd_adjoint` is a boolean flag which allows users to also save adjoint states in paraview format
      • :ini:`save_pvd_gradient` is a boolean flag which allows users to save the (shape) gradient(s) in paraview format
      • :ini:`save_txt` is a boolean flag, which allows users to capture the command line output as .txt file

1.2.0 (December 01, 2020)

1.1.0 (November 13, 2020)

1.0.0 (September 18, 2020)

  • Initial release of cashocs.