Skip to content

Commit 10d062f

Browse files
Add logic to avoid out-of-bounds assignment of zocn_bnds
1 parent c55d3f0 commit 10d062f

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

driver-mct/shr/glc_zocnclass_mod.F90

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -112,14 +112,17 @@ subroutine glc_zocnclass_init_bnds()
112112
integer :: i
113113

114114
allocate(zocn_bnds(2,glc_nzoc))
115-
zocn_bnds(1,1) = 0._r8
116-
zocn_bnds(2,1) = 0.5_r8 * (zocn_levels(1) + zocn_levels(2))
117-
do i = 2, glc_nzoc - 1
118-
zocn_bnds(1,i) = 0.5_r8 * (zocn_levels(i-1) + zocn_levels(i))
119-
zocn_bnds(2,i) = 0.5_r8 * (zocn_levels(i) + zocn_levels(i+1))
120-
enddo
121-
zocn_bnds(1,glc_nzoc) = 0.5_r8 * (zocn_levels(glc_nzoc-1) + zocn_levels(glc_nzoc))
122-
zocn_bnds(2,glc_nzoc) = zocn_levels(glc_nzoc) + (zocn_levels(glc_nzoc) - zocn_bnds(1,glc_nzoc))
115+
zocn_bnds(:,:) = 0._r8
116+
if (glc_nzoc >= 2) then
117+
zocn_bnds(1,1) = 0._r8
118+
zocn_bnds(2,1) = 0.5_r8 * (zocn_levels(1) + zocn_levels(2))
119+
do i = 2, glc_nzoc - 1
120+
zocn_bnds(1,i) = 0.5_r8 * (zocn_levels(i-1) + zocn_levels(i))
121+
zocn_bnds(2,i) = 0.5_r8 * (zocn_levels(i) + zocn_levels(i+1))
122+
enddo
123+
zocn_bnds(1,glc_nzoc) = 0.5_r8 * (zocn_levels(glc_nzoc-1) + zocn_levels(glc_nzoc))
124+
zocn_bnds(2,glc_nzoc) = zocn_levels(glc_nzoc) + (zocn_levels(glc_nzoc) - zocn_bnds(1,glc_nzoc))
125+
endif
123126
end subroutine glc_zocnclass_init_bnds
124127

125128
!-----------------------------------------------------------------------

0 commit comments

Comments
 (0)