# v23.11.2 - Bug #1795: One include directory was not properly propagated when using `configure_cmake_external_model.py`, the script to install external models. - Support #0: Update `HelpToUpgrade.md` file to reflect some evolutions that were forgotten in v23.11 and v23.11.1. # From v23.11.1 ## ThirdParty - Bug #1794: Fix Valgrind issues (which were not related to the library itself). # From v23.11 Tests for this version require an up-to-date [installation of third party libraries](https://gitlab.inria.fr/MoReFEM/ThirdPartyCompilationFactory) (v23.10): they introduce a solver that was not installed by previous releases. ## Utilities - __Design #1755__: Refactor `InputData` to make the code more straightforward (most of it was written before the niceties I used in the refactroring were introduced in the language). - __Design #1771__: Filesystem: substitute environment variables in the constructor directly - Bug #1773: Robustify the handling of trailing slash for `FilesystemNS::Directory` objects. - Support #1759: provide a `tuple_element_with_fallback` utility which is a bit more forgiving than `std::tuple_element` which provides directly a compilation error in case specified index is invalid. This is solely to help in some metaprogramming edge cases - most of the time keep you should keep using `std::tuple_element`! - Design #1760: C++20 Concepts were introduced with this release; some implementation choices were made in the context of this ticket (using `Concept` namespace for instance - we will reevaluate later if this is the most adapted way to mark them or not). - Support #1761: add a policy to add quotes to each element for `PrintContainer` utility. - Support #1770: Filesystem: add a function to check whether a directory is inside another or not. - Support #1779: Extend and rename `ReadSimpleBinaryFile` and add more safeties. - __Design #1780__: Extend `InputData` to offer the possibility to extract a subsection and to interact directly with a section. Also place this and `ExtractLeaf()` directly in MoReFEM namespace. - __Support #1784__: Rename `InputDataNS::Extract` `InputDataNS::ExtractLeaf`. ## ThirdParty - Support #1757: choose smallest eigenvalues first by default in Slepc wrapper. - Bug - Documentation #1758: Slepc was not properly taken into account when generating Doxygen documentation. - Bug #1769: Despite a comment warning not to forget it, a data attribute was added in `Wrappers::Petsc::Vector` some time ago but the copy operator and the `Swap` function were not updated accordingly. - Documentation #1778: Doxygen dox files have been slightly modified to enable inclusing of links to the documentation in the Documentation/Wiki directory. - Test #1767: Enrich PetscVectorIO test by adding some cases which weren't covered. - Design #1775: Slepc: extend the API to enable choice of underlying solver. - Design #730: Use a faactory th handle the different possible solvers for PETSc. - Bug #1790: Update `UpdateLua` facilities to make them work with recent changes. - Support #1786: Use include-what-you-use version 0.19 on the codebase. - Support #1785: Add optional support for external dependencies in PETSc (solvers Mumps, SuiteSparse and SuperLU_dist). - Support #1789 Solver: add an attribute to tell whether the solver supports parallel run or not. - Support #1793: Update Valgrind suppression files. ## Core - Design #1764: Move the interpreter of `TimeIterationFile` from `PostProcessing` to `Core`. The reason is that I needed it for restart (see #1745). - __Design #1762__: Modify the class so that we are absolutely sure no output may be overriden by mistake. - __Bug / Design #1763__: Modify the interface of `VariableTimeStep` policy; expand greatly the cases checked in the tests. ## Geometry - Design #1756: slight refactoring for topology and orientations. ## FiniteElement - Design #1788: Use same naming for boundary condition namespace everywhere. ## FormulationSolver - Design #1776: Refactor unreasonable `VariationalFormulation::InitializeVectorSystemSolution()` interface which two overloads didn't encompass the same functionalities. - Support #1781: In Snes class, remove `SNESConvergedReason Snes::GetSnesConvergenceReason()` which is already covered by much cleaner methods ## Model - Feature #1745 - #1746 - #1747: Implement restart mode. - Documentation #1774: Write a wiki entry for restart mode. - Feature #1791: Add an option to generate the Lua file without the comments explaining each field. ## Tests - Support #1564: Rationalize the output directories used by tests and model instances so that it is straightforward to track which directory is related to a given test. - Design #1765: Change the way tests are called in CMake to make it more concise, less error prone... and less puzzling for a newcomer! ## ModelInstances - Design #1777: Use the same naming convention everywhere (no prefix for `VariationalFormulation` and `Model` - namespaces already do the job). ## Still in progress - Feature #248: A warning now tells explicitly that P2/Q2 geometric elements aren't supported yet. - Design #1787: Better error handling when some data from the input file aren't correct. - Support #1783: Add support for more solvers from PETSc.