Opened 11 years ago

Closed 11 years ago

#613 closed bug (Fixed)

IMPORTANT: Corrected miltifile option in parallel

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

Description

Corrected few things:

  • The internal logical switch ObcData(ng), used to check if boundary conditions NetCDF files are needed, was only computed by the Master node in distributed-memory applications. This introduced a parallel bug in new routine check_multifile, introduced last week. The statements to set ObcData are moved from the master node standout printing section in read_phypar. In this way, all the distributed memory nodes compute the ObcData logical switch.
  • WARNING: Added a new argument to function load_s2d, which is part of inp_par.F. In routine read_phypar now we have:
                CASE ('NFFILES')
                  Npts=load_i(Nval, Rval, Ngrids, nFfiles)
                  DO ng=1,Ngrids
                    IF (nFfiles(ng).le.0) THEN
                      IF (Master) WRITE (out,260) 'NFFILES', nFfiles(ng),   &
         &              'Must be equal or greater than one.'
                      exit_flag=4
                      RETURN
                    END IF
                  END DO
                  max_Ffiles=MAXVAL(nFfiles)
                  allocate ( FRC(max_Ffiles,Ngrids) )
                  allocate ( FRCids(max_Ffiles,Ngrids) )
                  allocate ( Ncount(max_Ffiles,Ngrids) )
                  FRCids(1:max_Ffiles,1:Ngrids)=-1
                  Ncount(1:max_Ffiles,1:Ngrids)=0
                CASE ('FRCNAME')
                  label='FRC - forcing fields'
                  Npts=load_s2d(Nval, Cval, line, label, ifile, igrid,      &
         &                      nFfiles, Ncount, max_Ffiles, FRC)
    
    This change is only relevant in nested applications to ensure that the correct initialization is done in load_s2d when the number of files to process in each grid is different. Notice that the loading function has now the following dummy qarguments:
          FUNCTION load_s2d (Nval, Fname, line, label, ifile, igrid,        &
         &                   Nfiles, Ncount, idim, S)
    !
    !=======================================================================
    !                                                                      !
    !  This function loads input values into requested 2D structure        !
    !  containing information about input forcing files.                   !
    !                                                                      !
    !  On Input:                                                           !
    !                                                                      !
    !     Nval       Number of values processed (integer)                  !
    !     Fname      File name(s) processed (string array)                 !
    !     line       Current input line (string)                           !
    !     label      I/O structure label (string)                          !
    !     ifile      File structure counter (integer)                      !
    !     igrid      Nested grid counter (integer)                         !
    !     Nfiles     Number of input files per grid (integer vector)       !
    !     Ncount     Number of files per grid counter (integer array)      !
    !     idim       Size of structure inner dimension (integer)           !
    !     S          Derived type structure, TYPE(T_IO)                    !
    !                                                                      !
    !  On Output:                                                          !
    !                                                                      !
    !     ifile      Updated file counter.                                 !
    !     igrid      Updated nested grid counter.                          !
    !     S          Updated derived type structure, TYPE(T_IO).           !
    !     load_s2d   Number of output values processed.                    !
    !                                                                      !
    !=======================================================================
    !
    
  • Added logic to mod_tides.F and set_tides.F so tidal data is only processed, if applicable, in the coarser grid in refinement applications. It doesn't make sense for refinement grids to process tidal forcing data from NetCDF files. The tidal forcing is done via the coarser donor grid. Recall that in refinement grids, the lateral boundary conditions are processed differently.

Change History (1)

comment:1 by arango, 11 years ago

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