- Timestamp:
- 2013-04-09T18:34:38+02:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_lap.F90
r3294 r3865 31 31 32 32 PUBLIC tra_ldf_lap ! routine called by step.F90 33 34 REAL(wp), SAVE, ALLOCATABLE, DIMENSION(:,:) :: e1ur, e2vr ! scale factor coefficients35 33 36 34 !! * Substitutions … … 85 83 IF(lwp) WRITE(numout,*) 'tra_ldf_lap : iso-level laplacian diffusion on ', cdtype 86 84 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~ ' 87 !88 IF( .NOT. ALLOCATED( e1ur ) ) THEN89 ! This routine may be called for both active and passive tracers.90 ! Allocate and set saved arrays on first call only.91 ALLOCATE( e1ur(jpi,jpj), e2vr(jpi,jpj), STAT=ierr )92 IF( lk_mpp ) CALL mpp_sum( ierr )93 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'tra_ldf_lap : unable to allocate arrays' )94 !95 e1ur(:,:) = e2u(:,:) / e1u(:,:)96 e2vr(:,:) = e1v(:,:) / e2v(:,:)97 ENDIF98 85 ENDIF 99 86 … … 107 94 DO jj = 1, jpjm1 108 95 DO ji = 1, fs_jpim1 ! vector opt. 109 zabe1 = fsahtu(ji,jj,jk) * umask(ji,jj,jk) * e1ur(ji,jj) * fse3u(ji,jj,jk)110 zabe2 = fsahtv(ji,jj,jk) * vmask(ji,jj,jk) * e2vr(ji,jj) * fse3v(ji,jj,jk)96 zabe1 = fsahtu(ji,jj,jk) * umask(ji,jj,jk) * re2u_e1u(ji,jj) * fse3u_n(ji,jj,jk) 97 zabe2 = fsahtv(ji,jj,jk) * vmask(ji,jj,jk) * re1v_e2v(ji,jj) * fse3v_n(ji,jj,jk) 111 98 ztu(ji,jj,jk) = zabe1 * ( ptb(ji+1,jj ,jk,jn) - ptb(ji,jj,jk,jn) ) 112 99 ztv(ji,jj,jk) = zabe2 * ( ptb(ji ,jj+1,jk,jn) - ptb(ji,jj,jk,jn) ) … … 120 107 ikv = mbkv(ji,jj) 121 108 IF( iku == jk ) THEN 122 zabe1 = fsahtu(ji,jj,iku) * umask(ji,jj,iku) * e1ur(ji,jj) * fse3u(ji,jj,iku)109 zabe1 = fsahtu(ji,jj,iku) * umask(ji,jj,iku) * re2u_e1u(ji,jj) * fse3u_n(ji,jj,iku) 123 110 ztu(ji,jj,jk) = zabe1 * pgu(ji,jj,jn) 124 111 ENDIF 125 112 IF( ikv == jk ) THEN 126 zabe2 = fsahtv(ji,jj,ikv) * vmask(ji,jj,ikv) * e2vr(ji,jj) * fse3v(ji,jj,ikv)113 zabe2 = fsahtv(ji,jj,ikv) * vmask(ji,jj,ikv) * re1v_e2v(ji,jj) * fse3v_n(ji,jj,ikv) 127 114 ztv(ji,jj,jk) = zabe2 * pgv(ji,jj,jn) 128 115 ENDIF … … 136 123 DO jj = 2, jpjm1 137 124 DO ji = fs_2, fs_jpim1 ! vector opt. 138 zbtr = 1._wp / ( e1 t(ji,jj) *e2t(ji,jj) * fse3t(ji,jj,jk) )125 zbtr = 1._wp / ( e12t(ji,jj) * fse3t_n(ji,jj,jk) ) 139 126 ! horizontal diffusive trends added to the general tracer trends 140 127 pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + zbtr * ( ztu(ji,jj,jk) - ztu(ji-1,jj,jk) &
Note: See TracChangeset
for help on using the changeset viewer.