Fortran AutoDoc#

Modules#

iapws (module)#

Main module for the IAPWS library.

iapws__api (module)#

API.

Variables

version_fcharacter(len=:), allocatable, target
f_gasestype(gas_type), allocatable, target, dimension(:)
f_gases_strcharacter(len=:), allocatable, target

Procedures

get_version (function)#

function get_version() -> fptr

Return the version

Returns:
fptrcharacter(len=:), pointer

Fortran pointer to a string indicating the version.

kh (subroutine)#

pure subroutine kh(T, gas, heavywater, k)

Compute the henry constant kH in MPa for a given temperature (x_2=1/kH).

Arguments:
Treal(dp), intent(in), contiguous, dimension(:)

Temperature in K.

gascharacter(len=*), intent(in)

Gas.

heavywaterinteger(int32), intent(in)

Flag if D2O (1) is used or H2O(0).

kreal(dp), intent(out), contiguous, dimension(:)

Henry constant in MPa. Filled with NaNs if gas not found.

kd (subroutine)#

pure subroutine kd(T, gas, heavywater, k)

Compute the vapor-liquid constant kd for a given temperature (kd=y_2/x_2).

Arguments:
Treal(dp), intent(in), contiguous, dimension(:)

Temperature in K.

gascharacter(len=*), intent(in)

Gas.

heavywaterinteger(int32), intent(in)

Flag if D2O (1) is used or H2O(0).

kreal(dp), intent(out), contiguous, dimension(:)

Vapor-liquid constant (adimensional). Filled with NaNs if gas not found.

ngases (function)#

pure function ngases(heavywater) -> n

Returns the number of gases.

Arguments:
heavywaterinteger(int32), intent(in)

Flag if D2O (1) is used or H2O(0).

Returns:
ninteger(int32)

Number of gases.

gases (function)#

function gases(heavywater) -> list_gases

Returns the list of available gases.

Arguments:
heavywaterinteger(int32), intent(in)

Flag if D2O (1) is used or H2O(0).

Returns:
list_gasestype(gas_type), pointer, dimension(:)

Available gases.

gases2 (function)#

function gases2(heavywater) -> str_gases

Returns the available gases as a string.

Arguments:
heavywaterinteger(int32), intent(in)

Flag if D2O (1) is used or H2O(0).

Returns:
str_gasescharacter(len=:), pointer

Available gases

psat (subroutine)#

pure subroutine psat(Ts, ps)
Arguments:
Tsreal(dp), intent(in), contiguous, dimension(:)

Saturation temperature in K.

psreal(dp), intent(out), contiguous, dimension(:)

Saturation pressure in MPa. Filled with nan if out of validity range.

Tsat (subroutine)#

pure subroutine Tsat(ps, Ts)
Arguments:
psreal(dp), intent(in), contiguous, dimension(:)

Saturation pressure in MPa.

Tsreal(dp), intent(out), contiguous, dimension(:)

Saturation temperature in K. Filled with nan if out of validity range.

wp (subroutine)#

pure subroutine wp(p, T, prop, res)

Compute water properties at pressure p in MPa and temperature T in Kelvin.

Arguments:
preal(dp), intent(in), dimension(:)

Pressure in MPa.

Treal(dp), intent(in), dimension(:)

Pressure in K.

propcharacter(len=*), intent(in)

Property (v, u, s, h, cp, cv, w)

resreal(dp), intent(out), dimension(:)

Filled with NaN if no adequate region is found.

wr (subroutine)#

pure subroutine wr(p, T, res)

Get the water region corresponding to p and T.

Arguments:
preal(dp), intent(in), dimension(:)

Pressure in MPa.

Treal(dp), intent(in), dimension(:)

Temperature in K.

resinteger(int32), intent(out), dimension(:)

Region 1 to 5 if found or -1.

wph (subroutine)#

pure subroutine wph(p, T, res)

Get the water phase corresponding to p and T.

