Source code for climlab.utils.heat_capacity

"""Routines for calculating heat capacities for grid boxes."""

from climlab import constants as const


[docs] def atmosphere(dp): r"""Returns heat capacity of a unit area of atmosphere, in units J /m**2 / K. .. math:: C_a = \frac{c_p \cdot dp \cdot f_{\textrm{mb-to-Pa}}}{g} where ============================== ============== ================================================== =============================================== variable value unit description ============================== ============== ================================================== =============================================== :math:`C_a` *output* :math:`\textrm{J} / \textrm{m}^2 / \textrm{K}` heat capacity for atmospheric cell :math:`c_p` :math:`1004.` :math:`\textrm{J} / \textrm{kg} / \textrm{K}` specific heat at constant pressure for dry air :math:`dp` *input* :math:`\textrm{mb}` pressure for atmospheric cell :math:`f_{\textrm{mb-to-Pa}}` :math:`100` :math:`\textrm{Pa} / \textrm{mb}` conversion factor from mb to Pa :math:`g` :math:`9.8` :math:`\textrm{m} / \textrm{s}^2` gravitational acceleration ============================== ============== ================================================== =============================================== **Function-call argument** :param array dp: pressure intervals (*unit:* mb) :returns: the heat capacity for atmosphere cells correspoding to pressure input (*unit:* J /m**2 / K) :rtype: array :Example: Calculate atmospheric heat capacity for pressure intervals of 1, 10, 100 mb:: >>> from climlab.utils import heat_capacity >>> pressure_interval = array([1,10,100]) # in mb >>> heat_capacity.atmosphere(pressure_interval) # in J /m**2 / K array([ 10244.89795918, 102448.97959184, 1024489.79591837]) """ return const.cp * dp * const.mb_to_Pa / const.g
[docs] def ocean(dz): r"""Returns heat capacity of a unit area of water, in units J /m**2 / K. .. math:: C_o = \rho_w \cdot c_w \cdot dz where ============================== ============== ================================================== ================================== variable value unit description ============================== ============== ================================================== ================================== :math:`C_o` *output* :math:`\textrm{J} / \textrm{m}^2 / \textrm{K}` heat capacity for oceanic cell :math:`c_w` :math:`4181.3` :math:`\textrm{J} / \textrm{kg} / \textrm{K}` specific heat of liquid water :math:`dz` *input* :math:`\textrm{m}` water depth of oceanic cell :math:`\rho_w` :math:`1000.` :math:`\textrm{kg} / \textrm{m}^3` density of water ============================== ============== ================================================== ================================== **Function-call argument** :param array dz: water depth of ocean cells (*unit:* m) :returns: the heat capacity for ocean cells correspoding to depth input (*unit:* J /m**2 / K) :rtype: array :Example: Calculate atmospheric heat capacity for pressure intervals of 1, 10, 100 m:: >>> from climlab.utils import heat_capacity >>> pressure_interval = array([1,10,100]) # in m >>> heat_capacity.ocean(pressure_interval) # in J /m**2 / K array([ 4.18130000e+06, 4.18130000e+07, 4.18130000e+08]) """ return const.rho_w * const.cw * dz
[docs] def slab_ocean(water_depth): r"""Returns heat capacity of a unit area slab of water, in units of J / m**2 / K. Takes input argument ``water_depth`` and calls :func:`ocean()` **Function-call argument** :param float: water depth of slab ocean (*unit:* m) :returns: the heat capacity for slab ocean cell (*unit:* J / m**2 / K) :rtype: float """ return ocean(water_depth)