Changeset 2715 for trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90
- Timestamp:
- 2011-03-30T17:58:35+02:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_tvd.F90
r2528 r2715 25 25 USE dom_oce ! ocean space and time domain 26 26 USE trdmod_oce ! tracers trends 27 USE trdtra ! tracers trends27 USE trdtra ! tracers trends 28 28 USE in_out_manager ! I/O manager 29 29 USE dynspg_oce ! choice/control of key cpp for surface pressure gradient 30 USE lib_mpp 30 USE lib_mpp ! MPP library 31 31 USE lbclnk ! ocean lateral boundary condition (or mpp link) 32 32 USE diaptr ! poleward transport diagnostics … … 39 39 PUBLIC tra_adv_tvd ! routine called by step.F90 40 40 41 LOGICAL :: l_trd! flag to compute trends41 LOGICAL :: l_trd ! flag to compute trends 42 42 43 43 !! * Substitutions … … 66 66 !! - save the trends 67 67 !!---------------------------------------------------------------------- 68 USE oce , zwx => ua ! use ua as workspace 69 USE oce , zwy => va ! use va as workspace 70 !! 68 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 69 USE oce , ONLY: zwx => ua , zwy => va ! (ua,va) used as workspace 70 USE wrk_nemo, ONLY: zwi => wrk_3d_12 , zwz => wrk_3d_13 ! 3D workspace 71 ! 71 72 INTEGER , INTENT(in ) :: kt ! ocean time-step index 72 73 CHARACTER(len=3) , INTENT(in ) :: cdtype ! =TRA or TRC (tracer indicator) … … 76 77 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(in ) :: ptb, ptn ! before and now tracer fields 77 78 REAL(wp), DIMENSION(jpi,jpj,jpk,kjpt), INTENT(inout) :: pta ! tracer trend 78 ! !79 ! 79 80 INTEGER :: ji, jj, jk, jn ! dummy loop indices 80 81 REAL(wp) :: z2dtt, zbtr, ztra ! local scalar 81 82 REAL(wp) :: zfp_ui, zfp_vj, zfp_wk ! - - 82 83 REAL(wp) :: zfm_ui, zfm_vj, zfm_wk ! - - 83 REAL(wp), DIMENSION (jpi,jpj,jpk) :: zwi, zwz ! 3D workspace84 84 REAL(wp), DIMENSION (:,:,:), ALLOCATABLE :: ztrdx, ztrdy, ztrdz 85 85 !!---------------------------------------------------------------------- 86 87 IF( wrk_in_use(3, 12,13) ) THEN 88 CALL ctl_stop('tra_adv_tvd: requested workspace arrays unavailable') ; RETURN 89 ENDIF 86 90 87 91 IF( kt == nit000 ) THEN … … 235 239 ENDIF 236 240 ! 237 END DO241 END DO 238 242 ! 239 243 IF( l_trd ) THEN 240 244 DEALLOCATE( ztrdx ) ; DEALLOCATE( ztrdy ) ; DEALLOCATE( ztrdz ) 241 245 END IF 246 ! 247 IF( wrk_not_released(3, 12,13) ) CALL ctl_stop('tra_adv_tvd: failed to release workspace arrays') 242 248 ! 243 249 END SUBROUTINE tra_adv_tvd … … 257 263 !! in-space based differencing for fluid 258 264 !!---------------------------------------------------------------------- 265 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 266 USE wrk_nemo, ONLY: zbetup => wrk_3d_8 , zbetdo => wrk_3d_9 ! 3D workspace 267 USE wrk_nemo, ONLY: zbup => wrk_3d_10 , zbdo => wrk_3d_11 ! - - 268 ! 259 269 REAL(wp), DIMENSION(jpk) , INTENT(in ) :: p2dt ! vertical profile of tracer time-step 260 270 REAL(wp), DIMENSION (jpi,jpj,jpk), INTENT(in ) :: pbef, paft ! before & after field 261 271 REAL(wp), DIMENSION (jpi,jpj,jpk), INTENT(inout) :: paa, pbb, pcc ! monotonic fluxes in the 3 directions 262 !! 263 INTEGER :: ji, jj, jk ! dummy loop indices 264 INTEGER :: ikm1 265 REAL(wp), DIMENSION (jpi,jpj,jpk) :: zbetup, zbetdo 266 REAL(wp), DIMENSION (jpi,jpj,jpk) :: zbup, zbdo 267 REAL(wp) :: zpos, zneg, zbt, za, zb, zc, zbig, zrtrn, z2dtt 268 REAL(wp) :: zau, zbu, zcu, zav, zbv, zcv 269 REAL(wp) :: zup, zdo 270 !!---------------------------------------------------------------------- 271 272 zbig = 1.e+40 273 zrtrn = 1.e-15 274 zbetup(:,:,jpk) = 0.e0 ; zbetdo(:,:,jpk) = 0.e0 272 ! 273 INTEGER :: ji, jj, jk ! dummy loop indices 274 INTEGER :: ikm1 ! local integer 275 REAL(wp) :: zpos, zneg, zbt, za, zb, zc, zbig, zrtrn, z2dtt ! local scalars 276 REAL(wp) :: zau, zbu, zcu, zav, zbv, zcv, zup, zdo ! - - 277 !!---------------------------------------------------------------------- 278 279 IF( wrk_in_use(3, 8,9,10,11) ) THEN 280 CALL ctl_stop('nonosc: requested workspace array unavailable') ; RETURN 281 ENDIF 282 283 zbig = 1.e+40_wp 284 zrtrn = 1.e-15_wp 285 zbetup(:,:,jpk) = 0._wp ; zbetdo(:,:,jpk) = 0._wp 275 286 276 287 … … 348 359 CALL lbc_lnk( paa, 'U', -1. ) ; CALL lbc_lnk( pbb, 'V', -1. ) ! lateral boundary condition (changed sign) 349 360 ! 361 IF( wrk_not_released(3, 8,9,10,11) ) CALL ctl_stop('nonosc: failed to release workspace arrays') 362 ! 350 363 END SUBROUTINE nonosc 351 364
Note: See TracChangeset
for help on using the changeset viewer.