Arguments:
preal(dp), intent(in), dimension(:)

pressure in MPa.

Treal(dp), intent(in), dimension(:)

Temperature in K.

rescharacter(len=1), intent(out), dimension(:)

Phases: l(liquid), v(VAPOR), c(SUPER CRITICAL), s(SATURATION), n(UNKNOWN).

Kw (subroutine)#

pure subroutine Kw(T, rhow, k)

Compute the ionization constant of water Kw (273.13 K <= T <= 1273.15 K and 0 <= p <= 1000 MPa).

Arguments:
Treal(dp), intent(in), dimension(:)

Temperature in K.

rhowreal(dp), intent(in), dimension(:)

Mass density in g.cm^{-3}.

kreal(dp), intent(out), dimension(:)

Ionization constant. Filled with NaN if out of validity range.

iapws__capi (module)#

C API.

Variables

version_ccharacter(len=:), allocatable, target
c_gasestype(cgas_type), allocatable, target, dimension(:)
char_pptype(c_char_p), allocatable, target, dimension(:)
c_gases_strcharacter(len=:), allocatable, target
capi_Tc_H2Oreal(c_double), protected, bind(C, name=”iapws_r283_Tc_H2O”), Default = Tc_H2O

Critical temperature for H2O in K

capi_Tc_D2Oreal(c_double), protected, bind(C, name=”iapws_r283_Tc_D2O”), Default = Tc_D2O

Critical temperature for D2O in K

capi_pc_H2Oreal(c_double), protected, bind(C, name=”iapws_r283_pc_H2O”), Default = pc_H2O

Critical pressure for H2O in MPa

capi_pc_D2Oreal(c_double), protected, bind(C, name=”iapws_r283_pc_D2O”), Default = pc_D2O

Critical pressure for D2O in MPa

capi_rhoc_H2Oreal(c_double), protected, bind(C, name=”iapws_r283_rhoc_H2O”), Default = rhoc_H2O

Critical density for H2O in kg.m-3

capi_rhoc_D2Oreal(c_double), protected, bind(C, name=”iapws_r283_rhoc_D2O”), Default = rhoc_D2O

Critical density for D2O in kg.m-3

Types

c_char_p (type)#

c_char_p (type)

cgas_type (type)#

cgas_type (type)
Attributes:
gascharacter(kind=c_char, len=1), allocatable, dimension(:)

Procedures

capi_get_version (function)#

function capi_get_version()bind(c,name="iapws_get_version") -> cptr

C API

Returns:
cptrtype(c_ptr)

Pointer to version string.

capi_kh (subroutine)#

subroutine capi_kh(T, gas, heavywater, k, size_gas, size_T)bind(C,name="iapws_g704_kh")

C API.

Arguments:
Treal(c_double), intent(in), dimension(size_T)

Temperature in °C.

gastype(c_ptr), intent(in), value

Gas.

heavywaterinteger(c_int), intent(in), value

Flag if D2O (1) is used or H2O(0).

kreal(c_double), intent(inout), dimension(size_T)

Henry constant. Filled with NaNs if gas not found.

size_gasinteger(c_int), intent(in), value

Size of the gas string.

size_Tinteger(c_size_t), intent(in), value

Size of T and k.

capi_kd (subroutine)#

subroutine capi_kd(T, gas, heavywater, k, size_gas, size_T)bind(C,name="iapws_g704_kd")

C API.

Arguments:
Treal(c_double), intent(in), dimension(size_T)

Temperature in °C.

gastype(c_ptr), intent(in), value

Gas.

heavywaterinteger(c_int), intent(in), value

Flag if D2O (1) is used or H2O(0).

kreal(c_double), intent(inout), dimension(size_T)

Vapor-liquid constant. Filled with NaNs if gas not found.

size_gasinteger(c_int), intent(in), value

Size of the gas string.

size_Tinteger(c_size_t), intent(in), value

Size of T and k.

