- Timestamp:
- 2019-12-05T13:18:21+01:00 (4 years ago)
- Location:
- NEMO/branches/2019/UKMO_MERGE_2019/src/OCE/ISF
- Files:
-
- 1 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/UKMO_MERGE_2019/src/OCE/ISF/isfcavgam.F90
r11931 r12068 14 14 USE isftbl , ONLY: isf_tbl 15 15 16 USE oce , ONLY: u n, vn, rn2 ! ocean dynamics and tracers16 USE oce , ONLY: uu, vv, rn2 ! ocean dynamics and tracers 17 17 USE phycst , ONLY: grav, vkarmn ! physical constant 18 18 USE eosbn2 , ONLY: eos_rab ! equation of state … … 41 41 !!----------------------------------------------------------------------------------------------------- 42 42 ! 43 SUBROUTINE isfcav_gammats( pttbl, pstbl, pqoce, pqfwf, pgt, pgs )43 SUBROUTINE isfcav_gammats( Kmm, pttbl, pstbl, pqoce, pqfwf, pgt, pgs ) 44 44 !!---------------------------------------------------------------------- 45 45 !! ** Purpose : compute the coefficient echange for heat and fwf flux … … 51 51 REAL(wp), DIMENSION(jpi,jpj), INTENT( out) :: pgt , pgs ! gamma t and gamma s 52 52 !!-------------------------- IN ------------------------------------- 53 INTEGER :: Kmm ! ocean time level index 53 54 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: pqoce, pqfwf ! isf heat and fwf 54 55 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: pttbl, pstbl ! top boundary layer tracer … … 67 68 CASE ('ad15', 'hj99') 68 69 ! compute velocity in tbl 69 CALL isf_tbl( un(:,:,:) ,zutbl(:,:),'U', miku, rhisf_tbl_cav)70 CALL isf_tbl( vn(:,:,:) ,zvtbl(:,:),'V', mikv, rhisf_tbl_cav)70 CALL isf_tbl(Kmm, uu(:,:,:,Kmm) ,zutbl(:,:),'U', miku, rhisf_tbl_cav) 71 CALL isf_tbl(Kmm, vv(:,:,:,Kmm) ,zvtbl(:,:),'V', mikv, rhisf_tbl_cav) 71 72 ! 72 73 ! mask velocity in tbl with ice shelf mask … … 90 91 pgs(:,:) = rn_gammas0 91 92 CASE ( 'ad15' ) ! gamma is proportional to u* 92 CALL gammats_AD15 ( zutbl, zvtbl, rCd0_top, r_ke0_top, pgt, pgs )93 CALL gammats_AD15 ( zutbl, zvtbl, rCd0_top, r_ke0_top, pgt, pgs ) 93 94 CASE ( 'hj99' ) ! gamma depends of stability of boundary layer and u* 94 CALL gammats_HJ99 ( pttbl, pstbl, zutbl, zvtbl, rCd0_top, r_ke0_top, pqoce, pqfwf, pgt, pgs )95 CALL gammats_HJ99 (Kmm, pttbl, pstbl, zutbl, zvtbl, rCd0_top, r_ke0_top, pqoce, pqfwf, pgt, pgs ) 95 96 CASE DEFAULT 96 97 CALL ctl_stop('STOP','method to compute gamma (cn_gammablk) is unknown (should not see this)') … … 147 148 END SUBROUTINE gammats_AD15 148 149 149 SUBROUTINE gammats_HJ99( pttbl, pstbl, putbl, pvtbl, pCd, pke2, pqoce, pqfwf, & ! <<== in150 & pgt , pgs ) ! ==>> out gammats [m/s]150 SUBROUTINE gammats_HJ99( Kmm, pttbl, pstbl, putbl, pvtbl, pCd, pke2, pqoce, pqfwf, & ! <<== in 151 & pgt , pgs ) ! ==>> out gammats [m/s] 151 152 !!---------------------------------------------------------------------- 152 153 !! ** Purpose : compute the coefficient echange coefficient … … 159 160 REAL(wp), DIMENSION(jpi,jpj), INTENT( out) :: pgt, pgs ! gammat and gammas 160 161 !!-------------------------- IN ------------------------------------- 162 INTEGER :: Kmm ! ocean time level index 161 163 REAL(wp), INTENT(in ) :: pke2 ! background velocity squared 162 164 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: pqoce, pqfwf ! surface heat flux and fwf flux … … 208 210 ! compute Rc number (as done in zdfric.F90) 209 211 !!gm better to do it like in the new zdfric.F90 i.e. avm weighted Ri computation 210 zcoef = 0.5_wp / e3w _n(ji,jj,ikt+1)212 zcoef = 0.5_wp / e3w(ji,jj,ikt+1,Kmm) 211 213 ! ! shear of horizontal velocity 212 zdku = zcoef * ( u n(ji-1,jj ,ikt ) + un(ji,jj,ikt) &213 & -u n(ji-1,jj ,ikt+1) - un(ji,jj,ikt+1) )214 zdkv = zcoef * ( v n(ji ,jj-1,ikt ) + vn(ji,jj,ikt) &215 & -v n(ji ,jj-1,ikt+1) - vn(ji,jj,ikt+1) )214 zdku = zcoef * ( uu(ji-1,jj ,ikt ,Kmm) + uu(ji,jj,ikt ,Kmm) & 215 & -uu(ji-1,jj ,ikt+1,Kmm) - uu(ji,jj,ikt+1,Kmm) ) 216 zdkv = zcoef * ( vv(ji ,jj-1,ikt ,Kmm) + vv(ji,jj,ikt ,Kmm) & 217 & -vv(ji ,jj-1,ikt+1,Kmm) - vv(ji,jj,ikt+1,Kmm) ) 216 218 ! ! richardson number (minimum value set to zero) 217 219 zRc = MAX(rn2(ji,jj,ikt+1), 0._wp) / MAX( zdku*zdku + zdkv*zdkv, zeps ) … … 220 222 zts(jp_tem) = pttbl(ji,jj) 221 223 zts(jp_sal) = pstbl(ji,jj) 222 zdep = gdepw _n(ji,jj,ikt)223 ! 224 CALL eos_rab( zts, zdep, zab )224 zdep = gdepw(ji,jj,ikt,Kmm) 225 ! 226 CALL eos_rab( zts, zdep, zab, Kmm ) 225 227 ! 226 228 ! compute length scale (Eq ??) … … 229 231 ! compute Monin Obukov Length 230 232 ! Maximum boundary layer depth (Eq ??) 231 zhmax = gdept _n(ji,jj,mbkt(ji,jj)) - gdepw_n(ji,jj,mikt(ji,jj)) -0.001_wp233 zhmax = gdept(ji,jj,mbkt(ji,jj),Kmm) - gdepw(ji,jj,mikt(ji,jj),Kmm) -0.001_wp 232 234 ! 233 235 ! Compute Monin obukhov length scale at the surface and Ekman depth: (Eq ??)
Note: See TracChangeset
for help on using the changeset viewer.