GenericCubic_Ar_dddlc Subroutine

public subroutine GenericCubic_Ar_dddlc(n, V, T, B, dBi, dBij, D, dDdV, dDdV2, dDdT, dDdT2, dDdTV, dDi, dDidV, dDidT, dDij, D1, dD1i, dD1ij, Ar, ArV, ArT, ArTV, ArV2, ArT2, Arn, ArVn, ArTn, Arn2)

Uses

  • proc~~genericcubic_ar_dddlc~~UsesGraph proc~genericcubic_ar_dddlc GenericCubic_Ar_dddlc module~yaeos__constants yaeos__constants proc~genericcubic_ar_dddlc->module~yaeos__constants iso_fortran_env iso_fortran_env module~yaeos__constants->iso_fortran_env

Residual Helmholtz Energy for a generic Cubic Equation of State.

Calculates the residual Helmholtz Energy for a generic Cubic EoS as defined by Michelsen and Møllerup:

When the mixing rule produces a D that depends on volume (e.g. the s-DDLC local composition rule), the non-zero volume derivatives dDdV, dDdV2, dDdTV, and dDidV drive additional correction terms that are added to ArV, ArV2, ArTV, and ArVn. For standard mixing rules all four inputs should be passed as zero, and the correction block is skipped entirely at run time.

Arguments

Type IntentOptional Attributes Name
real(kind=pr), intent(in) :: n(:)

Mole numbers

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

Volume [L]

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

Temperature [K]

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

Repulsive parameter [L]

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

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

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

Attractive parameter

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

— zero for V-independent mixing rules

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

— zero for V-independent mixing rules

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

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

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

— zero for V-independent mixing rules

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

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

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

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

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

parameter

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

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

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

Residual Helmholtz

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

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

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

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

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

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

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

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

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


Called by

proc~~genericcubic_ar_dddlc~~CalledByGraph proc~genericcubic_ar_dddlc GenericCubic_Ar_dddlc proc~genericcubic_ar CubicEoS%GenericCubic_Ar proc~genericcubic_ar->proc~genericcubic_ar_dddlc

Variables

Type Visibility Attributes Name Initial
real(kind=pr), public :: AUX
real(kind=pr), public :: D2
real(kind=pr), public :: FFB
real(kind=pr), public :: FFBB
real(kind=pr), public :: FFBV
real(kind=pr), public :: auxD2
real(kind=pr), public :: f
real(kind=pr), public :: fB
real(kind=pr), public :: fBD1
real(kind=pr), public :: fD1
real(kind=pr), public :: fD1D1
real(kind=pr), public :: fVD1
real(kind=pr), public :: fv
real(kind=pr), public :: fv2
real(kind=pr), public :: g
real(kind=pr), public :: gv
real(kind=pr), public :: gv2
integer, public :: i
integer, public :: j
integer, public :: nc
real(kind=pr), public :: totn