capi_ngases (function)#

function capi_ngases(heavywater)bind(C, name="iapws_g704_ngases") -> n

C API.

Arguments:
heavywaterinteger(c_int), intent(in), value
Returns:
ninteger(c_int)

Flag if D2O (1) is used or H2O(0).

capi_gases (function)#

function capi_gases(heavywater)bind(C, name="iapws_g704_gases") -> list_gases

C API.

Arguments:
heavywaterinteger(c_int), intent(in), value
Returns:
list_gasestype(c_ptr)

Flag if D2O (1) is used or H2O(0).

capi_gases2 (function)#

function capi_gases2(heavywater)bind(C, name="iapws_g704_gases2") -> str_gases

C API.

Arguments:
heavywaterinteger(c_int), intent(in), value
Returns:
str_gasestype(c_ptr)

Flag if D2O (1) is used or H2O(0).

capi_psat (subroutine)#

subroutine capi_psat(N, Ts, ps)bind(C, name="iapws_r797_psat")
Arguments:
Ninteger(c_size_t), intent(in), value

Size of Ts and ps.

Tsreal(c_double), intent(in), dimension(N)

Saturation temperature in K.

psreal(c_double), intent(out), dimension(N)

Saturation pressure in MPa. Filled with nan if out of validity range.

capi_Tsat (subroutine)#

subroutine capi_Tsat(N, ps, Ts)bind(C, name="iapws_r797_Tsat")
Arguments:
Ninteger(c_size_t), intent(in), value

Size of ps and Ts.

psreal(c_double), intent(in), dimension(N)

Saturation pressure in MPa.

Tsreal(c_double), intent(out), dimension(N)

Saturation temperature in K. Filled with nan if out of validity range.

capi_wp (subroutine)#

subroutine capi_wp(p, T, prop, res, N, len)bind(C, name="iapws_r797_wp")

C API.

Available properties: * v: specific volume in m3/kg * u: specific internal energy in kJ/kg * s: specific entropy in kJ/kg * h: specific enthalpy in kJ/kg/K * cp: specific isobaric heat capacity in kJ/kg/K * cv: specific isochoric heat capacity in kJ/kg/K * w: speed of sound in m/s

Arguments:
preal(c_double), intent(in), dimension(N)

Pressure in MPa.

Treal(c_double), intent(in), dimension(N)

Temperature in K.

proptype(c_ptr), intent(in), value

Water property.

resreal(c_double), intent(out), dimension(N)

Result. Filled with NaNs if gas not found.

Ninteger(c_size_t), intent(in), value

Size of T and p.

leninteger(c_int), intent(in), value

Size of the prop string.

capi_wr (subroutine)#

subroutine capi_wr(p, T, res, N)bind(C, name="iapws_r797_wr")

C API.

Arguments:
preal(c_double), intent(in), dimension(N)

Pressure in MPa.

Treal(c_double), intent(in), dimension(N)

Temperature in K.

resinteger(c_int), intent(out), dimension(N)

Regions.

Ninteger(c_size_t), intent(in), value

Size of T and p.

capi_wph (subroutine)#

subroutine capi_wph(p, T, res, N)bind(C, name="iapws_r797_wph")

C API.

Arguments:
preal(c_double), intent(in), dimension(N)

Pressure in MPa.

Treal(c_double), intent(in), dimension(N)

Temperature in K.

rescharacter(len=1, kind=c_char), intent(out), dimension(N)

Regions.

Ninteger(c_size_t), intent(in), value

Size of T and p.

capi_Kw (subroutine)#

subroutine capi_Kw(N, T, rhow, k)bind(C, name="iapws_r1124_Kw")

C API.

Arguments:
Ninteger(c_size_t), intent(in), value

Size of T, rhow and k.

Treal(c_double), intent(in), dimension(N)

Temperature in K.

rhowreal(c_double), intent(in), dimension(N)

Mass density in g.cm^{-3}.

