Ignore:
Timestamp:
2019-08-29T11:23:25+02:00 (18 months ago)
Author:
davestorkey
Message:

2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : Merge in changes from branch of branch.
Main changes:

  1. "nxt" modules renamed as "atf" and now just do Asselin time filtering. The time level swapping is achieved by swapping indices.
  2. Some additional prognostic grid variables changed to use a time dimension.

Notes:

  1. This merged branch passes SETTE tests but does not identical results to the SETTE tests with the trunk@10721 unless minor bugs to do with Euler timestepping and the OFF timestepping are fixed in the trunk (NEMO tickets #2310 and #2311).
  2. The nn_dttrc > 1 option for TOP (TOP has a different timestep to OCE) doesn't work. But it doesn't work in the trunk or NEMO 4.0 release either.
Location:
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/ICE
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/ICE/icedyn.F90

    r10564 r11480  
    6060CONTAINS 
    6161 
    62    SUBROUTINE ice_dyn( kt ) 
     62   SUBROUTINE ice_dyn( kt, Kmm ) 
    6363      !!------------------------------------------------------------------- 
    6464      !!               ***  ROUTINE ice_dyn  *** 
     
    7373      !!-------------------------------------------------------------------- 
    7474      INTEGER, INTENT(in) ::   kt     ! ice time step 
     75      INTEGER, INTENT(in) ::   Kmm    ! ocean time level index 
    7576      !! 
    7677      INTEGER  ::   ji, jj, jl        ! dummy loop indices 
     
    9293         tau_icebfr(:,:) = 0._wp 
    9394         DO jl = 1, jpl 
    94             WHERE( h_i_b(:,:,jl) > ht_n(:,:) * rn_depfra )   tau_icebfr(:,:) = tau_icebfr(:,:) + a_i(:,:,jl) * rn_icebfr 
     95            WHERE( h_i_b(:,:,jl) > ht(:,:) * rn_depfra )   tau_icebfr(:,:) = tau_icebfr(:,:) + a_i(:,:,jl) * rn_icebfr 
    9596         END DO 
    9697      ENDIF 
     
    121122 
    122123      CASE ( np_dynALL )           !==  all dynamical processes  ==! 
    123          CALL ice_dyn_rhg   ( kt )                                                 ! -- rheology   
     124         CALL ice_dyn_rhg   ( kt, Kmm )                                            ! -- rheology   
    124125         CALL ice_dyn_adv   ( kt )   ;   CALL Hbig( zhi_max, zhs_max, zhip_max )   ! -- advection of ice + correction on ice thickness 
    125126         CALL ice_dyn_rdgrft( kt )                                                 ! -- ridging/rafting  
     
    127128 
    128129      CASE ( np_dynRHGADV  )       !==  no ridge/raft & no corrections ==! 
    129          CALL ice_dyn_rhg   ( kt )                                                 ! -- rheology   
     130         CALL ice_dyn_rhg   ( kt, Kmm )                                            ! -- rheology   
    130131         CALL ice_dyn_adv   ( kt )   ;   CALL Hbig( zhi_max, zhs_max, zhip_max )   ! -- advection of ice + correction on ice thickness 
    131132         CALL Hpiling                                                              ! -- simple pile-up (replaces ridging/rafting) 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/ICE/icedyn_rhg.F90

    r10413 r11480  
    4747CONTAINS 
    4848 
    49    SUBROUTINE ice_dyn_rhg( kt ) 
     49   SUBROUTINE ice_dyn_rhg( kt, Kmm ) 
    5050      !!------------------------------------------------------------------- 
    5151      !!               ***  ROUTINE ice_dyn_rhg  *** 
     
    5858      !!-------------------------------------------------------------------- 
    5959      INTEGER, INTENT(in) ::   kt     ! ice time step 
     60      INTEGER, INTENT(in) ::   Kmm    ! ocean time level index 
    6061      !!-------------------------------------------------------------------- 
    6162      ! controls 
     
    7677      CASE( np_rhgEVP )                ! Elasto-Viscous-Plastic ! 
    7778         !                             !------------------------! 
    78          CALL ice_dyn_rhg_evp( kt, stress1_i, stress2_i, stress12_i, shear_i, divu_i, delta_i ) 
     79         CALL ice_dyn_rhg_evp( kt, Kmm, stress1_i, stress2_i, stress12_i, shear_i, divu_i, delta_i ) 
    7980         !          
    8081      END SELECT 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/ICE/icedyn_rhg_evp.F90

    r10555 r11480  
    5656CONTAINS 
    5757 
    58    SUBROUTINE ice_dyn_rhg_evp( kt, pstress1_i, pstress2_i, pstress12_i, pshear_i, pdivu_i, pdelta_i ) 
     58   SUBROUTINE ice_dyn_rhg_evp( kt, Kmm, pstress1_i, pstress2_i, pstress12_i, pshear_i, pdivu_i, pdelta_i ) 
    5959      !!------------------------------------------------------------------- 
    6060      !!                 ***  SUBROUTINE ice_dyn_rhg_evp  *** 
     
    109109      !!------------------------------------------------------------------- 
    110110      INTEGER                 , INTENT(in   ) ::   kt                                    ! time step 
     111      INTEGER                 , INTENT(in   ) ::   Kmm                                   ! ocean time level index 
    111112      REAL(wp), DIMENSION(:,:), INTENT(inout) ::   pstress1_i, pstress2_i, pstress12_i   ! 
    112113      REAL(wp), DIMENSION(:,:), INTENT(  out) ::   pshear_i  , pdivu_i   , pdelta_i      ! 
     
    335336               zvV = 0.5_wp * ( vt_i(ji,jj) * e1e2t(ji,jj) + vt_i(ji,jj+1) * e1e2t(ji,jj+1) ) * r1_e1e2v(ji,jj) * vmask(ji,jj,1) 
    336337               ! ice-bottom stress at U points 
    337                zvCr = zaU(ji,jj) * rn_depfra * hu_n(ji,jj) 
     338               zvCr = zaU(ji,jj) * rn_depfra * hu(ji,jj,Kmm) 
    338339               zTauU_ib(ji,jj)   = rn_icebfr * MAX( 0._wp, zvU - zvCr ) * EXP( -rn_crhg * ( 1._wp - zaU(ji,jj) ) ) 
    339340               ! ice-bottom stress at V points 
    340                zvCr = zaV(ji,jj) * rn_depfra * hv_n(ji,jj) 
     341               zvCr = zaV(ji,jj) * rn_depfra * hv(ji,jj,Kmm) 
    341342               zTauV_ib(ji,jj)   = rn_icebfr * MAX( 0._wp, zvV - zvCr ) * EXP( -rn_crhg * ( 1._wp - zaV(ji,jj) ) ) 
    342343               ! ice_bottom stress at T points 
    343                zvCr = at_i(ji,jj) * rn_depfra * ht_n(ji,jj) 
     344               zvCr = at_i(ji,jj) * rn_depfra * ht(ji,jj) 
    344345               tau_icebfr(ji,jj) = rn_icebfr * MAX( 0._wp, vt_i(ji,jj) - zvCr ) * EXP( -rn_crhg * ( 1._wp - at_i(ji,jj) ) ) 
    345346            END DO 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/ICE/icestp.F90

    r10998 r11480  
    9595CONTAINS 
    9696 
    97    SUBROUTINE ice_stp( kt, Kbb, ksbc ) 
     97   SUBROUTINE ice_stp( kt, Kbb, Kmm, ksbc ) 
    9898      !!--------------------------------------------------------------------- 
    9999      !!                  ***  ROUTINE ice_stp  *** 
     
    115115      !!                utau, vtau, taum, wndm, qns , qsr, emp , sfx 
    116116      !!--------------------------------------------------------------------- 
    117       INTEGER, INTENT(in) ::   kt     ! ocean time step 
    118       INTEGER, INTENT(in) ::   Kbb    ! ocean time level index 
    119       INTEGER, INTENT(in) ::   ksbc   ! flux formulation (user defined, bulk, or Pure Coupled) 
     117      INTEGER, INTENT(in) ::   kt       ! ocean time step 
     118      INTEGER, INTENT(in) ::   Kbb, Kmm ! ocean time level indices 
     119      INTEGER, INTENT(in) ::   ksbc     ! flux formulation (user defined, bulk, or Pure Coupled) 
    120120      ! 
    121121      INTEGER ::   jl   ! dummy loop index 
     
    161161         ! 
    162162         IF( ln_icedyn .AND. .NOT.lk_c1d )   & 
    163             &                           CALL ice_dyn( kt )            ! -- Ice dynamics 
     163            &                           CALL ice_dyn( kt, Kmm )       ! -- Ice dynamics 
    164164         ! 
    165165         !                          !==  lateral boundary conditions  ==! 
Note: See TracChangeset for help on using the changeset viewer.