Ejemplo n.º 1
0
	def get_age_arr(self,renew=False):
		"""Get age array for the grids of the tomography result
		"""
		dset = dispDBase.dispASDF(self.attrs['age_h5'])
		minlat = self.attrs['minlat']
		maxlat = self.attrs['maxlat']
		minlon = self.attrs['minlon']
		maxlon = self.attrs['maxlon']
		dset.set_poly(self.poly_lst,minlon,minlat,maxlon,maxlat)
		dset.read_age_mdl()
		self.create_dataset(name='age_nc_Arr', data=dset.age_data)
		self.create_dataset(name='age_lon_Vec', data=dset.age_lon)
		self.create_dataset(name='age_lat_Vec', data=dset.age_lat)
		for period in self.attrs['prd_arr']:
			group = self['%g_sec'%( period )]
			lons = group['lonArr'].value
			lats = group['latArr'].value
			age_Arr = dset.get_ages(lons.reshape(lons.size),lats.reshape(lats.size))
			age_Arr = age_Arr.reshape(lats.shape)
			mask_age = age_Arr > 180.
			if renew:
				del group['age_Arr']
				del group['age_Arr_msk']
			group.create_dataset(name='age_Arr', data=age_Arr)
			group.create_dataset(name='age_Arr_msk', data=mask_age)
		return
Ejemplo n.º 2
0
	def get_c(self,wave='phase'):
		"""Ger c0, c1, c2 for the given period
		"""
		dset = dispDBase.dispASDF(self.attrs['age_h5'])
		# dset = dispDBase.dispASDF('age_model_new.h5')
		for period in self.attrs['prd_arr']:
			str_per = str(int(period)).zfill(2)
			group = self['%g_sec'%( period )]
			c_dic = dset.auxiliary_data.FitResult[str_per][wave].parameters
			c0 = c_dic['c0']
			c1 = c_dic['c1']
			c2 = c_dic['c2']
			age_vel = c0 + c1*np.sqrt(group['age_Arr'].value) + c2*group['age_Arr'].value
			group.create_dataset(name='age_vel', data=age_vel)
			group.create_dataset(name='age_vel_msk', data=group['age_Arr_msk'].value)
			group.attrs.create(name = 'c0', data = c0, dtype='f')
			group.attrs.create(name = 'c1', data = c1, dtype='f')
			group.attrs.create(name = 'c2', data = c2, dtype='f')
		return
Ejemplo n.º 3
0
import dispDBase
import numpy as np
import matplotlib.pyplot as plt

dset = dispDBase.dispASDF('./age_model_180321.h5')
# lst = [(360.-131.108, 47.443),(360.-127.51, 49.382),(360-124.01, 49.282),(360.-124.1, 43.2),(360.-126.76, 43.77),(360.-130.91,44.57),(360.-133.57,45.57)]
lst = [(360.-126.729,49.292),(360.-125.021,48.105),(360.-124.299,44.963),(360.-124.7,43.203),(360.-126.545,43.586),(360.-131.406,44.8),(360.-130.97,47.),(360.-129.821,49.12)]
dset.set_poly(lst,228,43,237,49)
dset.read_age_mdl()
dset.read_stations(stafile='/work3/wang/JdF/station_7D.lst',source='CIEI',chans=['BHZ', 'BHE', 'BHN'])
dset.read_paths(disp_dir='/work3/wang/JdF/FTAN_4_All',res=3.5)
dset.intp_disp(pers = np.append( np.arange(7.)*2.+6., np.arange(4.)*3.+20.))
pers = np.append( np.arange(7.)*2.+6., np.arange(4.)*3.+20.)
dset.write_2_sta_in(outdir='/work3/wang/JdF/Input_4_Ray', pers=pers, cut=0.8)
# for per in pers:
#    if per < 20:
#        continue
#     dset.fit_Harmon(int(per),vel_type='phase')
#     dset.fit_Harmon(int(per),vel_type='group')
# dset.plot_stations(ppoly=False)
# dset.plot_age_topo(10,vel_type='phase')
# dset.plot_vel_topo(10,vel_type='phase')
# dset.plot_vel_age(10,vel_type='phase')
# dset.plot_paths(6,vel_type='phase')
# dset.plot_all_vel(pers=np.array([6,8,10,12,18]),vel_type='group')
#dset.get_vel_age(3.9,-0.15,0.05,3.75,3.9)
Ejemplo n.º 4
0
	for i, ages in enumerate(ages_lst):
		age_inc = (ages[0:-1] + ages[1:])/2
		d_d = np.repeat(d_dist[i], age_inc.size)
		v_ages = c0+c1*np.sqrt(age_inc)+c2*age_inc
		v_ages[v_ages==0] = d_dist[i]/9999. # if model gives a 0 velocity change it to a small number to avoid 0 division
		t_path[i] = (d_d/v_ages).sum()
	sq_misfit = ((dist/t_path - V) **2).sum()
	return sq_misfit

T = 10.
UC = 'phase' # flag for chosing group or phase velocity measurement
c0,c1,c2 = 3.9, -0.15, 0.05


if __name__ == '__main__':
	dset = dispDBase.dispASDF('./age_model.h5')
	lst = [(360.-131.108, 47.443),(360.-127.51, 49.382),(360-124.01, 49.282),(360.-124.1, 43.2),(360.-126.76, 43.77),(360.-130.91,44.57),(360.-133.57,45.57)]
	dset.set_poly(lst,228,43,237,49)
	dset.read_age_mdl()
	per = str(int(T)).zfill(2) # reformat the period to a 2-character string
	# outname = "path_list_"+per+"_"+UC
	# outfile = open(outname,'w')
	path_list = dset.auxiliary_data.FinalStas[per][UC].data.value # path list every row contains netcode and stacode for the two stations
	age_out = np.array([])
	vel_out = np.array([])
	dist_arr = np.array([])
	d_dist_arr = np.array([])
	vel_arr = np.array([])
	ages_lst = []
	for path in path_list:
		lat1 = dset.waveforms[path[0].decode("ASCII")+'.'+path[1].decode("ASCII")].coordinates['latitude']
Ejemplo n.º 5
0
import dispDBase
import numpy as np
import matplotlib.pyplot as plt

dset = dispDBase.dispASDF('./age_model_Gorda_new.h5')
lst = [(360. - 130.155, 44.05), (360. - 128.48, 43.703),
       (360. - 126.224, 43.046), (360. - 124.9, 42.745),
       (360. - 123.65, 42.611), (360. - 124.33, 40.52), (360. - 127.56, 40.57),
       (360. - 130.96, 40.68)]
dset.set_poly(lst, 230, 40, 237, 44)
dset.read_age_mdl()
dset.read_stations(
    stafile='/scratch/summit/howa1663/CC_JdF/XCORR/station_7D.lst',
    source='CIEI',
    chans=['BHZ', 'BHE', 'BHN'])
dset.read_paths(disp_dir='/scratch/summit/howa1663/CC_JdF/XCORR/FTAN_4_All',
                res=3.5)
dset.intp_disp(
    pers=np.append(np.arange(6.) * 2. + 6.,
                   np.arange(4.) * 3. + 18.))
pers = np.append(np.arange(6.) * 2. + 6., np.arange(4.) * 3. + 18.)
for per in pers:
    dset.fit_Harmon(int(per), vel_type='phase')
    dset.fit_Harmon(int(per), vel_type='group')
# dset.fit_Harmon(10,vel_type='group')
# dset.plot_vel_age(10,vel_type='group')
# dset.plot_paths(10,vel_type='group')
# dset.plot_all_vel(pers=np.array([6,8,10,14]),vel_type='group')