Пример #1
0
    def isothermal_bulk_modulus(self, pressure, temperature, volume, params):
        """
        Returns isothermal bulk modulus at the pressure, temperature, and volume [Pa]
        """
        debye_T = self.__debye_temperature(params['V_0'] / volume, params)
        gr = self.grueneisen_parameter(pressure, temperature, volume, params)

        E_th = debye.thermal_energy(
            temperature, debye_T,
            params['n'])  #thermal energy at temperature T
        E_th_ref = debye.thermal_energy(
            300., debye_T,
            params['n'])  #thermal energy at reference temperature

        C_v = debye.heat_capacity_v(
            temperature, debye_T, params['n'])  #heat capacity at temperature T
        C_v_ref = debye.heat_capacity_v(
            300., debye_T,
            params['n'])  #heat capacity at reference temperature

        q = self.volume_dependent_q(params['V_0'] / volume, params)

        K = bm.bulk_modulus(volume, params) \
            + (gr + 1.-q)* ( gr / volume ) * (E_th - E_th_ref) \
            - ( pow(gr , 2.) / volume )*(C_v*temperature - C_v_ref*300.)

        return K
 def isothermal_bulk_modulus(self, pressure,temperature,volume, params):
     """
     Returns isothermal bulk modulus [Pa] as a function of pressure [Pa],
     temperature [K], and volume [m^3].  EQ B8
     """
     K_T = bm.bulk_modulus(volume, params) + \
         self.__thermal_bulk_modulus(temperature,volume, params) - \
         self.__thermal_bulk_modulus(300.,volume, params)  #EQB13
     return K_T
Пример #3
0
    def isothermal_bulk_modulus(self, pressure,temperature, volume, params):
        """
        Returns isothermal bulk modulus at the pressure, temperature, and volume [Pa]
        """
        debye_T = self.__debye_temperature(params['V_0']/volume, params)
        gr = self.grueneisen_parameter(pressure, temperature, volume, params)

        E_th = debye.thermal_energy(temperature, debye_T, params['n']) #thermal energy at temperature T
        E_th_ref = debye.thermal_energy(300.,debye_T, params['n']) #thermal energy at reference temperature
    
        C_v = debye.heat_capacity_v(temperature, debye_T, params['n']) #heat capacity at temperature T
        C_v_ref = debye.heat_capacity_v(300.,debye_T, params['n']) #heat capacity at reference temperature

        q = self.volume_dependent_q(params['V_0']/volume, params)
    
        K = bm.bulk_modulus(volume, params) \
            + (gr + 1.-q)* ( gr / volume ) * (E_th - E_th_ref) \
            - ( pow(gr , 2.) / volume )*(C_v*temperature - C_v_ref*300.)   
    
        return K
Пример #4
0
def check_birch_murnaghan():
    plt.close()

    #make a test mineral
    test_mineral = material()
    test_mineral.params ={'name':'test',
                          'ref_V': 6.844e-6,
                          'ref_K': 259.0e9,
                          'K_prime': 4.0,
                          'ref_mu': 175.0e9,
                          'mu_prime': 1.7,
                          'molar_mass': .0,
                          'n': 0.,
                          'ref_Debye': 0.,
                          'ref_grueneisen': 0.,
                          'q0': 0.}
 
    pressure = np.linspace(0., 140.e9, 100)
    volume = np.empty_like(pressure)
    bulk_modulus = np.empty_like(pressure)
    shear_modulus = np.empty_like(pressure)

    #calculate its static properties
    for i in range(len(pressure)):
        volume[i] = bm.volume(pressure[i], test_mineral.params)
        bulk_modulus[i] = bm.bulk_modulus(volume[i], test_mineral.params)
        shear_modulus[i] = bm.shear_modulus_third_order(volume[i], test_mineral.params) #third order is used for the plot we are comparing against

    #compare with figure 1
    plt.plot(pressure/1.e9, bulk_modulus/1.e9, pressure/1.e9, shear_modulus/1.e9)
    fig1 = mpimg.imread('data/slb_fig1.png')
    plt.imshow(fig1, extent=[0,140,0,800], aspect='auto')
    plt.plot(pressure/1.e9, bulk_modulus/1.e9, 'g+', pressure/1.e9, shear_modulus/1.e9, 'g+')
    plt.ylim(0,800)
    plt.xlim(0,140)
    plt.xlabel("Pressure (GPa)")
    plt.ylabel("Modulus (GPa)")
    plt.title("Comparing with Figure 1 of Stixrude and Lithgow-Bertelloni (2005)")

    plt.show()
Пример #5
0
    def isothermal_bulk_modulus(self, pressure, temperature, volume, params):
        """
        Returns isothermal bulk modulus :math:`[Pa]` 
        """
        T_0 = params["T_0"]
        debye_T = self.__debye_temperature(params["V_0"] / volume, params)
        gr = self.grueneisen_parameter(pressure, temperature, volume, params)

        E_th = debye.thermal_energy(temperature, debye_T, params["n"])  # thermal energy at temperature T
        E_th_ref = debye.thermal_energy(T_0, debye_T, params["n"])  # thermal energy at reference temperature

        C_v = debye.heat_capacity_v(temperature, debye_T, params["n"])  # heat capacity at temperature T
        C_v_ref = debye.heat_capacity_v(T_0, debye_T, params["n"])  # heat capacity at reference temperature

        q = self.volume_dependent_q(params["V_0"] / volume, params)

        K = (
            bm.bulk_modulus(volume, params)
            + (gr + 1.0 - q) * (gr / volume) * (E_th - E_th_ref)
            - (pow(gr, 2.0) / volume) * (C_v * temperature - C_v_ref * T_0)
        )

        return K
Пример #6
0
def bulk_modulus(T,V, params):
    K_T = bm.bulk_modulus(V, params) + \
        thermal_bulk_modulus(T,V, params) - \
        thermal_bulk_modulus(300.,V, params)  #EQB13
    return K_T