individual_ar_calls Subroutine

public subroutine individual_ar_calls(eos, n, V, T, passed)

individual_ar_calls

Check if all derivatives of helmholtz can be called individually

Description

Tool to facilitate the development of new ArModel by testing the individual call of each Helmholtz derivative. The individual call must be equal to the total call.

Examples

 use yaeos, only: pr, SoaveRedlichKwong, ArModel
 use yaeos__consistency_armodel, only: individual_ar_calls

 class(ArModel), allocatable :: model
 real(pr) :: tc(4), pc(4), w(4)

 real(pr) :: n(4), T, V
 logical :: passed

 n = [1.5, 0.2, 0.7, 2.3]
 tc = [190.564, 425.12, 300.11, 320.25]
 pc = [45.99, 37.96, 39.23, 40.21]
 w = [0.0115478, 0.200164, 0.3624, 0.298]

 T = 600_pr
 V = 0.5_pr

 model = SoaveRedlichKwong(tc, pc, w)

 call individual_ar_calls(model, n, V, T, passed)

 ! If TRUE, then all individual calls are correct
 print *, passed

Arguments

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

Equation of state

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

Moles number vector

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

Volume [L]

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

Temperature [K]

logical, intent(out) :: passed

Flag indicating if all individual calls are correct


Calls

proc~~individual_ar_calls~~CallsGraph proc~individual_ar_calls individual_ar_calls residual_helmholtz residual_helmholtz proc~individual_ar_calls->residual_helmholtz

Variables

Type Visibility Attributes Name Initial
real(kind=pr), public :: Ar
real(kind=pr), public :: ArT
real(kind=pr), public :: ArT2
real(kind=pr), public :: ArTV
real(kind=pr), public :: ArTn(size(n))
real(kind=pr), public :: ArV
real(kind=pr), public :: ArV2
real(kind=pr), public :: ArVn(size(n))
real(kind=pr), public :: Arn(size(n))
real(kind=pr), public :: Arn2(size(n),size(n))
integer, public :: i
real(kind=pr), public :: i_Ar
real(kind=pr), public :: i_ArT
real(kind=pr), public :: i_ArT2
real(kind=pr), public :: i_ArTV
real(kind=pr), public :: i_ArTn(size(n))
real(kind=pr), public :: i_ArV
real(kind=pr), public :: i_ArV2
real(kind=pr), public :: i_ArVn(size(n))
real(kind=pr), public :: i_Arn(size(n))
real(kind=pr), public :: i_Arn2(size(n),size(n))
integer, public :: j