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 12721 for NEMO/branches/UKMO/NEMO_4.0.2_GO8_package_ENHANCE-02_ISF_nemo/src/OCE/TRA/tranxt.F90 – NEMO

Ignore:
Timestamp:
2020-04-08T20:42:57+02:00 (4 years ago)
Author:
mathiot
Message:

NEMO_4.0.2_GO8_package_ENHANCE-02_ISF_nemo: add last year isf dev

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0.2_GO8_package_ENHANCE-02_ISF_nemo/src/OCE/TRA/tranxt.F90

    r12658 r12721  
    2828   USE sbc_oce         ! surface boundary condition: ocean 
    2929   USE sbcrnf          ! river runoffs 
    30    USE sbcisf          ! ice shelf melting 
     30   USE isf_oce         ! ice shelf melting 
    3131   USE zdf_oce         ! ocean vertical mixing 
    3232   USE domvvl          ! variable volume 
     
    312312                  ztc_f  = ztc_n  + atfp * ztc_d 
    313313                  ! 
    314                   zscale = zfact2 * e3t_n(ji,jj,jk) / ( ht_n(ji,jj) + 1._wp - ssmask(ji,jj) ) 
    315                   ze3t_f = ze3t_f - zscale * ( emp_b(ji,jj) - emp(ji,jj) ) 
    316                   IF ( ll_rnf ) ze3t_f = ze3t_f + zscale * (    rnf_b(ji,jj) -    rnf(ji,jj) ) 
    317                   IF ( ll_isf ) ze3t_f = ze3t_f - zscale * ( fwfisf_b(ji,jj) - fwfisf(ji,jj) ) 
    318  
    319                   IF( jk == mikt(ji,jj) ) THEN           ! first level  
     314                  IF( jk == 1 ) THEN           ! first level  
     315                     ze3t_f = ze3t_f - zfact2 * ( emp_b(ji,jj) - emp(ji,jj)   ) 
    320316                     ztc_f  = ztc_f  - zfact1 * ( psbc_tc(ji,jj,jn) - psbc_tc_b(ji,jj,jn) ) 
     317                  ENDIF 
     318                  ! 
     319                  ! river runoff 
     320                  IF( ln_rnf_depth ) THEN 
     321                     ! Rivers are not just at the surface must go down to nk_rnf(ji,jj) 
     322                     IF( jk <= nk_rnf(ji,jj)  ) THEN 
     323                        ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj) - rnf(ji,jj)   )  ) & 
     324                    &                            * ( e3t_n(ji,jj,jk) / h_rnf(ji,jj) )  
     325                     ENDIF 
     326                  ELSE 
     327                     IF( jk == 1 ) THEN           ! first level  
     328                        ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj)    - rnf(ji,jj)   ) )  
     329                     ENDIF 
    321330                  ENDIF 
    322331                  ! 
     
    324333                  IF( ll_traqsr .AND. jn == jp_tem .AND. jk <= nksr )                            &  
    325334                     &     ztc_f  = ztc_f  - zfact1 * ( qsr_hc(ji,jj,jk) - qsr_hc_b(ji,jj,jk) )  
    326                      ! 
    327                   ! river runoff 
     335                  ! 
    328336                  IF( ll_rnf .AND. jk <= nk_rnf(ji,jj) )                                          & 
    329337                     &     ztc_f  = ztc_f  - zfact1 * ( rnf_tsc(ji,jj,jn) - rnf_tsc_b(ji,jj,jn) ) &  
    330338                     &                              * e3t_n(ji,jj,jk) / h_rnf(ji,jj) 
    331                      ! 
     339                  ! 
    332340                  ! ice shelf 
    333341                  IF( ll_isf ) THEN 
    334                      ! level fully include in the Losch_2008 ice shelf boundary layer 
    335                      IF ( jk >= misfkt(ji,jj) .AND. jk < misfkb(ji,jj) )                          & 
    336                         ztc_f  = ztc_f  - zfact1 * ( risf_tsc(ji,jj,jn) - risf_tsc_b(ji,jj,jn) )  & 
    337                                &                 * e3t_n(ji,jj,jk) * r1_hisf_tbl (ji,jj) 
    338                      ! level partially include in Losch_2008 ice shelf boundary layer  
    339                      IF ( jk == misfkb(ji,jj) )                                                   & 
    340                         ztc_f  = ztc_f  - zfact1 * ( risf_tsc(ji,jj,jn) - risf_tsc_b(ji,jj,jn) )  & 
    341                                &                 * e3t_n(ji,jj,jk) * r1_hisf_tbl (ji,jj) * ralpha(ji,jj) 
     342                     ! 
     343                     ! melt in the cavity 
     344                     IF ( ln_isfcav_mlt ) THEN 
     345                        ! level fully include in the Losch_2008 ice shelf boundary layer 
     346                        IF ( jk >= misfkt_cav(ji,jj) .AND. jk < misfkb_cav(ji,jj) ) THEN 
     347                           ztc_f  = ztc_f  - zfact1 * ( risf_cav_tsc(ji,jj,jn) - risf_cav_tsc_b(ji,jj,jn) ) & 
     348                              &                     * e3t_n(ji,jj,jk) / rhisf_tbl_cav(ji,jj) 
     349                           ze3t_f = ze3t_f - zfact2 * ( fwfisf_cav_b(ji,jj) - fwfisf_cav(ji,jj) )           & 
     350                              &                     * e3t_n(ji,jj,jk) / rhisf_tbl_cav(ji,jj) 
     351                        END IF 
     352                        ! level partially include in Losch_2008 ice shelf boundary layer  
     353                        IF ( jk == misfkb_cav(ji,jj) ) THEN 
     354                           ztc_f  = ztc_f  - zfact1 * ( risf_cav_tsc(ji,jj,jn) - risf_cav_tsc_b(ji,jj,jn) )  & 
     355                                  &                 * e3t_n(ji,jj,jk) / rhisf_tbl_cav(ji,jj) * rfrac_tbl_cav(ji,jj) 
     356                           ze3t_f = ze3t_f - zfact2 * ( fwfisf_cav_b(ji,jj) - fwfisf_cav(ji,jj) )            & 
     357                              &                     * e3t_n(ji,jj,jk) / rhisf_tbl_cav(ji,jj) * rfrac_tbl_cav(ji,jj) 
     358                        END IF 
     359                     END IF 
     360                     ! 
     361                     ! parametrised melt (cavity closed) 
     362                     IF ( ln_isfpar_mlt ) THEN 
     363                        ! level fully include in the Losch_2008 ice shelf boundary layer 
     364                        IF ( jk >= misfkt_par(ji,jj) .AND. jk < misfkb_par(ji,jj) ) THEN 
     365                           ztc_f  = ztc_f  - zfact1 * ( risf_par_tsc(ji,jj,jn) - risf_par_tsc_b(ji,jj,jn) )  & 
     366                                  &                 * e3t_n(ji,jj,jk) / rhisf_tbl_par(ji,jj) 
     367                           ze3t_f = ze3t_f - zfact2 * ( fwfisf_par_b(ji,jj) - fwfisf_par(ji,jj) )            & 
     368                              &                     * e3t_n(ji,jj,jk) / rhisf_tbl_par(ji,jj) 
     369                        END IF 
     370                        ! level partially include in Losch_2008 ice shelf boundary layer  
     371                        IF ( jk == misfkb_par(ji,jj) ) THEN 
     372                           ztc_f  = ztc_f  - zfact1 * ( risf_par_tsc(ji,jj,jn) - risf_par_tsc_b(ji,jj,jn) )  & 
     373                                  &                 * e3t_n(ji,jj,jk) / rhisf_tbl_par(ji,jj) * rfrac_tbl_par(ji,jj) 
     374                           ze3t_f = ze3t_f - zfact2 * ( fwfisf_par_b(ji,jj) - fwfisf_par(ji,jj) )            & 
     375                              &                     * e3t_n(ji,jj,jk) / rhisf_tbl_par(ji,jj) * rfrac_tbl_par(ji,jj) 
     376                        END IF 
     377                     END IF 
     378                     ! 
     379                     ! ice sheet coupling correction 
     380                     IF ( ln_isfcpl ) THEN 
     381                        ! 
     382                        ! at kt = nit000,  risfcpl_vol_n = 0 and risfcpl_vol_b = risfcpl_vol so contribution nul 
     383                        IF ( ln_rstart .AND. kt == nit000+1 ) THEN 
     384                           ztc_f  = ztc_f  + zfact1 * risfcpl_tsc(ji,jj,jk,jn) * r1_e1e2t(ji,jj) 
     385                           ze3t_f = ze3t_f - zfact1 * risfcpl_vol(ji,jj,jk   ) * r1_e1e2t(ji,jj) 
     386                        END IF 
     387                        ! 
     388                     END IF 
     389                     ! 
    342390                  END IF 
    343391                  ! 
Note: See TracChangeset for help on using the changeset viewer.