Calculate_kr_MVG_Base Module Function

module function Calculate_kr_MVG_Base(thetaS, thetaR, alpha1, n1, m1, l, hcrit, h) result(kr)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: thetaS
real(kind=real64), intent(in) :: thetaR
real(kind=real64), intent(in) :: alpha1
real(kind=real64), intent(in) :: n1
real(kind=real64), intent(in) :: m1
real(kind=real64), intent(in) :: l
real(kind=real64), intent(in) :: hcrit
real(kind=real64), intent(in) :: h

Return Value real(kind=real64)


Called by

proc~~calculate_kr_mvg_base~~CalledByGraph proc~calculate_kr_mvg_base Calculate_kr_MVG_Base interface~calculate_kr_mvg_base Calculate_kr_MVG_Base interface~calculate_kr_mvg_base->proc~calculate_kr_mvg_base proc~calculate_kr_base_impedance_mvg Calculate_kr_Base_Impedance_MVG proc~calculate_kr_base_impedance_mvg->interface~calculate_kr_mvg_base proc~calculate_kr_base_impedance_viscosity_mvg Calculate_kr_Base_Impedance_Viscosity_MVG proc~calculate_kr_base_impedance_viscosity_mvg->interface~calculate_kr_mvg_base proc~calculate_kr_base_mvg Calculate_kr_Base_MVG proc~calculate_kr_base_mvg->interface~calculate_kr_mvg_base proc~calculate_kr_base_viscosity_mvg Calculate_kr_Base_Viscosity_MVG proc~calculate_kr_base_viscosity_mvg->interface~calculate_kr_mvg_base interface~calculate_kr_base_impedance_mvg Type_HCF_Base_Impedance_MVG%Calculate_kr_Base_Impedance_MVG interface~calculate_kr_base_impedance_mvg->proc~calculate_kr_base_impedance_mvg interface~calculate_kr_base_impedance_viscosity_mvg Type_HCF_Base_Impedance_Viscosity_MVG%Calculate_kr_Base_Impedance_Viscosity_MVG interface~calculate_kr_base_impedance_viscosity_mvg->proc~calculate_kr_base_impedance_viscosity_mvg interface~calculate_kr_base_mvg Type_HCF_Base_MVG%Calculate_kr_Base_MVG interface~calculate_kr_base_mvg->proc~calculate_kr_base_mvg interface~calculate_kr_base_viscosity_mvg Type_HCF_Base_Viscosity_MVG%Calculate_kr_Base_Viscosity_MVG interface~calculate_kr_base_viscosity_mvg->proc~calculate_kr_base_viscosity_mvg proc~calculate_kflh_base_impedance_mvg Calculate_Kflh_Base_Impedance_MVG proc~calculate_kflh_base_impedance_mvg->interface~calculate_kr_base_impedance_mvg proc~calculate_kflh_base_impedance_viscosity_mvg Calculate_Kflh_Base_Impedance_Viscosity_MVG proc~calculate_kflh_base_impedance_viscosity_mvg->interface~calculate_kr_base_impedance_viscosity_mvg proc~calculate_kflh_base_mvg Calculate_Kflh_Base_MVG proc~calculate_kflh_base_mvg->interface~calculate_kr_base_mvg proc~calculate_kflh_base_viscosity_mvg Calculate_Kflh_Base_Viscosity_MVG proc~calculate_kflh_base_viscosity_mvg->interface~calculate_kr_base_viscosity_mvg interface~calculate_kflh_base_impedance_mvg Type_HCF_Base_Impedance_MVG%Calculate_Kflh_Base_Impedance_MVG interface~calculate_kflh_base_impedance_mvg->proc~calculate_kflh_base_impedance_mvg interface~calculate_kflh_base_impedance_viscosity_mvg Type_HCF_Base_Impedance_Viscosity_MVG%Calculate_Kflh_Base_Impedance_Viscosity_MVG interface~calculate_kflh_base_impedance_viscosity_mvg->proc~calculate_kflh_base_impedance_viscosity_mvg interface~calculate_kflh_base_mvg Type_HCF_Base_MVG%Calculate_Kflh_Base_MVG interface~calculate_kflh_base_mvg->proc~calculate_kflh_base_mvg interface~calculate_kflh_base_viscosity_mvg Type_HCF_Base_Viscosity_MVG%Calculate_Kflh_Base_Viscosity_MVG interface~calculate_kflh_base_viscosity_mvg->proc~calculate_kflh_base_viscosity_mvg proc~update_kflh_base_impedance_mvg Update_Kflh_Base_Impedance_MVG proc~update_kflh_base_impedance_mvg->interface~calculate_kflh_base_impedance_mvg proc~update_kflh_base_impedance_viscosity_mvg Update_Kflh_Base_Impedance_Viscosity_MVG proc~update_kflh_base_impedance_viscosity_mvg->interface~calculate_kflh_base_impedance_viscosity_mvg proc~update_kflh_base_mvg Update_Kflh_Base_MVG proc~update_kflh_base_mvg->interface~calculate_kflh_base_mvg proc~update_kflh_base_viscosity_mvg Update_Kflh_Base_Viscosity_MVG proc~update_kflh_base_viscosity_mvg->interface~calculate_kflh_base_viscosity_mvg interface~update_kflh_base_impedance_mvg Type_HCF_Base_Impedance_MVG%Update_Kflh_Base_Impedance_MVG interface~update_kflh_base_impedance_mvg->proc~update_kflh_base_impedance_mvg interface~update_kflh_base_impedance_viscosity_mvg Type_HCF_Base_Impedance_Viscosity_MVG%Update_Kflh_Base_Impedance_Viscosity_MVG interface~update_kflh_base_impedance_viscosity_mvg->proc~update_kflh_base_impedance_viscosity_mvg interface~update_kflh_base_mvg Type_HCF_Base_MVG%Update_Kflh_Base_MVG interface~update_kflh_base_mvg->proc~update_kflh_base_mvg interface~update_kflh_base_viscosity_mvg Type_HCF_Base_Viscosity_MVG%Update_Kflh_Base_Viscosity_MVG interface~update_kflh_base_viscosity_mvg->proc~update_kflh_base_viscosity_mvg

Source Code

    module function Calculate_kr_MVG_Base(thetaS, thetaR, alpha1, n1, m1, l, hcrit, h) result(kr)
        !$omp declare simd uniform(thetaS, thetaR, alpha1, n1, m1, l, hcrit, h)
        implicit none
        real(real64), intent(in) :: thetaS
        real(real64), intent(in) :: thetaR
        real(real64), intent(in) :: alpha1
        real(real64), intent(in) :: n1
        real(real64), intent(in) :: m1
        real(real64), intent(in) :: l
        real(real64), intent(in) :: hcrit
        real(real64), intent(in) :: h
        real(real64) :: kr
        real(real64) :: Sw, thetaM

        thetaM = thetaR + (thetaS - thetaR) * (1.0d0 + (-alpha1 * hcrit)**n1)**(-m1)

        if (h < hcrit) then
            Sw = (thetaS - thetaR) / (thetaM - thetaR) * (1.0d0 + abs(alpha1 * h)**n1)**(-m1)
            kr = Sw**l * ((1.0d0 - (1.0d0 - Sw**(1.0d0 / m1))**m1) / (1.0d0 - (1.0d0 - 1.0d0**(1.0d0 / m1))**m1))**2.0d0
        else
            kr = 1.0d0
        end if

    end function Calculate_kr_MVG_Base