Salvus 0.11.20
This release brings in local refinements for cylindrical meshes, a speed-up for surface data output, and several usability improvements in SalvusProject. See below for a detailed list of features and bugs that have been patched.
Changes
Fixed the applications of pressure-free boundaries for GPU simulations in certain situations where refinements were present along fluid/solid coupling interfaces.
Significant speedup to the detection of which facets to select for surface output.
Add cylindrical interpolation to local refinement schemes and adopt same interface as change_tensor_order() has for interpolation_type. This changes the api for spherical interpolation from
m.refine_locally(mask, spherical=True, r0_spherical=1.0, r1_spherical=2.0)
to
m.refine_locally(
mask,
interpolation_mode="spherical",
interpolation_kwargs={"r0_spherical": 1.0, "r1_spherical": 2.0}
)
The new cylindrical scheme can be used accordingly
m.refine_locally(
mask,
interpolation_mode="cylindrical",
interpolation_kwargs={"r0_cylindrical": 1.0, "r1_cylindrical": 2.0}
)
Below an example of how this can be used for improved representation of cylindrical structures (left new, right old).
Changes to Experimental Features
Improve the inversion tree widget to visualize per-branch progress.
The p.simulations.launch() method can now take extra output configurations.
These can be any setting that does not modify the receiver output which
currently are surface and volume data settings as well as the memory per rank
buffer settings.
p.simulations.launch(
simulation_configuration="basic",
events=p.events.list(),
site_name="my_computer",
ranks_per_job=12,
extra_output_configuration={
"volume_data": {
"sampling_interval_in_time_steps": 50,
"fields": ["displacement"],
},
"surface_data": {
"sampling_interval_in_time_steps": 20,
"fields": ["acceleration", "velocity"],
"side_sets": ["x0", "x1"],
},
"memory_per_rank_in_MB": 2000.0,
},
)The Project.from_domain() constructor now takes an optional argument
load_if_exists which defaults to False. If this is set to True, and if
the domains are identical, future runs of this constructor will simply load
the existing project from disk rather than raising a “project already exists”
error. This helps remove some boilerplate code which the user previously had
to write.
Add widget to query status of simulations and and improve the widgets of waveforms and inversions.
Minor bug fix in visualizing 2D domains using p.viz.nb.domain that did not
display some source types correctly.