def murakami(molar_abundance): al_p = 0.075 pv_X_Mg = 0.94 fp_X_Mg = 0.79 molar_weight=[pv_X_Mg*molar_mass['Mg']+(1.-pv_X_Mg)*molar_mass['Fe']+(1.-al_p)*molar_mass['Si']+al_p*molar_mass['Al']+3.*molar_mass['O'], \ fp_X_Mg*molar_mass['Mg']+(1.-fp_X_Mg)*molar_mass['Fe']+molar_mass['O']] list_p = [] list_Vs = [] list_Vp = [] pv_density = [] fp_density = [] pv_shearmod = [] fp_shearmod = [] prem_shearmod = [] for p in numpy.arange(28,141,5.): #T=geotherm.geotherm_formula(p) #T=geotherm.geotherm(p) T=geotherm.geotherm_brown(p) #by far the best fit density = [0., 0.] bulk_mod =[0., 0.] shear_mod = [0., 0.] # pv: # values from ricolleau table 1 V0 = 164. K_0 = 245. K_prime = 4. dKdT = -.036 a_0 = 3.19e-5 a_1 = 0.88e-8 gamma_0 = 1.48 atoms_per_unit_cell = 4. G_0 = 166. G_prime = 1.57 #dGdT = -.02 unused eta_0s = 2.4 q = 1.4 n = 5. #murakami supp. material Table 5: K_0 = 281. K_prime = 4.1 G_0 = 173. #-25. #looks good :-) G_prime = 1.56 V, density[0], bulk_mod[0], shear_mod[0] \ = compute_moduli(p,T,V0,K_0,K_prime,dKdT,a_0,a_1,gamma_0, molar_weight[0], atoms_per_unit_cell,n, eta_0s, q, G_0, G_prime) pv_density.append(density[0]) # fp: # values from ricolleau table 1 if (p<=50.): V0 = 76.44 K_0 = 158. K_prime = 4. dKdT = -.034 a_0 = 2.20e-5 a_1 = 3.61e-8 else: V0 = 74.04 K_0 = 170. K_prime = 4. dKdT = -.034 a_0 = 2.20e-5 a_1 = 3.61e-8 #missing values, should we use 0? #dKdT = 0. #a_0 = 0. #a_1 = 0. gamma_0 = 1.50 atoms_per_unit_cell = 4. if (p>=50.): # reading from fig 3 in Murakami (X_Mg=0.79) G_0 = 116. # low spin G_prime = 1.65 #dGdT = -.02 unused else: G_0 = 103. # high spin G_prime = 1.78 #dGdT = -.02 unused eta_0s = 3.0 q = 1.5 n = 2. V, density[1], bulk_mod[1],shear_mod[1] \ = compute_moduli(p,T,V0,K_0,K_prime,dKdT,a_0,a_1,gamma_0, molar_weight[1], atoms_per_unit_cell,n, eta_0s, q, G_0, G_prime) fp_density.append(density[1]) #if (p>=50.): # from the text in Murakami (page 2), X_Mg = 0.92 # shear_mod[1] = 130. + 2.04*p -.02*(T-300) # low spin #else: # shear_mod[1] = 113. + 2.15*p -.02*(T-300) pv_shearmod.append(shear_mod[0]) fp_shearmod.append(shear_mod[1]) V_p,V_s,V_phi = seismic.get_velocities(molar_abundance, molar_weight, bulk_mod, shear_mod, density, T) list_p.append(p) list_Vp.append(V_p) list_Vs.append(V_s) # shearmodulus = density * V_s^2: (Sanne) prem_shearmod.append(prem.prem_density(p)*pow(prem.prem_V(p)[1],2.0)) return list_p, list_Vs, list_Vp, pv_density, fp_density, pv_shearmod, fp_shearmod, prem_shearmod
fp_shearmod.append(shear_mod[1]) V_p,V_s,V_phi = seismic.get_velocities(molar_abundance, molar_weight, bulk_mod, shear_mod, density, T) list_p.append(p) list_Vp.append(V_p) list_Vs.append(V_s) # shearmodulus = density * V_s^2: (Sanne) prem_shearmod.append(prem.prem_density(p)*pow(prem.prem_V(p)[1],2.0)) return list_p, list_Vs, list_Vp, pv_density, fp_density, pv_shearmod, fp_shearmod, prem_shearmod #compute prem prem_p = numpy.arange(28.3,135.0,5) prem_vp = [prem.prem_V(y)[0] for y in prem_p] prem_vs = [prem.prem_V(y)[1] for y in prem_p] prem_density = [prem.prem_density(y) for y in prem_p] #compute murakami for 100% fp molar_abundance=[0., 1.0] list_p, fp_Vs, fp_Vp, pv_density, fp_density, pv_shearmod, fp_shearmod, prem_shearmod \ = murakami(molar_abundance) molar_abundance=[1.0, .0] _, pv_Vs, pv_Vp, _,_,_,_,_ \ = murakami(molar_abundance) #molar_abundance=[0.95, .05] molar_abundance=[0.93, .07] _, mix_Vs, mix_Vp, _,_,_,_,_ \