Salvus 2024.1.0
contains major improvements and changes in all areas of
Salvus. We took great care to maintain backwards compatibility and most users
should be able to safely update. Nonetheless, a few users should be careful when
updating:
0.12.x
.Nothing special needs to be done for the SalvusCompute binaries. Just running the Mondaic downloader will update them.
The Python installation requires a bit more work, as, starting with Salvus
2024.1.0
, Salvus now requires Python 3.11. We recommend to create a new
conda
environment for Salvus 2024.1.0
, while backing up the old one:
conda create --name salvus_backup --clone salvus conda remove --name salvus --all
Once this is done, please follow the usual installation instructions to set up a new environment.
By and large, Salvus 2024.1.0
is fully compatible with projects and scripts
created with older versions of Salvus. However, there are a few important
changes to note:
A new module salvus.material
has been added, which for now only contains
utilities for handling attenuation. In the future more functionality to handle
material properties will be added or moved to here.
Dealing with attenuation has been streamlined. For defining a standard linear
solids model (SLS) using default arguments, the recommended way is to specify
the LinearSolids
as part of the ModelConfiguration
. The former class
LinearSolid
in salvus.mesh
has been removed, but it is still possible to
compute a tailored least-squares fit to the Q-factor model using the
functionality in salvus.material.attenuation
.
The meshing backend has undergone a major overhaul. While we strive for compatibility of the stable API, some rarely used advanced features have been moved or depreacted. When in doubt if this would affect you, please have a look at the current tutorials or reach out for support.
We started versioning the project files and directory structure on disk to facilitate migration steps in the future. The first time to try to load a project created with an older version of Salvus, you will see a message like this
Just to make sure you are not accidentially submitting the wrong answer, it will ask you again to confirm.
UnstructuredMesh
classThe core fields of the UnstructuredMesh
class can no longer be directly
assigned. Most workflows should likely create new mesh objects instead. Please
see the following collection of migration examples:
mesh = sn.UnstructuredMesh(...) # No longer works: mesh.points = points mesh.connectivity = connectivity # Instead use: mesh = sn.UnstructuredMesh(points=points, connectivity=connectivity, ...) # No longer works: mesh.points *= 1.1 # Instead use: mesh.points[:] *= 1.1 # No longer works: mesh.elemental_fields = {} mesh.side_sets = {} # Instead use: mesh.elemental_fields.clear() mesh.side_sets.clear() # Or create a new mesh object: mesh = sn.UnstructuredMesh(..., elemental_fields={}, side_sets={})