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.
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"]
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 | Intent | Optional | 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:
|
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 |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=pr), | intent(in) | :: | x | |||
real(kind=pr), | intent(out) | :: | f | |||
real(kind=pr), | intent(out) | :: | df |