Opened 5 years ago

Last modified 5 years ago

#832 closed upgrade

IMPORTANT: Miscellaneous Update — at Initial Version

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

Description

It is a miscellaneous update that consolidates the research repositories with code distributed to the community. It is done to smooth the transition to significant updates in the future.

  • nl_ocean.h: the logic time-stepping logic in the nonlinear kernel driver was slightly modified for coupling to other models during a RunInterval:
    !
    !-----------------------------------------------------------------------
    !  Time-step nonlinear model over nested grids, if applicable.
    #if defined MODEL_COUPLING && !defined MCT_LIB
    !  Since the ROMS kernel has a delayed output and line diagnostics by
    !  one timestep, subtract an extra value to the report of starting and
    !  ending timestep for clarity. Usually, the model coupling interval
    !  is of the same size as ROMS timestep.
    #endif
    !-----------------------------------------------------------------------
    !
          MyRunInterval=RunInterval
          IF (Master) WRITE (stdout,'(1x)')
          DO ng=1,Ngrids
    #if defined MODEL_COUPLING && !defined MCT_LIB
            NEXTtime=time(ng)+RunInterval
            ENDtime=INItime(ng)+(ntimes(ng)-1)*dt(ng)
            IF ((NEXTtime.eq.ENDtime).and.(ng.eq.1)) THEN
              extra=0                                   ! last time interval
            ELSE
              extra=1
            END IF
            step_counter(ng)=0
            NstrStep=iic(ng)
            NendStep=NstrStep+INT((MyRunInterval)/dt(ng))-extra
            IF (Master) WRITE (stdout,10) 'NL', ng, NstrStep, NendStep
    #else
            IF (Master) WRITE (stdout,10) 'NL', ng, ntstart(ng), ntend(ng)
    #endif
          END DO
    
  • ntimestep.F the above logic about the delayed output need to be accounted when computing the time-stepping parameters:
    #if defined MODEL_COUPLING && !defined MCT_LIB
    !
    !  Set extra step parameter needed to finish the simulation due to ROMS
    !  delayed output until the next half step. If RunInterval (seconds) is
    !  less than full simulation interval because of model coupling, extra=1
    !  for last coupling interval and extra=0 otherwise.
    !
              NEXTtime=time(ng)+RunInterval
              ENDtime=INItime(ng)+(ntimes(ng)-1)*dt(ng)
              IF (NEXTtime.eq.ENDtime) THEN
                extra=1
              ELSE
                extra=0
              END IF
    #else
    !
    !  Here, extra=1, indicates that the RunInterval is the same as
    !  simulation interval.
    !
              extra=1
    #endif
    
  • inp_decode.F: the function load_s1d has an additional input dummy argument (Mgrids) to specify the number of nested grids instead of being specified internally with ROMS Ngrids parameter. It allows this function to be used during coupling when the DATA component is active.
         FUNCTION load_s1d (Nval, Fname, Fdim, line, label, igrid,         &
        &                   Mgrids, Nfiles, S)
    
    Warning: changes need to be done in read_asspar.F and read_phypar.F when load_s1d is called to the addional argument.
  • All the RunSequence ESMF input scripts were modified to account for the next version of the ROMS coupling framework that uses the native nesting capabilities of the NUOPC layer version 8.0.0 and higher. If the timeStep value (in seconds) coupling interval is a wildcard (*) character used for a single outer time loop in the run sequence, then the associated run clock is identical to the driver clock, which is set up in standard input configuration script coupling_esmf.in. For example, we can have a semi-implicit run sequence as follows:
    runSeq::
      @*                         # timeStep = wildcard (*), single time loop
        DATA -> WRF              # DATA to WRF connector
        DATA
        ROMS -> WRF              # ROMS to WRF connector
        WRF
        WRF -> ROMS              # WRF to ROMS connector
        WRF
      @
    ::
    
    where the wildcard character is used to specify the coupling interval. New scripts were added for coupling DATA and ROMS.

Change History (0)

Note: See TracTickets for help on using tickets.