Пример #1
0
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
Пример #2
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


#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, _,_,_,_,_ \