Changeset 455 for trunk/NEMO/OPA_SRC/DYN/dynzdf_imp.F90
- Timestamp:
- 2006-05-10T18:53:54+02:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/DYN/dynzdf_imp.F90
r258 r455 20 20 USE in_out_manager ! I/O manager 21 21 USE taumod ! surface ocean stress 22 USE trdmod ! ocean dynamics trends23 USE trdmod_oce ! ocean variables trends24 22 USE prtctl ! Print control 25 23 … … 60 58 !! ** Action : - Update (ua,va) arrays with the after vertical diffusive 61 59 !! mixing trend. 62 !! - Save the trends in (ztdua,ztdva) ('l_trddyn')63 60 !! 64 61 !! History : … … 76 73 77 74 !! * Local declarations 78 INTEGER :: & 79 ji, jj, jk, & ! dummy loop indices 80 ikbu, ikbum1, ikbv, ikbvm1 ! temporary integers 75 INTEGER :: ji, jj, jk ! dummy loop indices 81 76 REAL(wp) :: & 82 77 zrau0r, z2dt, & ! temporary scalars 83 78 z2dtf, zcoef, zzws, zrhs ! " " 84 REAL(wp), DIMENSION(jpi,jpj) :: &85 ztsx, ztsy, ztbx, ztby ! temporary workspace arrays86 79 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & 87 zwi , ztdua, ztdva! temporary workspace arrays80 zwi ! temporary workspace arrays 88 81 !!---------------------------------------------------------------------- 89 82 … … 98 91 zrau0r = 1. / rau0 ! inverse of the reference density 99 92 z2dt = 2. * rdt ! Leap-frog environnement 100 ztsx(:,:) = 0.e0 101 ztsy(:,:) = 0.e0 102 ztbx(:,:) = 0.e0 103 ztby(:,:) = 0.e0 93 104 94 ! Euler time stepping when starting from rest 105 95 IF( neuler == 0 .AND. kt == nit000 ) z2dt = rdt 106 107 ! Save previous ua and va trends108 IF( l_trddyn ) THEN109 ztdua(:,:,:) = ua(:,:,:)110 ztdva(:,:,:) = va(:,:,:)111 ENDIF112 96 113 97 ! 1. Vertical diffusion on u … … 194 178 END DO 195 179 END DO 196 197 IF( l_trddyn ) THEN198 ! diagnose surface and bottom momentum fluxes199 DO jj = 2, jpjm1200 DO ji = fs_2, fs_jpim1 ! vector opt.201 ! save the surface forcing momentum fluxes202 ztsx(ji,jj) = taux(ji,jj) / ( fse3u(ji,jj,1)*rau0 )203 ! save bottom friction momentum fluxes204 ikbu = MIN( mbathy(ji+1,jj), mbathy(ji,jj) )205 ikbum1 = MAX( ikbu-1, 1 )206 ztbx(ji,jj) = - avmu(ji,jj,ikbu) * ua(ji,jj,ikbum1) &207 / ( fse3u(ji,jj,ikbum1)*fse3uw(ji,jj,ikbu) )208 ! subtract surface forcing and bottom friction trend from vertical209 ! diffusive momentum trend210 ztdua(ji,jj,1 ) = ztdua(ji,jj,1 ) - ztsx(ji,jj)211 ztdua(ji,jj,ikbum1) = ztdua(ji,jj,ikbum1) - ztbx(ji,jj)212 END DO213 END DO214 ENDIF215 180 216 181 ! Normalization to obtain the general momentum trend ua … … 309 274 END DO 310 275 311 IF( l_trddyn ) THEN 312 ! diagnose surface and bottom momentum fluxes 313 DO jj = 2, jpjm1 314 DO ji = fs_2, fs_jpim1 ! vector opt. 315 ! save the surface forcing momentum fluxes 316 ztsy(ji,jj) = tauy(ji,jj) / ( fse3v(ji,jj,1)*rau0 ) 317 ! save bottom friction momentum fluxes 318 ikbv = MIN( mbathy(ji,jj+1), mbathy(ji,jj) ) 319 ikbvm1 = MAX( ikbv-1, 1 ) 320 ztby(ji,jj) = - avmv(ji,jj,ikbv) * va(ji,jj,ikbvm1) & 321 / ( fse3v(ji,jj,ikbvm1)*fse3vw(ji,jj,ikbv) ) 322 ! subtract surface forcing and bottom friction trend from vertical 323 ! diffusive momentum trend 324 ztdva(ji,jj,1 ) = ztdva(ji,jj,1 ) - ztsy(ji,jj) 325 ztdva(ji,jj,ikbvm1) = ztdva(ji,jj,ikbvm1) - ztby(ji,jj) 326 END DO 327 END DO 328 ENDIF 276 ! flux de surface doit etre calcule dans trdmod et boootom stress 277 ! deduit par integration verticale dans trmod pour jpdtdzdf 278 !RB IF( l_trddyn ) THEN 279 ! ! diagnose surface and bottom momentum fluxes 280 ! DO jj = 2, jpjm1 281 ! DO ji = fs_2, fs_jpim1 ! vector opt. 282 ! ! save the surface forcing momentum fluxes 283 ! ztsy(ji,jj) = tauy(ji,jj) / ( fse3v(ji,jj,1)*rau0 ) 284 ! ztsx(ji,jj) = taux(ji,jj) / ( fse3u(ji,jj,1)*rau0 ) 285 ! ! save bottom friction momentum fluxes 286 ! ikbv = MIN( mbathy(ji,jj+1), mbathy(ji,jj) ) 287 ! ikbvm1 = MAX( ikbv-1, 1 ) 288 ! ztby(ji,jj) = - avmv(ji,jj,ikbv) * va(ji,jj,ikbvm1) & 289 ! / ( fse3v(ji,jj,ikbvm1)*fse3vw(ji,jj,ikbv) ) 290 ! ! subtract surface forcing and bottom friction trend from vertical 291 ! ! diffusive momentum trend 292 ! ztdva(ji,jj,1 ) = ztdva(ji,jj,1 ) - ztsy(ji,jj) 293 ! ztdva(ji,jj,ikbvm1) = ztdva(ji,jj,ikbvm1) - ztby(ji,jj) 294 ! END DO 295 ! END DO 296 ! ENDIF 329 297 330 298 ! Normalization to obtain the general momentum trend va … … 337 305 END DO 338 306 339 ! save the vertical diffusion trends for diagnostic340 ! momentum trends341 IF( l_trddyn ) THEN342 ztdua(:,:,:) = ua(:,:,:) - ztdua(:,:,:)343 ztdva(:,:,:) = va(:,:,:) - ztdva(:,:,:)344 345 CALL trd_mod(ztdua, ztdva, jpdtdzdf, 'DYN', kt)346 ztdua(:,:,:) = 0.e0347 ztdva(:,:,:) = 0.e0348 ztdua(:,:,1) = ztsx(:,:)349 ztdva(:,:,1) = ztsy(:,:)350 CALL trd_mod(ztdua , ztdva , jpdtdswf, 'DYN', kt)351 ztdua(:,:,:) = 0.e0352 ztdva(:,:,:) = 0.e0353 ztdua(:,:,1) = ztbx(:,:)354 ztdva(:,:,1) = ztby(:,:)355 CALL trd_mod(ztdua , ztdva , jpdtdbfr, 'DYN', kt)356 ENDIF357 358 IF(ln_ctl) THEN ! print sum trends (used for debugging)359 CALL prt_ctl(tab3d_1=ua, clinfo1=' zdf - Ua: ', mask1=umask, &360 & tab3d_2=va, clinfo2=' Va: ', mask2=vmask, clinfo3='dyn')361 ENDIF362 363 307 END SUBROUTINE dyn_zdf_imp 364 308
Note: See TracChangeset
for help on using the changeset viewer.