sDDLC Derived Type

type, public, extends(QMRTD) :: sDDLC

Segmented Density-Dependent Local-Composition Mixing Rule.


Inherits

type~~sddlc~~InheritsGraph type~sddlc sDDLC type~qmrtd QMRTD type~sddlc->type~qmrtd type~qmr QMR type~qmrtd->type~qmr type~cubicmixrule CubicMixRule type~qmr->type~cubicmixrule

Components

Type Visibility Attributes Name Initial
real(kind=pr), public, allocatable :: Tref(:,:)
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 :: k0(:,:)
real(kind=pr), public, allocatable :: l(:,:)

Repulsive Binary Interatction parameter matrix

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

Segment size


Constructor

public interface sDDLC

  • public function init_sddlc(k, k0, tref, l, q) result(mixrule)

    Arguments

    Type IntentOptional Attributes Name
    real(kind=pr), intent(in) :: k(:,:)
    real(kind=pr), intent(in) :: k0(:,:)
    real(kind=pr), intent(in) :: tref(:,:)
    real(kind=pr), intent(in) :: l(:,:)
    real(kind=pr), intent(in) :: q(:)

    Return Value type(sDDLC)


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 => ddlc_Dmix

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

    s-DDLC D mixing rule including V, n, and T derivatives.

    Read more…

    Arguments

    Type IntentOptional Attributes Name
    class(sDDLC), intent(in) :: self
    real(kind=pr), intent(in) :: n(:)
    real(kind=pr), intent(in) :: V
    real(kind=pr), intent(in) :: T
    real(kind=pr), intent(in) :: ai(:)
    real(kind=pr), intent(in) :: daidt(:)
    real(kind=pr), intent(in) :: daidt2(:)
    real(kind=pr), intent(out) :: D
    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_exp_tdep

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

    Combining rule that uses temperature dependant values. With the following expression:

    Read more…

    Arguments

    Type IntentOptional Attributes Name
    class(QMRTD), 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(:,:)