Salvus 0.11.46
This release comes with a fairly long list of small improvements and bug fixes listed below. Notable new features include (full) gradient sources for elastic simulations, GPU support for acoustic gradient sources, better memory management of inversions, several tweaks regarding window selection and weighting, and a more robust and faster algorithm to attach receivers.
Thanks again to all users who reported bugs and requested features!
Changes
Added vector gradient sources for elastic media.
Scalar gradient sources now also work on GPUs.
Initializing a site with SalvusFlow now runs a test job using the default number of ranks for that site instead of 2.
The site configuration for the GridEngine and PBS site types now allows simplistic expressions:
[[sites.site_name.site_specific.additional_qsub_arguments]]
name = "pe"
value = "mpi {NODES * TASKS_PER_NODE}"
[[sites.site_name.site_specific.additional_qsub_arguments]]
name = "l"
value = "ngpus={int(ceil(RANKS / 12))}"Add a new lat_lng_to_utm_crs() helper routine to directly get a pyproj UTM
CRS object from a point given in latitude and longitude.
The relative source and receiver placement code is much faster now due to algorithmic changes and code optimizations. Additionally, a few previously uncaught edge cases now work as expected.
Added local version of all HPC sites that directly interact with the job queuing and file systems without using SSH.
New salvus-cli alias for the salvus-flow command line call. This will
become the default at one point.
Safely remove adjoint sources after the adjoint simulation. This happens automatically after retrieving the results from the adjoint simulation. Adjoint source files will be recomputed on-the-fly if required. This can also be done explicitly using
p.misfits.compute_adjoint_source()Fix a bug in the hash computation for adjoint simulations that could result in non-unique hashes in special cases.
New default basemap for the seismology receiver weights and misfit maps. Furthermore they are now configurable.
The error log output of the seismological window picking routine is now more descriptive.
SalvusProject will no longer create an empty EventWindowAndWeightSet in case
the window selection routine did not pick a single window for a chosen event.
An appropriate warning message and log file entry will be created in that case.
New function to get all events with windows for a chosen data selection configuration:
p.actions.seismology.get_events_with_windows("DSC_NAME")Added some more receiver weight validation steps and Salvus now properly deals with a few more edge cases, for example when the total receiver weight sum of an event is zero.
UTMDomain objects no longer require the ellipsoid to be passed.