Check if all derivatives of helmholtz can be called individually
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.
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
| Type | Intent | Optional | 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 |
| 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 |