QMR Derived Type

type, public, extends(CubicMixRule) :: QMR

Quadratic Mixing Rule (QMR) derived type. Classic Van der Waals mixing rules.

QMR depends on binary interaction parameters, on a Cubic EoS the mixture is obtained by the combination of an attractive and repulsive parameter matrices.

By default the attractive parameter matrix is calculated with: generating the matrix, but this procedure can be overriden replacing the aij pointer procedure.


Inherits

type~~qmr~~InheritsGraph type~qmr QMR type~cubicmixrule CubicMixRule type~qmr->type~cubicmixrule

Inherited by

type~~qmr~~InheritedByGraph type~qmr QMR type~qmrtd QMRTD type~qmrtd->type~qmr type~sddlc sDDLC type~sddlc->type~qmrtd

Components

Type Visibility Attributes Name Initial
logical, public :: dn2 = .false.

Calculate second order derivatives

logical, public :: is_D_ddlc = .false.

Mixing rule D parameter dependant on density

real(kind=pr), public, allocatable :: k(:,:)

Attractive Binary Interatction parameter matrix

real(kind=pr), public, allocatable :: l(:,:)

Repulsive Binary Interatction parameter matrix


Type-Bound Procedures

procedure, public :: Bmix

Repulsive parameter mixing rule

  • public subroutine Bmix(self, n, bi, B, dBi, dBij)

    Mixture repulsive parameter.

    Read more…

    Arguments

    Type IntentOptional Attributes Name
    class(QMR), intent(in) :: self

    Mixing rule object.

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

    Moles vector.

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

    Pure components repulsive parameters.

    real(kind=pr), intent(out) :: B

    Mixture repulsive parameter.

    real(kind=pr), intent(out) :: dBi(:)

    real(kind=pr), intent(out) :: dBij(:,:)

procedure, public :: D1mix => RKPR_D1mix

  • public subroutine RKPR_D1mix(self, n, d1i, D1, dD1i, dD1ij)

    RKPR parameter mixing rule.

    Read more…

    Arguments

    Type IntentOptional Attributes Name
    class(QMR), intent(in) :: self
    real(kind=pr), intent(in) :: n(:)
    real(kind=pr), intent(in) :: d1i(:)
    real(kind=pr), intent(out) :: D1
    real(kind=pr), intent(out) :: dD1i(:)
    real(kind=pr), intent(out) :: dD1ij(:,:)

procedure, public :: Dmix

Attractive parameter mixing rule

  • public subroutine Dmix(self, n, V, T, ai, daidt, daidt2, D, dDdV, dDdT, dDdV2, dDdT2, dDi, dDdTV, dDidV, dDidT, dDij)

    Attractive parameter mixing rule with quadratic mix.

    Read more…

    Arguments

    Type IntentOptional Attributes Name
    class(QMR), intent(in) :: self

    Mixing rule object.

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

    Moles vector [mol]

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

    Volume [L] (unused)

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

    Temperature [K]

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

    Pure components attractive parameters

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

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

    real(kind=pr), intent(out) :: D

    Mixture attractive parameter

    real(kind=pr), intent(out) :: dDdV

    real(kind=pr), intent(out) :: dDdT

    real(kind=pr), intent(out) :: dDdV2

    real(kind=pr), intent(out) :: dDdT2

    real(kind=pr), intent(out) :: dDi(:)

    real(kind=pr), intent(out) :: dDdTV

    real(kind=pr), intent(out) :: dDidV(:)

    real(kind=pr), intent(out) :: dDidT(:)

    real(kind=pr), intent(out) :: dDij(:,:)

procedure, public :: aij => kij_constant

Default attractive parameter combining rule

  • public subroutine kij_constant(self, T, a, dadt, dadt2, aij, daijdt, daijdt2)

    Combining rule that uses constant values.

    Read more…

    Arguments

    Type IntentOptional Attributes Name
    class(QMR), intent(in) :: self
    real(kind=pr), intent(in) :: T

    Temperature [K]

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

    Pure components attractive parameters (\a_i)

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

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

    real(kind=pr), intent(out) :: aij(:,:)

    Matrix

    real(kind=pr), intent(out) :: daijdt(:,:)

    real(kind=pr), intent(out) :: daijdt2(:,:)