Add two time definitions to each other (provides the plus operator).
Entries set to huge (never) will be kept as this, all other entries are simply added to each other.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(tem_time_type), | intent(in) | :: | left |
First operant in the addition of times. |
||
| type(tem_time_type), | intent(in) | :: | right |
Second operant in the addition of times. |
Resulting sum of left and right.
elemental function tem_time_add_time(left, right) result(res) ! -------------------------------------------------------------------- ! !> First operant in the addition of times. type(tem_time_type), intent(in) :: left !> Second operant in the addition of times. type(tem_time_type), intent(in) :: right !> Resulting sum of left and right. type(tem_time_type) :: res ! -------------------------------------------------------------------- ! real(kind=rk) :: nvrReal integer :: nvrInt ! -------------------------------------------------------------------- ! nvrReal = huge(left%sim) nvrInt = huge(left%iter) if ( (left%sim < nvrReal) & & .and. (right%sim < (nvrReal-left%sim)) ) then res%sim = left%sim + right%sim else res%sim = nvrReal end if if ( (left%iter < nvrInt) & & .and. (right%iter < (nvrInt-left%iter)) ) then res%iter = left%iter + right%iter else res%iter = nvrInt end if if ( (left%clock < nvrReal) & & .and. (right%clock < (nvrReal-left%clock)) ) then res%clock = left%clock + right%clock else res%clock = nvrReal end if end function tem_time_add_time