kreal(c_double), intent(out), dimension(N)

Ionization constant. Filled with NaN if out of validity range.

iapwscli (program)#

program iapwscli
    use iso_fortran_env, only: output_unit, error_unit
    use M_CLI2, only: set_args, iget, lget, get_args, dgets
    use M_CLI2, only: args=>unnamed, get_subcommand, set_mode
    use stdlib_optval
    use stdlib_codata, only: Mu=>MOLAR_MASS_CONSTANT
    use iapws
    use iapws__common
    use ciaaw, only: get_saw, get_naw

    character(len=*), parameter :: name="iapws"
    character(len=:),allocatable, target  :: help_text(:)
    character(len=:),allocatable, target  :: version_text(:)
    character(len=32) :: cmd
    character(len=124) :: msg

    integer :: i, ierr
    real(dp), allocatable :: T(:), f(:), x2(:), p(:)
    character(len=:), allocatable :: gas(:)
    integer :: heavywater
    
    type(gas_type), pointer :: list_gases(:)

    real(dp) :: M_H, M_O, M_C, M_N, M_S, M_F, M_D
    real(dp) :: M_He, M_Ne, M_Ar, M_Kr, M_Xe 
    real(dp) :: M_H2, M_D2, M_N2, M_O2, M_CO, M_CO2 
    real(dp) :: M_H2S, M_CH4, M_C2H6, M_SF6
    real(dp) :: M_H2O, M_D2O
    real(dp) :: M_solvent

    M_H = get_saw('H')
    M_O = get_saw('O')
    M_C = get_saw('C')
    M_N = get_saw('N')
    M_S = get_saw('S')
    M_F = get_saw('F')
    M_D = get_naw('H', A=2)
    
    M_He = get_saw('He') * Mu%value*1d3
    M_Ne = get_saw('Ne') * Mu%value*1d3
    M_Ar = get_saw('Ar') * Mu%value*1d3
    M_Kr = get_saw('Kr') * Mu%value*1d3
    M_Xe = get_saw('Xe') * Mu%value*1d3
    M_H2 = 2*M_H * Mu%value*1d3
    M_D2 = 2*M_D * Mu%value*1d3
    M_N2 = 2*M_N * Mu%value*1d3
    M_O2 = 2*M_O * Mu%value*1d3
    M_CO2 = (M_C + 2*M_O) * Mu%value*1d3
    M_H2S = (2*M_H + M_S) * Mu%value*1d3
    M_CH4 = (M_C + 4*M_H) * Mu%value*1d3
    M_C2H6 = (2*M_C + 6*M_H) * Mu%value*1d3
    M_SF6 = (M_S + 6*M_F) * Mu%value*1d3
    M_H2O = (2*M_H+M_O) * Mu%value*1d3
    M_D2O = (2*M_D+M_O) * Mu%value*1d3

    version_text=[character(len=80) :: &
        'PROGRAM:      '//name//'                                              ', &
        'DESCRIPTION:  Compute light and heavy water properties.               ', &
        'VERSION:      '//get_version()//'                                     ', &
        'AUTHOR:       M. Skocic                                               ', &
        'LICENSE:      MIT                                                     ', &
        '' ]

    help_text=[character(len=80) :: &
        'NAME                                                                  ', &
        '  '//name//' - Compute light and heavy water properties.              ', &
        '                                                                      ', &
        'SYNOPSIS                                                              ', &
        '  '//name//' SUBCOMMAND [OPTION...]                                   ', &
        '                                                                      ', &
        'DESCRIPTION                                                           ', &
        '  '//name//' is a command line interface for computing properties', &
        '  of light and heavy water according to IAPWS.                        ', &
        '                                                                      ', &
        'SUBCOMMANDS                                                           ', &
        '  Valid subcommands are:                                              ', &
        "    +kh    Compute the Henry's constant for gases in H2O or D2O.        ", &
        '           The default behavior is to compute the constant kH for O2 at 25°C.', &
        '           See options.', &
        '    +kd    Compute the vapor-liquid distribution constant for gases in H2O or D2O.  ', &
        '           The default behavior is to compute the constant kD for H2 at 25°C.', &
        '           See options.', &
        '    +psat  Compute the saturation pressure.', &
        '           The default behavior is to compute psat at 25°C. ', &
        '           See options.',&
        '    +Tsat  Compute the saturation temperature.', &
        '           The default behavior is to compute Tsat at 1 bar. ', &
        '           See options.',&
        '                                                                      ', &
        '  Their syntax is:                                                    ', &
        '    +kh     [OPTION...]                                                 ', &
        '    +kd     [OPTION...]                                                 ', &
        '    +psat   [OPTION...]                                                 ', &
        '    +Tsat   [OPTION...]                                                 ', &
        '                                                                      ', &
        'OPTIONS                                                               ', &
        '                                                                      ', &
        'kh:                                                                   ', &
        '  --temperature, -T TEMPERATURE...  Temperature in °C. Default to 25°C.', &
        '  --fugacity, -f FUGACITY...        Liquid-phase fugacity in MPa. Default to 0.1 MPa.', &
        '  --gases, -g GAS...                Gases for which to compute kH. Default to O2.', &
        '  --D2O                             Set heavywater as the solvent.', &
        '  --listgases                       Display available gases for computing kH.', &
        '                                                                      ', &
        'kd:                                                                   ', &
        '  --temperature, -T TEMPERATURE...  Temperature in °C. Default to 25°C.', &
        '  --x2, -x x2...                    Molar fraction of gas in water. Default to 1e-9.', &
        '  --gases, -g GAS...                Gases for which to compute kD. Default to H2.', &
        '  --D2O,                            Set heavywater as the solvent.', &
        '  --listgases                       Display available gases for computing kD.', &
        '                                                                      ', &
        'psat:                                                                   ', &
        '  --temperature, -T TEMPERATURE...  Temperature in °C. Default to 25°C.', &
        '                                                                      ', &
        'Tsat:                                                                   ', &
        '  --pressure, -p PRESSURE...        Pressure in bar. Default to 1 bar.', &
        '                                                                      ', &
        'all:                                                                  ', &
        '  --usage, -u                       Show usage text and exit.                   ', &
        '  --help, -h                        Show help text and exit.                    ', &
        '  --verbose, -V                     Display additional information when available.', &
        '  --version, -v                     Show version information and exit.          ', &
        '                                                                      ', &
        'EXAMPLE                                                               ', &
        '  Minimal example                                                     ', &
        '                                                                      ', &
        '      iapws kh -T 25,100 -f 0.1,0.02 -g O2,H2                       ', &
        '                                                                      ', &
        '      iapws kd -T 25,100 -x2 1d-9,1d-6 -g O2,H2                       ', &
        '                                                                      ', &
        'SEE ALSO                                                              ', &
        '  ciaaw(3), codata(3)                                                 ', &
        '' ]
    
    call set_mode('strict')
    cmd = get_subcommand()

    select case (cmd)
        case ("kh")
            call set_args('--temperature:T 25.0 --fugacity:f 0.1 --gas:g O2 --D2O --listgases', &
                           help_text, version_text) 
            heavywater = 0
            call get_args('g', gas)
            call get_args('f', f)
            call get_args('T', T)

            if(lget('D2O'))then
                heavywater = 1
            else
                heavywater = 0
            end if

            call print_kh(T, f, gas, heavywater)

            if(lget('listgases')) then
                write(output_unit, '(A)') gases2(heavywater)
            end if

        case ('kd')
            call set_args('--temperature:T 25.0 --x2:x 1.0d-9 --gas:g H2 --D2O --listgases', &
                           help_text, version_text) 
            heavywater = 0
            call get_args('g', gas)
            call get_args('x', x2)
            call get_args('T', T)

            if(lget('D2O'))then
                heavywater = 1
            else
                heavywater = 0
            end if
            
            call print_kd(T, x2, gas, heavywater)
            
            if(lget('listgases')) then
                write(output_unit, '(A)') gases2(heavywater)
            end if

        case ('psat')
            call set_args('--temperature:T 25.0',  help_text, version_text) 
            call get_args('T', T)

            call print_psat(T)
        
        case ('Tsat')
            call set_args('--pressure:p 1.0',  help_text, version_text) 
            call get_args('p', p)

            call print_Tsat(p)
            
        case default
            call set_args('', help_text, version_text) 
            write(output_unit, '(A)') 'Enter a valid command. See --help.'
            stop
    end select
    
