def METHOD_NAME(self, pressure, temperature, PT_covariance=None):
    """
    Returns the volume of the calibrant as a function of
    pressure, temperature and (optionally) a pressure-temperature
    variance-covariance matrix.
    :param pressure: The pressure of the calibrant [Pa].
    :type pressure: float
    :param temperature: The temperature of the calibrant [K].
    :type temperature: float
    :param PT_covariance: The pressure-temperature
        variance-covariance matrix [optional].
    :type PT_covariance: 2x2 numpy.array
    :returns: The volume of the calibrant [m^3/mol] and
        the volume-pressure-temperature variance-covariance matrix
        if VT_covariance is provided.
    :rtype: float, tuple of a float and a numpy.array (3x3)
    """
    if PT_covariance is None:
        return self.volume_function(pressure, temperature, self.params)
    else:
        # Here we take the centered differences
        # We could alternatively use thermodynamic properties
        # but these have not yet been implemented.
        dP = 100.0
        dT = 0.01
        VdP0 = self.volume_function(pressure - dP / 2.0, temperature, self.params)
        VdP1 = self.volume_function(pressure + dP / 2.0, temperature, self.params)
        VdT0 = self.volume_function(pressure, temperature - dT / 2.0, self.params)
        VdT1 = self.volume_function(pressure, temperature + dT / 2.0, self.params)
        METHOD_NAME = (VdP0 + VdP1 + VdT0 + VdT1) / 4.0
        gradVPT = np.zeros((2, 3))
        gradVPT[:, 1:] = np.eye(2)
        gradVPT[:, 0] = [(VdP1 - VdP0) / dP, (VdT1 - VdT0) / dT]
        VPT_covariance = gradVPT.T.dot(PT_covariance).dot(gradVPT)
        return METHOD_NAME, VPT_covariance