yaeos__critical_pure_point_solver Module

critical_pure_point_solver

Calculation of pure-component critical points using the yaeos equation of state and numerical derivatives.

Description

The critical point of a pure component is defined by the conditions:

This module solves the resulting nonlinear system in the variables (V, T) using a Newton-Raphson iteration. Each residual is evaluated from the equation-of-state pressure and its numerical derivatives.


Uses

  • module~~yaeos__critical_pure_point_solver~~UsesGraph module~yaeos__critical_pure_point_solver yaeos__critical_pure_point_solver module~yaeos__constants yaeos__constants module~yaeos__critical_pure_point_solver->module~yaeos__constants module~yaeos__models_ar yaeos__models_ar module~yaeos__critical_pure_point_solver->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__critical_pure_point_solver~~UsedByGraph module~yaeos__critical_pure_point_solver yaeos__critical_pure_point_solver proc~init_pcsaft init_pcsaft proc~init_pcsaft->module~yaeos__critical_pure_point_solver

Variables

Type Visibility Attributes Name Initial
real(kind=pr), private, parameter :: DT_STEP = 2.0e-2_pr
real(kind=pr), private, parameter :: DV_STEP = 2.0e-4_pr
integer, private, parameter :: MAX_ITER = 151
real(kind=pr), private, parameter :: TOL_RES = 2.0e-8_pr
real(kind=pr), private, parameter :: TOL_STEP = 2.0e-6_pr

Subroutines

public subroutine find_critical_points_all_components(model, nc, Vc, Tc, Pc, converged)

Arguments

Type IntentOptional Attributes Name
class(ArModel), intent(in) :: model
integer, intent(in) :: nc
real(kind=pr), intent(out) :: Vc(nc)
real(kind=pr), intent(out) :: Tc(nc)
real(kind=pr), intent(out) :: Pc(nc)
logical, intent(out) :: converged(nc)

private subroutine estimate_critical_point(model, i, nc, V_est, T_est)

Arguments

Type IntentOptional Attributes Name
class(ArModel), intent(in) :: model
integer, intent(in) :: i
integer, intent(in) :: nc
real(kind=pr), intent(out) :: V_est
real(kind=pr), intent(out) :: T_est

private subroutine jacobian_critical_eqs(model, nc, i_comp, V, T, J)

Arguments

Type IntentOptional Attributes Name
class(ArModel), intent(in) :: model
integer, intent(in) :: nc
integer, intent(in) :: i_comp
real(kind=pr), intent(in) :: V
real(kind=pr), intent(in) :: T
real(kind=pr), intent(out) :: J(2,2)

private subroutine residual_critical_eqs(model, nc, i_comp, V, T, f1, f2, P)

Arguments

Type IntentOptional Attributes Name
class(ArModel), intent(in) :: model
integer, intent(in) :: nc
integer, intent(in) :: i_comp
real(kind=pr), intent(in) :: V
real(kind=pr), intent(in) :: T
real(kind=pr), intent(out) :: f1
real(kind=pr), intent(out) :: f2
real(kind=pr), intent(out) :: P

private subroutine solve_critical_point(model, nc, i_comp, V_init, T_init, Vc, Tc, Pc, converged)

Arguments

Type IntentOptional Attributes Name
class(ArModel), intent(in) :: model
integer, intent(in) :: nc
integer, intent(in) :: i_comp
real(kind=pr), intent(in) :: V_init
real(kind=pr), intent(in) :: T_init
real(kind=pr), intent(out) :: Vc
real(kind=pr), intent(out) :: Tc
real(kind=pr), intent(out) :: Pc
logical, intent(out) :: converged