New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 12489 for NEMO/trunk/src/OCE/IOM – NEMO

Ignore:
Timestamp:
2020-02-28T16:55:11+01:00 (4 years ago)
Author:
davestorkey
Message:

Preparation for new timestepping scheme #2390.
Main changes:

  1. Initial euler timestep now handled in stp and not in TRA/DYN routines.
  2. Renaming of all timestep parameters. In summary, the namelist parameter is now rn_Dt and the current timestep is rDt (and rDt_ice, rDt_trc etc).
  3. Renaming of a few miscellaneous parameters, eg. atfp -> rn_atfp (namelist parameter used everywhere) and rau0 -> rho0.

This version gives bit-comparable results to the previous version of the trunk.

Location:
NEMO/trunk/src/OCE/IOM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/IOM/iom.F90

    r12377 r12489  
    274274      ! 
    275275      ! set time step length 
    276       dtime%second = rdt 
     276      dtime%second = rn_Dt 
    277277      CALL xios_set_timestep( dtime ) 
    278278      ! 
     
    410410   IF(cdmdl == "OPA") THEN 
    411411!from restart.F90 
    412    CALL iom_set_rstw_var_active("rdt") 
     412   CALL iom_set_rstw_var_active("rn_Dt") 
    413413   IF ( .NOT. ln_diurnal_only ) THEN 
    414414        CALL iom_set_rstw_var_active('ub'  ) 
     
    448448 
    449449        i = 0 
    450         i = i + 1; fields(i)%vname="rdt";            fields(i)%grid="grid_scalar" 
     450        i = i + 1; fields(i)%vname="rn_Dt";            fields(i)%grid="grid_scalar" 
    451451        i = i + 1; fields(i)%vname="un";             fields(i)%grid="grid_N_3D" 
    452452        i = i + 1; fields(i)%vname="ub";             fields(i)%grid="grid_N_3D" 
     
    23582358            idx = INDEX(clname,'@startdate@') + INDEX(clname,'@STARTDATE@') 
    23592359            DO WHILE ( idx /= 0 )  
    2360                cldate = iom_sdate( fjulday - rdt / rday ) 
     2360               cldate = iom_sdate( fjulday - rn_Dt / rday ) 
    23612361               clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+11:LEN_TRIM(clname)) 
    23622362               idx = INDEX(clname,'@startdate@') + INDEX(clname,'@STARTDATE@') 
     
    23652365            idx = INDEX(clname,'@startdatefull@') + INDEX(clname,'@STARTDATEFULL@') 
    23662366            DO WHILE ( idx /= 0 )  
    2367                cldate = iom_sdate( fjulday - rdt / rday, ldfull = .TRUE. ) 
     2367               cldate = iom_sdate( fjulday - rn_Dt / rday, ldfull = .TRUE. ) 
    23682368               clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+15:LEN_TRIM(clname)) 
    23692369               idx = INDEX(clname,'@startdatefull@') + INDEX(clname,'@STARTDATEFULL@') 
     
    23722372            idx = INDEX(clname,'@enddate@') + INDEX(clname,'@ENDDATE@') 
    23732373            DO WHILE ( idx /= 0 )  
    2374                cldate = iom_sdate( fjulday + rdt / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE. ) 
     2374               cldate = iom_sdate( fjulday + rn_Dt / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE. ) 
    23752375               clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+9:LEN_TRIM(clname)) 
    23762376               idx = INDEX(clname,'@enddate@') + INDEX(clname,'@ENDDATE@') 
     
    23792379            idx = INDEX(clname,'@enddatefull@') + INDEX(clname,'@ENDDATEFULL@') 
    23802380            DO WHILE ( idx /= 0 )  
    2381                cldate = iom_sdate( fjulday + rdt / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE., ldfull = .TRUE. ) 
     2381               cldate = iom_sdate( fjulday + rn_Dt / rday * REAL( nitend - nit000, wp ), ld24 = .TRUE., ldfull = .TRUE. ) 
    23822382               clname = clname(1:idx-1)//TRIM(cldate)//clname(idx+13:LEN_TRIM(clname)) 
    23832383               idx = INDEX(clname,'@enddatefull@') + INDEX(clname,'@ENDDATEFULL@') 
  • NEMO/trunk/src/OCE/IOM/restart.F90

    r12377 r12489  
    144144      !!---------------------------------------------------------------------- 
    145145                     IF(lwxios) CALL iom_swap(      cwxios_context          ) 
    146                      CALL iom_rstput( kt, nitrst, numrow, 'rdt'    , rdt       , ldxios = lwxios)   ! dynamics time step 
     146                     CALL iom_rstput( kt, nitrst, numrow, 'rdt'    , rn_Dt       , ldxios = lwxios)   ! dynamics time step 
    147147                     CALL iom_delay_rst( 'WRITE', 'OCE', numrow )   ! save only ocean delayed global communication variables 
    148148 
     
    247247      IF( iom_varid( numror, 'rdt', ldstop = .FALSE. ) > 0 )   THEN 
    248248         CALL iom_get( numror, 'rdt', zrdt, ldxios = lrxios ) 
    249          IF( zrdt /= rdt )   neuler = 0 
     249         IF( zrdt /= rn_Dt ) THEN 
     250            IF(lwp) WRITE( numout,*) 
     251            IF(lwp) WRITE( numout,*) 'rst_read:  rdt not equal to the read one' 
     252            IF(lwp) WRITE( numout,*) 
     253            IF(lwp) WRITE( numout,*) '      ==>>>   forced euler first time-step' 
     254            l_1st_euler =  .TRUE. 
     255         ENDIF 
    250256      ENDIF 
    251257 
     
    256262      IF ( ln_diurnal_only ) THEN  
    257263         IF(lwp) WRITE( numout, * ) & 
    258          &   "rst_read:- ln_diurnal_only set, setting rhop=rau0"  
    259          rhop = rau0 
     264         &   "rst_read:- ln_diurnal_only set, setting rhop=rho0"  
     265         rhop = rho0 
    260266         CALL iom_get( numror, jpdom_autoglo, 'tn'     , w3d, ldxios = lrxios )  
    261267         ts(:,:,1,jp_tem,Kmm) = w3d(:,:,1) 
     
    270276         CALL iom_get( numror, jpdom_autoglo, 'sshb'   ,ssh(:,:         ,Kbb), ldxios = lrxios ) 
    271277      ELSE 
    272          neuler = 0 
     278         l_1st_euler =  .TRUE.      ! before field not found, forced euler 1st time-step 
    273279      ENDIF 
    274280      ! 
     
    284290      ENDIF 
    285291      ! 
    286       IF( neuler == 0 ) THEN                                  ! Euler restart (neuler=0) 
     292      IF( l_1st_euler ) THEN                                  ! Euler restart  
    287293         ts   (:,:,:,:,Kbb) = ts   (:,:,:,:,Kmm)              ! all before fields set to now values 
    288294         uu   (:,:,:  ,Kbb) = uu   (:,:,:  ,Kmm) 
Note: See TracChangeset for help on using the changeset viewer.