-
Notifications
You must be signed in to change notification settings - Fork 23
Open
Description
Hi Lion, I'm using Syngine to compute force source Green's functions. I'm requesting displacement seismograms in ZRT. I was assuming the convention to be:
- Z positive up
- R positive away from source
- T positive 90° clockwise from the line pointing from source to receiver
I built a sandbox to test this by applying unit forces in the up, south, and east directions at a source due west of a receiver:
Given my sign convention above, the first two waveform panels make sense. But in the last one, there's a negative first motion for a force in the direction from source to receiver. This suggests that radial is defined to be positive towards the source. Am I missing something, is this in fact the convention, or is this perhaps a bug?
Please click here for the code I used to produce the plots.
import matplotlib.pyplot as plt
import obspy
from obspy import UTCDateTime
BASE_URL = 'https://service.iris.edu/irisws/syngine/1/query?'
MODEL = 'iasp91_2s'
T0 = -20 # [s]
GF_DURATION = 40 # [s]
def get_syngine_waveforms(
station_lat, station_lon, source_lat, source_lon, source_depth, origin_time, forces,
):
url = BASE_URL + '&'.join(
[
'format=miniseed',
'components=ZRT',
'units=displacement',
'model=' + MODEL,
'origintime=' + origin_time.format_iris_web_service(),
'starttime=' + (origin_time + T0).format_iris_web_service(),
'endtime=' + (origin_time + GF_DURATION).format_iris_web_service(),
'receiverlatitude=' + str(station_lat),
'receiverlongitude=' + str(station_lon),
'sourcelatitude=' + str(source_lat),
'sourcelongitude=' + str(source_lon),
'sourcedepthinmeters=' + str(source_depth),
'sourceforce=' + ','.join([str(force) for force in forces]),
]
)
return obspy.read(url)
STATION_LAT = 0 # [deg.]
STATION_LON = 0.01 # [deg.]
SOURCE_LAT = 0 # [deg.]
SOURCE_LON = 0 # [deg.]
SOURCE_DEPTH = 0 # [m]
# [Newtons] f_r, f_theta, f_phi (r is positive upwards, theta is positive to the south,
# and phi is positive to the east)
UP = (1, 0, 0)
SOUTH = (0, 1, 0)
EAST = (0, 0, 1)
# Plot "station map"
fig, ax = plt.subplots()
ax.scatter(
SOURCE_LON, SOURCE_LAT, color='green', label='Source',
)
ax.scatter(
STATION_LON, STATION_LAT, color='red', label='Station',
)
ax.set_xlabel('Longitude')
ax.set_ylabel('Latitude')
ax.legend()
ax.set_title(f'Source depth = {SOURCE_DEPTH:g} m')
fig.tight_layout()
fig.show()
# Grab and plot waveforms
for forces in UP, SOUTH, EAST:
st = get_syngine_waveforms(
station_lat=STATION_LAT,
station_lon=STATION_LON,
source_lat=SOURCE_LAT,
source_lon=SOURCE_LON,
source_depth=SOURCE_DEPTH,
origin_time=UTCDateTime(2016, 5, 22, 7, 57, 34),
forces=forces,
)
fig = plt.figure()
st.plot(fig=fig, equal_scale=True)
fig.suptitle(f'$f_r$, $f_\\theta$, $f_\\phi$ = {forces}')
fig.tight_layout()
fig.show()Metadata
Metadata
Assignees
Labels
No labels
