- Timestamp:
- 2017-04-13T12:07:16+02:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90
r7853 r7905 24 24 USE phycst ! physical constants 25 25 USE zdfmxl ! mixed layer 26 USE sbcwave , ONLY: hsw,rn_crban26 USE sbcwave 27 27 ! 28 28 USE lbclnk ! ocean lateral boundary conditions (or mpp link) … … 62 62 INTEGER :: nn_stab_func ! stability functions G88, KC or Canuto (=0/1/2) 63 63 INTEGER :: nn_clos ! closure 0/1/2/3 MY82/k-eps/k-w/gen 64 INTEGER :: nn_wmix ! type of wave breaking mixing65 INTEGER, PUBLIC, PARAMETER :: jp_craigbanner = 0 ! Craig and Banner formulation (original NEMO formulation -66 ! direct conversion of mechanical to turbulent energy)67 INTEGER, PUBLIC, PARAMETER :: jp_janssen = 1 ! Janssen formulation - no assumption on direct energy conversion68 64 REAL(wp) :: rn_clim_galp ! Holt 2008 value for k-eps: 0.267 69 65 REAL(wp) :: rn_epsmin ! minimum value of dissipation (m2/s3) … … 181 177 rsbc_tke3(:,:) = rdt * rn_crban(:,:) ! Neumann + Wave breaking 182 178 rsbc_psi1(:,:) = rc0**rpp * rsbc_tke1(:,:)**rmm * rl_sf**rnn ! Dirichlet + Wave breaking 183 ELSE 179 ELSE IF( nn_wmix==jp_craigbanner ) THEN 184 180 rsbc_tke1(:,:) = -3._wp/2._wp*rn_crban(:,:)*ra_sf*rl_sf 185 181 rsbc_tke3(:,:) = rdt * rn_crban(:,:) / rl_sf … … 359 355 z_elem_c(:,:,2) = 0._wp 360 356 z_elem_b(:,:,2) = 1._wp 361 ELSE 357 ELSE IF( nn_wmix==jp_craigbanner ) THEN 362 358 en(:,:,1) = rc02r * ustars2(:,:) * (1._wp + rsbc_tke1(:,:))**(2._wp/3._wp) 363 359 en(:,:,1) = MAX(en(:,:,1), rn_emin) … … 405 401 zflxs(:,:) = rsbc_tke3(:,:) * ustars2(:,:)**1.5_wp * ((zhsro(:,:)+fsdept(:,:,1) ) / zhsro(:,:) )**(1.5*ra_sf) 406 402 en(:,:,2) = en(:,:,2) + zflxs(:,:) / fse3w(:,:,2) 407 ELSE 403 ELSE IF( nn_wmix==jp_craigbanner ) THEN 408 404 ! Dirichlet conditions at k=1 409 405 en(:,:,1) = rc02r * ustars2(:,:) * (1._wp + rsbc_tke1(:,:))**(2._wp/3._wp) … … 652 648 ! 653 649 ! 654 ELSE 650 ELSE IF( nn_wmix==jp_craigbanner ) THEN 655 651 ! Surface value 656 652 zdep(:,:) = zhsro(:,:) * rl_sf ! Cosmetic … … 708 704 psi(:,:,2) = psi(:,:,2) + zflxs(:,:) / fse3w(:,:,2) 709 705 ! 710 ELSE 706 ELSE IF( nn_wmix==jp_craigbanner ) THEN 711 707 ! Surface value: Dirichlet 712 708 zdep(:,:) = zhsro(:,:) * rl_sf … … 1047 1043 & rn_crban_default, rn_charn, rn_frac_hs,& 1048 1044 & nn_bc_surf, nn_bc_bot, nn_z0_met, & 1049 & nn_stab_func, nn_clos , nn_wmix1045 & nn_stab_func, nn_clos 1050 1046 !!---------------------------------------------------------- 1051 1047 ! … … 1090 1086 IF( nn_bc_surf < 0 .OR. nn_bc_surf > 1 ) CALL ctl_stop( 'zdf_gls_init: bad flag: nn_bc_surf is 0 or 1' ) 1091 1087 IF( nn_z0_met < 0 .OR. nn_z0_met > 3 ) CALL ctl_stop( 'zdf_gls_init: bad flag: nn_z0_met is 0, 1, 2 or 3' ) 1092 IF( nn_z0_met == 3 .AND. .NOT.ln_sdw ) CALL ctl_stop( 'zdf_gls_init: nn_z0_met=3 requires ln_sdw=T' ) 1088 IF( nn_z0_met == 3 .AND. .NOT.ln_rough ) CALL ctl_stop( 'zdf_gls_init: nn_z0_met=3 requires ln_rough=T' ) 1089 IF( nn_z0_met .NE. 3 .AND. ln_rough ) THEN 1090 CALL ctl_warn('W A R N I N G: ln_rough=.TRUE. but nn_z0_met is not 3 - resetting nn_z0_met to 3') 1091 nn_z0_met = 3 1092 ENDIF 1093 1093 IF( nn_stab_func < 0 .OR. nn_stab_func > 3 ) CALL ctl_stop( 'zdf_gls_init: bad flag: nn_stab_func is 0, 1, 2 and 3' ) 1094 1094 IF( nn_clos < 0 .OR. nn_clos > 3 ) CALL ctl_stop( 'zdf_gls_init: bad flag: nn_clos is 0, 1, 2 or 3' )
Note: See TracChangeset
for help on using the changeset viewer.