getMinus_fullStart Function

private function getMinus_fullStart(nSwitches, bVal, fullStart) result(minusWeight)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: nSwitches
real(kind=dp), intent(in) :: bVal
type(WeightData_t), intent(in) :: fullStart

Return Value real(kind=dp)


Contents

Source Code


Source Code

    function getMinus_fullStart(nSwitches, bVal, fullStart) result(minusWeight)
        real(dp), intent(in) :: nSwitches, bVal
        type(WeightData_t), intent(in) :: fullStart
        real(dp) :: minusWeight
        character(*), parameter :: this_routine = "getMinus_fullStart"

        ASSERT(nSwitches >= 0.0_dp)
        ! here this assert is valid, since the bvalue really never should be
        ! 0.. or else the parent CSF is invalid.
        ! no of course it can still be 0 at a 0/3 start... but also
        ! set it to the technical value only

        ! try an adhoc second order fix..
        minusWeight = fullStart%F * fullStart%minus + nSwitches / max(1.0_dp, bval) &
                      * (fullStart%G * fullStart%minus + fullStart%F * fullStart%plus) &
                      + (max(nSwitches - 1, 0.0_dp) * fullStart%G * fullStart%plus / (max(1.0_dp, bval)**2))

        ASSERT(minusWeight >= 0.0_dp)

    end function getMinus_fullStart