volume Subroutine

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

Uses

  • proc~~volume~~UsesGraph proc~volume CubicEoS%volume module~yaeos__constants yaeos__constants proc~volume->module~yaeos__constants module~yaeos__math_linalg yaeos__math_linalg proc~volume->module~yaeos__math_linalg module~yaeos__models_solvers yaeos__models_solvers proc~volume->module~yaeos__models_solvers iso_fortran_env iso_fortran_env module~yaeos__constants->iso_fortran_env module~yaeos__math_linalg->module~yaeos__constants module~yaeos__models_solvers->module~yaeos__constants module~yaeos__models_ar yaeos__models_ar module~yaeos__models_solvers->module~yaeos__models_ar 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

Cubic EoS volume solver

Volume solver optimized for Cubic Equations of State.

Description

Uses the solver proposed by Michelsen.

Examples

 use yaeos, only: CubicEoS, PengRobinson
 type(CubicEoS) :: eos

 eos = PengRobinson(tc, pc, w)
 ! Possible roots to solve
 call eos%volume(n, P, T, V, "liquid")
 call eos%volume(n, P, T, V, "vapor")
 call eos%volume(n, P, T, V, "stable")

References

  • [1] “Thermodynamic Models: Fundamental and Computational Aspects”, Michael L. Michelsen, Jørgen M. Mollerup. Tie-Line Publications, Denmark (2004) doi

  • [2] “A Note on the Analytical Solution of Cubic Equations of State in Process Simulation”, Rosendo Monroy-Loperena doi

Type Bound

CubicEoS

Arguments

Type IntentOptional Attributes Name
class(CubicEoS), 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

Calls

proc~~volume~~CallsGraph proc~volume CubicEoS%volume proc~volume_michelsen volume_michelsen proc~volume->proc~volume_michelsen get_v0 get_v0 proc~volume_michelsen->get_v0 interface~optval optval proc~volume_michelsen->interface~optval proc~solve_point~5 solve_point proc~volume_michelsen->proc~solve_point~5 proc~optval_character optval_character interface~optval->proc~optval_character proc~optval_integer optval_integer interface~optval->proc~optval_integer proc~optval_logical optval_logical interface~optval->proc~optval_logical proc~optval_real optval_real interface~optval->proc~optval_real proc~solve_point~5->get_v0 residual_helmholtz residual_helmholtz proc~solve_point~5->residual_helmholtz

Called by

proc~~volume~~CalledByGraph proc~volume CubicEoS%volume proc~volume~3 Gerg2008%volume proc~volume~3->proc~volume

Variables

Type Visibility Attributes Name Initial
real(kind=pr), public :: AT_Liq
real(kind=pr), public :: AT_Vap
real(kind=pr), public :: Ar
real(kind=pr), public :: Bmix
real(kind=pr), public :: D
real(kind=pr), public :: D1
real(kind=pr), public :: D2
real(kind=pr), public :: Tr(size(n))
real(kind=pr), public :: V_liq
real(kind=pr), public :: V_vap
real(kind=pr), public :: a(size(n))
real(kind=pr), public :: cp(4)
complex(kind=pr), public :: cr(3)
real(kind=pr), public :: dBi(size(n))
real(kind=pr), public :: dBij(size(n),size(n))
real(kind=pr), public :: dD1i(size(n))
real(kind=pr), public :: dD1ij(size(n),size(n))
real(kind=pr), public :: dDdT
real(kind=pr), public :: dDdT2
real(kind=pr), public :: dDi(size(n))
real(kind=pr), public :: dDidT(size(n))
real(kind=pr), public :: dDij(size(n),size(n))
real(kind=pr), public :: dadt(size(n))
real(kind=pr), public :: dadt2(size(n))
integer, public :: flag
real(kind=pr), public :: rr(3)
real(kind=pr), public :: totn
real(kind=pr), public :: z(size(n))