Changeset 3294 for trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90
- Timestamp:
- 2012-01-28T17:44:18+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90
r2715 r3294 25 25 USE iom ! I/O Manager 26 26 USE lib_mpp ! MPP library 27 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 27 USE wrk_nemo ! work arrays 28 USE timing ! Timing 28 29 29 30 IMPLICIT NONE … … 104 105 !!---------------------------------------------------------------------- 105 106 USE oce, zav_tide => ua ! use ua as workspace 106 USE wrk_nemo, ONLY: zkz => wrk_2d_1107 107 !! 108 108 INTEGER, INTENT(in) :: kt ! ocean time-step … … 110 110 INTEGER :: ji, jj, jk ! dummy loop indices 111 111 REAL(wp) :: ztpc ! scalar workspace 112 !!---------------------------------------------------------------------- 113 114 IF(wrk_in_use(2, 1))THEN 115 CALL ctl_stop('zdf_tmx : requested workspace array unavailable.') ; RETURN 116 END IF 112 REAL(wp), POINTER, DIMENSION(:,:) :: zkz 113 !!---------------------------------------------------------------------- 114 ! 115 IF( nn_timing == 1 ) CALL timing_start('zdf_tmx') 116 ! 117 CALL wrk_alloc( jpi,jpj, zkz ) 118 117 119 ! ! ----------------------- ! 118 120 ! ! Standard tidal mixing ! (compute zav_tide) … … 176 178 IF(ln_ctl) CALL prt_ctl(tab3d_1=zav_tide , clinfo1=' tmx - av_tide: ', tab3d_2=avt, clinfo2=' avt: ', ovlap=1, kdim=jpk) 177 179 ! 178 IF(wrk_not_released(2, 1))THEN179 CALL ctl_stop('zdf_tmx : failed to release workspace array.')180 END IF180 CALL wrk_dealloc( jpi,jpj, zkz ) 181 ! 182 IF( nn_timing == 1 ) CALL timing_stop('zdf_tmx') 181 183 ! 182 184 END SUBROUTINE zdf_tmx … … 203 205 !! References : Koch-Larrouy et al. 2007, GRL 204 206 !!---------------------------------------------------------------------- 205 USE wrk_nemo, ONLY: zkz => wrk_2d_5206 USE wrk_nemo, ONLY: zsum1 => wrk_2d_2, zsum2 => wrk_2d_3, zsum => wrk_2d_4207 USE wrk_nemo, ONLY: zempba_3d_1 => wrk_3d_1, zempba_3d_2 => wrk_3d_2208 USE wrk_nemo, ONLY: zempba_3d => wrk_3d_3, zdn2dz => wrk_3d_4209 USE wrk_nemo, ONLY: zavt_itf => wrk_3d_5210 !!211 207 INTEGER , INTENT(in ) :: kt ! ocean time-step 212 208 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pav ! Tidal mixing coef. … … 214 210 INTEGER :: ji, jj, jk ! dummy loop indices 215 211 REAL(wp) :: zcoef, ztpc ! temporary scalar 216 !!---------------------------------------------------------------------- 217 ! 218 IF( wrk_in_use(2, 2,3,4,5) .OR. wrk_in_use(3, 1,2,3,4,5) )THEN 219 CALL ctl_stop('tmx_itf : requested workspace arrays unavailable.') 220 RETURN 221 END IF 212 REAL(wp), DIMENSION(:,:) , POINTER :: zkz ! 2D workspace 213 REAL(wp), DIMENSION(:,:) , POINTER :: zsum1 , zsum2 , zsum ! - - 214 REAL(wp), DIMENSION(:,:,:), POINTER :: zempba_3d_1, zempba_3d_2 ! 3D workspace 215 REAL(wp), DIMENSION(:,:,:), POINTER :: zempba_3d , zdn2dz ! - - 216 REAL(wp), DIMENSION(:,:,:), POINTER :: zavt_itf ! - - 217 !!---------------------------------------------------------------------- 218 ! 219 IF( nn_timing == 1 ) CALL timing_start('tmx_itf') 220 ! 221 CALL wrk_alloc( jpi,jpj, zkz, zsum1 , zsum2 , zsum ) 222 CALL wrk_alloc( jpi,jpj,jpk, zempba_3d_1, zempba_3d_2, zempba_3d, zdn2dz, zavt_itf ) 223 222 224 ! ! compute the form function using N2 at each time step 223 225 zempba_3d_1(:,:,jpk) = 0.e0 … … 304 306 END DO 305 307 ! 306 IF( wrk_not_released(2, 2,3,4,5) .OR. &307 wrk_not_released(3, 1,2,3,4,5) )THEN308 CALL ctl_stop('tmx_itf : failed to release workspace arrays.')309 END IF308 CALL wrk_dealloc( jpi,jpj, zkz, zsum1 , zsum2 , zsum ) 309 CALL wrk_dealloc( jpi,jpj,jpk, zempba_3d_1, zempba_3d_2, zempba_3d, zdn2dz, zavt_itf ) 310 ! 311 IF( nn_timing == 1 ) CALL timing_stop('tmx_itf') 310 312 ! 311 313 END SUBROUTINE tmx_itf … … 348 350 !!---------------------------------------------------------------------- 349 351 USE oce , zav_tide => ua ! ua used as workspace 350 USE wrk_nemo, ONLY: zem2 => wrk_2d_1 ! read M2 and351 USE wrk_nemo, ONLY: zek1 => wrk_2d_2 ! K1 tidal energy352 USE wrk_nemo, ONLY: zkz => wrk_2d_3 ! total M2, K1 and S2 tidal energy353 USE wrk_nemo, ONLY: zfact => wrk_2d_4 ! used for vertical structure function354 USE wrk_nemo, ONLY: zhdep => wrk_2d_5 ! Ocean depth355 USE wrk_nemo, ONLY: zpc => wrk_3d_1 ! power consumption356 352 !! 357 353 INTEGER :: ji, jj, jk ! dummy loop indices 358 354 INTEGER :: inum ! local integer 359 355 REAL(wp) :: ztpc, ze_z ! local scalars 356 REAL(wp), DIMENSION(:,:) , POINTER :: zem2, zek1 ! read M2 and K1 tidal energy 357 REAL(wp), DIMENSION(:,:) , POINTER :: zkz ! total M2, K1 and S2 tidal energy 358 REAL(wp), DIMENSION(:,:) , POINTER :: zfact ! used for vertical structure function 359 REAL(wp), DIMENSION(:,:) , POINTER :: zhdep ! Ocean depth 360 REAL(wp), DIMENSION(:,:,:), POINTER :: zpc ! power consumption 360 361 !! 361 362 NAMELIST/namzdf_tmx/ rn_htmx, rn_n2min, rn_tfe, rn_me, ln_tmx_itf, rn_tfe_itf 362 363 !!---------------------------------------------------------------------- 363 364 IF( wrk_in_use(2, 1,2,3,4,5) .OR. wrk_in_use(3, 1) ) THEN 365 CALL ctl_stop('zdf_tmx_init : requested workspace arrays unavailable.') ; RETURN 366 END IF 367 364 ! 365 IF( nn_timing == 1 ) CALL timing_start('zdf_tmx_init') 366 ! 367 CALL wrk_alloc( jpi,jpj, zem2, zek1, zkz, zfact, zhdep ) 368 CALL wrk_alloc( jpi,jpj,jpk, zpc ) 369 368 370 REWIND( numnam ) ! Read Namelist namtmx : Tidal Mixing 369 371 READ ( numnam, namzdf_tmx ) … … 526 528 ENDIF 527 529 ! 528 IF(wrk_not_released(2, 1,2,3,4,5) .OR. & 529 wrk_not_released(3, 1) ) CALL ctl_stop( 'zdf_tmx_init : failed to release workspace arrays' ) 530 CALL wrk_dealloc( jpi,jpj, zem2, zek1, zkz, zfact, zhdep ) 531 CALL wrk_dealloc( jpi,jpj,jpk, zpc ) 532 ! 533 IF( nn_timing == 1 ) CALL timing_stop('zdf_tmx_init') 530 534 ! 531 535 END SUBROUTINE zdf_tmx_init
Note: See TracChangeset
for help on using the changeset viewer.