YAEOS__MODELS_AR_SAFT_PCSAFT Module


Uses

  • module~~yaeos__models_ar_saft_pcsaft~~UsesGraph module~yaeos__models_ar_saft_pcsaft YAEOS__MODELS_AR_SAFT_PCSAFT module~yaeos__constants yaeos__constants module~yaeos__models_ar_saft_pcsaft->module~yaeos__constants module~yaeos__models_solvers yaeos__models_solvers module~yaeos__models_ar_saft_pcsaft->module~yaeos__models_solvers module~yaeos__tapenade_ar_api yaeos__tapenade_ar_api module~yaeos__models_ar_saft_pcsaft->module~yaeos__tapenade_ar_api module~yaeos__tapenade_interfaces yaeos__tapenade_interfaces module~yaeos__models_ar_saft_pcsaft->module~yaeos__tapenade_interfaces iso_fortran_env iso_fortran_env module~yaeos__constants->iso_fortran_env module~yaeos__models_solvers->module~yaeos__constants module~yaeos__models_ar yaeos__models_ar module~yaeos__models_solvers->module~yaeos__models_ar module~yaeos__tapenade_ar_api->module~yaeos__constants module~yaeos__tapenade_ar_api->module~yaeos__models_ar module~yaeos__tapenade_interfaces->module~yaeos__constants module~yaeos__models_ar->module~yaeos__constants module~yaeos__models_base yaeos__models_base module~yaeos__models_ar->module~yaeos__models_base module~yaeos__substance yaeos__substance module~yaeos__models_base->module~yaeos__substance module~yaeos__substance->module~yaeos__constants

Used by

  • module~~yaeos__models_ar_saft_pcsaft~~UsedByGraph module~yaeos__models_ar_saft_pcsaft YAEOS__MODELS_AR_SAFT_PCSAFT module~yaeos__models yaeos__models module~yaeos__models->module~yaeos__models_ar_saft_pcsaft module~yaeos yaeos module~yaeos->module~yaeos__models module~yaeos__extra_fluids yaeos__extra_fluids module~yaeos__extra_fluids->module~yaeos__models proc~co2_h2o_isop co2_h2o_isop proc~co2_h2o_isop->module~yaeos__models

Variables

Type Visibility Attributes Name Initial
real(kind=pr), public, DIMENSION(0:2, 0:6), SAVE :: a_coeffs = RESHAPE((/0.9105631445, -0.3084016918, -0.0906148351, 0.6361281449, 0.1860531159, 0.4527842806, 2.6861347891, -2.5030047259, 0.5962700728, -26.547362491, 21.419793629, -1.7241829131, 97.759208784, -65.255885330, -4.1302112531, -159.59154087, 83.318680481, 13.776631870, 91.297774084, -33.746922930, -8.6728470368/), (/3, 7/))
real(kind=pr), public, DIMENSION(0:2, 0:6), SAVE :: b_coeffs = RESHAPE((/0.7240946941, -0.5755498075, 0.0976883116, 2.2382791861, 0.6995095521, -0.2557574982, -4.0025849485, 3.8925673390, -9.1558561530, -21.003576815, -17.215471648, 20.642075974, 26.855641363, 192.67226447, -38.804430052, 206.55133841, -161.82646165, 93.626774077, -355.60235612, -165.20769346, -29.666905585/), (/3, 7/))
real(kind=pr), public, parameter :: n_avo = 6.02214076e23_pr
real(kind=pr), public, parameter :: pi = 3.14159265359_pr
real(kind=pr), public, parameter :: units_factor = 0.000602214086_pr

Derived Types

type, public, extends(ArModelTapenade) ::  PCSAFT

Components

Type Visibility Attributes Name Initial
type(Substances), public :: components

Substances contained in the module

real(kind=pr), public, ALLOCATABLE :: epsilon_k(:)

Energy / k_B [K]

real(kind=pr), public, ALLOCATABLE :: kij(:,:)

Binary interaction parameters (optional)

real(kind=pr), public, ALLOCATABLE :: m(:)

Number of segments

character(len=:), public, allocatable :: name

Name of the model

real(kind=pr), public, ALLOCATABLE :: sigma(:)

Segment diameter [Angstrom]

Type-Bound Procedures

procedure, public :: Cp_residual_pt
procedure, public :: Cp_residual_vt
procedure, public :: Cv_residual_pt
procedure, public :: Cv_residual_vt
procedure, public :: Psat_pure
procedure, public :: ar => AR
procedure, public :: ar_b => AR_B
procedure, public :: ar_d => AR_D
procedure, public :: ar_d_b => AR_D_B
procedure, public :: ar_d_d => AR_D_D
procedure, public :: enthalpy_excess
procedure, public :: enthalpy_residual_pt
procedure, public :: enthalpy_residual_vt
procedure, public :: entropy_excess
procedure, public :: entropy_residual_pt
procedure, public :: entropy_residual_vt
procedure, public :: get_v0
procedure, public :: gibbs_excess
procedure, public :: gibbs_residual_pt
procedure, public :: gibbs_residual_vt
procedure, public :: helmholtz_excess
procedure, public :: helmholtz_residual_pt
procedure, public :: internal_energy_excess
procedure, public :: internal_energy_residual_pt
procedure, public :: internal_energy_residual_vt
procedure, public :: ln_activity_coefficient
procedure, public :: lnfug_vt
procedure, public :: lnphi_pt
procedure, public :: lnphi_vt
procedure, public :: pressure
procedure, public :: residual_helmholtz
procedure, public :: volume
procedure, public :: volume_excess

Functions

public function get_v0(self, n, P, T) result(v0)

Arguments

Type IntentOptional Attributes Name
class(PCSAFT), intent(in) :: self
real(kind=pr), intent(in) :: n(:)
real(kind=pr), intent(in) :: P
real(kind=pr), intent(in) :: T

Return Value real(kind=pr)

public function init_pcsaft(m, sigma, epsilon_k, kij) result(model)

Arguments

Type IntentOptional Attributes Name
real(kind=8), intent(in) :: m(:)

Number of segments

real(kind=8), intent(in) :: sigma(:)

Segment diameter [Angstrom]

real(kind=8), intent(in) :: epsilon_k(:)

Energy / k_B [K]

real(kind=8), intent(in), optional :: kij(:,:)

Binary interaction parameters (optional)

Return Value type(PCSAFT)


Subroutines

public subroutine AR(model, n, v, t, arval)

Arguments

Type IntentOptional Attributes Name
class(PCSAFT), intent(in) :: model
real(kind=pr), intent(in) :: n(:)
real(kind=pr), intent(in) :: v
real(kind=pr), intent(in) :: t
real(kind=pr), intent(out) :: arval

public subroutine AR_B(model, n, nb, v, vb, t, tb, arval, arvalb)

Arguments

Type IntentOptional Attributes Name
class(PCSAFT), intent(in) :: model
real(kind=pr), intent(in) :: n(:)
real(kind=pr) :: nb(:)
real(kind=pr), intent(in) :: v
real(kind=pr) :: vb
real(kind=pr), intent(in) :: t
real(kind=pr) :: tb
real(kind=pr) :: arval
real(kind=pr) :: arvalb

public subroutine AR_D(model, n, nd, v, vd, t, td, arval, arvald)

Arguments

Type IntentOptional Attributes Name
class(PCSAFT), intent(in) :: model
real(kind=pr), intent(in) :: n(:)
real(kind=pr), intent(in) :: nd(:)
real(kind=pr), intent(in) :: v
real(kind=pr), intent(in) :: vd
real(kind=pr), intent(in) :: t
real(kind=pr), intent(in) :: td
real(kind=pr), intent(out) :: arval
real(kind=pr), intent(out) :: arvald

public subroutine AR_D_B(model, n, nb, nd, ndb, v, vb, vd, vdb, t, tb, td, tdb, arval, arvalb, arvald, arvaldb)

Arguments

Type IntentOptional Attributes Name
class(PCSAFT), intent(in) :: model
real(kind=pr), intent(in) :: n(:)
real(kind=pr) :: nb(:)
real(kind=pr), intent(in) :: nd(:)
real(kind=pr) :: ndb(:)
real(kind=pr), intent(in) :: v
real(kind=pr) :: vb
real(kind=pr), intent(in) :: vd
real(kind=pr) :: vdb
real(kind=pr), intent(in) :: t
real(kind=pr) :: tb
real(kind=pr), intent(in) :: td
real(kind=pr) :: tdb
real(kind=pr) :: arval
real(kind=pr) :: arvalb
real(kind=pr) :: arvald
real(kind=pr) :: arvaldb

public subroutine AR_D_D(model, n, nd, v, vd0, vd, t, td0, td, arval, arvald0, arvald, arvaldd)

Arguments

Type IntentOptional Attributes Name
class(PCSAFT), intent(in) :: model
real(kind=pr), intent(in) :: n(:)
real(kind=pr), intent(in) :: nd(:)
real(kind=pr), intent(in) :: v
real(kind=pr), intent(in) :: vd0
real(kind=pr), intent(in) :: vd
real(kind=pr), intent(in) :: t
real(kind=pr), intent(in) :: td0
real(kind=pr), intent(in) :: td
real(kind=pr), intent(out) :: arval
real(kind=pr), intent(out) :: arvald0
real(kind=pr), intent(out) :: arvald
real(kind=pr), intent(out) :: arvaldd

public subroutine AR_D_D_D(model, n, nd, v, vd1, vd0, vd, t, td1, td0, td, arval, arvald1, arvald0, arvald0d, arvald, arvaldd0, arvaldd, arvalddd)

Arguments

Type IntentOptional Attributes Name
class(PCSAFT), intent(in) :: model
real(kind=pr), intent(in) :: n(:)
real(kind=pr), intent(in) :: nd(:)
real(kind=pr), intent(in) :: v
real(kind=pr), intent(in) :: vd1
real(kind=pr), intent(in) :: vd0
real(kind=pr), intent(in) :: vd
real(kind=pr), intent(in) :: t
real(kind=pr), intent(in) :: td1
real(kind=pr), intent(in) :: td0
real(kind=pr), intent(in) :: td
real(kind=pr), intent(out) :: arval
real(kind=pr), intent(out) :: arvald1
real(kind=pr), intent(out) :: arvald0
real(kind=pr), intent(out) :: arvald0d
real(kind=pr), intent(out) :: arvald
real(kind=pr), intent(out) :: arvaldd0
real(kind=pr), intent(out) :: arvaldd
real(kind=pr), intent(out) :: arvalddd

public subroutine volume(eos, n, P, T, V, root_type)

Volume solver optimized for PC-SAFT

Read more…

Arguments

Type IntentOptional Attributes Name
class(PCSAFT), intent(in) :: eos
real(kind=pr), intent(in) :: n(:)
real(kind=pr), intent(in) :: P
real(kind=pr), intent(in) :: T
real(kind=pr), intent(out) :: V
character(len=*), intent(in) :: root_type