Changeset 2977 for branches/2011/dev_LOCEAN_2011/NEMOGCM/NEMO/OPA_SRC/ZDF
- Timestamp:
- 2011-10-22T15:46:41+02:00 (13 years ago)
- Location:
- branches/2011/dev_LOCEAN_2011/NEMOGCM/NEMO/OPA_SRC/ZDF
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_LOCEAN_2011/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90
r2715 r2977 131 131 !! coefficients using the GLS turbulent closure scheme. 132 132 !!---------------------------------------------------------------------- 133 USE oce, z_elem_a => ua ! use ua as workspace 134 USE oce, z_elem_b => va ! use va as workspace 135 USE oce, z_elem_c => ta ! use ta as workspace 136 USE oce, psi => sa ! use sa as workspace 133 USE oce , ONLY z_elem_a => ua ! use ua as workspace 134 USE oce , ONLY z_elem_b => va ! use va as workspace 135 USE oce , ONLY tsa ! use tsa as workspace 137 136 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 138 137 USE wrk_nemo, ONLY: zdep => wrk_2d_1 … … 152 151 REAL(wp) :: prod, buoy, diss, zdiss, sm ! - - 153 152 REAL(wp) :: gh, gm, shr, dif, zsqen, zav ! - - 153 REAL(wp), POINTER, DIMENSION(:,:,:) :: z_elem_c, psi 154 154 !!-------------------------------------------------------------------- 155 155 … … 157 157 CALL ctl_stop('zdf_gls: requested workspace arrays unavailable.') ; RETURN 158 158 END IF 159 ! 160 z_elem_c => tsa(:,:,:,1) 161 psi => tsa(:,:,:,2) 159 162 160 163 ! Preliminary computing -
branches/2011/dev_LOCEAN_2011/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfkpp.F90
r2715 r2977 206 206 !! the equation number. (LMD94, here after) 207 207 !!---------------------------------------------------------------------- 208 #if defined key_zdfddm209 208 USE oce , zviscos => ua ! temp. array for viscosities use ua as workspace 210 USE oce , zdiffut => ta ! temp. array for diffusivities use sa as workspace 211 USE oce , zdiffus => sa ! temp. array for diffusivities use sa as workspace 212 #else 213 USE oce , zviscos => ua ! temp. array for viscosities use ua as workspace 214 USE oce , zdiffut => ta ! temp. array for diffusivities use sa as workspace 215 #endif 209 USE oce , zdiffut => va ! temp. array for diffusivities use sa as workspace 216 210 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, wrk_in_use_xz, wrk_not_released_xz 217 211 USE wrk_nemo, ONLY: zBo => wrk_2d_1, & ! Surface buoyancy forcing, … … 229 223 zblct => wrk_xz_2 ! diffusivities/viscosities 230 224 #if defined key_zdfddm 231 USE wrk_nemo, ONLY: zblcs => wrk_xz_3 225 USE wrk_nemo, ONLY: zdiffus => wrk_3d_1 226 USE wrk_nemo, ONLY: zblcs => wrk_xz_3 232 227 #endif 233 228 !! … … 270 265 REAL(wp), POINTER, DIMENSION(:,:) :: zdifs 271 266 REAL(wp), POINTER, DIMENSION(:) :: za2s, za3s, zkmps 272 REAL(wp) :: zkm1s267 REAL(wp) :: zkm1s 273 268 #endif 274 269 !!-------------------------------------------------------------------- … … 276 271 IF( wrk_in_use(1, 1,2,3,4,5,6,7,8,9,10,11,12,13,14) .OR. & 277 272 wrk_in_use(2, 1,2,3,4,5,6,7,8,9,10,11) .OR. & 273 wrk_in_use(3, 1) .OR. & 278 274 wrk_in_use_xz(1,2,3) ) THEN 279 275 CALL ctl_stop('zdf_kpp : requested workspace arrays unavailable.') ; RETURN … … 369 365 ! only retains positive value of rrau 370 366 zrrau = MAX( rrau(ji,jj,jk), epsln ) 371 zds = sn(ji,jj,jk-1) - sn(ji,jj,jk)367 zds = tsn(ji,jj,jk-1,jp_sal) - tsn(ji,jj,jk,jp_sal) 372 368 IF( zrrau > 1. .AND. zds > 0.) THEN 373 369 ! … … 418 414 DO ji = fs_2, fs_jpim1 419 415 IF( nn_eos < 1) THEN 420 zt = t n(ji,jj,1)421 zs = sn(ji,jj,1) - 35.0416 zt = tsn(ji,jj,1,jp_tem) 417 zs = tsn(ji,jj,1,jp_sal) - 35.0 422 418 zh = fsdept(ji,jj,1) 423 419 ! potential volumic mass … … 449 445 450 446 zthermal = zbeta * zalbet / ( rcp * zrhos + epsln ) 451 zhalin = zbeta * sn(ji,jj,1) * rcs447 zhalin = zbeta * tsn(ji,jj,1,jp_sal) * rcs 452 448 ELSE 453 449 zrhos = rhop(ji,jj,1) + rau0 * ( 1. - tmask(ji,jj,1) ) 454 450 zthermal = rn_alpha / ( rcp * zrhos + epsln ) 455 zhalin = rn_beta * sn(ji,jj,1) * rcs451 zhalin = rn_beta * tsn(ji,jj,1,jp_sal) * rcs 456 452 ENDIF 457 453 ! Radiative surface buoyancy force … … 462 458 wt0(ji,jj) = - ( qsr(ji,jj) + qns(ji,jj) )* ro0cpr * tmask(ji,jj,1) 463 459 ! Surface salinity flux for non-local term 464 ws0(ji,jj) = - ( ( emps(ji,jj)-rnf(ji,jj) ) * sn(ji,jj,1) * rcs ) * tmask(ji,jj,1)460 ws0(ji,jj) = - ( ( emps(ji,jj)-rnf(ji,jj) ) * tsn(ji,jj,1,jp_sal) * rcs ) * tmask(ji,jj,1) 465 461 ENDDO 466 462 ENDDO … … 543 539 ! zref = gdept(1) 544 540 zref = fsdept(ji,jj,1) 545 zt = t n(ji,jj,1)546 zs = sn(ji,jj,1)541 zt = tsn(ji,jj,1,jp_tem) 542 zs = tsn(ji,jj,1,jp_sal) 547 543 zrh = rhop(ji,jj,1) 548 544 zu = ( ub(ji,jj,1) + ub(ji - 1,jj ,1) ) / MAX( 1. , umask(ji,jj,1) + umask(ji - 1,jj ,1) ) … … 556 552 ! vertically integration over the upper epsilon*gdept(jk) ; del () array is computed once in zdf_kpp_init 557 553 DO jm = 1, jpkm1 558 zt = zt + del(jk,jm) * t n(ji,jj,jm)559 zs = zs + del(jk,jm) * sn(ji,jj,jm)554 zt = zt + del(jk,jm) * tsn(ji,jj,jm,jp_tem) 555 zs = zs + del(jk,jm) * tsn(ji,jj,jm,jp_sal) 560 556 zu = zu + 0.5 * del(jk,jm) & 561 557 & * ( ub(ji,jj,jm) + ub(ji - 1,jj,jm) ) & … … 567 563 END DO 568 564 #endif 569 zsr = SQRT( ABS( sn(ji,jj,jk) ) )565 zsr = SQRT( ABS( tsn(ji,jj,jk,jp_sal) ) ) 570 566 ! depth 571 567 zh = fsdept(ji,jj,jk) … … 1234 1230 ENDIF 1235 1231 1236 IF( wrk_not_released(1, 1,2,3,4,5,6,7,8,9,10,11,12,13,14) .OR. 1237 wrk_not_released(2, 1,2,3,4,5,6,7,8,9,10,11) .OR. 1238 wrk_not_released _xz(1,2,3) )&1239 CALL ctl_stop('zdf_kpp : failed to release workspace arrays')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') 1240 1236 ! 1241 1237 END SUBROUTINE zdf_kpp -
branches/2011/dev_LOCEAN_2011/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90
r2715 r2977 191 191 !! --------------------------------------------------------------------- 192 192 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, iwrk_in_use, iwrk_not_released 193 USE oce , ONLY: zdiag => ua , zd_up => va , zd_lw => ta ! (ua,va,ta) used as workspace 193 USE oce , ONLY: zdiag => ua ! (ua,va) used as workspace 194 USE oce , ONLY: tsa ! (tsa) used as workspace 194 195 USE wrk_nemo, ONLY: imlc => iwrk_2d_1 ! 2D INTEGER workspace 195 196 USE wrk_nemo, ONLY: zhlc => wrk_2d_1 ! 2D REAL workspace 196 197 USE wrk_nemo, ONLY: zpelc => wrk_3d_1 ! 3D REAL workspace 197 ! 198 !! 198 199 INTEGER :: ji, jj, jk ! dummy loop arguments 199 200 !!bfr INTEGER :: ikbu, ikbv, ikbum1, ikbvm1 ! temporary scalar … … 208 209 REAL(wp) :: zzd_up, zzd_lw ! - - 209 210 !!bfr REAL(wp) :: zebot ! - - 211 REAL(wp), POINTER, DIMENSION(:,:,:) :: zd_up, zd_lw 210 212 !!-------------------------------------------------------------------- 211 213 ! … … 215 217 CALL ctl_stop('tke_tke: requested workspace arrays unavailable') ; RETURN 216 218 END IF 219 ! 220 zd_up => tsa(:,:,:,1) 221 zd_lw => tsa(:,:,:,2) 217 222 218 223 zbbrau = rn_ebb / rau0 ! Local constant initialisation … … 471 476 !! - avmu, avmv : now vertical eddy viscosity at uw- and vw-points 472 477 !!---------------------------------------------------------------------- 473 USE oce, ONLY: zmpdl => ua , zmxlm => va , zmxld => ta ! (ua,va,ta) used as workspace 478 USE oce, ONLY: zmpdl => ua ! ua used as workspace 479 USE oce, ONLY: tsa ! use tsa as workspace 474 480 !! 475 481 INTEGER :: ji, jj, jk ! dummy loop indices … … 477 483 REAL(wp) :: zdku, zpdlr, zri, zsqen ! - - 478 484 REAL(wp) :: zdkv, zemxl, zemlm, zemlp ! - - 485 REAL(wp), POINTER, DIMENSION(:,:,:) :: zmxlm, zmxld 479 486 !!-------------------------------------------------------------------- 487 ! 488 zmxlm => tsa(:,:,:,1) 489 zmxld => tsa(:,:,:,2) 480 490 481 491 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Note: See TracChangeset
for help on using the changeset viewer.