Changes from NEMO/branches/2021/dev_r14393_HPC-03_Mele_Comm_Cleanup/src/OCE/TRA/traldf_triad.F90 at r14757 to NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA/traldf_triad.F90 at r14787
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14273_HPC-02_Daley_Tiling/src/OCE/TRA/traldf_triad.F90
r14757 r14787 13 13 USE oce ! ocean dynamics and active tracers 14 14 USE dom_oce ! ocean space and time domain 15 ! TEMP: [tiling] This change not necessary if XIOS has subdomain support16 USE domtile17 15 USE domutl, ONLY : is_tile 18 16 USE phycst ! physical constants … … 109 107 REAL(wp), DIMENSION(A2D_T(ktt_rhs),JPK,KJPT), INTENT(inout) :: pt_rhs ! tracer trend 110 108 ! 111 INTEGER :: ji, jj, jk, jn, kp ! dummy loop indices109 INTEGER :: ji, jj, jk, jn, kp, iij ! dummy loop indices 112 110 REAL(wp) :: zcoef0, ze3w_2, zsign ! - - 113 111 ! … … 115 113 REAL(wp) :: ze1ur, ze2vr, ze3wr, zdxt, zdyt, zdzt, zdyt_jp1, ze3wr_jp1, zdzt_jp1, zah_slp1, zah_slp_jp1, zaei_slp_jp1 116 114 REAL(wp) :: zah_slp, zaei_slp, zdxt_ip1, ze3wr_ip1, zdzt_ip1, zah_slp_ip1, zaei_slp_ip1, zaei_slp1 117 REAL(wp), DIMENSION(A2D(nn_hls),0:1) :: zdkt3d ! vertical tracer gradient at 2 levels 118 REAL(wp), DIMENSION(A2D(nn_hls) ) :: z2d ! 2D workspace 119 REAL(wp), DIMENSION(A2D(nn_hls) ,jpk) :: zdit, zdjt, zftu, zftv, ztfw ! 3D - 120 ! TEMP: [tiling] This can be A2D(nn_hls) if XIOS has subdomain support 121 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpsi_uw, zpsi_vw 115 REAL(wp), DIMENSION(A2D(nn_hls),0:1) :: zdkt3d ! vertical tracer gradient at 2 levels 116 REAL(wp), DIMENSION(A2D(nn_hls) ) :: z2d ! 2D workspace 117 REAL(wp), DIMENSION(A2D(nn_hls),jpk) :: zdit, zdjt, zftu, zftv, ztfw, zpsi_uw, zpsi_vw ! 3D - 122 118 !!---------------------------------------------------------------------- 123 119 ! 124 IF( ntile == 0.OR. ntile == 1 ) THEN ! Do only on the first tile120 IF( .NOT. l_istiled .OR. ntile == 1 ) THEN ! Do only on the first tile 125 121 IF( kpass == 1 .AND. kt == kit000 ) THEN 126 122 IF(lwp) WRITE(numout,*) … … 138 134 ENDIF 139 135 ! 136 ! Define pt_rhs halo points for multi-point haloes in bilaplacian case 137 IF( nldf_tra == np_blp_it .AND. kpass == 1 ) THEN ; iij = nn_hls 138 ELSE ; iij = 1 139 ENDIF 140 141 ! 140 142 IF( kpass == 1 ) THEN ; zsign = 1._wp ! bilaplacian operator require a minus sign (eddy diffusivity >0) 141 143 ELSE ; zsign = -1._wp … … 148 150 IF( kpass == 1 ) THEN !== first pass only and whatever the tracer is ==! 149 151 ! 150 DO_3D ( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpk )152 DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpk ) 151 153 akz (ji,jj,jk) = 0._wp 152 154 ah_wslp2(ji,jj,jk) = 0._wp … … 154 156 ! 155 157 DO kp = 0, 1 ! i-k triads 156 DO_3D ( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 )158 DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 157 159 ze3wr = 1._wp / e3w(ji,jj,jk+kp,Kmm) 158 160 zbu = e1e2u(ji,jj) * e3u(ji,jj,jk,Kmm) … … 177 179 ! 178 180 DO kp = 0, 1 ! j-k triads 179 DO_3D ( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 )181 DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) 180 182 ze3wr = 1.0_wp / e3w(ji,jj,jk+kp,Kmm) 181 183 zbv = e1e2v(ji,jj) * e3v(ji,jj,jk,Kmm) … … 204 206 ! 205 207 IF( ln_traldf_blp ) THEN ! bilaplacian operator 206 DO_3D ( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )208 DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 207 209 akz(ji,jj,jk) = 16._wp & 208 210 & * ah_wslp2 (ji,jj,jk) & … … 212 214 END_3D 213 215 ELSEIF( ln_traldf_lap ) THEN ! laplacian operator 214 DO_3D ( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )216 DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 ) 215 217 ze3w_2 = e3w(ji,jj,jk,Kmm) * e3w(ji,jj,jk,Kmm) 216 218 zcoef0 = rDt * ( akz(ji,jj,jk) + ah_wslp2(ji,jj,jk) / ze3w_2 ) … … 220 222 ! 221 223 ELSE ! 33 flux set to zero with akz=ah_wslp2 ==>> computed in full implicit 222 DO_3D ( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpk )224 DO_3D_OVR( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpk ) 223 225 akz(ji,jj,jk) = ah_wslp2(ji,jj,jk) 224 226 END_3D 225 227 ENDIF 226 228 ! 227 ! TEMP: [tiling] These changes not necessary if XIOS has subdomain support 228 IF( ntile == 0 .OR. ntile == nijtile ) THEN ! Do only for the full domain 229 IF( ln_ldfeiv_dia .AND. cdtype == 'TRA' ) THEN 230 IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = 0 ) 231 232 zpsi_uw(:,:,:) = 0._wp 233 zpsi_vw(:,:,:) = 0._wp 234 235 DO kp = 0, 1 236 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 237 ! round brackets added to fix the order of floating point operations 238 ! needed to ensure halo 1 - halo 2 compatibility 239 zpsi_uw(ji,jj,jk+kp) = zpsi_uw(ji,jj,jk+kp) & 240 & + ( 0.25_wp * aeiu(ji,jj,jk) * e2u(ji,jj) * triadi_g(ji,jj,jk,1,kp) & 241 & + 0.25_wp * aeiu(ji,jj,jk) * e2u(ji,jj) * triadi_g(ji+1,jj,jk,0,kp) & 242 & ) ! bracket for halo 1 - halo 2 compatibility 243 zpsi_vw(ji,jj,jk+kp) = zpsi_vw(ji,jj,jk+kp) & 244 & + ( 0.25_wp * aeiv(ji,jj,jk) * e1v(ji,jj) * triadj_g(ji,jj,jk,1,kp) & 245 & + 0.25_wp * aeiv(ji,jj,jk) * e1v(ji,jj) * triadj_g(ji,jj+1,jk,0,kp) & 246 & ) ! bracket for halo 1 - halo 2 compatibility 247 END_3D 248 END DO 249 CALL ldf_eiv_dia( zpsi_uw, zpsi_vw, Kmm ) 250 251 IF( ln_tile ) CALL dom_tile( ntsi, ntsj, ntei, ntej, ktile = nijtile ) 252 ENDIF 229 IF( ln_ldfeiv_dia .AND. cdtype == 'TRA' ) THEN 230 zpsi_uw(:,:,:) = 0._wp 231 zpsi_vw(:,:,:) = 0._wp 232 233 DO kp = 0, 1 234 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 235 ! round brackets added to fix the order of floating point operations 236 ! needed to ensure halo 1 - halo 2 compatibility 237 zpsi_uw(ji,jj,jk+kp) = zpsi_uw(ji,jj,jk+kp) & 238 & + ( 0.25_wp * aeiu(ji,jj,jk) * e2u(ji,jj) * triadi_g(ji,jj,jk,1,kp) & 239 & + 0.25_wp * aeiu(ji,jj,jk) * e2u(ji,jj) * triadi_g(ji+1,jj,jk,0,kp) & 240 & ) ! bracket for halo 1 - halo 2 compatibility 241 zpsi_vw(ji,jj,jk+kp) = zpsi_vw(ji,jj,jk+kp) & 242 & + ( 0.25_wp * aeiv(ji,jj,jk) * e1v(ji,jj) * triadj_g(ji,jj,jk,1,kp) & 243 & + 0.25_wp * aeiv(ji,jj,jk) * e1v(ji,jj) * triadj_g(ji,jj+1,jk,0,kp) & 244 & ) ! bracket for halo 1 - halo 2 compatibility 245 END_3D 246 END DO 247 CALL ldf_eiv_dia( zpsi_uw, zpsi_vw, Kmm ) 253 248 ENDIF 254 249 ! … … 263 258 zftu(:,:,:) = 0._wp 264 259 zftv(:,:,:) = 0._wp 265 ! 266 DO_3D( nn_hls, nn_hls-1, nn_hls, nn_hls-1, 1, jpkm1 ) !== before lateral T & S gradients at T-level jk ==! 260 zdit(:,:,:) = 0._wp 261 zdjt(:,:,:) = 0._wp 262 ! 263 DO_3D( iij, iij-1, iij, iij-1, 1, jpkm1 ) !== before lateral T & S gradients at T-level jk ==! 267 264 zdit(ji,jj,jk) = ( pt(ji+1,jj ,jk,jn) - pt(ji,jj,jk,jn) ) * umask(ji,jj,jk) 268 265 zdjt(ji,jj,jk) = ( pt(ji ,jj+1,jk,jn) - pt(ji,jj,jk,jn) ) * vmask(ji,jj,jk) 269 266 END_3D 270 267 IF( ln_zps .AND. l_grad_zps ) THEN ! partial steps: correction at top/bottom ocean level 271 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 ) ! bottom level268 DO_2D( iij, iij-1, iij, iij-1 ) ! bottom level 272 269 zdit(ji,jj,mbku(ji,jj)) = pgu(ji,jj,jn) 273 270 zdjt(ji,jj,mbkv(ji,jj)) = pgv(ji,jj,jn) 274 271 END_2D 275 272 IF( ln_isfcav ) THEN ! top level (ocean cavities only) 276 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 )273 DO_2D( iij, iij-1, iij, iij-1 ) 277 274 IF( miku(ji,jj) > 1 ) zdit(ji,jj,miku(ji,jj) ) = pgui(ji,jj,jn) 278 275 IF( mikv(ji,jj) > 1 ) zdjt(ji,jj,mikv(ji,jj) ) = pgvi(ji,jj,jn) … … 287 284 DO jk = 1, jpkm1 288 285 ! !== Vertical tracer gradient at level jk and jk+1 289 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls)286 DO_2D( iij, iij, iij, iij ) 290 287 zdkt3d(ji,jj,1) = ( pt(ji,jj,jk,jn) - pt(ji,jj,jk+1,jn) ) * tmask(ji,jj,jk+1) 291 288 END_2D … … 294 291 IF( jk == 1 ) THEN ; zdkt3d(:,:,0) = zdkt3d(:,:,1) 295 292 ELSE 296 DO_2D( nn_hls, nn_hls, nn_hls, nn_hls)293 DO_2D( iij, iij, iij, iij ) 297 294 zdkt3d(ji,jj,0) = ( pt(ji,jj,jk-1,jn) - pt(ji,jj,jk,jn) ) * tmask(ji,jj,jk) 298 295 END_2D … … 300 297 ! 301 298 zaei_slp = 0._wp 299 zaei_slp_ip1 = 0._wp 300 zaei_slp_jp1 = 0._wp 301 zaei_slp1 = 0._wp 302 302 ! 303 303 IF( ln_botmix_triad ) THEN 304 304 DO kp = 0, 1 !== Horizontal & vertical fluxes 305 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 )305 DO_2D( iij, iij-1, iij, iij-1 ) 306 306 ze1ur = r1_e1u(ji,jj) 307 307 zdxt = zdit(ji,jj,jk) * ze1ur … … 315 315 zbu_ip1 = 0.25_wp * e1e2u(ji+1,jj) * e3u(ji+1,jj,jk,Kmm) 316 316 ! ln_botmix_triad is .T. don't mask zah for bottom half cells !!gm ????? ahu is masked.... 317 zah = pahu(ji,jj,jk) 318 zah_ip1 = pahu(ji+1,jj,jk) 317 zah = pahu(ji,jj,jk) 318 zah_ip1 = pahu(ji+1,jj,jk) 319 319 zah_slp = zah * triadi(ji,jj,jk,1,kp) 320 320 zah_slp_ip1 = zah_ip1 * triadi(ji+1,jj,jk,1,kp) … … 331 331 & + ( zah * zdxt + zah_slp1 * zdzt_ip1 - zaei_slp1 * zdzt_ip1 ) * zbu * ze1ur & 332 332 & ) ! bracket for halo 1 - halo 2 compatibility 333 ztfw(ji+1,jj,jk+kp) = ztfw(ji+1,jj,jk+kp) & 333 ztfw(ji+1,jj,jk+kp) = ztfw(ji+1,jj,jk+kp) & 334 334 & - ( (zah_slp_ip1 + zaei_slp_ip1) * zdxt_ip1 * zbu_ip1 * ze3wr_ip1 & 335 & + ( zah_slp1 + zaei_slp1) * zdxt * zbu * ze3wr_ip1 & 335 & + ( zah_slp1 + zaei_slp1) * zdxt * zbu * ze3wr_ip1 & 336 336 & ) ! bracket for halo 1 - halo 2 compatibility 337 337 END_2D … … 339 339 ! 340 340 DO kp = 0, 1 341 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 )341 DO_2D( iij, iij-1, iij, iij-1 ) 342 342 ze2vr = r1_e2v(ji,jj) 343 343 zdyt = zdjt(ji,jj,jk) * ze2vr … … 351 351 ! ln_botmix_triad is .T. don't mask zah for bottom half cells !!gm ????? ahu is masked.... 352 352 zah = pahv(ji,jj,jk) ! pahv(ji,jj+jp,jk) ???? 353 zah_jp1 = pahv(ji,jj+1,jk) 353 zah_jp1 = pahv(ji,jj+1,jk) 354 354 zah_slp = zah * triadj(ji,jj,jk,1,kp) 355 355 zah_slp1 = zah * triadj(ji,jj+1,jk,0,kp) 356 356 zah_slp_jp1 = zah_jp1 * triadj(ji,jj+1,jk,1,kp) 357 357 IF( ln_ldfeiv ) THEN 358 zaei_slp = aeiv(ji,jj,jk) * triadj_g(ji,jj,jk,1,kp) 359 zaei_slp_jp1 = aeiv(ji,jj+1,jk) * triadj_g(ji,jj+1,jk,1,kp) 358 zaei_slp = aeiv(ji,jj,jk) * triadj_g(ji,jj,jk,1,kp) 359 zaei_slp_jp1 = aeiv(ji,jj+1,jk) * triadj_g(ji,jj+1,jk,1,kp) 360 360 zaei_slp1 = aeiv(ji,jj,jk) * triadj_g(ji,jj+1,jk,0,kp) 361 361 ENDIF … … 376 376 ! 377 377 DO kp = 0, 1 !== Horizontal & vertical fluxes 378 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 )378 DO_2D( iij, iij-1, iij, iij-1 ) 379 379 ze1ur = r1_e1u(ji,jj) 380 380 zdxt = zdit(ji,jj,jk) * ze1ur … … 389 389 ! ln_botmix_triad is .F. mask zah for bottom half cells 390 390 zah = pahu(ji,jj,jk) * umask(ji,jj,jk+kp) ! pahu(ji+ip,jj,jk) ===>> ???? 391 zah_ip1 = pahu(ji+1,jj,jk) * umask(ji+1,jj,jk+kp) 391 zah_ip1 = pahu(ji+1,jj,jk) * umask(ji+1,jj,jk+kp) 392 392 zah_slp = zah * triadi(ji,jj,jk,1,kp) 393 393 zah_slp_ip1 = zah_ip1 * triadi(ji+1,jj,jk,1,kp) 394 394 zah_slp1 = zah * triadi(ji+1,jj,jk,0,kp) 395 395 IF( ln_ldfeiv ) THEN 396 zaei_slp = aeiu(ji,jj,jk) * triadi_g(ji,jj,jk,1,kp) 396 zaei_slp = aeiu(ji,jj,jk) * triadi_g(ji,jj,jk,1,kp) 397 397 zaei_slp_ip1 = aeiu(ji+1,jj,jk) * triadi_g(ji+1,jj,jk,1,kp) 398 398 zaei_slp1 = aeiu(ji,jj,jk) * triadi_g(ji+1,jj,jk,0,kp) 399 399 ENDIF 400 ! zftu(ji ,jj,jk ) = zftu(ji ,jj,jk ) - ( zah * zdxt + (zah_slp - zaei_slp) * zdzt ) * zbu * ze1ur - ( zah * zdxt + (zah_slp1 - zaei_slp1) * zdzt_ip1 ) * zbu * ze1ur401 ! ztfw(ji+1,jj,jk+kp) = ztfw(ji+1,jj,jk+kp) - (zah_slp_ip1 + zaei_slp_ip1) * zdxt_ip1 * zbu_ip1 * ze3wr_ip1 - (zah_slp1 + zaei_slp1) * zdxt * zbu * ze3wr_ip1402 400 ! round brackets added to fix the order of floating point operations 403 401 ! needed to ensure halo 1 - halo 2 compatibility … … 406 404 & + ( zah * zdxt + zah_slp1 * zdzt_ip1 - zaei_slp1 * zdzt_ip1 ) * zbu * ze1ur & 407 405 & ) ! bracket for halo 1 - halo 2 compatibility 408 ztfw(ji+1,jj,jk+kp) = ztfw(ji+1,jj,jk+kp) & 406 ztfw(ji+1,jj,jk+kp) = ztfw(ji+1,jj,jk+kp) & 409 407 & - ( (zah_slp_ip1 + zaei_slp_ip1) * zdxt_ip1 * zbu_ip1 * ze3wr_ip1 & 410 408 & + ( zah_slp1 + zaei_slp1) * zdxt * zbu * ze3wr_ip1 & … … 414 412 ! 415 413 DO kp = 0, 1 416 DO_2D( nn_hls, nn_hls-1, nn_hls, nn_hls-1 )414 DO_2D( iij, iij-1, iij, iij-1 ) 417 415 ze2vr = r1_e2v(ji,jj) 418 416 zdyt = zdjt(ji,jj,jk) * ze2vr … … 431 429 zah_slp_jp1 = zah_jp1 * triadj(ji,jj+1,jk,1,kp) 432 430 IF( ln_ldfeiv ) THEN 433 zaei_slp = aeiv(ji,jj,jk) * triadj_g(ji,jj,jk,1,kp) 431 zaei_slp = aeiv(ji,jj,jk) * triadj_g(ji,jj,jk,1,kp) 434 432 zaei_slp_jp1 = aeiv(ji,jj+1,jk) * triadj_g(ji,jj+1,jk,1,kp) 435 433 zaei_slp1 = aeiv(ji,jj,jk) * triadj_g(ji,jj+1,jk,0,kp) 436 434 ENDIF 437 ! zftv(ji,jj ,jk ) = zftv(ji,jj ,jk ) - ( zah * zdyt + (zah_slp - zaei_slp) * zdzt ) * zbv * ze2vr - ( zah * zdyt + (zah_slp1 - zaei_slp1) * zdzt_jp1 ) * zbv * ze2vr438 ! ztfw(ji,jj+1,jk+kp) = ztfw(ji,jj+1,jk+kp) - ( zah_slp_jp1 + zaei_slp_jp1) * zdyt_jp1 * zbv_jp1 * ze3wr_jp1 - (zah_slp1 + zaei_slp1) * zdyt * zbv * ze3wr_jp1439 435 ! round brackets added to fix the order of floating point operations 440 436 ! needed to ensure halo 1 - halo 2 compatibility … … 451 447 ENDIF 452 448 ! !== horizontal divergence and add to the general trend ==! 453 DO_2D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1 )449 DO_2D( iij-1, iij-1, iij-1, iij-1 ) 454 450 ! round brackets added to fix the order of floating point operations 455 451 ! needed to ensure halo 1 - halo 2 compatibility … … 466 462 ! !== add the vertical 33 flux ==! 467 463 IF( ln_traldf_lap ) THEN ! laplacian case: eddy coef = ah_wslp2 - akz 468 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )464 DO_3D( iij-1, iij-1, iij-1, iij-1, 2, jpkm1 ) 469 465 ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk) & 470 466 & * ( ah_wslp2(ji,jj,jk) - akz(ji,jj,jk) ) & … … 474 470 SELECT CASE( kpass ) 475 471 CASE( 1 ) ! 1st pass : eddy coef = ah_wslp2 476 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )472 DO_3D( iij-1, iij-1, iij-1, iij-1, 2, jpkm1 ) 477 473 ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk) & 478 474 & * ah_wslp2(ji,jj,jk) * ( pt(ji,jj,jk-1,jn) - pt(ji,jj,jk,jn) ) 479 475 END_3D 480 476 CASE( 2 ) ! 2nd pass : eddy flux = ah_wslp2 and akz applied on pt and pt2 gradients, resp. 481 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 2, jpkm1 )477 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 482 478 ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk) & 483 479 & * ( ah_wslp2(ji,jj,jk) * ( pt (ji,jj,jk-1,jn) - pt (ji,jj,jk,jn) ) & … … 487 483 ENDIF 488 484 ! 489 DO_3D( nn_hls-1, nn_hls-1, nn_hls-1, nn_hls-1, 1, jpkm1 ) !== Divergence of vertical fluxes added to pta ==!485 DO_3D( iij-1, iij-1, iij-1, iij-1, 1, jpkm1 ) !== Divergence of vertical fluxes added to pta ==! 490 486 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) & 491 487 & + zsign * ( ztfw(ji,jj,jk+1) - ztfw(ji,jj,jk) ) &
Note: See TracChangeset
for help on using the changeset viewer.