Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 54 additions & 30 deletions diag_manager/diag_manager.F90
Original file line number Diff line number Diff line change
Expand Up @@ -3034,58 +3034,82 @@ LOGICAL FUNCTION send_data_3d(diag_field_id, field, time, is_in, js_in, ks_in, &
! If rmask and missing value present, then insert missing value
IF ( PRESENT(rmask) .AND. missvalue_present ) THEN
IF ( need_compute ) THEN
DO k = l_start(3), l_end(3)
k1 = k - l_start(3) + 1
DO j = js, je
DO i = is, ie
IF ( l_start(1)+hi <= i .AND. i <= l_end(1)+hi .AND. l_start(2)+hj <= j .AND. j <= l_end(2)+hj ) THEN
i1 = i-l_start(1)-hi+1
j1 = j-l_start(2)-hj+1
SELECT TYPE (rmask)
TYPE IS (real(kind=r4_kind))
SELECT TYPE (rmask)
TYPE IS (real(kind=r4_kind))
DO k = l_start(3), l_end(3)
k1 = k - l_start(3) + 1
DO j = js, je
DO i = is, ie
IF ( l_start(1)+hi <= i .AND. i <= l_end(1)+hi .AND. l_start(2)+hj <= j .AND. j <= l_end(2)+hj ) THEN
i1 = i-l_start(1)-hi+1
j1 = j-l_start(2)-hj+1
IF ( rmask(i-is+1+hi,j-js+1+hj,k) < 0.5_r4_kind ) &
& output_fields(out_num)%buffer(i1,j1,k1,sample) = missvalue
TYPE IS (real(kind=r8_kind))
END IF
END DO
END DO
END DO
TYPE IS (real(kind=r8_kind))
DO k = l_start(3), l_end(3)
k1 = k - l_start(3) + 1
DO j = js, je
DO i = is, ie
IF ( l_start(1)+hi <= i .AND. i <= l_end(1)+hi .AND. l_start(2)+hj <= j .AND. j <= l_end(2)+hj ) THEN
i1 = i-l_start(1)-hi+1
j1 = j-l_start(2)-hj+1
IF ( rmask(i-is+1+hi,j-js+1+hj,k) < 0.5_r8_kind ) &
& output_fields(out_num)%buffer(i1,j1,k1,sample) = missvalue
END SELECT
END IF
END IF
END DO
END DO
END DO
END DO
END SELECT
ELSE IF ( reduced_k_range ) THEN
ksr= l_start(3)
ker= l_end(3)
DO k= ksr, ker
k1 = k - ksr + 1
DO j=js, je
DO i=is, ie
SELECT TYPE (rmask)
TYPE IS (real(kind=r4_kind))
SELECT TYPE (rmask)
TYPE IS (real(kind=r4_kind))
DO k= ksr, ker
k1 = k - ksr + 1
DO j=js, je
DO i=is, ie
IF ( rmask(i-is+1+hi,j-js+1+hj,k) < 0.5_r4_kind ) &
& output_fields(out_num)%buffer(i-hi,j-hj,k1,sample)= missvalue
TYPE IS (real(kind=r8_kind))
END DO
END DO
END DO
TYPE IS (real(kind=r8_kind))
DO k= ksr, ker
k1 = k - ksr + 1
DO j=js, je
DO i=is, ie
IF ( rmask(i-is+1+hi,j-js+1+hj,k) < 0.5_r8_kind ) &
& output_fields(out_num)%buffer(i-hi,j-hj,k1,sample)= missvalue
END SELECT
END DO
END DO
END DO
END DO
END SELECT
ELSE
DO k=ks, ke
DO j=js, je
DO i=is, ie
SELECT TYPE (rmask)
TYPE IS (real(kind=r4_kind))
SELECT TYPE (rmask)
TYPE IS (real(kind=r4_kind))
DO k=ks, ke
DO j=js, je
DO i=is, ie
IF ( rmask(i-is+1+hi,j-js+1+hj,k) < 0.5_r4_kind ) &
& output_fields(out_num)%buffer(i-hi,j-hj,k,sample)= missvalue
TYPE IS (real(kind=r8_kind))
END DO
END DO
END DO
TYPE IS (real(kind=r8_kind))
DO k=ks, ke
DO j=js, je
DO i=is, ie
IF ( rmask(i-is+1+hi,j-js+1+hj,k) < 0.5_r8_kind ) &
& output_fields(out_num)%buffer(i-hi,j-hj,k,sample)= missvalue
END SELECT
END DO
END DO
END DO
END DO
END SELECT
END IF
END IF

Expand Down