# This file was automatically generated by SWIG (http://www.swig.org).
# Version 2.0.7
#
# Do not make changes to this file unless you know what you are doing--modify
# the SWIG interface file instead.



from sys import version_info
if version_info >= (2,6,0):
    def swig_import_helper():
        from os.path import dirname
        import imp
        fp = None
        try:
            fp, pathname, description = imp.find_module('_CoolProp', [dirname(__file__)])
        except ImportError:
            import _CoolProp
            return _CoolProp
        if fp is not None:
            try:
                _mod = imp.load_module('_CoolProp', fp, pathname, description)
            finally:
                fp.close()
            return _mod
    _CoolProp = swig_import_helper()
    del swig_import_helper
else:
    import _CoolProp
del version_info
try:
    _swig_property = property
except NameError:
    pass # Python < 2.2 doesn't have 'property'.
def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
    if (name == "thisown"): return self.this.own(value)
    if (name == "this"):
        if type(value).__name__ == 'SwigPyObject':
            self.__dict__[name] = value
            return
    method = class_type.__swig_setmethods__.get(name,None)
    if method: return method(self,value)
    if (not static):
        self.__dict__[name] = value
    else:
        raise AttributeError("You cannot add attributes to %s" % self)

def _swig_setattr(self,class_type,name,value):
    return _swig_setattr_nondynamic(self,class_type,name,value,0)

def _swig_getattr(self,class_type,name):
    if (name == "thisown"): return self.this.own()
    method = class_type.__swig_getmethods__.get(name,None)
    if method: return method(self)
    raise AttributeError(name)

def _swig_repr(self):
    try: strthis = "proxy of " + self.this.__repr__()
    except: strthis = ""
    return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)

try:
    _object = object
    _newclass = 1
except AttributeError:
    class _object : pass
    _newclass = 0



def Help():
  """Help()"""
  return _CoolProp.Help()

def UseSaturationLUT(*args):
  """UseSaturationLUT(bool OnOff)"""
  return _CoolProp.UseSaturationLUT(*args)

def SaturationLUTStatus():
  """SaturationLUTStatus() -> bool"""
  return _CoolProp.SaturationLUTStatus()

def UseSinglePhaseLUT(*args):
  """UseSinglePhaseLUT(bool OnOff)"""
  return _CoolProp.UseSinglePhaseLUT(*args)

def SinglePhaseLUTStatus():
  """SinglePhaseLUTStatus() -> bool"""
  return _CoolProp.SinglePhaseLUTStatus()

def IsFluidType(*args):
  """IsFluidType(char * Ref, char * Type) -> int"""
  return _CoolProp.IsFluidType(*args)

def T_hp(*args):
  """T_hp(char * Ref, double h, double p, double T_guess) -> double"""
  return _CoolProp.T_hp(*args)

def h_sp(*args):
  """h_sp(char * Ref, double s, double p, double T_guess) -> double"""
  return _CoolProp.h_sp(*args)

def DerivTerms(*args):
  """
    .. |cubed| replace:: \ :sup:`3`\ 
    .. |squared| replace:: \ :sup:`2`\ 
    .. |IC| replace:: ``IsothermalCompressibility``

    Call signature::

        DerivTerms(OutputName, T, rho, Fluid) --> float

    where ``Fluid`` is a string with a valid CoolProp fluid name, and ``T`` and ``rho`` are the temperature in K and density in kg/m |cubed| .  The value 
    ``OutputName`` is one of the strings in the table below:

    ========================  =====================================================================================================================================
    OutputName                Description
    ========================  =====================================================================================================================================
    ``dpdT``                  Derivative of pressure with respect to temperature at constant density [kPa/K]
    ``dpdrho``                Derivative of pressure with respect to density at constant temperature [kPa/(kg/m\ |cubed|\ )]
    ``Z``                     Compressibility factor [-]
    ``dZ_dDelta``             Derivative of Z with respect to reduced density [-]
    ``dZ_dTau``               Derivative of Z with respect to inverse reduced temperature [-]
    ``B``                     Second virial coefficient [m\ |cubed|\ /kg]
    ``dBdT``                  Derivative of second virial coefficient with respect to temperature [m\ |cubed|\ /kg/K]
    ``C``                     Third virial coefficient [m\ :sup:`6`\ /kg\ |squared|\ ]
    ``dCdT``                  Derivative of third virial coefficient with respect to temperature [m\ :sup:`6`\ /kg\ |squared|\ /K]
    ``phir``                  Residual non-dimensionalized Helmholtz energy [-]
    ``dphir_dTau``            Partial of residual non-dimensionalized Helmholtz energy with respect to inverse reduced temperature [-]
    ``d2phir_dTau2``          Second partial of residual non-dimensionalized Helmholtz energy with respect to inverse reduced temperature [-]
    ``dphir_dDelta``          Partial of residual non-dimensionalized Helmholtz energy with respect to reduced density [-]
    ``d2phir_dDelta2``        Second partial of residual non-dimensionalized Helmholtz energy with respect to reduced density [-]
    ``d2phir_dDelta_dTau``    First cross-partial of residual non-dimensionalized Helmholtz energy [-]
    ``d3phir_dDelta2_dTau``   Second cross-partial of residual non-dimensionalized Helmholtz energy [-]
    ``phi0``                  Ideal-gas non-dimensionalized Helmholtz energy [-]
    ``dphi0_dTau``            Partial of ideal-gas non-dimensionalized Helmholtz energy with respect to inverse reduced temperature [-]
    ``d2phi0_dTau2``          Second partial of ideal-gas non-dimensionalized Helmholtz energy with respect to inverse reduced temperature [-]
    ``dphi0_dDelta``          Partial of ideal-gas non-dimensionalized Helmholtz energy with respect to reduced density [-]
    ``d2phi0_dDelta2``        Second partial of ideal-gas non-dimensionalized Helmholtz energy with respect to reduced density [-]
    |IC|                      Isothermal compressibility [1/kPa]
    ========================  =====================================================================================================================================

    """
  return _CoolProp.DerivTerms(*args)