contains

function get_mm(x)result(r)
    character(len=*), intent(in) :: x
    real(dp) :: r
    select case (trim(x))
        case ('He')
            r = M_He
        case ('Ne')
            r = M_Ne
        case ('Ar')
            r = M_Ar
        case ('Kr')
            r = M_Kr
        case ('Xe')
            r = M_Xe
        case ('H2')
            r = M_H2
        case ('D2')
            r = M_D2
        case ('N2')
            r = M_N2
        case ('O2')
            r = M_O2
        case ('CO2')
            r = M_CO2
        case ('H2S')
            r = M_H2S 
        case ('CH4')
            r = M_CH4 
        case ('C2H6')
            r = M_C2H6
        case ('SF6')
            r = M_SF6
        case ('H2O')
            r = M_H2O
        case ('D2O')
            r = M_D2O
        case default
            r = 0.0_dp
    end select
end function

subroutine print_kh(T, f, gas, heavywater)
    real(dp), intent(in), contiguous :: T(:), f(:)
    character(len=*), intent(in), contiguous :: gas(:)
    integer, intent(in) :: heavywater

    real(dp), allocatable :: kr(:)
    real(dp) :: M_solvent
    integer :: i,j,k

    character(len=16) :: headers(6)
    character(len=32) :: fmt
    character(len=15) :: s1, s2, s3, s4, s5, s6

    
    M_solvent = M_H2O
    if(heavywater == 1) then 
        M_solvent = M_D2O
    end if

    headers = [character(len=15) :: 'gas', 'T-degC', 'f-MPa', 'kH-MPa', 'x2-a.u.', 's-ppm']
    fmt = '(A5, 5A15)'
    
    write(output_unit, fmt) headers

    allocate(kr(size(T)))
    do k=1, size(gas)
        call kh(T+273.15_dp, trim(gas(k)), heavywater, kr)
        do i=1, size(T)
            do j=1, size(f)
                write(s1, '(A5)') gas(k)
                write(s2, '(F14.2)') T(i) 
                write(s3, '(F14.3)') f(j) 
                write(s4, '(SP, EN14.2)') kr(i) 
                write(s5, '(SP, EN14.2)') 1/kr(i) * f(j) ! x2
                write(s6, '(SP, F14.2)') 1/kr(i) * get_mm(gas(k)) / M_solvent * 1d6 * f(j) ! solubility in liquid
                write(output_unit, fmt) &
                    adjustl(s1), &
                    adjustl(s2), &
                    adjustl(s3), &
                    adjustl(s4), &
                    adjustl(s5), &
                    adjustl(s6)
            end do
        end do
    end do
    deallocate(kr)
