critical_line Function

public function critical_line(model, a0, z0, zi, ns, S, dS0, max_points, maxP, first_point)

critical_line

Description

Calculates the critical line between two mixtures using the continuation method. The two mixtures compositions are restricted to the relation between them, by a parameter , which represents the molar fraction of the second fluid with respect to the whole mixture.

Arguments

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

Equation of state model

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

Initial value

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

Molar fractions of the first fluid

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

Molar fractions of the second fluid

integer, intent(in) :: ns

Position of the specification variable

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

Specified value

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

Initial step size

integer, intent(in), optional :: max_points

Maximum number of points

real(kind=pr), intent(in), optional :: maxP

Maximum pressure

type(EquilibriumState), intent(in), optional :: first_point

Return Value type(CriticalLine)


Variables

Type Visibility Attributes Name Initial
real(kind=pr), public :: P
real(kind=pr), public :: T
real(kind=pr), public :: V
real(kind=pr), public :: X0(4)
real(kind=pr), public, allocatable :: XS(:,:)

Full set of solved points

integer, public :: i
integer, public :: j
integer, public :: last_point
real(kind=pr), public :: max_P
integer, public :: npoints
real(kind=pr), public :: u(size(z0))

eigen-vector

real(kind=pr), public :: u_new(size(z0))

eigen-vector

real(kind=pr), public :: z(size(z0))

Subroutines

subroutine foo(X, ns, S, F, dF, dFdS)

Arguments

Type IntentOptional Attributes Name
real(kind=pr), intent(in) :: X(:)
integer, intent(in) :: ns
real(kind=pr), intent(in) :: S
real(kind=pr), intent(out) :: F(:)
real(kind=pr), intent(out) :: dF(:,:)
real(kind=pr), intent(out) :: dFdS(:)

subroutine update_specification(X, ns, S, dS, dXdS, iterations)

Arguments

Type IntentOptional Attributes Name
real(kind=pr), intent(inout) :: X(:)

Vector of variables

integer, intent(inout) :: ns

Position of specified variable

real(kind=pr), intent(inout) :: S

Specification variable value

real(kind=pr), intent(inout) :: dS

Step of specification in the method

real(kind=pr), intent(inout) :: dXdS(:)

integer, intent(in) :: iterations

Iterations needed to converge point