def F2K(*args):
  """F2K(double T_F) -> double"""
  return _CoolProp.F2K(*args)

def K2F(*args):
  """K2F(double T) -> double"""
  return _CoolProp.K2F(*args)

def PrintSaturationTable(*args):
  """PrintSaturationTable(char * FileName, char * Ref, double Tmin, double Tmax)"""
  return _CoolProp.PrintSaturationTable(*args)

def get_errstringc():
  """get_errstringc() -> char *"""
  return _CoolProp.get_errstringc()

def get_1phase_LUT_params(*args):
  """get_1phase_LUT_params(int * nT, int * np, double * Tmin, double * Tmax, double * pmin, double * pmax)"""
  return _CoolProp.get_1phase_LUT_params(*args)

def get_debug():
  """get_debug() -> int"""
  return _CoolProp.get_debug()

def Props(*args):
  """
    Call Type #1::

        Props(Fluid,PropName) --> float

    Where ``Fluid`` is a string with a valid CoolProp fluid name, and ``PropName`` is one of the following strings:

    =============  ============================
    ``Tcrit``      Critical temperature [K]
    ``pcrit``      Critical pressure [kPa]
    ``rhocrit``    Critical density [kg/m3]
    ``molemass``   Molecular mass [kg/kmol]
    ``Ttriple``    Triple-point temperature [K]
    =============  ============================



    Call Type #2:

    Alternatively, Props can be called in the form::

        Props(OutputName,InputName1,InputProp1,InputName2,InputProp2,Fluid) --> float

    where ``Fluid`` is a string with a valid CoolProp fluid name.  The value 
    ``OutputName`` is either a single-character or a string alias.  This list 
    shows the possible values

    ========================  ======================================================
    ``OutputName``            Description
    ========================  ======================================================
    `T`                       Temperature [K]
    `P`                       Pressure [kPa]
    `D`                       Density [kg/m3]
    `C0`                      Ideal-gas specific heat at constant pressure [kJ/kg]
    `C`                       Specific heat at constant pressure [kJ/kg]
    `O`                       Specific heat at constant volume [kJ/kg]
    `U`                       Internal energy [kJ/kg]
    `H`                       Enthalpy [kJ/kg]
    `S`                       Entropy [kJ/kg/K]
    `A`                       Speed of sound [m/s]
    `G`                       Gibbs function [kJ/kg]
    `V`                       Viscosity [Pa-s]
    `L`                       Thermal conductivity [kW/m/K]
    `I` or `SurfaceTension`   Surface Tension [N/m]
    ========================  ======================================================

    If `InputName1` is `T` and `InputName2` is `D`, any of the outputs are valid

    If `InputName1` is `T` and `InputName2` is `P`, any of the outputs are valid

    If `InputName1` is `T` and `InputName2` is `Q`, any of the outputs are valid

    If `InputName1` is `T` and `OutputName` is `I`, the second input is neglected
    since surface tension is only a function of temperature


    """
  return _CoolProp.Props(*args)

def set_1phase_LUT_params(*args):
  """
    set_1phase_LUT_params(char * Ref, int nT, int np, double Tmin, double Tmax, double pmin, double pmax, bool rebuild) -> int
    set_1phase_LUT_params(std::string Ref, int nT, int np, double Tmin, double Tmax, double pmin, double pmax, 
        bool rebuild) -> int
    set_1phase_LUT_params(char * Ref, int nT, int np, double Tmin, double Tmax, double pmin, double pmax) -> int
    set_1phase_LUT_params(std::string Ref, int nT, int np, double Tmin, double Tmax, double pmin, double pmax) -> int
    """
  return _CoolProp.set_1phase_LUT_params(*args)

def debug(*args):
  """
    debug(int level)
    debug() -> int
    """
  return _CoolProp.debug(*args)

def Phase(*args):
  """
    Phase(char * Fluid, double T, double p, char * Phase_str)

    Given a set of temperature and pressure, returns one of the following strings

    * Gas
    * Liquid
    * Supercritical
    * Two-Phase

    Phase diagram::

    		|         |     
    		|         |    Supercritical
    		|         |
    	p	| Liquid (b)------------
    		|        /
    		|       / 
    		|      /       Gas
    		|     / 
    		|   (a)
    		|  /
    		|------------------------

    				   T

    	   a: triple point
    	   b: critical point
    	   a-b: Saturation line

    """
  return _CoolProp.Phase(*args)

def get_EOSReference(*args):
  """get_EOSReference(std::string Ref) -> std::string"""
  return _CoolProp.get_EOSReference(*args)

def get_TransportReference(*args):
  """get_TransportReference(std::string Ref) -> std::string"""
  return _CoolProp.get_TransportReference(*args)

def FluidsList(*args):
  """
    FluidsList(char * arg1)
    FluidsList() -> std::string
    """
  return _CoolProp.FluidsList(*args)

def get_REFPROPname(*args):
  """
    get_REFPROPname(char * Ref, char * arg2)
    get_REFPROPname(std::string Ref) -> std::string
    """
  return _CoolProp.get_REFPROPname(*args)

def get_errstring(*args):
  """
    get_errstring(char * arg1)
    get_errstring() -> std::string
    """
  return _CoolProp.get_errstring(*args)
# This file is compatible with both classic and new-style classes.


