Opened 3 years ago

Closed 3 years ago

#902 closed defect (Fixed)

VERY IMPORTANT: Updated I/O processing with the PIO library

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

Description

In this update, several files were modified, so the PIO library works in applications with tidal and river forcing.

  • The reading routines nf_fread2d.F, nf_fread3d.F, nf_fread4d.F, nf_fread2d_bry.F, and nf_fread3d_bry.F were updated to compute the checksum values in a compact way. For example, in nf_fread3d.F, we have:
         IF (Lchecksum) THEN
           Npts=(Imax-Imin+1)*(Jmax-Jmin+1)*(UBk-LBk+1)
           IF (.not.associated(Cwrk)) allocate ( Cwrk(Npts) )
           Cwrk=PACK(Adat(Imin:Imax, Jmin:Jmax, LBk:UBk), .TRUE.)
           CALL get_hash (Cwrk, Npts, checksum, .TRUE.)
           IF (associated(Cwrk)) deallocate (Cwrk)
         END IF
    
  • Corrected routine pio_nfread2d in nf_fread2d.F module to work processing fields that need regridding.
  • Restructured get_ngfld.F and get_ngfldr.F to clearly distinguish when processing input arrays of rank 1, 2, and 3. The PIO library expects the start and total arguments to NetCDF reading with congruent ranks. In addition, those routines have a new logical variable argument, recordless, to distinguish when processing variables with time records or not:
    !
    !  Tidal Period.
    !
          IF (LprocessTides(ng)) THEN
            IF (iic(ng).eq.0) THEN
              CALL get_ngfld (ng, iNLM, idTper, TIDE(ng)%ncid,              &
    # if defined PIO_LIB && defined DISTRIBUTE
         &                    TIDE(ng)%pioFile,                             &
    # endif
         &                    1, TIDE(ng), recordless, update(1),           &
         &                    1, MTC, 1, 1, 1, NTC(ng), 1,                  &
         &                    TIDES(ng) % Tperiod)
              IF (FoundError(exit_flag, NoError, __LINE__, MyFile)) RETURN
            END IF
          END IF
    #endif
    
    All the calls to get_ngfld in get_data.F, rp_get_data.F, and tl_get_data.F were updated. Similarly, all the calls to get_ngfldr in ad_get_data.F.

Many thanks to Dave Robertson for bringing this issue to my attention.

Change History (1)

comment:1 by arango, 3 years ago

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