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/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/ICE/iceistate.F90 – NEMO

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.

File:
1 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 
Note: See TracChangeset for help on using the changeset viewer.