- Timestamp:
- 2016-11-28T17:04:10+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_INGV_UKMO_2016/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90
r5930 r7351 32 32 USE trd_oce ! trends: ocean variables 33 33 USE trddyn ! trend manager: dynamics 34 USE c1d ! 1D vertical configuration35 34 ! 36 35 USE lbclnk ! ocean lateral boundary conditions (or mpp link) … … 76 75 77 76 !! * Substitutions 78 # include "domzgr_substitute.h90"79 77 # include "vectopt_loop_substitute.h90" 80 78 !!---------------------------------------------------------------------- … … 285 283 286 284 IF( ln_sco ) THEN 287 zwz(:,:) = zwz(:,:) / fse3f(:,:,jk)288 zwx(:,:) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk)289 zwy(:,:) = e1v(:,:) * fse3v(:,:,jk) * vn(:,:,jk)285 zwz(:,:) = zwz(:,:) / e3f_n(:,:,jk) 286 zwx(:,:) = e2u(:,:) * e3u_n(:,:,jk) * un(:,:,jk) 287 zwy(:,:) = e1v(:,:) * e3v_n(:,:,jk) * vn(:,:,jk) 290 288 ELSE 291 289 zwx(:,:) = e2u(:,:) * un(:,:,jk) … … 405 403 ! 406 404 IF( ln_sco ) THEN !== horizontal fluxes ==! 407 zwz(:,:) = zwz(:,:) / fse3f(:,:,jk)408 zwx(:,:) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk)409 zwy(:,:) = e1v(:,:) * fse3v(:,:,jk) * vn(:,:,jk)405 zwz(:,:) = zwz(:,:) / e3f_n(:,:,jk) 406 zwx(:,:) = e2u(:,:) * e3u_n(:,:,jk) * un(:,:,jk) 407 zwy(:,:) = e1v(:,:) * e3v_n(:,:,jk) * vn(:,:,jk) 410 408 ELSE 411 409 zwx(:,:) = e2u(:,:) * un(:,:,jk) … … 415 413 DO jj = 2, jpjm1 416 414 DO ji = fs_2, fs_jpim1 ! vector opt. 417 zuav = r1_8 * r1_e1u(ji,jj) * ( zwy(ji ,jj-1) + zwy(ji+1,jj-1)&418 & + zwy(ji ,jj ) + zwy(ji+1,jj ))419 zvau =-r1_8 * r1_e2v(ji,jj) * ( zwx(ji-1,jj ) + zwx(ji-1,jj+1)&420 & + zwx(ji ,jj ) + zwx(ji ,jj+1))415 zuav = r1_8 * r1_e1u(ji,jj) * ( zwy(ji ,jj-1) + zwy(ji+1,jj-1) & 416 & + zwy(ji ,jj ) + zwy(ji+1,jj ) ) 417 zvau =-r1_8 * r1_e2v(ji,jj) * ( zwx(ji-1,jj ) + zwx(ji-1,jj+1) & 418 & + zwx(ji ,jj ) + zwx(ji ,jj+1) ) 421 419 pua(ji,jj,jk) = pua(ji,jj,jk) + zuav * ( zwz(ji ,jj-1) + zwz(ji,jj) ) 422 420 pva(ji,jj,jk) = pva(ji,jj,jk) + zvau * ( zwz(ji-1,jj ) + zwz(ji,jj) ) … … 483 481 DO jj = 1, jpjm1 484 482 DO ji = 1, fs_jpim1 ! vector opt. 485 ze3 = ( fse3t(ji,jj+1,jk)*tmask(ji,jj+1,jk) + fse3t(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk) &486 & + fse3t(ji,jj ,jk)*tmask(ji,jj ,jk) + fse3t(ji+1,jj ,jk)*tmask(ji+1,jj ,jk))487 IF( ze3 /= 0._wp ) THEN ; z1_e3f(ji,jj) = 4. 0_wp / ze3488 ELSE ; z1_e3f(ji,jj) = 0. 0_wp483 ze3 = ( e3t_n(ji,jj+1,jk)*tmask(ji,jj+1,jk) + e3t_n(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk) & 484 & + e3t_n(ji,jj ,jk)*tmask(ji,jj ,jk) + e3t_n(ji+1,jj ,jk)*tmask(ji+1,jj ,jk) ) 485 IF( ze3 /= 0._wp ) THEN ; z1_e3f(ji,jj) = 4._wp / ze3 486 ELSE ; z1_e3f(ji,jj) = 0._wp 489 487 ENDIF 490 488 END DO … … 493 491 DO jj = 1, jpjm1 494 492 DO ji = 1, fs_jpim1 ! vector opt. 495 ze3 = ( fse3t(ji,jj+1,jk)*tmask(ji,jj+1,jk) + fse3t(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk) &496 & + fse3t(ji,jj ,jk)*tmask(ji,jj ,jk) + fse3t(ji+1,jj ,jk)*tmask(ji+1,jj ,jk))497 zmsk = ( tmask(ji,jj+1,jk) + tmask(ji+1,jj+1,jk) &498 & + tmask(ji,jj ,jk) + tmask(ji+1,jj ,jk))493 ze3 = ( e3t_n(ji,jj+1,jk)*tmask(ji,jj+1,jk) + e3t_n(ji+1,jj+1,jk)*tmask(ji+1,jj+1,jk) & 494 & + e3t_n(ji,jj ,jk)*tmask(ji,jj ,jk) + e3t_n(ji+1,jj ,jk)*tmask(ji+1,jj ,jk) ) 495 zmsk = ( tmask(ji,jj+1,jk) + tmask(ji+1,jj+1,jk) & 496 & + tmask(ji,jj ,jk) + tmask(ji+1,jj ,jk) ) 499 497 IF( ze3 /= 0._wp ) THEN ; z1_e3f(ji,jj) = zmsk / ze3 500 ELSE ; z1_e3f(ji,jj) = 0. 0_wp498 ELSE ; z1_e3f(ji,jj) = 0._wp 501 499 ENDIF 502 500 END DO … … 559 557 ! 560 558 ! !== horizontal fluxes ==! 561 zwx(:,:) = e2u(:,:) * fse3u(:,:,jk) * un(:,:,jk)562 zwy(:,:) = e1v(:,:) * fse3v(:,:,jk) * vn(:,:,jk)559 zwx(:,:) = e2u(:,:) * e3u_n(:,:,jk) * un(:,:,jk) 560 zwy(:,:) = e1v(:,:) * e3v_n(:,:,jk) * vn(:,:,jk) 563 561 564 562 ! !== compute and add the vorticity term trend =! … … 634 632 WRITE(numout,*) ' enstrophy and energy conserving scheme ln_dynvor_een = ', ln_dynvor_een 635 633 WRITE(numout,*) ' e3f = averaging /4 (=0) or /sum(tmask) (=1) nn_een_e3f = ', nn_een_e3f 636 WRITE(numout,*) ' masked (= 1) or unmasked(=0) vorticity ln_dynvor_msk = ', ln_dynvor_msk634 WRITE(numout,*) ' masked (=T) or unmasked(=F) vorticity ln_dynvor_msk = ', ln_dynvor_msk 637 635 ENDIF 638 636 … … 663 661 IF( ln_dynvor_een ) THEN ; ioptio = ioptio + 1 ; nvor_scheme = np_EEN ; ENDIF 664 662 ! 665 IF( ( ioptio /= 1).AND.( .NOT.lk_c1d )) CALL ctl_stop( ' use ONE and ONLY one vorticity scheme' )663 IF( ioptio /= 1 ) CALL ctl_stop( ' use ONE and ONLY one vorticity scheme' ) 666 664 ! 667 665 IF(lwp) WRITE(numout,*) ! type of calculated vorticity (set ncor, nrvm, ntot)
Note: See TracChangeset
for help on using the changeset viewer.