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 13189 for NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback/src/OCE/SBC/sbcblk.F90 – NEMO

Ignore:
Timestamp:
2020-07-01T11:27:25+02:00 (4 years ago)
Author:
smasson
Message:

dev_r12472_ASINTER-05_Masson_CurrentFeedback: update with trunk@13136, see #2156

Location:
NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback

    • Property svn:externals
      •  

        old new  
        88 
        99# SETTE 
        10 ^/utils/CI/sette@HEAD         sette 
         10^/utils/CI/sette@12931        sette 
  • NEMO/branches/2020/dev_r12472_ASINTER-05_Masson_CurrentFeedback/src/OCE/SBC/sbcblk.F90

    r12565 r13189  
    658658 
    659659      END SELECT 
    660  
     660       
     661      IF( iom_use('Cd_oce') )   CALL iom_put("Cd_oce",   zcd_oce * tmask(:,:,1)) 
     662      IF( iom_use('Ce_oce') )   CALL iom_put("Ce_oce",   zce_oce * tmask(:,:,1)) 
     663      IF( iom_use('Ch_oce') )   CALL iom_put("Ch_oce",   zch_oce * tmask(:,:,1)) 
     664      !! LB: mainly here for debugging purpose: 
     665      IF( iom_use('theta_zt') ) CALL iom_put("theta_zt", (ztpot-rt0) * tmask(:,:,1)) ! potential temperature at z=zt 
     666      IF( iom_use('q_zt') )     CALL iom_put("q_zt",     zqair       * tmask(:,:,1)) ! specific humidity       " 
     667      IF( iom_use('theta_zu') ) CALL iom_put("theta_zu", (t_zu -rt0) * tmask(:,:,1)) ! potential temperature at z=zu 
     668      IF( iom_use('q_zu') )     CALL iom_put("q_zu",     q_zu        * tmask(:,:,1)) ! specific humidity       " 
     669      IF( iom_use('ssq') )      CALL iom_put("ssq",      pssq        * tmask(:,:,1)) ! saturation specific humidity at z=0 
     670      IF( iom_use('wspd_blk') ) CALL iom_put("wspd_blk", zU_zu       * tmask(:,:,1)) ! bulk wind speed at z=zu 
     671       
    661672      IF( ln_skin_cs .OR. ln_skin_wl ) THEN 
    662673         !! ptsk and pssq have been updated!!! 
     
    670681      END IF 
    671682 
    672       !!      CALL iom_put( "Cd_oce", zcd_oce)  ! output value of pure ocean-atm. transfer coef. 
    673       !!      CALL iom_put( "Ch_oce", zch_oce)  ! output value of pure ocean-atm. transfer coef. 
    674  
    675       IF( ABS(rn_zu - rn_zqt) < 0.1_wp ) THEN 
    676          !! If zu == zt, then ensuring once for all that: 
    677          t_zu(:,:) = ztpot(:,:) 
    678          q_zu(:,:) = zqair(:,:) 
    679       ENDIF 
    680  
    681  
    682683      !  Turbulent fluxes over ocean  => BULK_FORMULA @ sbcblk_phy.F90 
    683684      ! ------------------------------------------------------------- 
    684685 
    685686      IF( ln_abl ) THEN         !==  ABL formulation  ==!   multiplication by rho_air and turbulent fluxes computation done in ablstp 
    686          !! FL do we need this multiplication by tmask ... ??? 
    687687         DO_2D_11_11 
    688             zztmp = zU_zu(ji,jj) !* tmask(ji,jj,1) 
     688            zztmp = zU_zu(ji,jj) 
    689689            wndm(ji,jj)   = zztmp                   ! Store zU_zu in wndm to compute ustar2 in ablmod 
    690690            pcd_du(ji,jj) = zztmp * zcd_oce(ji,jj) 
    691691            psen(ji,jj)   = zztmp * zch_oce(ji,jj) 
    692692            pevp(ji,jj)   = zztmp * zce_oce(ji,jj) 
     693            rhoa(ji,jj)   = rho_air( ptair(ji,jj), phumi(ji,jj), pslp(ji,jj) ) 
    693694         END_2D 
    694695      ELSE                      !==  BLK formulation  ==!   turbulent fluxes computation 
    695696         CALL BULK_FORMULA( rn_zu, ptsk(:,:), pssq(:,:), t_zu(:,:), q_zu(:,:), & 
    696             &               zcd_oce(:,:), zch_oce(:,:), zce_oce(:,:),         & 
    697             &               wndm(:,:), zU_zu(:,:), pslp(:,:),                 & 
    698             &               taum(:,:), psen(:,:), zqla(:,:),                  & 
    699             &               pEvap=pevp(:,:), prhoa=rhoa(:,:) ) 
     697            &               zcd_oce(:,:), zch_oce(:,:), zce_oce(:,:),          & 
     698            &               wndm(:,:), zU_zu(:,:), pslp(:,:),                  & 
     699            &               taum(:,:), psen(:,:), zqla(:,:),                   & 
     700            &               pEvap=pevp(:,:), prhoa=rhoa(:,:), pfact_evap=rn_efac ) 
    700701 
    701702         zqla(:,:) = zqla(:,:) * tmask(:,:,1) 
     
    732733         ! ... utau, vtau at U- and V_points, resp. 
    733734         !     Note the use of 0.5*(2-umask) in order to unmask the stress along coastlines 
    734          !     Note the use of MAX(tmask(i,j),tmask(i+1,j) is to mask tau over ice shelves 
     735         !     Note that coastal wind stress is not used in the code... so this extra care has no effect 
    735736         DO_2D_00_00              ! start loop at 2, in case ln_crt_fbk = T 
    736737            utau(ji,jj) = 0.5 * ( 2. - umask(ji,jj,1) ) * ( ztau_i(ji,jj) + ztau_i(ji+1,jj  ) ) & 
     
    940941         Ce_ice(:,:) = Ch_ice(:,:)       ! sensible and latent heat transfer coef. are considered identical 
    941942      ENDIF 
    942  
    943       !! IF ( iom_use("Cd_ice") ) CALL iom_put("Cd_ice", Cd_ice)   ! output value of pure ice-atm. transfer coef. 
    944       !! IF ( iom_use("Ch_ice") ) CALL iom_put("Ch_ice", Ch_ice)   ! output value of pure ice-atm. transfer coef. 
    945  
     943       
     944      IF( iom_use('Cd_ice') ) CALL iom_put("Cd_ice", Cd_ice) 
     945      IF( iom_use('Ce_ice') ) CALL iom_put("Ce_ice", Ce_ice) 
     946      IF( iom_use('Ch_ice') ) CALL iom_put("Ch_ice", Ch_ice) 
     947       
    946948      ! local scalars ( place there for vector optimisation purposes) 
    947       !IF (ln_abl) rhoa  (:,:)  = rho_air( ptair(:,:), phumi(:,:), pslp(:,:) ) !!GS: rhoa must be (re)computed here with ABL to avoid division by zero after (TBI) 
    948949      zcd_dui(:,:) = wndm_ice(:,:) * Cd_ice(:,:) 
    949950 
    950951      IF( ln_blk ) THEN 
    951          ! ------------------------------------------------------------ ! 
    952          !    Wind stress relative to the moving ice ( U10m - U_ice )   ! 
    953          ! ------------------------------------------------------------ ! 
    954          ! C-grid ice dynamics :   U & V-points (same as ocean) 
    955          DO_2D_00_00 
    956             putaui(ji,jj) = 0.25_wp * ( rhoa(ji+1,jj) * zcd_dui(ji+1,jj) + rhoa(ji,jj) * zcd_dui(ji,jj) )   & 
    957                &                    * (                   pwndi(ji+1,jj) +                 pwndi(ji,jj) ) 
    958             pvtaui(ji,jj) = 0.25_wp * ( rhoa(ji,jj+1) * zcd_dui(ji,jj+1) + rhoa(ji,jj) * zcd_dui(ji,jj) )   & 
    959                &                    * (                   pwndj(ji,jj+1) +                 pwndj(ji,jj) ) 
     952         ! ---------------------------------------------------- ! 
     953         !    Wind stress relative to nonmoving ice ( U10m )    ! 
     954         ! ---------------------------------------------------- ! 
     955         ! supress moving ice in wind stress computation as we don't know how to do it properly... 
     956         DO_2D_01_01    ! at T point  
     957            putaui(ji,jj) = rhoa(ji,jj) * zcd_dui(ji,jj) * pwndi(ji,jj) 
     958            pvtaui(ji,jj) = rhoa(ji,jj) * zcd_dui(ji,jj) * pwndj(ji,jj) 
     959         END_2D 
     960         ! 
     961         DO_2D_00_00    ! U & V-points (same as ocean). 
     962            ! take care of the land-sea mask to avoid "pollution" of coastal stress. p[uv]taui used in frazil and  rheology  
     963            zztmp1 = 0.5_wp * ( 2. - umask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji+1,jj  ,1) ) 
     964            zztmp2 = 0.5_wp * ( 2. - vmask(ji,jj,1) ) * MAX( tmask(ji,jj,1),tmask(ji  ,jj+1,1) ) 
     965            putaui(ji,jj) = zztmp1 * ( putaui(ji,jj) + putaui(ji+1,jj  ) ) 
     966            pvtaui(ji,jj) = zztmp2 * ( pvtaui(ji,jj) + pvtaui(ji  ,jj+1) ) 
    960967         END_2D 
    961968         CALL lbc_lnk_multi( 'sbcblk', putaui, 'U', -1., pvtaui, 'V', -1. ) 
     
    10961103      evap_ice (:,:,:) = rn_efac * qla_ice (:,:,:) * z1_rLsub    ! sublimation 
    10971104      devap_ice(:,:,:) = rn_efac * dqla_ice(:,:,:) * z1_rLsub    ! d(sublimation)/dT 
    1098       zevap    (:,:)   = rn_efac * ( emp(:,:) + tprecip(:,:) )   ! evaporation over ocean 
     1105      zevap    (:,:)   = emp(:,:) + tprecip(:,:)   ! evaporation over ocean  !LB: removed rn_efac here, correct??? 
    10991106 
    11001107      ! --- evaporation minus precipitation --- ! 
Note: See TracChangeset for help on using the changeset viewer.