volume Subroutine

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

Uses

  • proc~~volume~~UsesGraph proc~volume Gerg2008%volume module~yaeos__constants yaeos__constants proc~volume->module~yaeos__constants module~yaeos__math yaeos__math proc~volume->module~yaeos__math iso_fortran_env iso_fortran_env module~yaeos__constants->iso_fortran_env module~yaeos__math->module~yaeos__constants module~yaeos__math_continuation yaeos__math_continuation module~yaeos__math->module~yaeos__math_continuation module~yaeos__math_linalg yaeos__math_linalg module~yaeos__math->module~yaeos__math_linalg module~yaeos__math_continuation->module~yaeos__constants module~yaeos__math_continuation->module~yaeos__math_linalg module~yaeos__math_linalg->module~yaeos__constants

Volume solver routine for the GERG2008.

Solves volume roots using newton method. Given pressure and temperature. It will use the SRK equation of state to initialize the volume values.

Description

This subroutine solves the volume using a newton method. The variable root_type is used to specify the desired root to solve. The options are: ["liquid", "vapor", "stable"]

Examples

eos = PengRobinson76(Tc, Pc, w)

n = [1.0_pr, 1.0_pr]
T = 300.0_pr
P = 1.0_pr

call eos%volume(n, P, T, V, root_type="liquid")
call eos%volume(n, P, T, V, root_type="vapor")
call eos%volume(n, P, T, V, root_type="stable")

Type Bound

Gerg2008

Arguments

Type IntentOptional Attributes Name
class(Gerg2008), intent(in) :: eos

Model

real(kind=pr), intent(in) :: n(:)

Moles number vector

real(kind=pr), intent(in) :: P

Pressure [bar]

real(kind=pr), intent(in) :: T

Temperature [K]

real(kind=pr), intent(out) :: V

Volume [L]

character(len=*), intent(in) :: root_type

Desired root-type to solve. Options are: ["liquid", "vapor", "stable"]


Calls

proc~~volume~~CallsGraph proc~volume Gerg2008%volume interface~newton newton proc~volume->interface~newton proc~volume~2 CubicEoS%volume proc~volume->proc~volume~2 proc~newton_1d newton_1d interface~newton->proc~newton_1d Bmix Bmix proc~volume~2->Bmix D1mix D1mix proc~volume~2->D1mix Dmix Dmix proc~volume~2->Dmix alpha alpha proc~volume~2->alpha proc~genericcubic_ar CubicEoS%GenericCubic_Ar proc~volume~2->proc~genericcubic_ar proc~volume_michelsen volume_michelsen proc~volume~2->proc~volume_michelsen proc~genericcubic_ar->Bmix proc~genericcubic_ar->D1mix proc~genericcubic_ar->Dmix proc~genericcubic_ar->alpha get_v0 get_v0 proc~volume_michelsen->get_v0 interface~optval optval proc~volume_michelsen->interface~optval proc~solve_point~3 solve_point proc~volume_michelsen->proc~solve_point~3 proc~optval_character optval_character interface~optval->proc~optval_character proc~optval_integer optval_integer interface~optval->proc~optval_integer proc~optval_real optval_real interface~optval->proc~optval_real proc~solve_point~3->get_v0 residual_helmholtz residual_helmholtz proc~solve_point~3->residual_helmholtz

Variables

Type Visibility Attributes Name Initial
real(kind=pr), public :: Gr
real(kind=pr), public :: GrL
real(kind=pr), public :: GrV
real(kind=pr), public :: Vliq
real(kind=pr), public :: Vvap
logical, public :: failed
integer, public :: max_iters = 30
real(kind=pr), public :: tol = 1e-8
real(kind=pr), public :: totnRT

Subroutines

subroutine foo(x, f, df)

Arguments

Type IntentOptional Attributes Name
real(kind=pr), intent(in) :: x
real(kind=pr), intent(out) :: f
real(kind=pr), intent(out) :: df