Changeset 457 for trunk/NEMO/OPA_SRC/TRA/traldf_iso.F90
- Timestamp:
- 2006-05-10T19:01:19+02:00 (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/TRA/traldf_iso.F90
r410 r457 1 1 MODULE traldf_iso 2 2 !!============================================================================== 3 !! 3 !! *** MODULE traldf_iso *** 4 4 !! Ocean active tracers: horizontal component of the lateral tracer mixing trend 5 5 !!============================================================================== 6 #if defined key_ldfslp || defined key_esopa 7 !!---------------------------------------------------------------------- 8 !! 'key_ldfslp' rotation of the lateral mixing tensor 9 !!---------------------------------------------------------------------- 10 !! tra_ldf_iso : update the tracer trend with the horizontal component 11 !! of iso neutral laplacian operator or horizontal 12 !! laplacian operator in s-coordinate 6 #if defined key_ldfslp || defined key_esopa 7 !!---------------------------------------------------------------------- 8 !! 'key_ldfslp' slope of the lateral diffusive direction 9 !!---------------------------------------------------------------------- 10 !! tra_ldf_iso : update the tracer trend with the horizontal 11 !! component of a iso-neutral laplacian operator 12 !! and with the vertical part of 13 !! the isopycnal or geopotential s-coord. operator 14 !! vector optimization, use k-j-i loops. 13 15 !!---------------------------------------------------------------------- 14 16 !! * Modules used 15 USE oce ! ocean dynamics and tracers variables16 USE dom_oce ! ocean space and time domain variables17 USE oce ! ocean dynamics and active tracers 18 USE dom_oce ! ocean space and time domain 17 19 USE ldftra_oce ! ocean active tracers: lateral physics 18 20 USE trdmod ! ocean active tracers trends 19 21 USE trdmod_oce ! ocean variables trends 22 USE zdf_oce ! ocean vertical physics 20 23 USE in_out_manager ! I/O manager 21 24 USE ldfslp ! iso-neutral slopes … … 23 26 USE prtctl ! Print control 24 27 28 25 29 IMPLICIT NONE 26 30 PRIVATE 27 31 28 !! * Routine accessibility29 PUBLIC tra_ldf_iso ! routine called by step.F9032 !! * Accessibility 33 PUBLIC tra_ldf_iso ! routine called by step.F90 30 34 31 35 !! * Substitutions 32 36 # include "domzgr_substitute.h90" 33 37 # include "ldftra_substitute.h90" 34 # include "ldfeiv_substitute.h90"35 38 # include "vectopt_loop_substitute.h90" 36 39 !!---------------------------------------------------------------------- 37 !!---------------------------------------------------------------------- 38 !! OPA 9.0 , LOCEAN-IPSL (2005) 39 !! $Header$ 40 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 41 !!---------------------------------------------------------------------- 40 !! OPA 9.0 , LOCEAN-IPSL (2005) 41 !!---------------------------------------------------------------------- 42 42 43 CONTAINS 43 44 … … 45 46 !!---------------------------------------------------------------------- 46 47 !! *** ROUTINE tra_ldf_iso *** 47 !! 48 !! 48 49 !! ** Purpose : Compute the before horizontal tracer (t & s) diffusive 49 !! trend and add it to the general trend of tracer equation. 50 !! trend for a laplacian tensor (ezxcept the dz[ dz[.] ] term) and 51 !! add it to the general trend of tracer equation. 50 52 !! 51 53 !! ** Method : The horizontal component of the lateral diffusive trends … … 55 57 !! nal or geopotential slopes computed in routine ldfslp. 56 58 !! 57 !! horizontal fluxes associated with the rotated lateral mixing: 59 !! 1st part : masked horizontal derivative of T & S ( di[ t ] ) 60 !! ======== with partial cell update if ln_zps=T. 61 !! 62 !! 2nd part : horizontal fluxes of the lateral mixing operator 63 !! ======== 58 64 !! zftu = (aht+ahtb0) e2u*e3u/e1u di[ tb ] 59 65 !! - aht e2u*uslp dk[ mi(mk(tb)) ] 60 66 !! zftv = (aht+ahtb0) e1v*e3v/e2v dj[ tb ] 61 67 !! - aht e2u*vslp dk[ mj(mk(tb)) ] 62 !! add horizontal Eddy Induced advective fluxes (lk_traldf_eiv=T):63 !! zftu = zftu - dk-1[ aht e2u mi(wslpi) ] mi( tb )64 !! zftv = zftv - dk-1[ aht e1v mj(wslpj) ] mj( tb )65 68 !! take the horizontal divergence of the fluxes: 66 69 !! difft = 1/(e1t*e2t*e3t) { di-1[ zftu ] + dj-1[ zftv ] } … … 68 71 !! ta = ta + difft 69 72 !! 70 !! ** Action : - Update (ta,sa) arrays with the before isopycnal or 71 !! geopotential s-coord harmonic mixing trend. 72 !! - Save the trends in (ztdta,ztdsa) ('key_trdtra') 73 !! 3rd part: vertical trends of the lateral mixing operator 74 !! ======== (excluding the vertical flux proportional to dk[t] ) 75 !! vertical fluxes associated with the rotated lateral mixing: 76 !! zftw =-aht { e2t*wslpi di[ mi(mk(tb)) ] 77 !! + e1t*wslpj dj[ mj(mk(tb)) ] } 78 !! take the horizontal divergence of the fluxes: 79 !! difft = 1/(e1t*e2t*e3t) dk[ zftw ] 80 !! Add this trend to the general trend (ta,sa): 81 !! ta = ta + difft 82 !! 83 !! ** Action : 84 !! Update (ta,sa) arrays with the before rotated diffusion trend 85 !! (except the dk[ dk[.] ] term) 73 86 !! 74 87 !! History : … … 77 90 !! 8.5 ! 02-08 (G. Madec) Free form, F90 78 91 !! 9.0 ! 04-08 (C. Talandier) New trends organization 92 !! ! 05-11 (G. Madec) merge traldf and trazdf :-) 79 93 !!---------------------------------------------------------------------- 80 94 !! * Modules used 81 USE oce , zft u => ua,& ! use ua as workspace82 & zfs u => va! use va as workspace95 USE oce , zftv => ua, & ! use ua as workspace 96 & zfsv => va ! use va as workspace 83 97 84 98 !! * Arguments 85 INTEGER, INTENT( in ) :: kt ! ocean time-step index99 INTEGER, INTENT( in ) :: kt ! ocean time-step index 86 100 87 101 !! * Local declarations 88 INTEGER :: ji, jj, jk ! dummy loop indices 102 INTEGER :: ji, jj, jk ! dummy loop indices 103 INTEGER :: iku, ikv ! temporary integer 89 104 REAL(wp) :: & 90 zabe1, zabe2, zcof1, zcof2, & ! temporary scalars 91 #if defined key_traldf_eiv 92 zcg1, zcg2, zuwk, zvwk, & 93 zuwk1, zvwk1, & 94 #endif 95 zmsku, zmskv, zbtr, zta, zsa 96 REAL(wp), DIMENSION(jpi,jpj) :: & 97 zdkt, zdk1t, & ! workspace 98 zdks, zdk1s 99 #if defined key_traldf_eiv 100 REAL(wp), DIMENSION(jpi,jpj) :: & 101 zftug, zftvg, & 102 zfsug, zfsvg 103 #endif 104 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & 105 zftv, zfsv, & ! workspace 106 ztdta, ztdsa 105 zabe1, zabe2, zcof1, zcof2, & ! temporary scalars 106 zmsku, zta, & ! " " 107 zmskv, zsa, zbtr, & ! " " 108 zcoef0, zcoef3, zcoef4 ! " " 109 REAL(wp), DIMENSION(jpi,jpj) :: & ! temporary workspace 110 zdkt , zdk1t, zftu, & ! " " 111 zdks , zdk1s, zfsu ! " " 112 REAL(wp), DIMENSION(jpi,jpj,jpk) :: & 113 zdit, zdjt, ztfw, & ! temporary workspace 114 zdis, zdjs, zsfw ! " " 107 115 !!---------------------------------------------------------------------- 108 116 109 117 IF( kt == nit000 ) THEN 110 118 IF(lwp) WRITE(numout,*) 111 IF(lwp) WRITE(numout,*) 'tra_ldf_iso : iso neutral lateral diffusion or' 112 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~ horizontal laplacian diffusion in s-coordinate' 113 #if defined key_diaeiv 114 u_eiv(:,:,:) = 0.e0 115 v_eiv(:,:,:) = 0.e0 116 #endif 119 IF(lwp) WRITE(numout,*) 'tra_ldf_iso : rotated laplacian diffusion operator' 120 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 117 121 ENDIF 118 122 119 ! Save ta and sa trends 120 IF( l_trdtra ) THEN 121 ztdta(:,:,:) = ta(:,:,:) 122 ztdsa(:,:,:) = sa(:,:,:) 123 !!---------------------------------------------------------------------- 124 !! I - masked horizontal derivative of T & S 125 !!---------------------------------------------------------------------- 126 !!bug ajout.... why? ( 1,jpj,:) and (jpi,1,:) should be sufficient.... 127 zdit (1,:,:) = 0.e0 ; zdit (jpi,:,:) = 0.e0 128 zdis (1,:,:) = 0.e0 ; zdis (jpi,:,:) = 0.e0 129 zdjt (1,:,:) = 0.e0 ; zdjt (jpi,:,:) = 0.e0 130 zdjs (1,:,:) = 0.e0 ; zdjs (jpi,:,:) = 0.e0 131 !!end 132 133 134 ! Horizontal temperature and salinity gradient 135 DO jk = 1, jpkm1 136 DO jj = 1, jpjm1 137 DO ji = 1, fs_jpim1 ! vector opt. 138 zdit(ji,jj,jk) = ( tb(ji+1,jj ,jk) - tb(ji,jj,jk) ) * umask(ji,jj,jk) 139 zdis(ji,jj,jk) = ( sb(ji+1,jj ,jk) - sb(ji,jj,jk) ) * umask(ji,jj,jk) 140 zdjt(ji,jj,jk) = ( tb(ji ,jj+1,jk) - tb(ji,jj,jk) ) * vmask(ji,jj,jk) 141 zdjs(ji,jj,jk) = ( sb(ji ,jj+1,jk) - sb(ji,jj,jk) ) * vmask(ji,jj,jk) 142 END DO 143 END DO 144 END DO 145 IF( ln_zps ) THEN ! partial steps correction at the last level 146 DO jj = 1, jpjm1 147 DO ji = 1, fs_jpim1 ! vector opt. 148 ! last level 149 iku = MIN( mbathy(ji,jj), mbathy(ji+1,jj ) ) - 1 150 ikv = MIN( mbathy(ji,jj), mbathy(ji ,jj+1) ) - 1 151 zdit(ji,jj,iku) = gtu(ji,jj) 152 zdis(ji,jj,iku) = gsu(ji,jj) 153 zdjt(ji,jj,ikv) = gtv(ji,jj) 154 zdjs(ji,jj,ikv) = gsv(ji,jj) 155 END DO 156 END DO 123 157 ENDIF 124 158 159 !!---------------------------------------------------------------------- 160 !! II - horizontal trend of T & S (full) 161 !!---------------------------------------------------------------------- 162 163 !CDIR PARALLEL DO PRIVATE( zdk1t, zdk1s, zftu, zfsu ) 164 !$OMP PARALLEL DO PRIVATE( zdk1t, zdk1s, zftu, zfsu ) 125 165 ! ! =============== 126 166 DO jk = 1, jpkm1 ! Horizontal slab … … 150 190 zabe2 = ( fsahtv(ji,jj,jk) + ahtb0 ) * e1v(ji,jj) * fse3v(ji,jj,jk) / e2v(ji,jj) 151 191 152 zmsku = 1. / MAX( 153 154 155 zmskv = 1. / MAX( 156 192 zmsku = 1. / MAX( tmask(ji+1,jj,jk ) + tmask(ji,jj,jk+1) & 193 & + tmask(ji+1,jj,jk+1) + tmask(ji,jj,jk ), 1. ) 194 195 zmskv = 1. / MAX( tmask(ji,jj+1,jk ) + tmask(ji,jj,jk+1) & 196 & + tmask(ji,jj+1,jk+1) + tmask(ji,jj,jk ), 1. ) 157 197 158 198 zcof1 = -fsahtu(ji,jj,jk) * e2u(ji,jj) * uslp(ji,jj,jk) * zmsku 159 199 zcof2 = -fsahtv(ji,jj,jk) * e1v(ji,jj) * vslp(ji,jj,jk) * zmskv 160 200 161 zftu(ji,jj,jk) = umask(ji,jj,jk) * ( zabe1 * ( tb(ji+1,jj,jk) - tb(ji,jj,jk) ) & 162 & + zcof1 * ( zdkt (ji+1,jj) + zdk1t(ji,jj) & 163 & + zdk1t(ji+1,jj) + zdkt (ji,jj) ) ) 164 165 zftv(ji,jj,jk) = vmask(ji,jj,jk) * ( zabe2 * ( tb(ji,jj+1,jk) - tb(ji,jj,jk) ) & 166 & + zcof2 * ( zdkt (ji,jj+1) + zdk1t(ji,jj) & 167 & + zdk1t(ji,jj+1) + zdkt (ji,jj) ) ) 168 169 zfsu(ji,jj,jk) = umask(ji,jj,jk) * ( zabe1 * ( sb(ji+1,jj,jk) - sb(ji,jj,jk) ) & 170 & + zcof1 * ( zdks (ji+1,jj) + zdk1s(ji,jj) & 171 & + zdk1s(ji+1,jj) + zdks (ji,jj) ) ) 172 173 zfsv(ji,jj,jk) = vmask(ji,jj,jk) * ( zabe2 * ( sb(ji,jj+1,jk) - sb(ji,jj,jk) ) & 174 & + zcof2 * ( zdks (ji,jj+1) + zdk1s(ji,jj) & 175 & + zdk1s(ji,jj+1) + zdks (ji,jj) ) ) 176 END DO 177 END DO 178 179 # if defined key_traldf_eiv 180 ! ! ---------------------------------------! 181 ! ! Eddy induced vertical advective fluxes ! 182 ! ! ---------------------------------------! 183 DO jj = 1, jpjm1 184 DO ji = 1, fs_jpim1 ! vector opt. 185 zuwk = ( wslpi(ji,jj,jk ) + wslpi(ji+1,jj,jk ) ) * fsaeiu(ji,jj,jk ) * umask(ji,jj,jk ) 186 zuwk1= ( wslpi(ji,jj,jk+1) + wslpi(ji+1,jj,jk+1) ) * fsaeiu(ji,jj,jk+1) * umask(ji,jj,jk+1) 187 zvwk = ( wslpj(ji,jj,jk ) + wslpj(ji,jj+1,jk ) ) * fsaeiv(ji,jj,jk ) * vmask(ji,jj,jk ) 188 zvwk1= ( wslpj(ji,jj,jk+1) + wslpj(ji,jj+1,jk+1) ) * fsaeiv(ji,jj,jk+1) * vmask(ji,jj,jk+1) 189 190 zcg1= -0.25 * e2u(ji,jj) * umask(ji,jj,jk) * ( zuwk-zuwk1 ) 191 zcg2= -0.25 * e1v(ji,jj) * vmask(ji,jj,jk) * ( zvwk-zvwk1 ) 192 193 zftug(ji,jj) = zcg1 * ( tb(ji+1,jj,jk) + tb(ji,jj,jk) ) 194 zftvg(ji,jj) = zcg2 * ( tb(ji,jj+1,jk) + tb(ji,jj,jk) ) 195 zfsug(ji,jj) = zcg1 * ( sb(ji+1,jj,jk) + sb(ji,jj,jk) ) 196 zfsvg(ji,jj) = zcg2 * ( sb(ji,jj+1,jk) + sb(ji,jj,jk) ) 197 198 zftu(ji,jj,jk) = zftu(ji,jj,jk) + zftug(ji,jj) 199 zftv(ji,jj,jk) = zftv(ji,jj,jk) + zftvg(ji,jj) 200 zfsu(ji,jj,jk) = zfsu(ji,jj,jk) + zfsug(ji,jj) 201 zfsv(ji,jj,jk) = zfsv(ji,jj,jk) + zfsvg(ji,jj) 202 # if defined key_diaeiv 203 u_eiv(ji,jj,jk) = -2. * zcg1 / ( e2u(ji,jj) * fse3u(ji,jj,jk) ) 204 v_eiv(ji,jj,jk) = -2. * zcg2 / ( e1v(ji,jj) * fse3v(ji,jj,jk) ) 205 # endif 206 END DO 207 END DO 208 # endif 201 zftu(ji,jj ) = ( zabe1 * zdit(ji,jj,jk) & 202 & + zcof1 * ( zdkt (ji+1,jj) + zdk1t(ji,jj) & 203 & + zdk1t(ji+1,jj) + zdkt (ji,jj) ) ) * umask(ji,jj,jk) 204 zftv(ji,jj,jk) = ( zabe2 * zdjt(ji,jj,jk) & 205 & + zcof2 * ( zdkt (ji,jj+1) + zdk1t(ji,jj) & 206 & + zdk1t(ji,jj+1) + zdkt (ji,jj) ) ) * vmask(ji,jj,jk) 207 zfsu(ji,jj ) = ( zabe1 * zdis(ji,jj,jk) & 208 & + zcof1 * ( zdks (ji+1,jj) + zdk1s(ji,jj) & 209 & + zdk1s(ji+1,jj) + zdks (ji,jj) ) ) * umask(ji,jj,jk) 210 zfsv(ji,jj,jk) = ( zabe2 * zdjs(ji,jj,jk) & 211 & + zcof2 * ( zdks (ji,jj+1) + zdk1s(ji,jj) & 212 & + zdk1s(ji,jj+1) + zdks (ji,jj) ) ) * vmask(ji,jj,jk) 213 END DO 214 END DO 215 209 216 210 217 ! II.4 Second derivative (divergence) and add to the general trend … … 214 221 DO ji = fs_2, fs_jpim1 ! vector opt. 215 222 zbtr= 1. / ( e1t(ji,jj)*e2t(ji,jj)*fse3t(ji,jj,jk) ) 216 zta = zbtr * ( zftu(ji,jj,jk) - zftu(ji-1,jj ,jk) & 217 & + zftv(ji,jj,jk) - zftv(ji ,jj-1,jk) ) 218 zsa = zbtr * ( zfsu(ji,jj,jk) - zfsu(ji-1,jj ,jk) & 219 & + zfsv(ji,jj,jk) - zfsv(ji ,jj-1,jk) ) 223 zta = zbtr * ( zftu(ji,jj ) - zftu(ji-1,jj ) + zftv(ji,jj,jk) - zftv(ji,jj-1,jk) ) 224 zsa = zbtr * ( zfsu(ji,jj ) - zfsu(ji-1,jj ) + zfsv(ji,jj,jk) - zfsv(ji,jj-1,jk) ) 220 225 ta (ji,jj,jk) = ta (ji,jj,jk) + zta 221 226 sa (ji,jj,jk) = sa (ji,jj,jk) + zsa … … 226 231 ! ! =============== 227 232 228 ! save the trends for diagnostic229 ! save the horizontal diffusive trends230 IF( l_trdtra ) THEN231 # if defined key_traldf_eiv232 DO jk = 1 , jpkm1233 DO jj = 2 , jpjm1234 DO ji = fs_2, fs_jpim1 ! vector opt.235 zbtr= 1. / ( e1t(ji,jj)*e2t(ji,jj)*fse3t(ji,jj,jk) )236 tladi(ji,jj,jk) = ( zftug(ji,jj) - zftug(ji-1,jj ) ) * zbtr237 tladj(ji,jj,jk) = ( zftvg(ji,jj) - zftvg(ji ,jj-1) ) * zbtr238 sladi(ji,jj,jk) = ( zfsug(ji,jj) - zfsug(ji-1,jj ) ) * zbtr239 sladj(ji,jj,jk) = ( zfsvg(ji,jj) - zfsvg(ji ,jj-1) ) * zbtr240 END DO241 END DO242 END DO243 # else244 tladi(:,:,:) = 0.e0245 tladj(:,:,:) = 0.e0246 sladi(:,:,:) = 0.e0247 sladj(:,:,:) = 0.e0248 # endif249 250 ! Substract the eddy induced velocity for T/S251 ztdta(:,:,:) = ta(:,:,:) - ztdta(:,:,:) - tladi(:,:,:) - tladj(:,:,:)252 ztdsa(:,:,:) = sa(:,:,:) - ztdsa(:,:,:) - sladi(:,:,:) - sladj(:,:,:)253 254 CALL trd_mod(ztdta, ztdsa, jpttdldf, 'TRA', kt)255 ENDIF256 257 IF(ln_ctl) THEN ! print mean trends (used for debugging)258 CALL prt_ctl(tab3d_1=ta, clinfo1=' ldf - Ta: ', mask1=tmask, &259 & tab3d_2=sa, clinfo2=' Sa: ', mask2=tmask, clinfo3='tra')260 ENDIF261 262 !!bug no separation of diff iso and eiv263 233 IF( ln_diaptr .AND. ( MOD( kt, nf_ptr ) == 0 ) ) THEN 264 234 ! "zonal" mean lateral diffusive heat and salt transports 265 235 pht_ldf(:) = ptr_vj( zftv(:,:,:) ) 266 236 pst_ldf(:) = ptr_vj( zfsv(:,:,:) ) 267 ! "zonal" mean lateral eddy induced velocity heat and salt transports268 #if defined key_diaeiv269 pht_eiv(:) = ptr_vj( zftv(:,:,:) )270 pst_eiv(:) = ptr_vj( zfsv(:,:,:) )271 #endif272 237 ENDIF 273 238 239 !!---------------------------------------------------------------------- 240 !! III - vertical trend of T & S (extra diagonal terms only) 241 !!---------------------------------------------------------------------- 242 243 ! Local constant initialization 244 ! ----------------------------- 245 ztfw(1,:,:) = 0.e0 ; ztfw(jpi,:,:) = 0.e0 246 zsfw(1,:,:) = 0.e0 ; zsfw(jpi,:,:) = 0.e0 247 248 249 ! Vertical fluxes 250 ! --------------- 251 252 ! Surface and bottom vertical fluxes set to zero 253 ztfw(:,:, 1 ) = 0.e0 ; ztfw(:,:,jpk) = 0.e0 254 zsfw(:,:, 1 ) = 0.e0 ; zsfw(:,:,jpk) = 0.e0 255 256 ! interior (2=<jk=<jpk-1) 257 DO jk = 2, jpkm1 258 DO jj = 2, jpjm1 259 DO ji = fs_2, fs_jpim1 ! vector opt. 260 zcoef0 = - fsahtw(ji,jj,jk) * tmask(ji,jj,jk) 261 262 zmsku = 1./MAX( umask(ji ,jj,jk-1) + umask(ji-1,jj,jk) & 263 & + umask(ji-1,jj,jk-1) + umask(ji ,jj,jk), 1. ) 264 265 zmskv = 1./MAX( vmask(ji,jj ,jk-1) + vmask(ji,jj-1,jk) & 266 & + vmask(ji,jj-1,jk-1) + vmask(ji,jj ,jk), 1. ) 267 268 zcoef3 = zcoef0 * e2t(ji,jj) * zmsku * wslpi (ji,jj,jk) 269 zcoef4 = zcoef0 * e1t(ji,jj) * zmskv * wslpj (ji,jj,jk) 270 271 ztfw(ji,jj,jk) = zcoef3 * ( zdit(ji ,jj ,jk-1) + zdit(ji-1,jj ,jk) & 272 & + zdit(ji-1,jj ,jk-1) + zdit(ji ,jj ,jk) ) & 273 & + zcoef4 * ( zdjt(ji ,jj ,jk-1) + zdjt(ji ,jj-1,jk) & 274 & + zdjt(ji ,jj-1,jk-1) + zdjt(ji ,jj ,jk) ) 275 276 zsfw(ji,jj,jk) = zcoef3 * ( zdis(ji ,jj ,jk-1) + zdis(ji-1,jj ,jk) & 277 & + zdis(ji-1,jj ,jk-1) + zdis(ji ,jj ,jk) ) & 278 & + zcoef4 * ( zdjs(ji ,jj ,jk-1) + zdjs(ji ,jj-1,jk) & 279 & + zdjs(ji ,jj-1,jk-1) + zdjs(ji ,jj ,jk) ) 280 END DO 281 END DO 282 END DO 283 284 285 ! I.5 Divergence of vertical fluxes added to the general tracer trend 286 ! ------------------------------------------------------------------- 287 288 DO jk = 1, jpkm1 289 DO jj = 2, jpjm1 290 DO ji = fs_2, fs_jpim1 ! vector opt. 291 zbtr = 1. / ( e1t(ji,jj)*e2t(ji,jj)*fse3t(ji,jj,jk) ) 292 zta = ( ztfw(ji,jj,jk) - ztfw(ji,jj,jk+1) ) * zbtr 293 zsa = ( zsfw(ji,jj,jk) - zsfw(ji,jj,jk+1) ) * zbtr 294 ta(ji,jj,jk) = ta(ji,jj,jk) + zta 295 sa(ji,jj,jk) = sa(ji,jj,jk) + zsa 296 END DO 297 END DO 298 END DO 299 274 300 END SUBROUTINE tra_ldf_iso 275 301 276 302 #else 277 303 !!---------------------------------------------------------------------- 278 !! Dummy module : No rotation of the lateral mixingtensor304 !! default option : Dummy code NO rotation of the diffusive tensor 279 305 !!---------------------------------------------------------------------- 280 306 CONTAINS 281 307 SUBROUTINE tra_ldf_iso( kt ) ! Empty routine 308 INTEGER :: kt 282 309 WRITE(*,*) 'tra_ldf_iso: You should not have seen this print! error?', kt 283 310 END SUBROUTINE tra_ldf_iso
Note: See TracChangeset
for help on using the changeset viewer.