Changeset 13007 for NEMO/trunk/src/OCE
- Timestamp:
- 2020-06-02T18:21:37+02:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/ZDF/zdftke.F90
r12702 r13007 45 45 USE zdfdrg ! vertical physics: top/bottom drag coef. 46 46 USE zdfmxl ! vertical physics: mixed layer 47 #if defined key_si3 48 USE ice, ONLY: hm_i, h_i 49 #endif 50 #if defined key_cice 51 USE sbc_ice, ONLY: h_i 52 #endif 47 53 ! 48 54 USE in_out_manager ! I/O manager … … 422 428 REAL(wp) :: zrn2, zraug, zcoef, zav ! local scalars 423 429 REAL(wp) :: zdku, zdkv, zsqen ! - - 424 REAL(wp) :: zemxl, zemlm, zemlp ! - -430 REAL(wp) :: zemxl, zemlm, zemlp, zmaxice ! - - 425 431 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmxlm, zmxld ! 3D workspace 426 432 !!-------------------------------------------------------------------- … … 436 442 zmxld(:,:,:) = rmxl_min 437 443 ! 438 IF( ln_mxl0 ) THEN ! surface mixing length = F(stress) : l=vkarmn*2.e5*taum/(rho0*g) 439 zraug = vkarmn * 2.e5_wp / ( rho0 * grav ) 444 IF( ln_mxl0 ) THEN ! surface mixing length = F(stress) : l=vkarmn*2.e5*taum/(rau0*g) 445 ! 446 zraug = vkarmn * 2.e5_wp / ( rau0 * grav ) 447 #if ! defined key_si3 && ! defined key_cice 440 448 DO_2D_00_00 441 zmxlm(ji,jj,1) = MAX( rn_mxl0, zraug * taum(ji,jj) * tmask(ji,jj,1))449 zmxlm(ji,jj,1) = zraug * taum(ji,jj) * tmask(ji,jj,1) 442 450 END_2D 443 ELSE 451 #else 452 SELECT CASE( nn_mxlice ) ! Type of scaling under sea-ice 453 ! 454 CASE( 0 ) ! No scaling under sea-ice 455 DO_2D_00_00 456 zmxlm(ji,jj,1) = zraug * taum(ji,jj) * tmask(ji,jj,1) 457 END_2D 458 ! 459 CASE( 1 ) ! scaling with constant sea-ice thickness 460 DO_2D_00_00 461 zmxlm(ji,jj,1) = ( ( 1. - fr_i(ji,jj) ) * zraug * taum(ji,jj) + fr_i(ji,jj) * rn_mxlice ) * tmask(ji,jj,1) 462 END_2D 463 ! 464 CASE( 2 ) ! scaling with mean sea-ice thickness 465 DO_2D_00_00 466 #if defined key_si3 467 zmxlm(ji,jj,1) = ( ( 1. - fr_i(ji,jj) ) * zraug * taum(ji,jj) + fr_i(ji,jj) * hm_i(ji,jj) * 2. ) * tmask(ji,jj,1) 468 #elif defined key_cice 469 zmaxice = MAXVAL( h_i(ji,jj,:) ) 470 zmxlm(ji,jj,1) = ( ( 1. - fr_i(ji,jj) ) * zraug * taum(ji,jj) + fr_i(ji,jj) * zmaxice ) * tmask(ji,jj,1) 471 #endif 472 END_2D 473 ! 474 CASE( 3 ) ! scaling with max sea-ice thickness 475 DO_2D_00_00 476 zmaxice = MAXVAL( h_i(ji,jj,:) ) 477 zmxlm(ji,jj,1) = ( ( 1. - fr_i(ji,jj) ) * zraug * taum(ji,jj) + fr_i(ji,jj) * zmaxice ) * tmask(ji,jj,1) 478 END_2D 479 ! 480 END SELECT 481 #endif 482 ! 483 DO_2D_00_00 484 zmxlm(ji,jj,1) = MAX( rn_mxl0, zmxlm(ji,jj,1) ) 485 END_2D 486 ! 487 ELSE 444 488 zmxlm(:,:,1) = rn_mxl0 445 489 ENDIF 490 446 491 ! 447 492 DO_3D_00_00( 2, jpkm1 ) … … 547 592 INTEGER :: ios 548 593 !! 549 NAMELIST/namzdf_tke/ rn_ediff, rn_ediss , rn_ebb , rn_emin , & 550 & rn_emin0, rn_bshear, nn_mxl , ln_mxl0 , & 551 & rn_mxl0 , nn_pdl , ln_drg , ln_lc , rn_lc, & 552 & nn_etau , nn_htau , rn_efr , rn_eice 594 NAMELIST/namzdf_tke/ rn_ediff, rn_ediss , rn_ebb , rn_emin , & 595 & rn_emin0, rn_bshear, nn_mxl , ln_mxl0 , & 596 & rn_mxl0 , nn_mxlice, rn_mxlice, & 597 & nn_pdl , ln_drg , ln_lc , rn_lc, & 598 & nn_etau , nn_htau , rn_efr , rn_eice 553 599 !!---------------------------------------------------------------------- 554 600 ! … … 576 622 WRITE(numout,*) ' mixing length type nn_mxl = ', nn_mxl 577 623 WRITE(numout,*) ' surface mixing length = F(stress) or not ln_mxl0 = ', ln_mxl0 624 IF( ln_mxl0 ) THEN 625 WRITE(numout,*) ' type of scaling under sea-ice nn_mxlice = ', nn_mxlice 626 IF( nn_mxlice == 1 ) & 627 WRITE(numout,*) ' ice thickness when scaling under sea-ice rn_mxlice = ', rn_mxlice 628 ENDIF 578 629 WRITE(numout,*) ' surface mixing length minimum value rn_mxl0 = ', rn_mxl0 579 630 WRITE(numout,*) ' top/bottom friction forcing flag ln_drg = ', ln_drg
Note: See TracChangeset
for help on using the changeset viewer.