Changeset 3155
- Timestamp:
- 2011-11-18T12:40:14+01:00 (12 years ago)
- Location:
- branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/LDF/ldfeiv.F90
r2715 r3155 25 25 USE prtctl ! Print control 26 26 USE iom ! I/O library 27 USE wrk_nemo_2 ! work arrays 27 28 28 29 IMPLICIT NONE … … 53 54 !! - wslpi, wslpj : i- and j-slopes of neutral surfaces at w-points. 54 55 !!---------------------------------------------------------------------- 55 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released56 USE wrk_nemo, ONLY: zn => wrk_2d_1 , zah => wrk_2d_2 ! 2D workspace57 USE wrk_nemo, ONLY: zhw => wrk_2d_3 , zross => wrk_2d_458 !59 56 INTEGER, INTENT(in) :: kt ! ocean time-step inedx 60 57 ! 61 58 INTEGER :: ji, jj, jk ! dummy loop indices 62 59 REAL(wp) :: zfw, ze3w, zn2, zf20, zaht, zaht_min ! temporary scalars 60 REAL(wp), DIMENSION(:,:), POINTER :: zn, zah, zhw, zross ! 2D workspace 63 61 !!---------------------------------------------------------------------- 64 62 65 IF( wrk_in_use(2, 1,2,3,4) ) THEN 66 CALL ctl_stop('ldf_eiv: requested workspace arrays are unavailable.') ; RETURN 67 ENDIF 63 CALL wrk_alloc( jpi,jpj, zn, zah, zhw, zross ) 68 64 69 65 IF( kt == nit000 ) THEN … … 243 239 CALL iom_put( "aht2d_eiv", aeiw ) ! EIV lateral eddy diffusivity 244 240 ! 245 IF( wrk_not_released(2, 1,2,3,4) ) CALL ctl_stop('ldf_eiv: failed to release workspace arrays')241 CALL wrk_dealloc( jpi,jpj, zn, zah, zhw, zross ) 246 242 ! 247 243 END SUBROUTINE ldf_eiv -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90
r3116 r3155 31 31 USE in_out_manager ! I/O manager 32 32 USE prtctl ! Print control 33 USE wrk_nemo_2 ! work arrays 33 34 34 35 IMPLICIT NONE … … 56 57 57 58 REAL(wp) :: repsln = 1.e-25_wp ! tiny value used as minium of di(rho), dj(rho) and dk(rho) 58 59 ! Workspace arrays for ldf_slp_grif. These could be replaced by several 3D and 2D workspace60 ! arrays from the wrk_nemo module with a bit of code re-writing. The 4D workspace61 ! arrays can't be used here because of the zero-indexing of some of the ranks. ARPDBG.62 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: zdzrho , zdyrho, zdxrho ! Horizontal and vertical density gradients63 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: zti_mlb, ztj_mlb ! for Griffies operator only64 59 65 60 !! * Substitutions … … 74 69 !!---------------------------------------------------------------------- 75 70 CONTAINS 76 77 INTEGER FUNCTION ldf_slp_alloc()78 !!----------------------------------------------------------------------79 !! *** FUNCTION ldf_slp_alloc ***80 !!----------------------------------------------------------------------81 !82 ALLOCATE( zdxrho (jpi,jpj,jpk,0:1) , zti_mlb(jpi,jpj,0:1,0:1) , &83 & zdyrho (jpi,jpj,jpk,0:1) , ztj_mlb(jpi,jpj,0:1,0:1) , &84 & zdzrho (jpi,jpj,jpk,0:1) , STAT=ldf_slp_alloc )85 !86 IF( lk_mpp ) CALL mpp_sum ( ldf_slp_alloc )87 IF( ldf_slp_alloc /= 0 ) CALL ctl_warn('ldf_slp_alloc : failed to allocate arrays.')88 !89 END FUNCTION ldf_slp_alloc90 91 71 92 72 SUBROUTINE ldf_slp( kt, prd, pn2 ) … … 115 95 !! of now neutral surfaces at u-, w- and v- w-points, resp. 116 96 !!---------------------------------------------------------------------- 117 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released118 97 USE oce , ONLY: zwz => ua , zww => va ! (ua,va) used as workspace 119 98 USE oce , ONLY: tsa ! (tsa) used as workspace 120 USE wrk_nemo, ONLY: zdzr => wrk_3d_1 ! 3D workspace121 99 !! 122 100 INTEGER , INTENT(in) :: kt ! ocean time-step index … … 131 109 REAL(wp) :: zcj, zfj, zav, zbv, zaj, zbj ! - - 132 110 REAL(wp) :: zck, zfk, zbw ! - - 133 REAL(wp), POINTER, DIMENSION(:,:,:) :: zgru, zgrv 134 !!---------------------------------------------------------------------- 135 136 IF( wrk_in_use(3, 1) ) THEN 137 CALL ctl_stop('ldf_slp: requested workspace arrays are unavailable') ; RETURN 138 ENDIF 111 REAL(wp), POINTER, DIMENSION(:,:,:) :: zgru, zgrv, zdzr 112 !!---------------------------------------------------------------------- 113 114 CALL wrk_alloc( jpi,jpj,jpk, zdzr ) 139 115 ! 140 116 zgru => tsa(:,:,:,1) … … 386 362 ENDIF 387 363 ! 388 IF( wrk_not_released(3, 1) ) CALL ctl_stop('ldf_slp: failed to release workspace arrays.')364 CALL wrk_dealloc( jpi,jpj,jpk, zdzr ) 389 365 ! 390 366 END SUBROUTINE ldf_slp … … 405 381 !! - wslp2 squared slope of neutral surfaces at w-points. 406 382 !!---------------------------------------------------------------------- 407 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released408 383 USE oce , ONLY: zalbet => ua ! use ua as workspace 409 USE wrk_nemo, ONLY: z1_mlbw => wrk_2d_1410 384 !! 411 385 INTEGER, INTENT( in ) :: kt ! ocean time-step index … … 420 394 REAL(wp) :: zdzrho_raw 421 395 REAL(wp) :: zbeta0 422 !!---------------------------------------------------------------------- 423 424 IF( wrk_in_use(4, 1,2,3) .OR. wrk_in_use(3, 2,3) .OR. wrk_in_use(2, 1) ) THEN 425 CALL ctl_stop('ldf_slp_grif: ERROR: requested workspace arrays are unavailable.') ; RETURN 426 END IF 396 REAL(wp), POINTER, DIMENSION(:,:) :: z1_mlbw 397 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: zdxrho , zdyrho, zdzrho ! Horizontal and vertical density gradients 398 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: zti_mlb, ztj_mlb ! for Griffies operator only 399 !!---------------------------------------------------------------------- 400 401 CALL wrk_alloc( jpi,jpj, z1_mlbw ) 402 CALL wrk_alloc( jpi,jpj,jpk,2, zdxrho , zdyrho, zdzrho, klstart = 0 ) 403 CALL wrk_alloc( jpi,jpj, 2,2, zti_mlb, ztj_mlb, kkstart = 0, klstart = 0 ) 427 404 ! 428 405 !--------------------------------! … … 616 593 CALL lbc_lnk( wslp2, 'W', 1. ) ! lateral boundary confition on wslp2 only ==>>> gm : necessary ? to be checked 617 594 ! 618 IF( wrk_not_released(4, 1,2,3) .OR. &619 wrk_not_released(3, 2,3 ) .OR. &620 wrk_not_released(2, 1 ) ) CALL ctl_stop('ldf_slp_grif: ERROR: failed to release workspace arrays.')595 CALL wrk_dealloc( jpi,jpj, z1_mlbw ) 596 CALL wrk_dealloc( jpi,jpj,jpk,2, zdxrho , zdyrho, zdzrho, klstart = 0 ) 597 CALL wrk_dealloc( jpi,jpj, 2,2, zti_mlb, ztj_mlb, kkstart = 0, klstart = 0 ) 621 598 ! 622 599 END SUBROUTINE ldf_slp_grif … … 768 745 ALLOCATE( triadi (jpi,jpj,jpk,0:1,0:1) , triadj (jpi,jpj,jpk,0:1,0:1) , STAT=ierr ) 769 746 IF( ierr > 0 ) CALL ctl_stop( 'STOP', 'ldf_slp_init : unable to allocate Griffies operator slope' ) 770 IF( ldf_slp_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'ldf_slp_init : unable to allocate workspace arrays' )771 747 ! 772 748 IF( ln_dynldf_iso ) CALL ctl_stop( 'ldf_slp_init: Griffies operator on momentum not supported' ) -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfddm.F90
r2715 r3155 21 21 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 22 22 USE prtctl ! Print control 23 USE lib_mpp ! MPP library 23 USE lib_mpp ! MPP library 24 USE wrk_nemo_2 ! work arrays 24 25 25 26 IMPLICIT NONE … … 91 92 !! References : Merryfield et al., JPO, 29, 1124-1142, 1999. 92 93 !!---------------------------------------------------------------------- 93 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released94 USE wrk_nemo, ONLY: zmsks => wrk_2d_1 , zmskf => wrk_2d_2 , zmskd1 => wrk_2d_3 ! 2D workspace95 USE wrk_nemo, ONLY: zmskd2 => wrk_2d_4 , zmskd3 => wrk_2d_5 ! - -96 !97 94 INTEGER, INTENT(in) :: kt ! ocean time-step indexocean time step 98 95 ! … … 101 98 REAL(wp) :: zavft, zavfs ! - - 102 99 REAL(wp) :: zavdt, zavds ! - - 103 !!---------------------------------------------------------------------- 104 105 IF( wrk_in_use(2, 1,2,3,4,5) ) THEN 106 CALL ctl_stop('zdf_ddm: Requested workspace arrays already in use') ; RETURN 107 ENDIF 100 REAL(wp), POINTER, DIMENSION(:,:) :: zmsks, zmskf, zmskd1, zmskd2, zmskd3 101 !!---------------------------------------------------------------------- 102 103 CALL wrk_alloc( jpi,jpj, zmsks, zmskf, zmskd1, zmskd2, zmskd3 ) 108 104 109 105 ! ! =============== … … 197 193 ENDIF 198 194 ! 199 IF( wrk_not_released(2, 1,2,3,4,5) ) CALL ctl_stop('zdf_ddm: Release of workspace arrays failed')195 CALL wrk_dealloc( jpi,jpj, zmsks, zmskf, zmskd1, zmskd2, zmskd3 ) 200 196 ! 201 197 END SUBROUTINE zdf_ddm -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90
r3125 r3155 26 26 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 27 27 USE lib_mpp ! MPP manager 28 USE wrk_nemo_2 ! work arrays 28 29 USE prtctl ! Print control 29 30 USE in_out_manager ! I/O manager … … 134 135 USE oce , ONLY: z_elem_a => ua ! use ua as workspace 135 136 USE oce , ONLY: z_elem_b => va ! use va as workspace 136 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released137 USE wrk_nemo, ONLY: zdep => wrk_2d_1138 USE wrk_nemo, ONLY: zflxs => wrk_2d_2 ! Turbulence fluxed induced by internal waves139 USE wrk_nemo, ONLY: zhsro => wrk_2d_3 ! Surface roughness (surface waves)140 USE wrk_nemo, ONLY: eb => wrk_3d_1 ! tke at time before141 USE wrk_nemo, ONLY: mxlb => wrk_3d_2 ! mixing length at time before142 USE wrk_nemo, ONLY: shear => wrk_3d_3 ! vertical shear143 USE wrk_nemo, ONLY: eps => wrk_3d_4 ! dissipation rate144 USE wrk_nemo, ONLY: zwall_psi => wrk_3d_5 ! Wall function use in the wb case (ln_sigpsi.AND.ln_crban=T)145 137 ! 146 138 INTEGER, INTENT(in) :: kt ! ocean time step … … 151 143 REAL(wp) :: prod, buoy, diss, zdiss, sm ! - - 152 144 REAL(wp) :: gh, gm, shr, dif, zsqen, zav ! - - 153 REAL(wp), POINTER, DIMENSION(:,:,:) :: z_elem_c, psi 145 REAL(wp), POINTER, DIMENSION(:,: ) :: zdep 146 REAL(wp), POINTER, DIMENSION(:,: ) :: zflxs ! Turbulence fluxed induced by internal waves 147 REAL(wp), POINTER, DIMENSION(:,: ) :: zhsro ! Surface roughness (surface waves) 148 REAL(wp), POINTER, DIMENSION(:,:,:) :: eb ! tke at time before 149 REAL(wp), POINTER, DIMENSION(:,:,:) :: mxlb ! mixing length at time before 150 REAL(wp), POINTER, DIMENSION(:,:,:) :: shear ! vertical shear 151 REAL(wp), POINTER, DIMENSION(:,:,:) :: eps ! dissipation rate 152 REAL(wp), POINTER, DIMENSION(:,:,:) :: zwall_psi ! Wall function use in the wb case (ln_sigpsi.AND.ln_crban=T) 153 REAL(wp), POINTER, DIMENSION(:,:,:) :: z_elem_c, psi 154 154 !!-------------------------------------------------------------------- 155 155 156 IF( wrk_in_use(2, 1,2,3) .OR. wrk_in_use(3, 1,2,3,4,5) ) THEN 157 CALL ctl_stop('zdf_gls: requested workspace arrays unavailable.') ; RETURN 158 END IF 156 CALL wrk_alloc( jpi,jpj, zdep, zflxs, zhsro ) 157 CALL wrk_alloc( jpi,jpj,jpk, eb, mxlb, shear, eps, zwall_psi ) 159 158 ! 160 159 z_elem_c => tsa(:,:,:,1) … … 265 264 IF( ln_sigpsi ) THEN 266 265 zsigpsi = MIN( 1._wp, zesh2 / eps(ji,jj,jk) ) ! 0. <= zsigpsi <= 1. 267 zwall_psi(ji,jj,jk) = rsc_psi / ( zsigpsi * rsc_psi + (1._wp-zsigpsi) * rsc_psi0 / MAX( zwall(ji,jj,jk), 1._wp ) ) 266 zwall_psi(ji,jj,jk) = rsc_psi / & 267 & ( zsigpsi * rsc_psi + (1._wp-zsigpsi) * rsc_psi0 / MAX( zwall(ji,jj,jk), 1._wp ) ) 268 268 ELSE 269 269 zwall_psi(ji,jj,jk) = 1._wp … … 886 886 ENDIF 887 887 ! 888 IF( wrk_not_released(2, 1,2,3) .OR. &889 wrk_not_released(3, 1,2,3,4,5) ) CALL ctl_stop('zdf_gls: failed to release workspace arrays')888 CALL wrk_dealloc( jpi,jpj, zdep, zflxs, zhsro ) 889 CALL wrk_dealloc( jpi,jpj,jpk, eb, mxlb, shear, eps, zwall_psi ) 890 890 ! 891 891 END SUBROUTINE zdf_gls -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfkpp.F90
r2977 r3155 29 29 USE in_out_manager ! I/O manager 30 30 USE lib_mpp ! MPP library 31 USE wrk_nemo_2 ! work arrays 31 32 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 32 33 USE prtctl ! Print control … … 208 209 USE oce , zviscos => ua ! temp. array for viscosities use ua as workspace 209 210 USE oce , zdiffut => va ! temp. array for diffusivities use sa as workspace 210 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, wrk_in_use_xz, wrk_not_released_xz211 USE wrk_nemo, ONLY: zBo => wrk_2d_1, & ! Surface buoyancy forcing,212 zBosol => wrk_2d_2, & ! friction velocity213 zustar => wrk_2d_3214 USE wrk_nemo, ONLY: zmask => wrk_2d_4215 !gm USE wrk_nemo, ONLY: wrk_2d_5, wrk_2d_6, wrk_2d_7, wrk_2d_8, wrk_2d_9, &216 USE wrk_nemo, ONLY: wrk_2d_6, wrk_2d_7, wrk_2d_8, wrk_2d_9, &217 wrk_2d_10,wrk_2d_11218 USE wrk_nemo, ONLY: wrk_1d_1, wrk_1d_2, wrk_1d_3, wrk_1d_4, &219 wrk_1d_5, wrk_1d_6, wrk_1d_7, wrk_1d_8, &220 wrk_1d_9, wrk_1d_10, wrk_1d_11, wrk_1d_12, &221 wrk_1d_13, wrk_1d_14222 USE wrk_nemo, ONLY: zblcm => wrk_xz_1, & ! Boundary layer223 zblct => wrk_xz_2 ! diffusivities/viscosities224 #if defined key_zdfddm225 USE wrk_nemo, ONLY: zdiffus => wrk_3d_1226 USE wrk_nemo, ONLY: zblcs => wrk_xz_3227 #endif228 211 !! 229 212 INTEGER, INTENT( in ) :: kt ! ocean time step … … 250 233 REAL(wp) :: zflag, ztemp, zrn2, zdep21, zdep32, zdep43 251 234 REAL(wp) :: zdku2, zdkv2, ze3sqr, zsh2, zri, zfri ! Interior richardson mixing 252 !gm REAL(wp), POINTER, DIMENSION(:,:) :: zmoek ! Moning-Obukov limitation 253 REAL(wp), DIMENSION(jpi,0:2) :: zmoek ! Moning-Obukov limitation 235 REAL(wp), POINTER, DIMENSION(:,:) :: zmoek ! Moning-Obukov limitation 254 236 REAL(wp), POINTER, DIMENSION(:) :: zmoa, zekman 255 237 REAL(wp) :: zmob, zek … … 266 248 REAL(wp), POINTER, DIMENSION(:) :: za2s, za3s, zkmps 267 249 REAL(wp) :: zkm1s 268 #endif 250 REAL(wp), POINTER, DIMENSION(:,:) :: zblcs 251 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdiffus 252 #endif 253 REAL(wp), POINTER, DIMENSION(:,:) :: zBo, zBosol, zustar ! Surface buoyancy forcing, friction velocity 254 REAL(wp), POINTER, DIMENSION(:,:) :: zmask, zblcm, zblct 269 255 !!-------------------------------------------------------------------- 270 256 271 IF( wrk_in_use(1, 1,2,3,4,5,6,7,8,9,10,11,12,13,14) .OR. & 272 wrk_in_use(2, 1,2,3,4,5,6,7,8,9,10,11) .OR. & 273 wrk_in_use(3, 1) .OR. & 274 wrk_in_use_xz(1,2,3) ) THEN 275 CALL ctl_stop('zdf_kpp : requested workspace arrays unavailable.') ; RETURN 276 ENDIF 277 ! Set-up pointers to 2D spaces 278 !gm zmoek(1:jpi,0:2) => wrk_2d_5(1:jpi,1:3) 279 zdepw => wrk_2d_6(:,1:4) 280 zdift => wrk_2d_7(:,1:4) 281 zvisc => wrk_2d_8(:,1:4) 282 zdept => wrk_2d_9(:,1:3) 283 zriblk => wrk_2d_10(:,1:2) 284 ! 1D spaces 285 zmoa => wrk_1d_1(1:jpi) 286 zekman => wrk_1d_2(1:jpi) 287 zhmax => wrk_1d_3(1:jpi) 288 zria => wrk_1d_4(1:jpi) 289 zhbl => wrk_1d_5(1:jpi) 290 za2m => wrk_1d_6(1:jpi) 291 za3m => wrk_1d_7(1:jpi) 292 zkmpm => wrk_1d_8(1:jpi) 293 za2t => wrk_1d_9(1:jpi) 294 za3t => wrk_1d_10(1:jpi) 295 zkmpt => wrk_1d_11(1:jpi) 257 CALL wrk_alloc( jpi, zmoa, zekman, zhmax, zria, zhbl ) 258 CALL wrk_alloc( jpi, za2m, za3m, zkmpm, za2t, za3t, zkmpt ) 259 CALL wrk_alloc( jpi,2, zriblk ) 260 CALL wrk_alloc( jpi,3, zmoek, kjstart = 0 ) 261 CALL wrk_alloc( jpi,3, zdept ) 262 CALL wrk_alloc( jpi,4, zdepw, zdift, zvisc ) 263 CALL wrk_alloc( jpi,jpj, zBo, zBosol, zustar ) 264 CALL wrk_alloc( jpi,jpk, zmask, zblcm, zblct, zblcs ) 296 265 #if defined key_zdfddm 297 zdifs => wrk_2d_11(:,1:4)298 za2s => wrk_1d_12(1:jpi)299 za3s => wrk_1d_13(1:jpi)300 zkmps => wrk_1d_14(1:jpi)266 CALL wrk_alloc( jpi,4, zdifs ) 267 CALL wrk_alloc( jpi, zmoa, za2s, za3s, zkmps ) 268 CALL wrk_alloc( jpi,jpk, zblcs ) 269 CALL wrk_alloc( jpi,jpi,jpk, zdiffus ) 301 270 #endif 302 271 … … 1230 1199 ENDIF 1231 1200 1232 IF( wrk_not_released(1, 1,2,3,4,5,6,7,8,9,10,11,12,13,14) .OR. & 1233 wrk_not_released(2, 1,2,3,4,5,6,7,8,9,10,11) .OR. & 1234 wrk_not_released(3, 1) .OR. & 1235 wrk_not_released_xz(1,2,3) ) CALL ctl_stop('zdf_kpp : failed to release workspace arrays') 1201 CALL wrk_dealloc( jpi, zmoa, zekman, zhmax, zria, zhbl ) 1202 CALL wrk_dealloc( jpi, za2m, za3m, zkmpm, za2t, za3t, zkmpt ) 1203 CALL wrk_dealloc( jpi,2, zriblk ) 1204 CALL wrk_dealloc( jpi,3, zmoek, kjstart = 0 ) 1205 CALL wrk_dealloc( jpi,3, zdept ) 1206 CALL wrk_dealloc( jpi,4, zdepw, zdift, zvisc ) 1207 CALL wrk_dealloc( jpi,jpj, zBo, zBosol, zustar ) 1208 CALL wrk_dealloc( jpi,jpk, zmask, zblcm, zblct, zblcs ) 1209 #if defined key_zdfddm 1210 CALL wrk_dealloc( jpi,4, zdifs ) 1211 CALL wrk_dealloc( jpi, zmoa, za2s, za3s, zkmps ) 1212 CALL wrk_dealloc( jpi,jpk, zblcs ) 1213 CALL wrk_dealloc( jpi,jpi,jpk, zdiffus ) 1214 #endif 1236 1215 ! 1237 1216 END SUBROUTINE zdf_kpp -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfmxl.F90
r2787 r3155 16 16 USE iom ! I/O library 17 17 USE lib_mpp ! MPP library 18 USE wrk_nemo_2 ! work arrays 18 19 USE trc_oce, ONLY : lk_offline ! offline flag 19 20 … … 69 70 !! ** Action : nmln, hmld, hmlp, hmlpt 70 71 !!---------------------------------------------------------------------- 71 USE wrk_nemo, ONLY: iwrk_in_use, iwrk_not_released72 USE wrk_nemo, ONLY: imld => iwrk_2d_1 ! 2D integer workspace73 !!74 72 INTEGER, INTENT(in) :: kt ! ocean time-step index 75 73 !! 76 74 INTEGER :: ji, jj, jk ! dummy loop indices 77 75 INTEGER :: iikn, iiki ! temporary integer within a do loop 76 INTEGER, POINTER, DIMENSION(:,:) :: imld ! temporary workspace 78 77 REAL(wp) :: zrho_c = 0.01_wp ! density criterion for mixed layer depth 79 78 REAL(wp) :: zavt_c = 5.e-4_wp ! Kz criterion for the turbocline depth 80 79 !!---------------------------------------------------------------------- 81 80 82 IF( iwrk_in_use(2, 1) ) THEN 83 CALL ctl_stop('zdf_mxl : requested workspace array unavailable') ; RETURN 84 ENDIF 81 CALL wrk_alloc( jpi,jpj, imld ) 85 82 86 83 IF( kt == nit000 ) THEN … … 120 117 IF(ln_ctl) CALL prt_ctl( tab2d_1=REAL(nmln,wp), clinfo1=' nmln : ', tab2d_2=hmlp, clinfo2=' hmlp : ', ovlap=1 ) 121 118 ! 122 IF( iwrk_not_released(2, 1) ) CALL ctl_stop('zdf_mxl: failed to release workspace array')119 CALL wrk_dealloc( jpi,jpj, imld ) 123 120 ! 124 121 END SUBROUTINE zdf_mxl -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfric.F90
r3104 r3155 27 27 USE lbclnk ! ocean lateral boundary condition (or mpp link) 28 28 USE lib_mpp ! MPP library 29 USE wrk_nemo_2 ! work arrays 29 30 USE eosbn2, ONLY : nn_eos 30 31 … … 109 110 !! PFJ Lermusiaux 2001. 110 111 !!---------------------------------------------------------------------- 111 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released112 USE wrk_nemo, ONLY: zwx => wrk_2d_1 ! 2D workspace113 USE wrk_nemo, ONLY: ekm_dep => wrk_2d_2 ! 2D workspace114 112 USE phycst, ONLY: rsmall,rau0 115 113 USE sbc_oce, ONLY: taum … … 120 118 REAL(wp) :: zcoef, zdku, zdkv, zri, z05alp, zflageos ! temporary scalars 121 119 REAL(wp) :: zrhos, zustar 122 !!---------------------------------------------------------------------- 123 124 IF( wrk_in_use(2, 1,2) ) THEN 125 CALL ctl_stop('zdf_ric : requested workspace array unavailable') ; RETURN 126 ENDIF 120 REAL(wp), POINTER, DIMENSION(:,:) :: zwx, ekm_dep 121 !!---------------------------------------------------------------------- 122 123 CALL wrk_alloc( jpi,jpj, zwx, ekm_dep ) 127 124 ! ! =============== 128 125 DO jk = 2, jpkm1 ! Horizontal slab … … 224 221 CALL lbc_lnk( avmu, 'U', 1. ) ; CALL lbc_lnk( avmv, 'V', 1. ) 225 222 ! 226 IF( wrk_not_released(2, 1,2) ) CALL ctl_stop('zdf_ric: failed to release workspace array')223 CALL wrk_dealloc( jpi,jpj, zwx, ekm_dep ) 227 224 ! 228 225 END SUBROUTINE zdf_ric -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90
r2977 r3155 50 50 USE iom ! I/O manager library 51 51 USE lib_mpp ! MPP library 52 USE wrk_nemo_2 ! work arrays 52 53 53 54 IMPLICIT NONE … … 190 191 !! (= Kz dz[Ub] * dz[Un] ) 191 192 !! --------------------------------------------------------------------- 192 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, iwrk_in_use, iwrk_not_released193 193 USE oce , ONLY: zdiag => ua ! (ua,va) used as workspace 194 194 USE oce , ONLY: tsa ! (tsa) used as workspace 195 USE wrk_nemo, ONLY: imlc => iwrk_2d_1 ! 2D INTEGER workspace196 USE wrk_nemo, ONLY: zhlc => wrk_2d_1 ! 2D REAL workspace197 USE wrk_nemo, ONLY: zpelc => wrk_3d_1 ! 3D REAL workspace198 195 !! 199 196 INTEGER :: ji, jj, jk ! dummy loop arguments … … 210 207 !!bfr REAL(wp) :: zebot ! - - 211 208 REAL(wp), POINTER, DIMENSION(:,:,:) :: zd_up, zd_lw 209 INTEGER , POINTER, DIMENSION(:,: ) :: imlc 210 REAL(wp), POINTER, DIMENSION(:,: ) :: zhlc 211 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpelc 212 212 !!-------------------------------------------------------------------- 213 213 ! 214 IF( iwrk_in_use(2, 1) .OR. & 215 wrk_in_use(2, 1) .OR. & 216 wrk_in_use(3, 1) ) THEN 217 CALL ctl_stop('tke_tke: requested workspace arrays unavailable') ; RETURN 218 END IF 214 CALL wrk_alloc( jpi,jpj, imlc ) ! integer 215 CALL wrk_alloc( jpi,jpj, zhlc ) 216 CALL wrk_alloc( jpi,jpj,jpk, zpelc ) 219 217 ! 220 218 zd_up => tsa(:,:,:,1) … … 434 432 CALL lbc_lnk( en, 'W', 1. ) ! Lateral boundary conditions (sign unchanged) 435 433 ! 436 IF( iwrk_not_released(2 ,1) .OR. &437 wrk_not_released(2, 1) .OR. &438 wrk_not_released(3, 1) ) CALL ctl_stop( 'tke_tke: failed to release workspace arrays' )434 CALL wrk_dealloc( jpi,jpj, imlc ) ! integer 435 CALL wrk_dealloc( jpi,jpj, zhlc ) 436 CALL wrk_dealloc( jpi,jpj,jpk, zpelc ) 439 437 ! 440 438 END SUBROUTINE tke_tke -
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftmx.F90
r2715 r3155 25 25 USE iom ! I/O Manager 26 26 USE lib_mpp ! MPP library 27 USE wrk_nemo_2 ! work arrays 27 28 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 28 29 … … 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.') ; RETURN116 END IF 112 REAL(wp), POINTER, DIMENSION(:,:) :: zkz 113 !!---------------------------------------------------------------------- 114 115 CALL wrk_alloc( jpi,jpj, zkz ) 116 117 117 ! ! ----------------------- ! 118 118 ! ! Standard tidal mixing ! (compute zav_tide) … … 176 176 IF(ln_ctl) CALL prt_ctl(tab3d_1=zav_tide , clinfo1=' tmx - av_tide: ', tab3d_2=avt, clinfo2=' avt: ', ovlap=1, kdim=jpk) 177 177 ! 178 IF(wrk_not_released(2, 1))THEN 179 CALL ctl_stop('zdf_tmx : failed to release workspace array.') 180 END IF 178 CALL wrk_dealloc( jpi,jpj, zkz ) 181 179 ! 182 180 END SUBROUTINE zdf_tmx … … 203 201 !! References : Koch-Larrouy et al. 2007, GRL 204 202 !!---------------------------------------------------------------------- 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 203 INTEGER , INTENT(in ) :: kt ! ocean time-step 212 204 REAL(wp), INTENT(inout), DIMENSION(jpi,jpj,jpk) :: pav ! Tidal mixing coef. … … 214 206 INTEGER :: ji, jj, jk ! dummy loop indices 215 207 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 208 REAL(wp), DIMENSION(:,:) , POINTER :: zkz ! 2D workspace 209 REAL(wp), DIMENSION(:,:) , POINTER :: zsum1 , zsum2 , zsum ! - - 210 REAL(wp), DIMENSION(:,:,:), POINTER :: zempba_3d_1, zempba_3d_2 ! 3D workspace 211 REAL(wp), DIMENSION(:,:,:), POINTER :: zempba_3d , zdn2dz ! - - 212 REAL(wp), DIMENSION(:,:,:), POINTER :: zavt_itf ! - - 213 !!---------------------------------------------------------------------- 214 ! 215 CALL wrk_alloc( jpi,jpj, zkz, zsum1 , zsum2 , zsum ) 216 CALL wrk_alloc( jpi,jpj,jpk, zempba_3d_1, zempba_3d_2, zempba_3d, zdn2dz, zavt_itf ) 217 222 218 ! ! compute the form function using N2 at each time step 223 219 zempba_3d_1(:,:,jpk) = 0.e0 … … 304 300 END DO 305 301 ! 306 IF( wrk_not_released(2, 2,3,4,5) .OR. & 307 wrk_not_released(3, 1,2,3,4,5) )THEN 308 CALL ctl_stop('tmx_itf : failed to release workspace arrays.') 309 END IF 302 CALL wrk_dealloc( jpi,jpj, zkz, zsum1 , zsum2 , zsum ) 303 CALL wrk_dealloc( jpi,jpj,jpk, zempba_3d_1, zempba_3d_2, zempba_3d, zdn2dz, zavt_itf ) 310 304 ! 311 305 END SUBROUTINE tmx_itf … … 348 342 !!---------------------------------------------------------------------- 349 343 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 344 !! 357 345 INTEGER :: ji, jj, jk ! dummy loop indices 358 346 INTEGER :: inum ! local integer 359 347 REAL(wp) :: ztpc, ze_z ! local scalars 348 REAL(wp), DIMENSION(:,:) , POINTER :: zem2, zek1 ! read M2 and K1 tidal energy 349 REAL(wp), DIMENSION(:,:) , POINTER :: zkz ! total M2, K1 and S2 tidal energy 350 REAL(wp), DIMENSION(:,:) , POINTER :: zfact ! used for vertical structure function 351 REAL(wp), DIMENSION(:,:) , POINTER :: zhdep ! Ocean depth 352 REAL(wp), DIMENSION(:,:,:), POINTER :: zpc ! power consumption 360 353 !! 361 354 NAMELIST/namzdf_tmx/ rn_htmx, rn_n2min, rn_tfe, rn_me, ln_tmx_itf, rn_tfe_itf 362 355 !!---------------------------------------------------------------------- 363 356 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 357 CALL wrk_alloc( jpi,jpj, zem2, zek1, zkz, zfact, zhdep ) 358 CALL wrk_alloc( jpi,jpj,jpk, zpc ) 359 368 360 REWIND( numnam ) ! Read Namelist namtmx : Tidal Mixing 369 361 READ ( numnam, namzdf_tmx ) … … 526 518 ENDIF 527 519 ! 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')520 CALL wrk_dealloc( jpi,jpj, zem2, zek1, zkz, zfact, zhdep ) 521 CALL wrk_dealloc( jpi,jpj,jpk, zpc ) 530 522 ! 531 523 END SUBROUTINE zdf_tmx_init
Note: See TracChangeset
for help on using the changeset viewer.