gibbs_excess Subroutine

private subroutine gibbs_excess(eos, n, P, T, root_type, Ge, GeP, GeT, Gen)

Calculate excess Gibbs energy and its derivatives given pressure and temperature.

Examples

eos = PengRobinson76(Tc, Pc, w)

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

call eos%gibbs_excess(&
   n, P, T, root_type="stable", &
   Ge=Ge, GeP=GeP, GeT=GeT, Gen=Gen &
   )

Type Bound

ArModel

Arguments

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

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

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

real(kind=pr), intent(out), optional :: Ge

Excess Gibbs energy [bar L]

real(kind=pr), intent(out), optional :: GeP

real(kind=pr), intent(out), optional :: GeT

real(kind=pr), intent(out), optional :: Gen(size(n))


Calls

proc~~gibbs_excess~~CallsGraph proc~gibbs_excess ArModel%gibbs_excess proc~ln_activity_coefficient ArModel%ln_activity_coefficient proc~gibbs_excess->proc~ln_activity_coefficient proc~lnphi_pt ArModel%lnphi_pt proc~ln_activity_coefficient->proc~lnphi_pt proc~lnphi_vt ArModel%lnphi_vt proc~lnphi_pt->proc~lnphi_vt proc~volume~2 ArModel%volume proc~lnphi_pt->proc~volume~2 residual_helmholtz residual_helmholtz proc~lnphi_vt->residual_helmholtz get_v0 get_v0 proc~volume~2->get_v0 interface~newton newton proc~volume~2->interface~newton proc~newton_1d newton_1d interface~newton->proc~newton_1d

Variables

Type Visibility Attributes Name Initial
real(kind=pr), private :: dlngammadP(size(n))
real(kind=pr), private :: dlngammadT(size(n))
real(kind=pr), private :: dlngammadn(size(n),size(n))
logical, private :: dn
logical, private :: dp
logical, private :: dt
integer, private :: j
real(kind=pr), private :: lngamma(size(n))
logical, private :: present_derivs