Opened 5 years ago
Closed 5 years ago
#832 closed upgrade (Done)
IMPORTANT: Miscellaneous Update — at Version 1
Reported by: | arango | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | Release ROMS/TOMS 3.8 |
Component: | Nonlinear | Version: | 3.8 |
Keywords: | Cc: |
Description (last modified by )
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. It is more generic that specifying the value:runSeq:: @300 # timeStep = 5 min interval, single time loop DATA -> WRF # DATA to WRF connector DATA ROMS -> WRF # ROMS to WRF connector WRF WRF -> ROMS # WRF to ROMS connector ROMS @ ::
Change History (1)
Note:
See TracTickets
for help on using tickets.