ASPECT
Changes after the latest release (v2.4.0)

This is the list of changes made after the release of ASPECT version 2.4.0. All entries are signed with the names of the author.

1. New: ASPECT now has a cmake option ASPECT_INSTALL_EXAMPLES that allows to build and install all cookbooks and benchmarks. This will include building all shared libraries during 'make' and installing all files to the installation location on 'make install'. This is helpful for installations that are used for teaching and tutorials.
(Rene Gassmoeller, 2023/03/13)

2. New: Plugins in shared libraries now build libmy_plugin.debug.so or libmy_plugin.release.so depending on the current build type. The "Additional shared libraries" parameter value does not need to be adjusted, because ASPECT automatically loads the correct library when "./libmy_plugin.so" is specified.
(Timo Heister, 2023/03/09)

3. New: ASPECT now supports a DebugRelease build type that creates a debug build and a release build of ASPECT at the same time. It can be enabled by setting the CMake option CMAKE_BUILD_TYPE to DebugRelease or by typing "make debugrelease".
(Timo Heister, 2023/03/03)

4. New: There is a new initial composition plugin that reads in a slab model (e.g. Slab2) and converts it to a compositional field.
(Arushi Saxena, Rene Gassmoeller, Juliane Dannberg, 2023/03/03)

5. New: The signal start_timestep can be used to get a callback at the beginning of each timestep.
(Timo Heister, 2023/02/22)

6. Fixed: The depth average postprocessor would crash when trying to compute the quantities "adiabatic_temperature", "adiabatic_pressure", "adiabatic_density", and "adiabatic_density_derivative" for a single depth slice. It would also compute these quantities at equidistant positions along a depth profile from the surface to the bottom of the model, even if user defined depth bounds were specified in the input file. This was fixed so that adiabatic quantities are computed like all other depth averaged quantities by iterating over all cells in the model domain and averaging the properties spatially. As a consequence some functions in the adiabatic conditions interface that contained the bugs and were only used by the depth average postprocessor have been deprecated.
(Rene Gassmoeller, 2023/02/21)

7. New: ASPECT detects when refinement does not actually change the mesh and skips the redundant computation.
(Timo Heister, 2023/02/13)

8. Fixed: The Allow fixed temperature on outflow boundaries = false option (and the equivalent option for composition) now also work in time steps where the mesh is refined. In addition, if this parameter is set to false, fixed temperature/composition are now no longer applied to the boundary in cases where the flow normal to the boundary is zero (as is the case in time step 0).
(Juliane Dannberg, Rene Gassmoeller, 2023/02/03)

9. New: The PhaseFunction class now includes helper functions n_phases_for_each_composition() and n_phases().
(Bob Myhill, 2023/01/22)

10. New: ASPECT has new introspection functions get_indices_for_fields_of_type and get_names_for_fields_of_type. There is also a new utilities function called compute_only_composition_fractions that takes a vector of compositional field values and a list of indices that designates which of those fields correspond to chemical compositions. It then calculates the missing fraction corresponding to the background field, and returns the full vector of fractions.
(Bob Myhill, 2023/01/19)

11. New: The "Compositional fields / Types of fields" parameter in ASPECT has a new type called "strain".
(Bob Myhill, 2023/01/19)

12. New: There is now a new mesh refinement plugin called "Nonadiabatic temperature threshold" that uses the temperature anomaly (compared to the adiabat) to mark additional cells for refinement.
(Juliane Dannberg, 2023/01/17)

13. New: There is now a new additional material model output called ShearHeatingOutputs that contains the fraction of the deformation work that is released as shear heating rather than being converted into other forms of energy, to be filled by the material model. The boundary_area_change_work_fractions variable (which provides the same information) has been removed from the DislocationViscosityOutputs in the grain size material model.
(Juliane Dannberg, 2023/01/12)

14. Added: The 'adiabatic' initial temperature plugin can now use a spatially variable top boundary layer thickness read from a data file or specified as a function in the input file. Additionally, the boundary layer temperature can now also be computed following the plate cooling model instead of the half-space cooling model.
(Daniel Douglas, John Naliboff, Juliane Dannberg, Rene Gassmoeller, 2022/12/06)

15. New: Added a particle property 'grain size' that tracks grain size evolution on particles using the 'grain size' material model.
(Juliane Dannberg, Rene Gassmoeller, 2022/12/06)

(Rene Gassmoeller, 2022/12/02)

17. Improved: The interpolation from particles to fields used to be done field-by-field, creating a lot of overhead in the interpolation algorithms. Now all particle properties are interpolated to fields at the same time, significantly reducing the time required for interpolation for models with many particle properties.
(Rene Gassmoeller, 2022/10/10)

18. New: We now support tangential velocity boundary conditions with GMG for more geometries, such as 2D and 3D chunks.
(Timo Heister, Haoyuan Li, Jiaqi Zhang, 2022/09/13)

19. Changed: Moved composition velocity statistics postprocessor from cookbook to main code. Compatibility of the postprocessor's input parameter "Names of slab compositional fields" is broken by renaming it to the more general "Names of selected compositional fields".
(Elodie Kendall and Anne Glerum, 2022/07/29)

20. New: The graphical output of a computation with mesh deformation can now be optionally done on the undeformed reference mesh ("set Output undeformed mesh = true") and the displacement can be written as a separate vector field ("set Output mesh displacement = true").
(Timo Heister, 2022/07/16)

21. Changed: In our plugin systems, we have many factory functions that create objects and returned raw pointers; in many but not all places, these returned raw pointers were then converted to std::unique_ptrs. This has been changed now by (hopefully) consistently letting factory functions return std::unique_ptrs right away, and then dealing with them at the receiving end.
(Wolfgang Bangerth, 2022/07/07)

22. New: There is now a postprocessor that outputs the total volume of the computational domain.
(Anne Glerum, 2022/06/28)