Changeset 255
- Timestamp:
- 2005-09-02T17:06:49+02:00 (19 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/CONFIG/GYRE/EXP00/namelist
r180 r255 281 281 ! alp coefficient of the parameterization 282 282 ! nric coefficient of the parameterization 283 &nam wri283 &namric 284 284 avmri = 100.e-4 285 285 alp = 5. … … 321 321 npdl = 1 322 322 navb = 0 323 / 324 !----------------------------------------------------------------------- 325 ! namkpp K-Profile Parameterization dependent vertical diffusion 326 ! ( #ifdef "key_zdfkpp" ) 327 !----------------------------------------------------------------------- 328 ! ln_kpprimix shear instability mixing (default T) 329 ! difmiw constant internal wave viscosity (m2/s) 330 ! difsiw constant internal wave diffusivity (m2/s) 331 ! Riinfty local Richardson Number limit for shear instability 332 ! difri maximum shear mixing at Rig = 0 (m2/s) 333 ! bvsqcon Brunt-Vaisala squared (1/s**2) for maximum convection 334 ! difcon maximum mixing in interior convection (m2/s) 335 ! nave = 0/1 flag for horizontal average on avt, avmu, avmv 336 ! navb = 0/1 flag for constant or profile background avt 337 &namkpp 338 ln_kpprimix = .true. 339 difmiw = 1.e-04 340 difsiw = 0.1e-04 341 Riinfty = 0.8 342 difri = 0.0050 343 bvsqcon = -0.01e-07 344 difcon = 1. 345 navb = 0 346 nave = 1 323 347 / 324 348 !----------------------------------------------------------------------- -
trunk/CONFIG/ORCA2_LIM/EXP00/namelist
r180 r255 281 281 ! alp coefficient of the parameterization 282 282 ! nric coefficient of the parameterization 283 &nam wri283 &namric 284 284 avmri = 100.e-4 285 285 alp = 5. … … 321 321 npdl = 1 322 322 navb = 0 323 / 324 !----------------------------------------------------------------------- 325 ! namkpp K-Profile Parameterization dependent vertical diffusion 326 ! ( #ifdef "key_zdfkpp" ) 327 !----------------------------------------------------------------------- 328 ! ln_kpprimix shear instability mixing (default T) 329 ! difmiw constant internal wave viscosity (m2/s) 330 ! difsiw constant internal wave diffusivity (m2/s) 331 ! Riinfty local Richardson Number limit for shear instability 332 ! difri maximum shear mixing at Rig = 0 (m2/s) 333 ! bvsqcon Brunt-Vaisala squared (1/s**2) for maximum convection 334 ! difcon maximum mixing in interior convection (m2/s) 335 ! nave = 0/1 flag for horizontal average on avt, avmu, avmv 336 ! navb = 0/1 flag for constant or profile background avt 337 &namkpp 338 ln_kpprimix = .true. 339 difmiw = 1.e-04 340 difsiw = 0.1e-04 341 Riinfty = 0.8 342 difri = 0.0050 343 bvsqcon = -0.01e-07 344 difcon = 1. 345 navb = 0 346 nave = 1 323 347 / 324 348 !----------------------------------------------------------------------- -
trunk/NEMO/C1D_SRC/diawri1d.F90
r253 r255 14 14 USE zdf_oce ! ocean vertical physics 15 15 USE zdftke ! TKE vertical mixing 16 USE zdfkpp ! KPP vertical mixing 16 17 USE sol_oce ! solver variables 17 18 USE ice_oce ! ice variables … … 213 214 CALL histdef( nid_T, "somxl010", "Mixed Layer Depth 0.01" , "m" , & ! hmlp 214 215 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 216 #if defined key_zdfkpp 217 CALL histdef( nid_T, "sokppekd", "Ekman depth " , "m" , & ! sokppekd 218 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 219 CALL histdef( nid_T, "sokppbld", "Boundary Layer Depth " , "m" , & ! sokppbld 220 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 221 #endif 215 222 CALL histdef( nid_T, "somxlavt", "AVT : bottom of the mixed layer ", "m" , & ! avt_mxl 216 223 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) … … 295 302 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 296 303 #endif 304 #if defined key_zdfkpp 305 ! !!! nid_W : 3D 306 CALL histdef( nid_T, "vokpprig", " Gradient Richardson Number" , "-" , & ! rig 307 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 308 ! 309 CALL histdef( nid_T, "vokpprib", " Bulk Richardson Number " , "-" , & ! rib 310 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 311 ! 312 CALL histdef( nid_T, "vokppbsf", " Buoyancy forcing " , "N/m2" , & ! sokppbsf 313 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 314 ! 315 CALL histdef( nid_T, "vokppmol", "Moning Obukhov length scale " , "m" , & ! sokppmol 316 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 317 #endif 297 318 ! 298 319 CALL histdef( nid_T, "voeosbn2", "Brunt-Vaisala Frequency" , "m2/s2" , & ! rn2 … … 302 323 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 303 324 325 CALL histdef( nid_T, "votkeevd", "Enhanced Vertical Diffusivity", "m2/s" , & ! avt_evd 326 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 304 327 305 328 CALL histdef( nid_T, "votkeavm", "Vertical Eddy Viscosity", "m2/s" , & ! avmu 306 329 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 307 330 ! 331 CALL histdef( nid_T, "votkeevm", "Enhanced Vertical Viscosity", "m2/s" , & ! avmu_evd 332 & jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 308 333 309 334 IF( lk_zdfddm ) THEN … … 349 374 CALL histwrite( nid_T, "soshfldo", it, qsr , ndim_hT, ndex_hT ) ! solar heat flux 350 375 CALL histwrite( nid_T, "somxl010", it, hmlp , ndim_hT, ndex_hT ) ! mixed layer depth 376 #if defined key_zdfkpp 377 CALL histwrite( nid_T, "sokppekd", it, ekdp , ndim_hT, ndex_hT ) ! Ekman depht 378 CALL histwrite( nid_T, "sokppbld", it, hkpp , ndim_hT, ndex_hT ) ! boundary layer depth 379 #endif 351 380 ! store the vertical eddy diffusivity coef. at the bottom of the mixed layer 352 381 DO jj = 1, jpj … … 396 425 CALL histwrite( nid_T, "votkeend", it, en , ndim_T , ndex_T ) ! TKE 397 426 #endif 427 #if defined key_zdfkpp 428 CALL histwrite( nid_T, "vokpprig", it, rig , ndim_T , ndex_T ) ! gradient Richardson number 429 CALL histwrite( nid_T, "vokpprib", it, rib , ndim_T , ndex_T ) ! bulk Richardson number 430 CALL histwrite( nid_T, "vokppbsf", it, buof , ndim_T , ndex_T ) ! buoyancy forcing 431 CALL histwrite( nid_T, "vokppmol", it, mols , ndim_T , ndex_T ) ! Moning-Obukov length scale 432 #endif 398 433 CALL histwrite( nid_T, "voeosbn2", it, rn2 , ndim_T , ndex_T ) ! Brunt-Vaisala Frequency 399 434 CALL histwrite( nid_T, "votkeavt", it, avt , ndim_T , ndex_T ) ! T vert. eddy diff. coef. 435 CALL histwrite( nid_T, "votkeevd", it, avt_evd , ndim_T , ndex_T ) ! T enhan. vert. eddy diff. coef. 400 436 CALL histwrite( nid_T, "votkeavm", it, avmu , ndim_T , ndex_T ) ! T vert. eddy visc. coef. 437 CALL histwrite( nid_T, "votkeevm", it, avmu_evd , ndim_T , ndex_T ) ! T enhan. vert. eddy visc. coef. 401 438 IF( lk_zdfddm ) THEN 402 439 CALL histwrite( nid_T, "voddmavs", it, fsavs(:,:,:), ndim_T, ndex_T ) ! S vert. eddy diff. coef. -
trunk/NEMO/C1D_SRC/step1d.F90
r253 r255 51 51 USE zdfbfr ! bottom friction (zdf_bfr routine) 52 52 USE zdftke ! TKE vertical mixing (zdf_tke routine) 53 USE zdfkpp ! KPP vertical mixing (zdf_kpp routine) 53 54 USE zdfddm ! double diffusion mixing (zdf_ddm routine) 54 55 USE zdfevd ! enhanced vertical diffusion (zdf_evd routine) … … 184 185 IF( lk_zdfric ) CALL zdf_ric( kstp ) ! Richardson number dependent Kz 185 186 IF( lk_zdftke ) CALL zdf_tke( kstp ) ! TKE closure scheme for Kz 187 IF( lk_zdfkpp ) CALL zdf_kpp( kstp ) ! KPP scheme for Kz 186 188 IF( lk_zdfcst ) avt (:,:,:) = avt0 * tmask(:,:,:) ! Constant Kz (reset avt to the background value) 187 189 … … 189 191 IF( ln_zdfevd ) CALL zdf_evd( kstp ) ! enhanced vertical eddy diffusivity 190 192 191 IF( lk_zdfddm ) CALL zdf_ddm( kstp ) ! double diffusive mixing 193 IF( lk_zdfddm .AND. .NOT. lk_zdfkpp) & 194 & CALL zdf_ddm( kstp ) ! double diffusive mixing 192 195 193 196 CALL zdf_bfr( kstp ) ! bottom friction -
trunk/NEMO/OPA_SRC/DIA/diawri.F90
r247 r255 358 358 CALL histdef( nid_W, "votkeavt", "Vertical Eddy Diffusivity" , "m2/s" , & ! avt 359 359 & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 360 361 CALL histdef( nid_W, "votkeevd", "Enhanced Vertical Diffusivity", "m2/s" , & ! avt_evd 362 & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 363 ! 364 CALL histdef( nid_W, "votkeavm", "Vertical Eddy Viscosity" , "m2/s" , & ! avmu 365 & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 366 367 CALL histdef( nid_W, "votkeevm", "Enhanced Vertical Viscosity", "m2/s" , & ! avmu_evd 368 & jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 369 360 370 IF( lk_zdfddm ) THEN 361 371 CALL histdef( nid_W,"voddmavs","Salt Vertical Eddy Diffusivity" , "m2/s" , & ! avs … … 472 482 # endif 473 483 CALL histwrite( nid_W, "votkeavt", it, avt , ndim_T, ndex_T ) ! T vert. eddy diff. coef. 484 CALL histwrite( nid_W, "votkeevd", it, avt_evd , ndim_T, ndex_T ) ! T enhan. vert. eddy diff. coef. 485 CALL histwrite( nid_W, "votkeavm", it, avmu , ndim_T, ndex_T ) ! T vert. eddy visc. coef. 486 CALL histwrite( nid_W, "votkeevm", it, avmu_evd , ndim_T, ndex_T ) ! T enhan. vert. eddy visc. coef. 474 487 IF( lk_zdfddm ) THEN 475 488 CALL histwrite( nid_W, "voddmavs", it, fsavs(:,:,:), ndim_T, ndex_T ) ! S vert. eddy diff. coef. -
trunk/NEMO/OPA_SRC/DOM/dommsk.F90
r247 r255 174 174 175 175 176 #if defined key_zdfkpp 177 ! land point on Bab el Mandeb zonal section 178 ij0 = 87 ; ij1 = 88 179 ii0 = 160 ; ii1 = 161 180 tmask( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) , 1:jpk ) = 0.e0 181 #endif 176 182 ! Interior domain mask (used for global sum) 177 183 ! -------------------- -
trunk/NEMO/OPA_SRC/TRA/trazdf_imp.F90
r247 r255 15 15 USE ldftra_oce ! ocean active tracers: lateral physics 16 16 USE zdfddm ! ocean vertical physics: double diffusion 17 USE zdfkpp ! KPP parameterisation 17 18 USE trdmod ! ocean active tracers trends 18 19 USE trdmod_oce ! ocean variables trends … … 71 72 !! 8.5 ! 02-08 (G. Madec) F90: Free form and module 72 73 !! 9.0 ! 04-08 (C. Talandier) New trends organization 74 !! 9.0 ! 05-01 (C. Ethe ) non-local flux in KPP vertical mixing scheme 73 75 !!--------------------------------------------------------------------- 74 76 !! * Modules used … … 132 134 133 135 ! Second member construction 134 DO jk = 1, jpkm1 135 DO ji = 2, jpim1 136 #if defined key_zdfkpp 137 ! add non-local temperature flux ( in convective case only) 138 DO jk = 1, jpkm1 139 DO ji = 2, jpim1 140 zwy(ji,jk) = tb(ji,jj,jk) + r2dt(jk) * ta(ji,jj,jk) & 141 & - r2dt(jk) * ( ghats(ji,jj,jk) * avt(ji,jj,jk) - ghats(ji,jj,jk+1) * avt(ji,jj,jk+1) ) & 142 & * wt0(ji,jj) / fse3t(ji,jj,jk) 143 END DO 144 END DO 145 #else 146 DO jk = 1, jpkm1 147 DO ji = 2, jpim1 136 148 zwy(ji,jk) = tb(ji,jj,jk) + r2dt(jk) * ta(ji,jj,jk) 137 149 END DO 138 150 END DO 151 #endif 139 152 140 153 ! Matrix inversion from the first level … … 178 191 #endif 179 192 ! Second member construction 180 DO jk = 1, jpkm1 181 DO ji = 2, jpim1 193 #if defined key_zdfkpp 194 ! add non-local salinity flux ( in convective case only) 195 DO jk = 1, jpkm1 196 DO ji = 2, jpim1 197 zwy(ji,jk) = sb(ji,jj,jk) + r2dt(jk) * sa(ji,jj,jk) & 198 & - r2dt(jk) * ( ghats(ji,jj,jk) * fsavs(ji,jj,jk) - ghats(ji,jj,jk+1) * fsavs(ji,jj,jk+1) ) & 199 & * ws0(ji,jj) / fse3t(ji,jj,jk) 200 END DO 201 END DO 202 #else 203 DO jk = 1, jpkm1 204 DO ji = 2, jpim1 182 205 zwy(ji,jk) = sb(ji,jj,jk) + r2dt(jk) * sa(ji,jj,jk) 183 206 END DO 184 207 END DO 185 208 #endif 209 186 210 ! Matrix inversion from the first level 187 211 ikst = 1 -
trunk/NEMO/OPA_SRC/TRA/trazdf_iso.F90
r247 r255 23 23 USE in_out_manager ! I/O manager 24 24 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 25 USE zdfkpp ! KPP parameterisation 25 26 26 27 IMPLICIT NONE … … 114 115 !! 8.5 ! 02-08 (G. Madec) F90: Free form and module 115 116 !! 9.0 ! 04-08 (C. Talandier) New trends organization 117 !! 9.0 ! 05-06 (C. Ethe ) non-local flux in KPP vertical mixing scheme 116 118 !!--------------------------------------------------------------------- 117 119 !! * Modules used … … 450 452 451 453 ! Second member construction 454 #if defined key_zdfkpp 455 ! add non-local temperature flux ( in convective case only) 456 DO jk = 1, jpkm1 457 DO ji = 2, jpim1 458 ! zrhs=right hand side 459 zwy(ji,jk) = tb(ji,jj,jk) + z2dt(jk) * ta(ji,jj,jk) & 460 & - z2dt(jk) * ( ghats(ji,jj,jk) * avt(ji,jj,jk) - ghats(ji,jj,jk+1) * avt(ji,jj,jk+1) ) & 461 & * wt0(ji,jj) / fse3t(ji,jj,jk) 462 END DO 463 END DO 464 #else 452 465 DO jk = 1, jpkm1 453 466 DO ji = 2, jpim1 … … 455 468 END DO 456 469 END DO 470 #endif 457 471 458 472 ! Matrix inversion from the first level … … 495 509 #endif 496 510 ! Second member construction 511 512 #if defined key_zdfkpp 513 ! add non-local temperature flux ( in convective case only) 514 DO jk = 1, jpkm1 515 DO ji = 2, jpim1 516 ! zrhs=right hand side 517 zwy(ji,jk) = sb(ji,jj,jk) + z2dt(jk) * sa(ji,jj,jk) & 518 & - z2dt(jk) * ( ghats(ji,jj,jk) * fsavs(ji,jj,jk) - ghats(ji,jj,jk+1) * fsavs(ji,jj,jk+1) ) & 519 & * ws0(ji,jj) / fse3t(ji,jj,jk) 520 END DO 521 END DO 522 #else 497 523 DO jk = 1, jpkm1 498 524 DO ji = 2, jpim1 … … 500 526 END DO 501 527 END DO 528 #endif 502 529 503 530 ! Matrix inversion from the first level -
trunk/NEMO/OPA_SRC/TRA/trazdf_iso_vopt.F90
r247 r255 26 26 USE in_out_manager ! I/O manager 27 27 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 28 USE zdfkpp ! KPP parameterisation 28 29 29 30 IMPLICIT NONE … … 65 66 !! 8.5 ! 02-08 (G. Madec) F90: Free form and module 66 67 !! 9.0 ! 04-08 (C. Talandier) New trends organization 68 !! 9.0 ! 05-06 (C. Ethe) KPP parameterization 67 69 !!--------------------------------------------------------------------- 68 70 !! * Arguments … … 162 164 !! 8.5 ! 02-08 (G. Madec) F90: Free form and module 163 165 !! 9.0 ! 04-08 (C. Talandier) New trends organization 166 !! 9.0 ! 05-06 (C. Ethe ) non-local flux in KPP vertical mixing scheme 164 167 !!--------------------------------------------------------------------- 165 168 !! * Modules used … … 281 284 282 285 ! second recurrence: Zk = Yk - Ik / Tk-1 Zk-1 286 #if defined key_zdfkpp 287 ! add non-local temperature flux ( in convective case only) 288 DO jj = 2, jpjm1 289 DO ji = fs_2, fs_jpim1 290 ta(ji,jj,1) = tb(ji,jj,1) + r2dt(1) * ta(ji,jj,1) & 291 & - r2dt(1) * ( ghats(ji,jj,1) * avt(ji,jj,1) - ghats(ji,jj,2) * avt(ji,jj,2) ) & 292 & * wt0(ji,jj) / fse3t(ji,jj,2) 293 END DO 294 END DO 295 296 DO jk = 2, jpkm1 297 DO jj = 2, jpjm1 298 DO ji = fs_2, fs_jpim1 299 ! zrhs=right hand side 300 zrhs = tb(ji,jj,jk) + r2dt(jk) * ta(ji,jj,jk) & 301 & - r2dt(jk) * ( ghats(ji,jj,jk) * avt(ji,jj,jk) - ghats(ji,jj,jk+1) * avt(ji,jj,jk+1) ) & 302 & * wt0(ji,jj) / fse3t(ji,jj,jk) 303 ta(ji,jj,jk) = zrhs - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) *ta(ji,jj,jk-1) 304 END DO 305 END DO 306 END DO 307 #else 283 308 DO jj = 2, jpjm1 284 309 DO ji = fs_2, fs_jpim1 … … 294 319 END DO 295 320 END DO 321 #endif 296 322 297 323 ! third recurrence: Xk = (Zk - Sk Xk+1 ) / Tk … … 371 397 372 398 ! second recurrence: Zk = Yk - Ik / Tk-1 Zk-1 399 400 #if defined key_zdfkpp 401 ! add non-local temperature flux ( in convective case only) 402 DO jj = 2, jpjm1 403 DO ji = fs_2, fs_jpim1 404 sa(ji,jj,1) = sb(ji,jj,1) + r2dt(1) * sa(ji,jj,1) & 405 & - r2dt(1) * ( ghats(ji,jj,1) * fsavs(ji,jj,1) - ghats(ji,jj,2) * fsavs(ji,jj,2) ) & 406 & * ws0(ji,jj) / fse3t(ji,jj,2) 407 END DO 408 END DO 409 410 DO jk = 2, jpkm1 411 DO jj = 2, jpjm1 412 DO ji = fs_2, fs_jpim1 413 ! zrhs=right hand side 414 zrhs = sb(ji,jj,jk) + r2dt(jk) * sa(ji,jj,jk) & 415 & - r2dt(jk) * ( ghats(ji,jj,jk) * fsavs(ji,jj,jk) - ghats(ji,jj,jk+1) * fsavs(ji,jj,jk+1) ) & 416 & * ws0(ji,jj) / fse3t(ji,jj,jk) 417 sa(ji,jj,jk) = zrhs - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) *sa(ji,jj,jk-1) 418 END DO 419 END DO 420 END DO 421 #else 373 422 DO jj = 2, jpjm1 374 423 DO ji = fs_2, fs_jpim1 … … 384 433 END DO 385 434 END DO 435 #endif 386 436 387 437 ! third recurrence: Xk = (Zk - Sk Xk+1 ) / Tk -
trunk/NEMO/OPA_SRC/ZDF/zdf_oce.F90
r247 r255 48 48 avmu, & !: vertical viscosity coeff. at uw-, vw-points 49 49 avmv, & !: vertical viscosity coeff. at uw-, vw-points 50 avt !: vertical diffusivity coeff. at w-point 50 avt , & !: vertical diffusivity coeff. at w-point 51 avt_evd, & !: convection: enhanced vertical diffusivity coeff. at w-point 52 avmu_evd !: convection: enhanced vertical viscosity coeff. at w-point 51 53 52 54 REAL(wp), PUBLIC, DIMENSION(jpk) :: & !: -
trunk/NEMO/OPA_SRC/ZDF/zdfevd.F90
r247 r255 15 15 USE dom_oce ! ocean space and time domain variables 16 16 USE zdf_oce ! ocean vertical physics variables 17 USE zdfkpp ! KPP vertical mixing 17 18 USE in_out_manager ! I/O manager 18 19 USE lbclnk ! ocean lateral boundary conditions (or mpp link) … … 24 25 PUBLIC zdf_evd ! called by step.F90 25 26 27 !! * Substitutions 28 # include "domzgr_substitute.h90" 26 29 !!---------------------------------------------------------------------- 27 30 !! OPA 9.0 , LOCEAN-IPSL (2005) … … 44 47 !! 45 48 !! ** Action : Update avt, avmu, avmv in statically instable cases 46 !! 49 !! and avt_evd which is avt due to convection 47 50 !! References : 48 51 !! Lazar, A., these de l'universite Paris VI, France, 1997 … … 50 53 !! 7.0 ! 97-06 (G. Madec, A. Lazar) Original code 51 54 !! 8.5 ! 02-06 (G. Madec) F90: Free form and module 55 !! 9.0 ! 05-06 (C. Ethe) KPP parameterization 52 56 !!---------------------------------------------------------------------- 53 57 !! * Arguments … … 65 69 ENDIF 66 70 71 ! Initialisation of avt_evd (vertical diffusion due to convection) to avt and avmu_evd to avmu 72 avt_evd (:,:,:) = avt(:,:,:) 73 avmu_evd (:,:,:) = avmu(:,:,:) 74 67 75 SELECT CASE ( nevdm ) 68 76 … … 75 83 jj = 1 ! big loop forced 76 84 DO ji = jpi+2, jpij 85 # if defined key_zdfkpp 86 !! no implicit mixing in the boundary layer with KPP 87 IF( ( rn2(ji,jj,jk) <= -1.e-12 ) .AND. ( fsdepw(ji,jj,jk) > hkpp(ji,jj) ) ) THEN 88 # else 77 89 IF( rn2(ji,jj,jk) <= -1.e-12 ) THEN 90 # endif 78 91 avt (ji ,jj ,jk) = avevd * tmask(ji ,jj ,jk) 79 92 avmu(ji ,jj ,jk) = avevd * umask(ji ,jj ,jk) … … 86 99 DO jj = 2, jpj ! no vector opt. 87 100 DO ji = 2, jpi 88 IF( rn2(ji,jj,jk) <= -1.e-12 ) THEN 101 # if defined key_zdfkpp 102 !! no implicit mixing in the boundary layer with KPP 103 IF( ( rn2(ji,jj,jk) <= -1.e-12 ) .AND. ( fsdepw(ji,jj,jk) > hkpp(ji,jj) ) ) THEN 104 # else 105 IF( rn2(ji,jj,jk) <= -1.e-12 ) THEN 106 # endif 89 107 avt (ji ,jj ,jk) = avevd * tmask(ji ,jj ,jk) 90 108 avmu(ji ,jj ,jk) = avevd * umask(ji ,jj ,jk) … … 114 132 jj = 1 ! big loop forced 115 133 DO ji = 1, jpij 134 # if defined key_zdfkpp 135 !! no implicit mixing in the boundary layer with KPP 136 IF( ( rn2(ji,jj,jk) <= -1.e-12 ) .AND. ( fsdepw(ji,jj,jk) > hkpp(ji,jj) ) ) & 137 avt(ji,jj,jk) = avevd * tmask(ji,jj,jk) 138 # else 116 139 IF( rn2(ji,jj,jk) <= -1.e-12 ) avt(ji,jj,jk) = avevd * tmask(ji,jj,jk) 140 # endif 117 141 END DO 118 142 # else 119 143 DO jj = 1, jpj ! loop over the whole domain (no lbc_lnk call) 120 144 DO ji = 1, jpi 145 # if defined key_zdfkpp 146 !! no implicit mixing in the boundary layer with KPP 147 IF( ( rn2(ji,jj,jk) <= -1.e-12 ) .AND. ( fsdepw(ji,jj,jk) > hkpp(ji,jj) ) ) & 148 avt(ji,jj,jk) = avevd * tmask(ji,jj,jk) 149 # else 121 150 IF( rn2(ji,jj,jk) <= -1.e-12 ) avt(ji,jj,jk) = avevd * tmask(ji,jj,jk) 151 # endif 122 152 END DO 123 153 END DO … … 128 158 END SELECT 129 159 160 ! update of avt_evd and avmu_evd 161 avt_evd (:,:,:) = avt (:,:,:) - avt_evd (:,:,:) 162 avmu_evd (:,:,:) = avmu(:,:,:) - avmu_evd (:,:,:) 163 130 164 END SUBROUTINE zdf_evd 131 165 -
trunk/NEMO/OPA_SRC/ZDF/zdfini.F90
r247 r255 10 10 !! * Modules used 11 11 USE par_oce ! mesh and scale factors 12 USE ldftra_oce ! ???13 USE ldfdyn_oce ! ???12 USE ldftra_oce ! ocean active tracers: lateral physics 13 USE ldfdyn_oce ! ocean dynamics lateral physics 14 14 USE zdf_oce ! TKE vertical mixing 15 USE zdftke ! TKE vertical mixing 15 USE lib_mpp ! distribued memory computing 16 USE zdftke ! TKE vertical mixing 17 USE zdfkpp ! KPP vertical mixing 16 18 USE zdfddm ! double diffusion mixing 17 19 USE zdfevd ! enhanced vertical diffusion 18 20 USE zdfric ! Richardson vertical mixing 19 21 USE tranpc ! convection: non penetrative adjustment 20 USE ldfslp ! ???22 USE ldfslp ! iso-neutral slopes 21 23 22 24 USE in_out_manager ! I/O manager … … 46 48 !! ! 97-06 (G. Madec) Original code from inimix 47 49 !! 8.5 ! 02-08 (G. Madec) F90 : free form 50 !! 9.0 ! 05-06 (C. Ethe) KPP parameterization 48 51 !!---------------------------------------------------------------------- 49 52 !! * Local declarations … … 84 87 ! ------------------------ 85 88 ! ... vertical mixing 86 ! time stepping scheme (N.B. TKE scheme=> force the use of implicit scheme)87 IF( ln_zdfexp .AND. .NOT.lk_zdftke) THEN89 ! time stepping scheme (N.B. TKE or KPP schemes => force the use of implicit scheme) 90 IF( ( ln_zdfexp .AND. .NOT.lk_zdftke ) .OR. ( ln_zdfexp .AND. .NOT.lk_zdfkpp ) ) THEN 88 91 l_trazdf_exp = .TRUE. ! use explicit scheme 89 92 l_trazdf_imp = .FALSE. … … 135 138 ioptio = ioptio+1 136 139 ENDIF 140 IF( lk_zdfkpp ) THEN 141 IF(lwp) WRITE(numout,*) ' KPP dependent eddy coef.' 142 ioptio = ioptio+1 143 ENDIF 137 144 IF( ioptio == 0 .OR. ioptio > 1 .AND. .NOT. lk_esopa ) THEN 138 145 IF(lwp) WRITE(numout,cform_err) … … 156 163 IF(lwp) WRITE(numout,*) ' use the 1.5 turbulent closure' 157 164 ENDIF 165 IF( lk_zdfkpp ) THEN 166 IF(lwp) WRITE(numout,*) ' use the KPP closure scheme' 167 IF(lk_mpp) THEN 168 IF(lwp) WRITE(numout,cform_err) 169 IF(lwp) WRITE(numout,*) ' The KPP scheme is not ready to run in MPI' 170 ENDIF 171 ENDIF 158 172 IF ( ioptio > 1 .AND. .NOT. lk_esopa ) THEN 159 173 IF(lwp) WRITE(numout,cform_err) -
trunk/NEMO/OPA_SRC/step.F90
r247 r255 91 91 USE zdfbfr ! bottom friction (zdf_bfr routine) 92 92 USE zdftke ! TKE vertical mixing (zdf_tke routine) 93 USE zdfkpp ! KPP vertical mixing (zdf_kpp routine) 93 94 USE zdfddm ! double diffusion mixing (zdf_ddm routine) 94 95 USE zdfevd ! enhanced vertical diffusion (zdf_evd routine) … … 163 164 !! 9.0 ! 02-06 (G. Madec) free form, suppress macro-tasking 164 165 !! " ! 04-08 (C. Talandier) New trends organization 166 !! " ! 05-01 (C. Ethe) Add the KPP closure scheme 165 167 !!---------------------------------------------------------------------- 166 168 !! * Arguments … … 237 239 IF( lk_zdfric ) CALL zdf_ric( kstp ) ! Richardson number dependent Kz 238 240 IF( lk_zdftke ) CALL zdf_tke( kstp ) ! TKE closure scheme for Kz 241 IF( lk_zdfkpp ) CALL zdf_kpp( kstp ) ! KPP closure scheme for Kz 239 242 IF( lk_zdfcst ) avt (:,:,:) = avt0 * tmask(:,:,:) ! Constant Kz (reset avt to the background value) 240 243 … … 248 251 IF( ln_zdfevd ) CALL zdf_evd( kstp ) ! enhanced vertical eddy diffusivity 249 252 250 IF( lk_zdfddm ) CALL zdf_ddm( kstp ) ! double diffusive mixing 253 IF( lk_zdfddm .AND. .NOT. lk_zdfkpp) & 254 & CALL zdf_ddm( kstp ) ! double diffusive mixing 251 255 252 256 CALL zdf_bfr( kstp ) ! bottom friction
Note: See TracChangeset
for help on using the changeset viewer.