Opened 12 years ago

Closed 11 years ago

#302 closed defect (fixed)

Consultation about array_bound_exceed in RO inversion

Reported by: Ian Culverwell Owned by: Ian Culverwell
Priority: normal Milestone: 7.0
Component: ropp_pp Version: 6.0
Keywords: Cc:

Description

Kent Bækgaard Lauritsen (DMI) forwarded the following bugfix from Michael Gorbunov:

Dear Jiachun,

Thank you for noticing this problem in ROPP.

I have processed your RO event example with my code, but it didn't
produce the runtime error you had. Then I compared the ROPP code 
with my code that was adopted for ROPP and found a mistake in ROPP.

In this piece of the code:

!20130208, sometimes error, array bounds exceeded, when kmax equals n.
  DO i=0,lb
    ni = SUM(DNB(kmin:kmax+i)**2)
    IF (ni > 0) THEN
      CNB(i) = SUM(DDS(kmin:kmax-i)*DNB(kmin+i:kmax)) /  &
                   SQRT(SUM(DDS(kmin:kmax-i)**2)*ni)
    ELSE
      CNB(i) = 0.0_wp
    ENDIF
  END DO

instead of

    ni = SUM(DNB(kmin:kmax+i)**2)

there should be

    ni = SUM(DNB(kmin+i:kmax)**2)

as it is in my code and can also be established by comparing it 
with the expression for CNB(i). 

In this case, the indices of array DNB will never exceed the bound, 
even if the correlation interval touches the array boundary point.

A cc is directed to Kent B. Lauritsen, who is in contact with the ROPP team.

Best regards,

Michael


> Dear Michael,
>
> I'm a lecturer of Wuhan University. And I'm interested in the software 
> ROPP, which is downloaded in the website of gras saf. But I have a 
> problem about array_bound_exceed in RO inversion.
>
> There are 3 files in the attachment,
> openloop file :  gpsBit_C002.2011.001.09.09.G27_2010.2640_txt
> openloop code_fortran : ropp_pp_openloop.f90 occ event atmPhs : 
> atmPhs_C002.2011.001.09.09.G27_2010.2640_nc
>
>
> In the openloop code_fortran,
> ALLOCATE(DnB(n))
> ni = SUM(DNB(kmin:kmax+i)**2)
> But for some occ events, when kmax equals n, array bounds exceeded.
> I have no idea how to solve this problem.
> An occ event is given the attachment, which appeared array_bound_exceed problem.
> Thank you for your help.
>
>
> Best regards.
>
> Jiachun An,
> Wuhan University,
> China

In ROPP, the relevant lines are to be found in Sec 3.4 of ropp_pp_openloop.f90.

Change history (1)

comment:1 by Ian Culverwell, 11 years ago

Resolution: fixed
Status: newclosed

This was fixed at ROPP5.1 - see ticket #237. Closing this ticket.

Note: See TracTickets for help on using tickets.