- Timestamp:
- 2019-12-10T12:57:49+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/DYN/dynkeg.F90
r10996 r12143 74 74 INTEGER, INTENT( in ) :: kscheme ! =0/1 type of KEG scheme 75 75 ! 76 INTEGER :: ji, jj, jk, jb ! dummy loop indices 77 INTEGER :: ifu, ifv, igrd, ib_bdy ! local integers 76 INTEGER :: ji, jj, jk ! dummy loop indices 78 77 REAL(wp) :: zu, zv ! local scalars 79 78 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zhke 80 79 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdu, ztrdv 81 REAL(wp) :: zweightu, zweightv82 80 !!---------------------------------------------------------------------- 83 81 ! … … 112 110 END DO 113 111 END DO 114 !115 IF (ln_bdy) THEN116 ! Maria Luneva & Fred Wobus: July-2016117 ! compensate for lack of turbulent kinetic energy on liquid bdy points118 DO ib_bdy = 1, nb_bdy119 IF( cn_dyn3d(ib_bdy) /= 'none' ) THEN120 igrd = 1 ! compensating null velocity on the bdy121 DO jb = 1, idx_bdy(ib_bdy)%nblenrim(igrd)122 ji = idx_bdy(ib_bdy)%nbi(jb,igrd) ! maximum extent : from 2 to jpi-1123 jj = idx_bdy(ib_bdy)%nbj(jb,igrd) ! maximum extent : from 2 to jpj-1124 DO jk = 1, jpkm1125 zhke(ji,jj,jk) = 0._wp126 zweightu = umask(ji-1,jj ,jk) + umask(ji,jj,jk)127 zweightv = vmask(ji ,jj-1,jk) + vmask(ji,jj,jk)128 zu = un(ji-1,jj ,jk) * un(ji-1,jj ,jk) + un(ji ,jj ,jk) * un(ji ,jj ,jk)129 zv = vn(ji ,jj-1,jk) * vn(ji ,jj-1,jk) + vn(ji ,jj ,jk) * vn(ji ,jj ,jk)130 IF( zweightu > 0._wp ) zhke(ji,jj,jk) = zhke(ji,jj,jk) + zu / (2._wp * zweightu)131 IF( zweightv > 0._wp ) zhke(ji,jj,jk) = zhke(ji,jj,jk) + zv / (2._wp * zweightv)132 END DO133 END DO134 END IF135 CALL lbc_bdy_lnk( 'dynkeg', zhke, 'T', 1., ib_bdy ) ! send 2 and recv jpi, jpj used in the computation of the speed tendencies136 END DO137 END IF138 !139 112 CASE ( nkeg_HW ) !-- Hollingsworth scheme --! 140 113 DO jk = 1, jpkm1 … … 154 127 END DO 155 128 END DO 156 IF (ln_bdy) THEN157 ! Maria Luneva & Fred Wobus: July-2016158 ! compensate for lack of turbulent kinetic energy on liquid bdy points159 DO ib_bdy = 1, nb_bdy160 IF( cn_dyn3d(ib_bdy) /= 'none' ) THEN161 igrd = 1 ! compensation null velocity on land at the bdy162 DO jb = 1, idx_bdy(ib_bdy)%nblenrim(igrd)163 ji = idx_bdy(ib_bdy)%nbi(jb,igrd) ! maximum extent : from 2 to jpi-1164 jj = idx_bdy(ib_bdy)%nbj(jb,igrd) ! maximum extent : from 2 to jpj-1165 DO jk = 1, jpkm1166 zhke(ji,jj,jk) = 0._wp167 zweightu = 8._wp * ( umask(ji-1,jj ,jk) + umask(ji ,jj ,jk) ) &168 & + 2._wp * ( umask(ji-1,jj-1,jk) + umask(ji-1,jj+1,jk) + umask(ji ,jj-1,jk) + umask(ji ,jj+1,jk) )169 zweightv = 8._wp * ( vmask(ji ,jj-1,jk) + vmask(ji ,jj-1,jk) ) &170 & + 2._wp * ( vmask(ji-1,jj-1,jk) + vmask(ji+1,jj-1,jk) + vmask(ji-1,jj ,jk) + vmask(ji+1,jj ,jk) )171 zu = 8._wp * ( un(ji-1,jj ,jk) * un(ji-1,jj ,jk) &172 & + un(ji ,jj ,jk) * un(ji ,jj ,jk) ) &173 & + ( un(ji-1,jj-1,jk) + un(ji-1,jj+1,jk) ) * ( un(ji-1,jj-1,jk) + un(ji-1,jj+1,jk) ) &174 & + ( un(ji ,jj-1,jk) + un(ji ,jj+1,jk) ) * ( un(ji ,jj-1,jk) + un(ji ,jj+1,jk) )175 zv = 8._wp * ( vn(ji ,jj-1,jk) * vn(ji ,jj-1,jk) &176 & + vn(ji ,jj ,jk) * vn(ji ,jj ,jk) ) &177 & + ( vn(ji-1,jj-1,jk) + vn(ji+1,jj-1,jk) ) * ( vn(ji-1,jj-1,jk) + vn(ji+1,jj-1,jk) ) &178 & + ( vn(ji-1,jj ,jk) + vn(ji+1,jj ,jk) ) * ( vn(ji-1,jj ,jk) + vn(ji+1,jj ,jk) )179 IF( zweightu > 0._wp ) zhke(ji,jj,jk) = zhke(ji,jj,jk) + zu / ( 2._wp * zweightu )180 IF( zweightv > 0._wp ) zhke(ji,jj,jk) = zhke(ji,jj,jk) + zv / ( 2._wp * zweightv )181 END DO182 END DO183 END IF184 END DO185 END IF186 129 CALL lbc_lnk( 'dynkeg', zhke, 'T', 1. ) 187 130 !
Note: See TracChangeset
for help on using the changeset viewer.