yaeos__models_ar_saft_pcsaft Module

PC-SAFT Implementation (Gross & Sadowski, 2001) Approach: Hard Chain + Dispersion (Placeholder)


Uses

  • module~~yaeos__models_ar_saft_pcsaft~~UsesGraph module~yaeos__models_ar_saft_pcsaft yaeos__models_ar_saft_pcsaft module~hyperdual_mod hyperdual_mod module~yaeos__models_ar_saft_pcsaft->module~hyperdual_mod module~yaeos__adiff_hyperdual_ar_api yaeos__adiff_hyperdual_ar_api module~yaeos__models_ar_saft_pcsaft->module~yaeos__adiff_hyperdual_ar_api module~yaeos__constants yaeos__constants module~yaeos__models_ar_saft_pcsaft->module~yaeos__constants module~hyperdual_mod->module~yaeos__constants module~yaeos__adiff_hyperdual_ar_api->module~hyperdual_mod module~yaeos__adiff_hyperdual_ar_api->module~yaeos__constants module~yaeos__models_ar yaeos__models_ar module~yaeos__adiff_hyperdual_ar_api->module~yaeos__models_ar iso_fortran_env iso_fortran_env module~yaeos__constants->iso_fortran_env 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

Variables

Type Visibility Attributes Name Initial
real(kind=pr), private, dimension(0:2, 0:6) :: 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), private, dimension(0:2, 0:6) :: 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), private, parameter :: N_AVO = 6.02214076e23_pr
real(kind=pr), private, parameter :: PI = 3.14159265359_pr
real(kind=pr), private, parameter :: UNITS_FACTOR = 0.000602214086_pr

Derived Types

type, public, extends(ArModelAdiff) ::  PcSaft

PC-SAFT Equation of State Model

Read more…

Components

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

Substances contained in the module

real(kind=pr), public, allocatable :: eps_assoc(:)

Association energy [K]

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

Energy / k_B [K]

real(kind=pr), public, allocatable :: kap_assoc(:)

Association volume [A^3]

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

Binary interaction parameters (optional)

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

Number of segments

real(kind=pr), public, allocatable :: n_sites(:)

Number of association sites

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

Name of the model

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

Segment diameter [Angstrom]

Type-Bound Procedures

procedure, public :: Ar => Ar_impl
procedure, public :: Cp_residual_vt
procedure, public :: Cv_residual_vt
procedure, public :: Psat_pure
procedure, public :: enthalpy_residual_vt
procedure, public :: entropy_residual_vt
procedure, public :: get_v0 => get_v0_impl
procedure, public :: gibbs_residual_vt
procedure, public :: internal_energy_residual_vt
procedure, public :: lnfug_vt
procedure, public :: lnphi_pt
procedure, public :: lnphi_vt
procedure, public :: pressure
procedure, public :: residual_helmholtz
procedure, public :: volume

Functions

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

Arguments

Type IntentOptional Attributes Name
real(kind=pr), intent(in) :: m(:)
real(kind=pr), intent(in) :: sigma(:)
real(kind=pr), intent(in) :: epsilon_k(:)
real(kind=pr), intent(in), optional :: kij(:,:)

Return Value type(PcSaft)

private function Ar_impl(self, n, V, T) result(ar_total)

Arguments

Type IntentOptional Attributes Name
class(PcSaft) :: self
type(hyperdual), intent(in) :: n(:)
type(hyperdual), intent(in) :: V
type(hyperdual), intent(in) :: T

Return Value type(hyperdual)

private function calculate_association(n, V, T, zeta, d, m, eps_assoc, kap_assoc, n_sites) result(val)

Arguments

Type IntentOptional Attributes Name
type(hyperdual), intent(in) :: n(:)
type(hyperdual), intent(in) :: V
type(hyperdual), intent(in) :: T
type(hyperdual), intent(in) :: zeta(0:3)
type(hyperdual), intent(in) :: d(:)
real(kind=pr), intent(in) :: m(:)
real(kind=pr), intent(in) :: eps_assoc(:)
real(kind=pr), intent(in) :: kap_assoc(:)
real(kind=pr), intent(in) :: n_sites(:)

Return Value type(hyperdual)

private function calculate_chain(x, n_tot, m, d, zeta) result(val)

Arguments

Type IntentOptional Attributes Name
type(hyperdual), intent(in) :: x(:)
type(hyperdual), intent(in) :: n_tot
real(kind=pr), intent(in) :: m(:)
type(hyperdual), intent(in) :: d(:)
type(hyperdual), intent(in) :: zeta(0:3)

Return Value type(hyperdual)

private function calculate_dispersion(n, V, T, zeta, m, eps_k, sig, kij) result(val)

Arguments

Type IntentOptional Attributes Name
type(hyperdual), intent(in) :: n(:)
type(hyperdual), intent(in) :: V
type(hyperdual), intent(in) :: T
type(hyperdual), intent(in) :: zeta(0:3)
real(kind=pr), intent(in) :: m(:)
real(kind=pr), intent(in) :: eps_k(:)
real(kind=pr), intent(in) :: sig(:)
real(kind=pr), intent(in), optional :: kij(:,:)

Return Value type(hyperdual)

private function calculate_hard_sphere(zeta, n_tot) result(val)

Arguments

Type IntentOptional Attributes Name
type(hyperdual), intent(in) :: zeta(0:3)
type(hyperdual), intent(in) :: n_tot

Return Value type(hyperdual)

private function get_v0_impl(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)


Subroutines

private subroutine calculate_zetas(n, V, m, d, zeta)

Arguments

Type IntentOptional Attributes Name
type(hyperdual), intent(in) :: n(:)
type(hyperdual), intent(in) :: V
real(kind=pr), intent(in) :: m(:)
type(hyperdual), intent(in) :: d(:)
type(hyperdual), intent(out) :: zeta(0:3)