Opened 15 years ago

Closed 15 years ago

#238 closed bug (Fixed)

Problem in input routines nf_fread*d when scale is not unity

Reported by: arango Owned by: arango
Priority: major Milestone: Release ROMS/TOMS 3.2
Component: Nonlinear Version: 3.2
Keywords: Cc:

Description

There is a problem in routines nf_fread2d.F, nf_fread3d.F, and nf_fread4d.F when the scale (Ascl) value used to multiply input fields is different than unity and land points are replaced with the _FillValue. The read field was scaled first and then checked for the fill value. This logic needs to be changed to:

            DO i=1,Npts
              IF (wrk(i).ge.spval) THEN
                wrk(i)=0.0_r8           ! land/sea maked with _FillValue
              ELSE
                wrk(i)=Ascl*wrk(i)
                Amin=MIN(Amin,wrk(i))
                Amax=MAX(Amax,wrk(i))
              END IF
            END DO

That is, the read field is unmodified when the conditional wrk(i).ge.spval is executed. Many thanks to Andy Moore for bringing this to my attention.

I also initialized local arrays in the IO routines to avoid denormalized numbers that are treated differently by various compilers. This facilitates processing and debugging. I also initialized such fields in the mp_gather and mp_scatter routines.

Change History (1)

comment:1 by arango, 15 years ago

Resolution: Fixed
Status: newclosed
Note: See TracTickets for help on using tickets.