- Timestamp:
- 2020-01-27T15:31:53+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/DYN/dynatf.F90
r12236 r12340 59 59 PUBLIC dyn_atf ! routine called by step.F90 60 60 61 !! * Substitutions 62 # include "do_loop_substitute.h90" 61 63 !!---------------------------------------------------------------------- 62 64 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 180 182 IF( ln_linssh ) THEN ! Fixed volume ! 181 183 ! ! =============! 182 DO jk = 1, jpkm1 183 DO jj = 1, jpj 184 DO ji = 1, jpi 185 puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) ) 186 pvv(ji,jj,jk,Kmm) = pvv(ji,jj,jk,Kmm) + atfp * ( pvv(ji,jj,jk,Kbb) - 2._wp * pvv(ji,jj,jk,Kmm) + pvv(ji,jj,jk,Kaa) ) 187 END DO 188 END DO 189 END DO 184 DO_3D_11_11( 1, jpkm1 ) 185 puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) ) 186 pvv(ji,jj,jk,Kmm) = pvv(ji,jj,jk,Kmm) + atfp * ( pvv(ji,jj,jk,Kbb) - 2._wp * pvv(ji,jj,jk,Kmm) + pvv(ji,jj,jk,Kaa) ) 187 END_3D 190 188 ! ! ================! 191 189 ELSE ! Variable volume ! … … 205 203 IF ( ln_rnf ) THEN 206 204 IF( ln_rnf_depth ) THEN 207 DO jk = 1, jpkm1 ! Deal with Rivers separately, as can be through depth too 208 DO jj = 1, jpj 209 DO ji = 1, jpi 210 IF( jk <= nk_rnf(ji,jj) ) THEN 211 ze3t_f(ji,jj,jk) = ze3t_f(ji,jj,jk) - zcoef * ( - rnf_b(ji,jj) + rnf(ji,jj) ) & 212 & * ( pe3t(ji,jj,jk,Kmm) / h_rnf(ji,jj) ) * tmask(ji,jj,jk) 213 ENDIF 214 ENDDO 215 ENDDO 216 ENDDO 205 DO_3D_11_11( 1, jpkm1 ) 206 IF( jk <= nk_rnf(ji,jj) ) THEN 207 ze3t_f(ji,jj,jk) = ze3t_f(ji,jj,jk) - zcoef * ( - rnf_b(ji,jj) + rnf(ji,jj) ) & 208 & * ( pe3t(ji,jj,jk,Kmm) / h_rnf(ji,jj) ) * tmask(ji,jj,jk) 209 ENDIF 210 END_3D 217 211 ELSE 218 212 ze3t_f(:,:,1) = ze3t_f(:,:,1) - zcoef * ( -rnf_b(:,:) + rnf(:,:))*tmask(:,:,1) … … 232 226 CALL dom_vvl_interpol( pe3t(:,:,:,Kmm), pe3u(:,:,:,Kmm), 'U' ) 233 227 CALL dom_vvl_interpol( pe3t(:,:,:,Kmm), pe3v(:,:,:,Kmm), 'V' ) 234 DO jk = 1, jpkm1 235 DO jj = 1, jpj 236 DO ji = 1, jpi 237 puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) ) 238 pvv(ji,jj,jk,Kmm) = pvv(ji,jj,jk,Kmm) + atfp * ( pvv(ji,jj,jk,Kbb) - 2._wp * pvv(ji,jj,jk,Kmm) + pvv(ji,jj,jk,Kaa) ) 239 END DO 240 END DO 241 END DO 228 DO_3D_11_11( 1, jpkm1 ) 229 puu(ji,jj,jk,Kmm) = puu(ji,jj,jk,Kmm) + atfp * ( puu(ji,jj,jk,Kbb) - 2._wp * puu(ji,jj,jk,Kmm) + puu(ji,jj,jk,Kaa) ) 230 pvv(ji,jj,jk,Kmm) = pvv(ji,jj,jk,Kmm) + atfp * ( pvv(ji,jj,jk,Kbb) - 2._wp * pvv(ji,jj,jk,Kmm) + pvv(ji,jj,jk,Kaa) ) 231 END_3D 242 232 ! 243 233 ELSE ! Asselin filter applied on thickness weighted velocity … … 247 237 CALL dom_vvl_interpol( pe3t(:,:,:,Kmm), ze3u_f, 'U' ) 248 238 CALL dom_vvl_interpol( pe3t(:,:,:,Kmm), ze3v_f, 'V' ) 249 DO jk = 1, jpkm1 250 DO jj = 1, jpj 251 DO ji = 1, jpi 252 zue3a = pe3u(ji,jj,jk,Kaa) * puu(ji,jj,jk,Kaa) 253 zve3a = pe3v(ji,jj,jk,Kaa) * pvv(ji,jj,jk,Kaa) 254 zue3n = pe3u(ji,jj,jk,Kmm) * puu(ji,jj,jk,Kmm) 255 zve3n = pe3v(ji,jj,jk,Kmm) * pvv(ji,jj,jk,Kmm) 256 zue3b = pe3u(ji,jj,jk,Kbb) * puu(ji,jj,jk,Kbb) 257 zve3b = pe3v(ji,jj,jk,Kbb) * pvv(ji,jj,jk,Kbb) 258 ! 259 puu(ji,jj,jk,Kmm) = ( zue3n + atfp * ( zue3b - 2._wp * zue3n + zue3a ) ) / ze3u_f(ji,jj,jk) 260 pvv(ji,jj,jk,Kmm) = ( zve3n + atfp * ( zve3b - 2._wp * zve3n + zve3a ) ) / ze3v_f(ji,jj,jk) 261 END DO 262 END DO 263 END DO 239 DO_3D_11_11( 1, jpkm1 ) 240 zue3a = pe3u(ji,jj,jk,Kaa) * puu(ji,jj,jk,Kaa) 241 zve3a = pe3v(ji,jj,jk,Kaa) * pvv(ji,jj,jk,Kaa) 242 zue3n = pe3u(ji,jj,jk,Kmm) * puu(ji,jj,jk,Kmm) 243 zve3n = pe3v(ji,jj,jk,Kmm) * pvv(ji,jj,jk,Kmm) 244 zue3b = pe3u(ji,jj,jk,Kbb) * puu(ji,jj,jk,Kbb) 245 zve3b = pe3v(ji,jj,jk,Kbb) * pvv(ji,jj,jk,Kbb) 246 ! 247 puu(ji,jj,jk,Kmm) = ( zue3n + atfp * ( zue3b - 2._wp * zue3n + zue3a ) ) / ze3u_f(ji,jj,jk) 248 pvv(ji,jj,jk,Kmm) = ( zve3n + atfp * ( zve3b - 2._wp * zve3n + zve3a ) ) / ze3v_f(ji,jj,jk) 249 END_3D 264 250 pe3u(:,:,1:jpkm1,Kmm) = ze3u_f(:,:,1:jpkm1) 265 251 pe3v(:,:,1:jpkm1,Kmm) = ze3v_f(:,:,1:jpkm1)
Note: See TracChangeset
for help on using the changeset viewer.