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 5624 for branches/2015/dev_r5151_UKMO_ISF/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90 – NEMO

Ignore:
Timestamp:
2015-07-21T20:47:42+02:00 (9 years ago)
Author:
mathiot
Message:

UKMO_ISF : fix conservation issue based on the work of Jerome on runoff, simplification of trasbc (isf part only) and remove option to apply isf melting as volume flux or not

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5151_UKMO_ISF/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90

    r5621 r5624  
    2828   USE sbc_oce         ! surface boundary condition: ocean 
    2929   USE sbcrnf          ! river runoffs 
     30   USE sbcisf          ! ice shelf melting 
    3031   USE zdf_oce         ! ocean vertical mixing 
    3132   USE domvvl          ! variable volume 
     
    279280 
    280281      !!      
    281       LOGICAL  ::   ll_tra_hpg, ll_traqsr, ll_rnf   ! local logical 
     282      LOGICAL  ::   ll_tra_hpg, ll_traqsr, ll_rnf, ll_isf   ! local logical 
    282283      INTEGER  ::   ji, jj, jk, jn              ! dummy loop indices 
    283284      REAL(wp) ::   zfact1, ztc_a , ztc_n , ztc_b , ztc_f , ztc_d    ! local scalar 
     
    295296         ll_traqsr  = ln_traqsr        ! active  tracers case  and  solar penetration 
    296297         ll_rnf     = ln_rnf           ! active  tracers case  and  river runoffs 
     298         ll_isf     = ln_isf           ! active  tracers case  and  ice shelf melting 
    297299      ELSE                           
    298300         ll_tra_hpg = .FALSE.          ! passive tracers case or NO semi-implicit hpg 
    299301         ll_traqsr  = .FALSE.          ! active  tracers case and NO solar penetration 
    300302         ll_rnf     = .FALSE.          ! passive tracers or NO river runoffs 
     303         ll_isf     = .FALSE.          ! passive tracers or NO ice shelf melting 
    301304      ENDIF 
    302305      ! 
     
    321324                  ztc_f  = ztc_n  + atfp * ztc_d 
    322325                  ! 
    323                   IF( jk == 1 ) THEN           ! first level  
    324                 !  IF( jk == mikt(ji,jj) ) THEN           ! first level  
    325                      ze3t_f = ze3t_f - zfact2 * ( emp_b(ji,jj) - emp(ji,jj) + rnf(ji,jj) - rnf_b(ji,jj)) 
    326                 !     ze3t_f = ze3t_f - zfact2 * ( (emp_b(ji,jj) - emp(ji,jj))          & 
    327                 !            &                   - (rnf_b(ji,jj) - rnf(ji,jj))          & 
    328                 !            &                   + (fwfisf_b(ji,jj) - fwfisf(ji,jj)) ) 
     326                  IF( jk == mikt(ji,jj) ) THEN           ! first level  
     327                     ze3t_f = ze3t_f - zfact2 * ( (emp_b(ji,jj) - emp(ji,jj))          & 
     328                            &                   - (rnf_b(ji,jj) - rnf(ji,jj))          & 
     329                            &                   + (fwfisf_b(ji,jj) - fwfisf(ji,jj)) ) 
    329330                             
    330331                     ztc_f  = ztc_f  - zfact1 * ( psbc_tc(ji,jj,jn) - psbc_tc_b(ji,jj,jn) ) 
     
    334335                     &     ztc_f  = ztc_f  - zfact1 * ( qsr_hc(ji,jj,jk) - qsr_hc_b(ji,jj,jk) )  
    335336 
    336                   IF( ll_rnf .AND. jk <= nk_rnf(ji,jj) )   &            ! river runoffs 
     337                  ! river runoffs 
     338                  IF( ll_rnf .AND. jk <= nk_rnf(ji,jj) )                                          &  
    337339                     &     ztc_f  = ztc_f  - zfact1 * ( rnf_tsc(ji,jj,jn) - rnf_tsc_b(ji,jj,jn) ) &  
    338340                     &                              * fse3t_n(ji,jj,jk) / h_rnf(ji,jj) 
    339341 
    340                   !IF( nn_isf .NE. 0 .AND. jk == mikt(ji,jj) )   &            ! ice shelf 
    341                   !   &     ztc_f  = ztc_f  + zfact1 * ( risf_tsc(ji,jj,jn) - risf_tsc_b(ji,jj,jn) ) &  
    342                   !   &                              * fse3t_n(ji,jj,jk) * r1_hisf_tbl (ji,jj) 
     342                  ! ice shelf 
     343                  IF( ll_isf ) THEN 
     344                     ! level fully include in the Losch_2008 ice shelf boundary layer 
     345                     IF ( jk >= misfkt(ji,jj) .AND. jk < misfkb(ji,jj) )                             & 
     346                        ztc_f  = ztc_f  - zfact1 * ( risf_tsc(ji,jj,jn) - risf_tsc_b(ji,jj,jn) ) &  
     347                               &                 * fse3t_n(ji,jj,jk) * r1_hisf_tbl (ji,jj) 
     348                     ! level partially include in Losch_2008 ice shelf boundary layer  
     349                     IF ( jk == misfkb(ji,jj) )                                                    & 
     350                        ztc_f  = ztc_f  - zfact1 * ( risf_tsc(ji,jj,jn) - risf_tsc_b(ji,jj,jn) ) &  
     351                               &                 * fse3t_n(ji,jj,jk) * r1_hisf_tbl (ji,jj) * ralpha(ji,jj) 
     352                  END IF 
    343353 
    344354                  ze3t_f = 1.e0 / ze3t_f 
Note: See TracChangeset for help on using the changeset viewer.