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 10998 for NEMO/branches – NEMO

Changeset 10998 for NEMO/branches


Ignore:
Timestamp:
2019-05-20T10:27:28+02:00 (5 years ago)
Author:
davestorkey
Message:

2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : ICE changes. Passess non-AGRIF sette tests apart from ORCA2_SAS_ICE which doesn't seem to work for me at the moment.

Location:
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src
Files:
9 edited

Legend:

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

    r10534 r10998  
    6868CONTAINS 
    6969 
    70    SUBROUTINE ice_istate 
     70   SUBROUTINE ice_istate( Kbb, Kmm, Kaa ) 
    7171      !!------------------------------------------------------------------- 
    7272      !!                    ***  ROUTINE ice_istate  *** 
     
    8989      !!              where there is no ice (clem: I do not know why, is it mandatory?)  
    9090      !!-------------------------------------------------------------------- 
     91      INTEGER, INTENT(in)  :: Kbb, Kmm, Kaa   ! ocean time level indices 
     92      ! 
    9193      INTEGER  ::   ji, jj, jk, jl         ! dummy loop indices 
    9294      INTEGER  ::   i_hemis, i_fill, jl0   ! local integers 
     
    425427      IF( ln_ice_embd ) THEN            ! embedded sea-ice: deplete the initial ssh below sea-ice area 
    426428         ! 
    427          sshn(:,:) = sshn(:,:) - snwice_mass(:,:) * r1_rau0 
    428          sshb(:,:) = sshb(:,:) - snwice_mass(:,:) * r1_rau0 
     429         ssh(:,:,Kmm) = ssh(:,:,Kmm) - snwice_mass(:,:) * r1_rau0 
     430         ssh(:,:,Kbb) = ssh(:,:,Kbb) - snwice_mass(:,:) * r1_rau0 
    429431         ! 
    430432         IF( .NOT.ln_linssh ) THEN 
    431433            ! 
    432             WHERE( ht_0(:,:) > 0 )   ;   z2d(:,:) = 1._wp + sshn(:,:)*tmask(:,:,1) / ht_0(:,:) 
     434            WHERE( ht_0(:,:) > 0 )   ;   z2d(:,:) = 1._wp + ssh(:,:,Kmm)*tmask(:,:,1) / ht_0(:,:) 
    433435            ELSEWHERE                ;   z2d(:,:) = 1._wp   ;   END WHERE 
    434436            ! 
    435437            DO jk = 1,jpkm1                     ! adjust initial vertical scale factors                 
    436                e3t_n(:,:,jk) = e3t_0(:,:,jk) * z2d(:,:) 
    437                e3t_b(:,:,jk) = e3t_n(:,:,jk) 
    438                e3t_a(:,:,jk) = e3t_n(:,:,jk) 
     438               e3t(:,:,jk,Kmm) = e3t_0(:,:,jk) * z2d(:,:) 
     439               e3t(:,:,jk,Kbb) = e3t(:,:,jk,Kmm) 
     440               e3t(:,:,jk,Kaa) = e3t(:,:,jk,Kmm) 
    439441            END DO 
    440442            ! 
     
    443445            ! Horizontal scale factor interpolations 
    444446            ! -------------------------------------- 
    445             CALL dom_vvl_interpol( e3t_b(:,:,:), e3u_b(:,:,:), 'U' ) 
    446             CALL dom_vvl_interpol( e3t_b(:,:,:), e3v_b(:,:,:), 'V' ) 
    447             CALL dom_vvl_interpol( e3t_n(:,:,:), e3u_n(:,:,:), 'U' ) 
    448             CALL dom_vvl_interpol( e3t_n(:,:,:), e3v_n(:,:,:), 'V' ) 
    449             CALL dom_vvl_interpol( e3u_n(:,:,:), e3f_n(:,:,:), 'F' ) 
     447            CALL dom_vvl_interpol( e3t(:,:,:,Kbb), e3u(:,:,:,Kbb), 'U' ) 
     448            CALL dom_vvl_interpol( e3t(:,:,:,Kbb), e3v(:,:,:,Kbb), 'V' ) 
     449            CALL dom_vvl_interpol( e3t(:,:,:,Kmm), e3u(:,:,:,Kmm), 'U' ) 
     450            CALL dom_vvl_interpol( e3t(:,:,:,Kmm), e3v(:,:,:,Kmm), 'V' ) 
     451            CALL dom_vvl_interpol( e3u(:,:,:,Kmm), e3f(:,:,:), 'F' ) 
    450452            ! Vertical scale factor interpolations 
    451453            ! ------------------------------------ 
    452             CALL dom_vvl_interpol( e3t_n(:,:,:), e3w_n (:,:,:), 'W'  ) 
    453             CALL dom_vvl_interpol( e3u_n(:,:,:), e3uw_n(:,:,:), 'UW' ) 
    454             CALL dom_vvl_interpol( e3v_n(:,:,:), e3vw_n(:,:,:), 'VW' ) 
    455             CALL dom_vvl_interpol( e3u_b(:,:,:), e3uw_b(:,:,:), 'UW' ) 
    456             CALL dom_vvl_interpol( e3v_b(:,:,:), e3vw_b(:,:,:), 'VW' ) 
     454            CALL dom_vvl_interpol( e3t(:,:,:,Kmm), e3w (:,:,:,Kmm), 'W'  ) 
     455            CALL dom_vvl_interpol( e3u(:,:,:,Kmm), e3uw(:,:,:,Kmm), 'UW' ) 
     456            CALL dom_vvl_interpol( e3v(:,:,:,Kmm), e3vw(:,:,:,Kmm), 'VW' ) 
     457            CALL dom_vvl_interpol( e3u(:,:,:,Kbb), e3uw(:,:,:,Kbb), 'UW' ) 
     458            CALL dom_vvl_interpol( e3v(:,:,:,Kbb), e3vw(:,:,:,Kbb), 'VW' ) 
    457459            ! t- and w- points depth 
    458460            ! ---------------------- 
    459461            !!gm not sure of that.... 
    460             gdept_n(:,:,1) = 0.5_wp * e3w_n(:,:,1) 
    461             gdepw_n(:,:,1) = 0.0_wp 
    462             gde3w_n(:,:,1) = gdept_n(:,:,1) - sshn(:,:) 
     462            gdept(:,:,1,Kmm) = 0.5_wp * e3w(:,:,1,Kmm) 
     463            gdepw(:,:,1,Kmm) = 0.0_wp 
     464            gde3w(:,:,1) = gdept(:,:,1,Kmm) - ssh(:,:,Kmm) 
    463465            DO jk = 2, jpk 
    464                gdept_n(:,:,jk) = gdept_n(:,:,jk-1) + e3w_n(:,:,jk  ) 
    465                gdepw_n(:,:,jk) = gdepw_n(:,:,jk-1) + e3t_n(:,:,jk-1) 
    466                gde3w_n(:,:,jk) = gdept_n(:,:,jk  ) - sshn (:,:) 
     466               gdept(:,:,jk,Kmm) = gdept(:,:,jk-1,Kmm) + e3w(:,:,jk  ,Kmm) 
     467               gdepw(:,:,jk,Kmm) = gdepw(:,:,jk-1,Kmm) + e3t(:,:,jk-1,Kmm) 
     468               gde3w(:,:,jk) = gdept(:,:,jk  ,Kmm) - ssh (:,:,Kmm) 
    467469            END DO 
    468470         ENDIF 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/ICE/icestp.F90

    r10535 r10998  
    9595CONTAINS 
    9696 
    97    SUBROUTINE ice_stp( kt, ksbc ) 
     97   SUBROUTINE ice_stp( kt, Kbb, 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) ::   ksbc    ! flux formulation (user defined, bulk, or Pure Coupled) 
     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) 
    119120      ! 
    120121      INTEGER ::   jl   ! dummy loop index 
     
    209210      ! --- Ocean time step --- ! 
    210211      !-------------------------! 
    211       IF( ln_icedyn )                   CALL ice_update_tau( kt, ub(:,:,1), vb(:,:,1) )   ! -- update surface ocean stresses 
     212      IF( ln_icedyn )                   CALL ice_update_tau( kt, uu(:,:,1,Kbb), vv(:,:,1,Kbb) )   ! -- update surface ocean stresses 
    212213!!gm   remark, the ocean-ice stress is not saved in ice diag call above .....  find a solution!!! 
    213214      ! 
     
    217218 
    218219 
    219    SUBROUTINE ice_init 
     220   SUBROUTINE ice_init( Kbb, Kmm, Kaa ) 
    220221      !!---------------------------------------------------------------------- 
    221222      !!                  ***  ROUTINE ice_init  *** 
     
    223224      !! ** purpose :   Initialize sea-ice parameters 
    224225      !!---------------------------------------------------------------------- 
     226      INTEGER, INTENT(in) :: Kbb, Kmm, Kaa 
     227      ! 
    225228      INTEGER :: ji, jj, ierr 
    226229      !!---------------------------------------------------------------------- 
     
    254257      IF( .NOT. ln_rstart ) THEN              ! start from rest: sea-ice deduced from sst 
    255258         CALL ice_istate_init 
    256          CALL ice_istate 
     259         CALL ice_istate( Kbb, Kmm, Kaa ) 
    257260      ELSE                                    ! start from a restart file 
    258261         CALL ice_rst_read 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/ICE/iceupdate.F90

    r10425 r10998  
    1515   !!   ice_update_tau   : update i- and j-stresses, and its modulus at the ocean surface 
    1616   !!---------------------------------------------------------------------- 
    17    USE oce     , ONLY : sshn, sshb 
    1817   USE phycst         ! physical constants 
    1918   USE dom_oce        ! ocean domain 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/C1D/step_c1d.F90

    r10978 r10998  
    6666      ! Update data, open boundaries, surface boundary condition (including sea-ice) 
    6767      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    68                          CALL sbc    ( kstp )         ! Sea Boundary Condition (including sea-ice) 
     68                         CALL sbc    ( kstp, Nbb, Nnn )  ! Sea Boundary Condition (including sea-ice) 
    6969 
    7070      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/SBC/sbcmod.F90

    r10989 r10998  
    7676CONTAINS 
    7777 
    78    SUBROUTINE sbc_init( Kbb, Kmm ) 
     78   SUBROUTINE sbc_init( Kbb, Kmm, Kaa ) 
    7979      !!--------------------------------------------------------------------- 
    8080      !!                    ***  ROUTINE sbc_init *** 
     
    8888      !!              - nsbc: type of sbc 
    8989      !!---------------------------------------------------------------------- 
    90       INTEGER, INTENT(in) ::   Kbb, Kmm              ! ocean time level indices 
     90      INTEGER, INTENT(in) ::   Kbb, Kmm, Kaa         ! ocean time level indices 
    9191      INTEGER ::   ios, icpt                         ! local integer 
    9292      LOGICAL ::   ll_purecpl, ll_opa, ll_not_nemo   ! local logical 
     
    341341                          IF( sbc_ice_alloc() /= 0 )   CALL ctl_stop('STOP', 'sbc_ice_alloc : unable to allocate arrays' ) 
    342342      ELSEIF( nn_ice == 2 ) THEN 
    343                           CALL ice_init                ! ICE initialization 
     343                          CALL ice_init( Kbb, Kmm, Kaa )  ! ICE initialization 
    344344      ENDIF 
    345345#endif 
     
    442442      CASE(  1 )   ;         CALL sbc_ice_if   ( kt, Kbb, Kmm )   ! Ice-cover climatology ("Ice-if" model) 
    443443#if defined key_si3 
    444       CASE(  2 )   ;         CALL ice_stp  ( kt, nsbc )           ! SI3 ice model 
     444      CASE(  2 )   ;         CALL ice_stp  ( kt, Kbb, nsbc )   ! SI3 ice model 
    445445#endif 
    446446      CASE(  3 )   ;         CALL sbc_ice_cice ( kt, nsbc )       ! CICE ice model 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/nemogcm.F90

    r10978 r10998  
    429429      IF( ln_diurnal_only ) THEN                   ! diurnal only: a subset of the initialisation routines 
    430430         CALL  istate_init( Nbb, Nnn, Naa )           ! ocean initial state (Dynamics and tracers) 
    431          CALL     sbc_init( Nbb, Nnn )                ! Forcings : surface module 
     431         CALL     sbc_init( Nbb, Nnn, Naa )           ! Forcings : surface module 
    432432         CALL tra_qsr_init                            ! penetrative solar radiation qsr 
    433433         IF( ln_diaobs ) THEN                         ! Observation & model comparison 
     
    443443 
    444444      !                                      ! external forcing  
    445                            CALL    tide_init             ! tidal harmonics 
    446                            CALL     sbc_init( Nbb, Nnn ) ! surface boundary conditions (including sea-ice) 
    447                            CALL     bdy_init             ! Open boundaries initialisation 
     445                           CALL    tide_init                     ! tidal harmonics 
     446                           CALL     sbc_init( Nbb, Nnn, Naa )    ! surface boundary conditions (including sea-ice) 
     447                           CALL     bdy_init                     ! Open boundaries initialisation 
    448448 
    449449      !                                      ! Ocean physics 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/step.F90

    r10985 r10998  
    119119      IF( ln_apr_dyn )   CALL sbc_apr ( kstp )                   ! atmospheric pressure (NB: call before bdy_dta which needs ssh_ib)  
    120120      IF( ln_bdy     )   CALL bdy_dta ( kstp,      Nnn, time_offset=+1 )  ! update dynamic & tracer data at open boundaries 
    121                          CALL sbc     ( kstp, Nbb, Nnn )                  ! Sea Boundary Condition (including sea-ice) 
     121                         CALL sbc     ( kstp, Nbb, Nnn )         ! Sea Boundary Condition (including sea-ice) 
    122122 
    123123      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OFF/nemogcm.F90

    r10978 r10998  
    317317                           CALL  istate_init( Nnn, Naa )    ! ocean initial state (Dynamics and tracers) 
    318318 
    319                            CALL     sbc_init( Nbb, Nnn )    ! Forcings : surface module 
     319                           CALL     sbc_init( Nbb, Nnn, Naa )    ! Forcings : surface module 
    320320 
    321321      !                                      ! Tracer physics 
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/SAS/nemogcm.F90

    r10978 r10998  
    376376 
    377377      !                                      ! external forcing  
    378                            CALL sbc_init( Nbb, Nnn )  ! Forcings : surface module  
     378                           CALL sbc_init( Nbb, Nnn, Naa )  ! Forcings : surface module  
    379379 
    380380      ! ==> clem: open boundaries init. is mandatory for sea-ice because ice BDY is not decoupled from   
Note: See TracChangeset for help on using the changeset viewer.