Karim Shariff
New member
Dear All: I am running CM1 and after about 25 hours of physical time, there is the following out of bounds reference in rrtmg_lw.
rrtmg_lw has been called
forrtl: severe (408): fort: (3): Subscript #1 of the array SELFREF has value 0 which is less than the lower bound of 1
Image PC Routine Line Source
cm1.exe 00000000010515FF Unknown Unknown Unknown
cm1.exe 0000000000EFCBB9 rrtmg_lw_taumolta 5036 module_ra_rrtmg_lw.f90
cm1.exe 0000000000E9DE34 rrtmg_lw_taumol_m 4965 module_ra_rrtmg_lw.f90
cm1.exe 0000000000E9341D rrtmg_lw_rad_mp_r 11016 module_ra_rrtmg_lw.f90
cm1.exe 0000000000E74932 module_ra_rrtmg_l 12629 module_ra_rrtmg_lw.f90
cm1.exe 0000000000A24824 radiation_module_ 635 radiation_driver.f90
cm1.exe 00000000006E7286 MAIN__ 3470 cm1.f90
cm1.exe 000000000040ECE2 Unknown Unknown Unknown
libc-2.28.so 0000152AFDE3A7E5 __libc_start_main Unknown Unknown
cm1.exe 000000000040EBEE Unknown Unknown Unknown
forrtl: severe (408): fort: (3): Subscript #1 of the array SELFREF has value 0 which is less than the lower bound of 1
The bad array reference is
selfref(inds,ig).
The index inds is obtained from
inds = indself(lay)
The kludge I tried, inds = max(1, inds), only leads to further out-of-bounds errors downstream.
! * INDSELF - index of the lower of the two appropriate reference *
! * temperatures needed for the self-continuum interpolation
Here is how indself(lay) is set in subroutine setcoeff
indself(lay) = min(9, max(1, int(factor)-7))
Added at 3 PM Sunday, Feb. 9, 2025
Note:
inds = 0 lay = 408
indf = 2
ind1 = 66
calling stopcm1
ind1 is also out of bounds (65 is the max, I believe).
Added at 3:44 PM, Sunday, Feb. 9. 2025.
------------------------------------------------
Problem is as follows. For lay = 408, the following test passes
if (plog .le. 4.56_rb) go to 5300
However, at 5300, there is no setting of indself(lay) performed.
One possible fix (if approved by the developer or whoever coded the 5300 section) is the following:
In the 5300 section, the variable "factor" is computed and therefore could in principle
be used to set indself(lay) in the same manner as it is for plog .gt. 4.56_rb, namely:
indself(lay) = min(9, max(1, int(factor)-7))
Question: Would that be correct?
I will also see how to fix the problem with ind1.
NOTE: I looked at the latest (?) version of setcoef (rrtmg version 4.0) and it too does not set
indself in the 5300 section.
rrtmg_lw has been called
forrtl: severe (408): fort: (3): Subscript #1 of the array SELFREF has value 0 which is less than the lower bound of 1
Image PC Routine Line Source
cm1.exe 00000000010515FF Unknown Unknown Unknown
cm1.exe 0000000000EFCBB9 rrtmg_lw_taumolta 5036 module_ra_rrtmg_lw.f90
cm1.exe 0000000000E9DE34 rrtmg_lw_taumol_m 4965 module_ra_rrtmg_lw.f90
cm1.exe 0000000000E9341D rrtmg_lw_rad_mp_r 11016 module_ra_rrtmg_lw.f90
cm1.exe 0000000000E74932 module_ra_rrtmg_l 12629 module_ra_rrtmg_lw.f90
cm1.exe 0000000000A24824 radiation_module_ 635 radiation_driver.f90
cm1.exe 00000000006E7286 MAIN__ 3470 cm1.f90
cm1.exe 000000000040ECE2 Unknown Unknown Unknown
libc-2.28.so 0000152AFDE3A7E5 __libc_start_main Unknown Unknown
cm1.exe 000000000040EBEE Unknown Unknown Unknown
forrtl: severe (408): fort: (3): Subscript #1 of the array SELFREF has value 0 which is less than the lower bound of 1
The bad array reference is
selfref(inds,ig).
The index inds is obtained from
inds = indself(lay)
The kludge I tried, inds = max(1, inds), only leads to further out-of-bounds errors downstream.
! * INDSELF - index of the lower of the two appropriate reference *
! * temperatures needed for the self-continuum interpolation
Here is how indself(lay) is set in subroutine setcoeff
indself(lay) = min(9, max(1, int(factor)-7))
Added at 3 PM Sunday, Feb. 9, 2025
Note:
inds = 0 lay = 408
indf = 2
ind1 = 66
calling stopcm1
ind1 is also out of bounds (65 is the max, I believe).
Added at 3:44 PM, Sunday, Feb. 9. 2025.
------------------------------------------------
Problem is as follows. For lay = 408, the following test passes
if (plog .le. 4.56_rb) go to 5300
However, at 5300, there is no setting of indself(lay) performed.
One possible fix (if approved by the developer or whoever coded the 5300 section) is the following:
In the 5300 section, the variable "factor" is computed and therefore could in principle
be used to set indself(lay) in the same manner as it is for plog .gt. 4.56_rb, namely:
indself(lay) = min(9, max(1, int(factor)-7))
Question: Would that be correct?
I will also see how to fix the problem with ind1.
NOTE: I looked at the latest (?) version of setcoef (rrtmg version 4.0) and it too does not set
indself in the 5300 section.
Last edited: