Changeset 2887 for branches/2011/dev_r2802_NOCL_Smagorinsky/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilapg.F90
- Timestamp:
- 2011-10-05T11:16:29+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_r2802_NOCL_Smagorinsky/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_bilapg.F90
r2715 r2887 24 24 USE diaptr ! poleward transport diagnostics 25 25 USE trc_oce ! share passive tracers/Ocean variables 26 USE lib_mpp ! MPP library27 26 28 27 IMPLICIT NONE … … 66 65 !! biharmonic mixing trend. 67 66 !!---------------------------------------------------------------------- 68 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released69 USE wrk_nemo, ONLY: wk1 => wrk_4d_1 , wk2 => wrk_4d_2 ! 4D workspace70 !71 67 INTEGER , INTENT(in ) :: kt ! ocean time-step index 72 68 CHARACTER(len=3), INTENT(in ) :: cdtype ! =TRA or TRC (tracer indicator) … … 74 70 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: ptb ! before and now tracer fields 75 71 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) :: pta ! tracer trend 76 ! 77 INTEGER :: ji, jj, jk, jn ! dummy loop indices 78 !!---------------------------------------------------------------------- 79 80 IF( wrk_in_use(4, 1,2) ) THEN 81 CALL ctl_stop('tra_ldf_bilapg: requested workspace arrays unavailable') ; RETURN 82 ENDIF 72 !! 73 INTEGER :: ji, jj, jk, jn ! dummy loop indices 74 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt) :: wk1, wk2 ! 4D workspace 75 !!---------------------------------------------------------------------- 83 76 84 77 IF( kt == nit000 ) THEN … … 114 107 END DO 115 108 END DO 116 !117 IF( wrk_not_released(4, 1,2) ) CALL ctl_stop('tra_ldf_bilapg : failed to release workspace arrays.')118 109 ! 119 110 END SUBROUTINE tra_ldf_bilapg … … 158 149 !! 159 150 !!---------------------------------------------------------------------- 160 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, wrk_in_use_xz, wrk_not_released_xz 161 USE oce , ONLY: zftv => ua ! ua used as workspace 162 USE wrk_nemo, ONLY: zftu => wrk_2d_1 , zdkt => wrk_2d_2 , zdk1t => wrk_2d_3 163 USE wrk_nemo, ONLY: zftw => wrk_xz_1 , zdit => wrk_xz_2 164 USE wrk_nemo, ONLY: zdjt => wrk_xz_3 , zdj1t => wrk_xz_4 165 ! 151 USE oce , zftv => ua ! use ua as workspace 152 !! 166 153 INTEGER , INTENT(in ) :: kt ! ocean time-step index 167 154 CHARACTER(len=3), INTENT(in ) :: cdtype ! =TRA or TRC (tracer indicator) … … 179 166 REAL(wp) :: zbtr, ztah, ztav 180 167 REAL(wp) :: zcof0, zcof1, zcof2, zcof3, zcof4 181 !!---------------------------------------------------------------------- 182 183 IF( wrk_in_use(2, 1,2,3) .OR. wrk_in_use_xz(1,2,3,4) )THEN 184 CALL ctl_stop('ldfght : requested workspace arrays unavailable') ; RETURN 185 ENDIF 168 REAL(wp), DIMENSION(jpi,jpj) :: zftu, zdkt, zdk1t ! workspace 169 REAL(wp), DIMENSION(jpi,jpk) :: zftw, zdit, zdjt, zdj1t ! 170 !!---------------------------------------------------------------------- 171 186 172 ! 187 173 DO jn = 1, kjpt … … 299 285 300 286 ! II.3 Divergence of vertical fluxes added to the horizontal divergence 301 ! -------------------------------------------------------------------- -302 287 ! -------------------------------------------------------------------- 288 #if ! defined key_traldf_smag 303 289 IF( kaht == 1 ) THEN 304 290 ! multiply the laplacian by the eddy diffusivity coefficient … … 334 320 ! ! =============== 335 321 END DO 336 ! 337 IF( wrk_not_released(2, 1,2,3) .OR. & 338 wrk_not_released_xz(1,2,3,4) ) CALL ctl_stop('ldfght : failed to release workspace arrays.') 339 ! 322 #else 323 IF( kaht == 2 ) THEN 324 ! multiply the laplacian by the eddy diffusivity coefficient 325 DO jk = 1, jpkm1 326 DO ji = 2, jpim1 327 ! eddy coef. divided by the volume element 328 zbtr = 1.0 / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 329 ! vertical divergence 330 ztav = fsahtt(ji,jj,jk) * ( zftw(ji,jk) - zftw(ji,jk+1) ) 331 ! harmonic operator applied to (pt,ps) and multiply by aht 332 plt(ji,jj,jk,jn) = ( plt(ji,jj,jk,jn) + ztav ) * zbtr 333 END DO 334 END DO 335 ELSEIF( kaht == 1 ) THEN 336 ! second call, no multiplication 337 DO jk = 1, jpkm1 338 DO ji = 2, jpim1 339 ! inverse of the volume element 340 zbtr = 1.0 / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 341 ! vertical divergence 342 ztav = zftw(ji,jk) - zftw(ji,jk+1) 343 ! harmonic operator applied to (pt,ps) 344 plt(ji,jj,jk,jn) = ( plt(ji,jj,jk,jn) + ztav ) * zbtr 345 END DO 346 END DO 347 ELSE 348 IF(lwp) WRITE(numout,*) ' ldfght: kaht= 1 or 2, here =', kaht 349 IF(lwp) WRITE(numout,*) ' We stop' 350 STOP 'ldfght' 351 ENDIF 352 ! ! =============== 353 END DO ! End of slab 354 ! ! =============== 355 END DO 356 357 358 #endif 340 359 END SUBROUTINE ldfght 341 360
Note: See TracChangeset
for help on using the changeset viewer.