This documentation is not for the latest stable Salvus version.
%matplotlib inline
%config Completer.use_jedi = False
from salvus.mesh.simple_mesh import SmoothieSEM, Globe3D
from salvus import namespace as sn
# a quake in Turkey that we will use in this tutorial, original data from IRIS spud:
# http://service.iris.edu/fdsnws/event/1/query?eventid=2847365
# http://ds.iris.edu/spudservice/momenttensor/gcmtid/C201003241411A/quakeml#momenttensor
source = sn.simple_config.source.seismology.SideSetMomentTensorPoint3D(
latitude=38.82,
longitude=40.14,
depth_in_m=4500,
side_set_name="r1",
mrr=5.47e15,
mtt=-4.11e16,
mpp=3.56e16,
mrt=2.26e16,
mrp=-2.25e16,
mtp=1.92e16,
)
receivers = sn.simple_config.receiver.seismology.parse(
"data/inventory.xml", dimensions=3, fields=["displacement"]
)
# prepare an event collection that will later be used to mask the mesh to a region of interest
event_collection = sn.EventCollection.from_sources(
sources=[source], receivers=receivers
)
from salvus.mesh.mask_generators import SurfaceMaskGenerator
sm = Globe3D()
sm.basic.model = "prem_iso_one_crust"
sm.basic.min_period_in_seconds = 100.0
sm.basic.elements_per_wavelength = 2.0
sm.spherical.min_radius = 4000.0
# use event collection to create a surface mask
smg = SurfaceMaskGenerator(
event_collection,
number_of_points=1000,
distance_in_km=1000.0,
)
# hand over the mask as a callback funcion
sm.create_mesh(mesh_processing_callback=smg)