| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in) | :: | nSwitches | |||
| real(kind=dp), | intent(in) | :: | bVal | |||
| type(WeightData_t), | intent(in) | :: | fullStart |
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