models solversSet of different specialized solvers for different models
This module holds specialized solvers for different kind of applications and models.
This module holds the routine volume_michelsen which is a solver for
volume that takes advantage over a simple newton on the function of
pressure by solving the function of pressure over the covolume instead,
which solution is limited in the range [0, 1]. This solver requires that
the EoS uses the method get_v0 to return the covolume.
A basic code example
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ArModel), | intent(in) | :: | eos | |||
| real(kind=pr), | intent(in) | :: | n(:) | |||
| real(kind=pr), | intent(in) | :: | P |
Objective pressure [bar] |
||
| real(kind=pr), | intent(in) | :: | T |
Temperature [K] |
||
| real(kind=pr), | intent(out) | :: | V |
Obtained volume [L] |
||
| real(kind=pr), | intent(out) | :: | Pcalc |
Calculated pressure at V [bar] |
||
| real(kind=pr), | intent(inout) | :: | ZETA | |||
| real(kind=pr), | intent(inout) | :: | ZETMIN | |||
| real(kind=pr), | intent(inout) | :: | ZETMAX | |||
| real(kind=pr), | intent(out) | :: | AT | |||
| integer, | intent(out) | :: | iter |
Volume solver at a given pressure.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ArModel), | intent(in) | :: | eos | |||
| real(kind=pr), | intent(in) | :: | n(:) |
Mixture moles |
||
| 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), | optional | :: | root_type |
Type of root [“vapor” | “liquid” | “stable”] |
|
| integer, | intent(in), | optional | :: | max_iters |
Maxiumum number of iterations, defaults to 100 |
|
| real(kind=pr), | intent(in), | optional | :: | V0 |
Specified initial volume |