Opened 4 years ago
Closed 4 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.
Note:
See TracTickets
for help on using tickets.