Skip to content

profiles

Simon_Glatzel_lower_mantle_Fiquet(pressure)

Simon-Glatzel model [Simon and Glatzel, 1929] for the solidus temperature of the lower mantle, with parameters fitted on estimates of the melting point at 36 and 135 GPa [Fiquet et al., 2010].

The reference pressure (36 GPa) and temperature (2800 K) are chosen using published values [Herzberg et al., 2000].

Simon and Glatzel, 1929

Simon F. and Glatzel G., 1929. unknown. Anorg. (Allg.) Chem.. 178, pp.309-312.

Fiquet et al., 2010

Fiquet G., Auzende A.L., Siebert J., Corgne A., Bureau H., Ozawa H. and Garbarino G., 2010. Melting of Peridotite to 140 Gigapascals. Science. 329, pp.1516. 10.1126/science.1192448

Herzberg et al., 2000

Herzberg C., Raterron P. and Zhang J., 2000. New experimental observations on the anhydrous solidus for peridotite KLB-1. Geochemistry, Geophysics, Geosystems. 1, pp.1051-14. 10.1029/2000GC000089

Parameters:

Name Type Description Default
pressure float | numpy array

Pressure (GPa)

required

Returns:

Type Description
float | numpy array

Solidus temperature (K)

Source code in terratools/properties/profiles.py
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
def Simon_Glatzel_lower_mantle_Fiquet(pressure):
    """
    Simon-Glatzel model [@Simon1929] for the solidus temperature
    of the lower mantle,
    with parameters fitted on estimates of the melting point
    at 36 and 135 GPa [@Fiquet2010].

    The reference pressure (36 GPa) and temperature (2800 K)
    are chosen using published values
    [@Herzberg2000].

    :param pressure: Pressure (GPa)
    :type pressure: float or numpy array

    :return: Solidus temperature (K)
    :rtype: float or numpy array
    """
    Pr = 36.0e9
    Tr = 2800.0
    a = 3.86695953e10
    b = 3.15554341e-01
    return Tr * np.power(((pressure - Pr) / a + 1.0), b)

peridotite_solidus(pressure)

Returns an estimate of the peridotite solidus using three studies: [Hirschmann, 2000] (0 GPa, then linear extrapolation to 2.7 GPa) [Herzberg et al., 2000] (2.7 - 22.5 GPa) [Fiquet et al., 2010] (> 22.5 GPa)

This curve is continuous with pressure, but not differentiable.

Hirschmann, 2000

Hirschmann M.M., 2000. Mantle solidus: Experimental constraints and the effects of peridotite composition. Geochemistry, Geophysics, Geosystems. 1, pp.1042-26. 10.1029/2000GC000070

Herzberg et al., 2000

Herzberg C., Raterron P. and Zhang J., 2000. New experimental observations on the anhydrous solidus for peridotite KLB-1. Geochemistry, Geophysics, Geosystems. 1, pp.1051-14. 10.1029/2000GC000089

Fiquet et al., 2010

Fiquet G., Auzende A.L., Siebert J., Corgne A., Bureau H., Ozawa H. and Garbarino G., 2010. Melting of Peridotite to 140 Gigapascals. Science. 329, pp.1516. 10.1126/science.1192448

Parameters:

Name Type Description Default
pressure float | numpy array

Pressure (GPa)

required

Returns:

Type Description
float | numpy array

Solidus temperature (K)

Source code in terratools/properties/profiles.py
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
def peridotite_solidus(pressure):
    """
    Returns an estimate of the peridotite solidus using three studies:
    [@Hirschmann2000] (0 GPa, then linear extrapolation to 2.7 GPa)
    [@Herzberg2000] (2.7 - 22.5 GPa)
    [@Fiquet2010] (> 22.5 GPa)

    This curve is continuous with pressure, but not differentiable.

    :param pressure: Pressure (GPa)
    :type pressure: float or numpy array

    :return: Solidus temperature (K)
    :rtype: float or numpy array
    """
    # interpolation between Hirschmann (2000) at 0 GPa
    # and Herzberg et al (2000) at 2.7GPa

    if np.isscalar(pressure):
        if pressure < 2.7e9:
            T = (
                1120.661
                + (1086.0 - 5.7 * 2.7 + 390 * np.log(2.7) - 1120.661) * pressure / 2.7e9
                + 273.15
            )
        elif pressure < 22.5e9:  # Herzberg et al (2000)
            T = (
                1086.0
                - 5.7 * pressure / 1.0e9
                + 390 * np.log(pressure / 1.0e9)
                + 273.15
            )
        else:  # Fiquet et al. (2010)
            T = Simon_Glatzel_lower_mantle_Fiquet(pressure)
        return T

    else:
        T = pressure * 0.0
        T = Simon_Glatzel_lower_mantle_Fiquet(pressure)
        idx = np.where(np.all([pressure < 22.5e9, pressure >= 2.7e9], axis=0))
        T[idx] = (
            1086.0
            - 5.7 * pressure[idx] / 1.0e9
            + 390 * np.log(pressure[idx] / 1.0e9)
            + 273.15
        )
        idx = np.where(pressure < 2.7e9)
        T[idx] = (
            1120.661
            + (1086.0 - 5.7 * 2.7 + 390 * np.log(2.7) - 1120.661)
            * pressure[idx]
            / 2.7e9
            + 273.15
        )
        return T

prem_pressure()

Generates an interpolating function for pressure as a function of depth according to PREM [Dziewonski and Anderson, 1981]

Dziewonski and Anderson, 1981

Dziewonski A.M. and Anderson D.L., 1981. Preliminary reference Earth model. Physics of the Earth and Planetary Interiors. 25, pp.297-356. 10.1016/0031-9201(81)90046-7

Returns:

Type Description
function

interp1d function for pressure as a function of depth according to PREM

Source code in terratools/properties/profiles.py
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
def prem_pressure():
    """
    Generates an interpolating function for
    pressure as a function of depth according to PREM
    [@Dziewonski1981]

    :return: interp1d function for
    pressure as a function of depth according to PREM
    :rtype: function
    """
    prem = read_table("properties/data/prem.txt").T
    prem_depths = prem[0]
    prem_pressures = prem[2]
    return interp1d(prem_depths, prem_pressures, kind="linear")