end subroutine

subroutine print_kd(T, x2, gas, heavywater)
    real(dp), intent(in), contiguous :: T(:), x2(:)
    character(len=*), intent(in), contiguous :: gas(:)
    integer, intent(in) :: heavywater

    real(dp), allocatable :: kr(:)
    real(dp) :: M_solvent
    integer :: i,j,k

    character(len=16) :: headers(5)
    character(len=32) :: fmt
    character(len=15) :: s1, s2, s3, s4, s5
    
    M_solvent = M_H2O
    if(heavywater == 1) then 
        M_solvent = M_D2O
    end if

    headers = [character(len=15) :: 'gas', 'T-degC', 'x2-a.u.', 'kD', 'y2-a.u.']
    fmt = '(A5, 4A15)'
    
    write(output_unit, fmt) headers

    allocate(kr(size(T)))
    do k=1, size(gas)
        call kd(T+273.15_dp, trim(gas(k)), heavywater, kr)
        do i=1, size(T)
            do j=1, size(x2)
                write(s1, '(A5)') gas(k)
                write(s2, '(SP, F14.2)') T(i) 
                write(s3, '(SP, ES14.3)') x2(j) 
                write(s4, '(SP, ES14.2)') kr(i) 
                write(s5, '(SP, ES14.2)') x2(j) * kr(i) 
                write(output_unit, fmt) &
                    adjustl(s1), &
                    adjustl(s2), &
                    adjustl(s3), &
                    adjustl(s4), &
                    adjustl(s5)
            end do
        end do
    end do
    deallocate(kr)
