Ignore:
Timestamp:
2020-04-23T10:11:38+02:00 (7 months ago)
Author:
gsamson
Message:

move rhoa computation from sbcabl to sbcblk (to avoid restartability issue over sea-ice); correct prt_ctl calls in ablmod and comment a ctl_stop in iom to allow using 3D atm forcing with bulk mode

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12563_ASINTER-06_ABL_improvement/src/ABL/ablmod.F90

    r12749 r12799  
    1818   USE dom_oce, ONLY  : tmask 
    1919   USE sbc_oce, ONLY  : ght_abl, ghw_abl, e3t_abl, e3w_abl, jpka, jpkam1, rhoa 
    20    USE sbcblk         ! use rn_?fac 
     20   USE sbcblk         ! use rn_?fac, cdn_oce 
    2121   USE sbcblk_phy     ! use some physical constants for flux computation 
    2222   ! 
     
    102102#endif 
    103103      ! 
    104       REAL(wp), DIMENSION(1:jpi,1:jpj   )        ::   zwnd_i, zwnd_j 
    105       REAL(wp), DIMENSION(1:jpi,2:jpka  )        ::   zCF 
    106       ! 
    107       REAL(wp), DIMENSION(1:jpi,1:jpka  )        ::   z_elem_a 
    108       REAL(wp), DIMENSION(1:jpi,1:jpka  )        ::   z_elem_b 
    109       REAL(wp), DIMENSION(1:jpi,1:jpka  )        ::   z_elem_c 
     104      REAL(wp), DIMENSION(1:jpi,1:jpj       )    ::   zwnd_i, zwnd_j 
     105      REAL(wp), DIMENSION(1:jpi      ,2:jpka)    ::   zCF 
     106      ! 
     107      REAL(wp), DIMENSION(1:jpi      ,1:jpka)    ::   z_elem_a 
     108      REAL(wp), DIMENSION(1:jpi      ,1:jpka)    ::   z_elem_b 
     109      REAL(wp), DIMENSION(1:jpi      ,1:jpka)    ::   z_elem_c 
    110110      ! 
    111111      INTEGER             ::   ji, jj, jk, jtra, jbak               ! dummy loop indices 
     
    351351#if defined key_si3 
    352352            zztmp1 = zztmp1 * pfrac_oce(ji,jj) + (1._wp - pfrac_oce(ji,jj)) * pcd_du_ice(ji, jj) 
    353             zzice  = 0.5_wp * ( pssu_ice(ji-1, jj) + pssu_ice(ji,jj) ) * rn_vfac 
     353            zzice  = 0.5_wp * ( pssu_ice(ji-1, jj) + pssu_ice(ji, jj) ) * rn_vfac 
    354354            zztmp2 = zztmp2 * pfrac_oce(ji,jj) + (1._wp - pfrac_oce(ji,jj)) * pcd_du_ice(ji, jj) * zzice 
    355355#endif 
     
    425425#if defined key_si3 
    426426            zztmp1 = zztmp1 * pfrac_oce(ji,jj) + (1._wp - pfrac_oce(ji,jj)) * pcd_du_ice(ji, jj) 
    427             zzice  = 0.5_wp * ( pssv_ice(ji, jj) + pssv_ice(ji,jj-1) ) * rn_vfac 
     427            zzice  = 0.5_wp * ( pssv_ice(ji, jj) + pssv_ice(ji, jj-1) ) * rn_vfac 
    428428            zztmp2 = zztmp2 * pfrac_oce(ji,jj) + (1._wp - pfrac_oce(ji,jj)) * pcd_du_ice(ji, jj) * zzice 
    429429#endif 
     
    624624 
    625625      IF(sn_cfctl%l_prtctl) THEN 
    626          CALL prt_ctl( tab2d_1=pwndm  , clinfo1=' abl_stp: wndm   : ' ) 
    627          CALL prt_ctl( tab2d_1=ptaui  , clinfo1=' abl_stp: utau   : ' ) 
    628          CALL prt_ctl( tab2d_2=ptauj  , clinfo2=          'vtau   : ' ) 
     626         CALL prt_ctl( tab2d_1=ptaui , clinfo1=' abl_stp: utau   : ', mask1=umask,   & 
     627            &          tab2d_2=ptauj , clinfo2='          vtau   : ', mask2=vmask ) 
     628         CALL prt_ctl( tab2d_1=pwndm , clinfo1=' abl_stp: wndm   : ' ) 
    629629      ENDIF 
    630630 
     
    647647      CALL lbc_lnk_multi( 'ablmod', ptaui_ice, 'U', -1., ptauj_ice, 'V', -1. ) 
    648648      ! 
    649       IF(sn_cfctl%l_prtctl)   CALL prt_ctl( tab2d_1=ptaui_ice  , clinfo1=' abl_stp: putaui : '   & 
    650          &                                , tab2d_2=ptauj_ice  , clinfo2='          pvtaui : ' ) 
     649      IF(sn_cfctl%l_prtctl) THEN 
     650         CALL prt_ctl( tab2d_1=ptaui_ice , clinfo1=' abl_stp: utau_ice : ', mask1=umask,   & 
     651            &          tab2d_2=ptauj_ice , clinfo2='          vtau_ice : ', mask2=vmask ) 
     652      END IF 
    651653#endif 
    652654      !                            !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
     
    722724         ! Compute vertical shear 
    723725         DO jk = 2, jpkam1 
    724             DO ji = 1,jpi 
     726            DO ji = 1, jpi 
    725727               zcff        = 1.0_wp / e3w_abl( jk )**2 
    726728               zdU         = zcff* Avm_abl(ji,jj,jk) * (u_abl( ji, jj, jk+1, tind)-u_abl( ji, jj, jk  , tind) )**2 
     
    889891            DO jk = 2, jpkam1 
    890892               DO ji = 1, jpi 
    891                   zbuoy             = MAX( zbn2(ji, jj, jk), rsmall ) 
     893                  zbuoy = MAX( zbn2(ji, jj, jk), rsmall ) 
    892894                  mxlm_abl( ji, jj, jk ) = MAX( mxl_min,  & 
    893                      &               SQRT( 2._wp * tke_abl( ji, jj, jk, nt_a ) / zbuoy )   ) 
     895                     &               SQRT( 2._wp * tke_abl( ji, jj, jk, nt_a ) / zbuoy ) ) 
    894896               END DO 
    895897            END DO 
Note: See TracChangeset for help on using the changeset viewer.