end subroutine

subroutine print_psat(T)
    real(dp), intent(in), contiguous :: T(:)
    
    real(dp), allocatable :: p(:)
    integer :: i

    character(len=20) :: headers(2)
    character(len=32) :: fmt
    character(len=20) :: s1, s2
    
    headers = [character(len=15) :: 'T-degC', 'psat-bar']
    fmt = '(A20, A20)'
    
    write(output_unit, fmt) headers

    allocate(p(size(T)))
    call psat(T+273.15_dp, p)
    do i=1, size(T)
        write(s1, '(SP, F14.2)') T(i)
        write(s2, '(SP, F20.6)') p(i)*10.0_dp 
        write(output_unit, fmt) adjustl(s1), adjustl(s2)
    end do
    deallocate(p)
end subroutine

subroutine print_Tsat(p)
    real(dp), intent(in), contiguous :: p(:)
    
    real(dp), allocatable :: T(:)
    integer :: i

    character(len=20) :: headers(2)
    character(len=32) :: fmt
    character(len=20) :: s1, s2
    
    headers = [character(len=15) :: 'psat-bar', 'T-degC']
    fmt = '(A20, A20)'
    
    write(output_unit, fmt) headers

    allocate(T(size(p)))
    call Tsat(p/10.0_dp,T)
    do i=1, size(p)
        write(s1, '(SP, F20.6)') p(i)
        write(s2, '(SP, F14.2)') T(i) - 273.15_dp
        write(output_unit, fmt) adjustl(s1), adjustl(s2)
    end do
    deallocate(T)
end subroutine

end program

Dependencies

  • M_CLI2

  • ciaaw

  • iapws

  • iapws__common

  • iso_fortran_env

  • stdlib_codata

  • stdlib_optval

Procedures

get_mm (function)#

function get_mm(x) -> r
Arguments:
xcharacter(len=*), intent(in)
Returns:
rreal(dp)

print_kh (subroutine)#

subroutine print_kh(T, f, gas, heavywater)
Arguments:
Treal(dp), intent(in), contiguous, dimension(:)
freal(dp), intent(in), contiguous, dimension(:)
gascharacter(len=*), intent(in), contiguous, dimension(:)
heavywaterinteger, intent(in)

print_kd (subroutine)#

subroutine print_kd(T, x2, gas, heavywater)
Arguments:
Treal(dp), intent(in), contiguous, dimension(:)
x2real(dp), intent(in), contiguous, dimension(:)
gascharacter(len=*), intent(in), contiguous, dimension(:)
heavywaterinteger, intent(in)

print_psat (subroutine)#

subroutine print_psat(T)
Arguments:
Treal(dp), intent(in), contiguous, dimension(:)

print_Tsat (subroutine)#

subroutine print_Tsat(p)
Arguments:
preal(dp), intent(in), contiguous, dimension(:)