- Timestamp:
- 2018-04-06T17:48:30+02:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/r6232_HZG_WAVE-coupling/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90
r8115 r9462 335 335 ! --------------------------------- 336 336 ! 337 SELECT CASE ( nn_bc_surf )338 !339 CASE ( 0 ) ! Dirichlet case340 IF( ln_phioc ) THEN ! wave induced mixing case with forced/coupled fields337 IF( ln_phioc ) THEN 338 SELECT CASE ( nn_bc_surf ) 339 ! 340 CASE ( 0 ) ! Dirichlet case 341 341 IF( nn_wmix==jp_janssen ) THEN 342 342 ! First level … … 367 367 ! 368 368 ENDIF 369 ELSE ! wave induced mixing case with default values 370 en(:,:,1) = rc02r * ustars2(:,:) * (1._wp + rsbc_tke1_default)**(2._wp/3._wp) 371 en(:,:,1) = MAX(en(:,:,1), rn_emin) 372 z_elem_a(:,:,1) = en(:,:,1) 373 z_elem_c(:,:,1) = 0._wp 374 z_elem_b(:,:,1) = 1._wp 375 ! 376 ! One level below 377 en(:,:,2) = rc02r * ustars2(:,:) * (1._wp + rsbc_tke1_default * ((zhsro(:,:)+fsdepw(:,:,2)) & 378 & / zhsro(:,:) )**(1.5_wp*ra_sf))**(2._wp/3._wp) 379 en(:,:,2) = MAX(en(:,:,2), rn_emin ) 380 z_elem_a(:,:,2) = 0._wp 381 z_elem_c(:,:,2) = 0._wp 382 z_elem_b(:,:,2) = 1._wp 383 ! 384 ! 385 ENDIF 386 CASE ( 1 ) ! Neumann boundary condition on d(e)/dz 387 IF( ln_phioc ) THEN ! Shear free case: d(e)/dz=Fw with forced/coupled fields 369 CASE ( 1 ) ! Neumann boundary condition on d(e)/dz 388 370 IF( nn_wmix==jp_janssen ) THEN 389 371 ! Dirichlet conditions at k=1 … … 416 398 ! 417 399 ENDIF 418 ELSE ! Shear free case: d(e)/dz=Fw with default values 419 ! Dirichlet conditions at k=1 420 en(:,:,1) = rc02r * ustars2(:,:) * (1._wp + rsbc_tke1_default)**(2._wp/3._wp) 421 en(:,:,1) = MAX(en(:,:,1), rn_emin) 422 z_elem_a(:,:,1) = en(:,:,1) 423 z_elem_c(:,:,1) = 0._wp 424 z_elem_b(:,:,1) = 1._wp 425 ! 426 ! at k=2, set de/dz=Fw 427 !cbr 428 z_elem_b(:,:,2) = z_elem_b(:,:,2) + z_elem_a(:,:,2) ! Remove z_elem_a from z_elem_b 429 z_elem_a(:,:,2) = 0._wp 430 zkar(:,:) = (rl_sf + (vkarmn-rl_sf)*(1.-exp(-rtrans_default*fsdept(:,:,1)/zhsro(:,:)) )) 431 zflxs(:,:) = rsbc_tke2 * ustars2(:,:)**1.5_wp * zkar(:,:) & 432 & * ((zhsro(:,:)+fsdept(:,:,1))/zhsro(:,:) )**(1.5_wp*ra_sf) 433 434 en(:,:,2) = en(:,:,2) + zflxs(:,:)/fse3w(:,:,2) 435 ! 436 ! 437 ENDIF 400 END SELECT 401 ELSE 402 SELECT CASE ( nn_bc_surf ) 403 ! 404 CASE ( 0 ) ! Dirichlet case 405 ! First level 406 en(:,:,1) = rc02r * ustars2(:,:) * (1._wp + rsbc_tke1_default)**(2._wp/3._wp) 407 en(:,:,1) = MAX(en(:,:,1), rn_emin) 408 z_elem_a(:,:,1) = en(:,:,1) 409 z_elem_c(:,:,1) = 0._wp 410 z_elem_b(:,:,1) = 1._wp 411 ! 412 ! One level below 413 en(:,:,2) = rc02r * ustars2(:,:) * (1._wp + rsbc_tke1_default * ((zhsro(:,:)+fsdepw(:,:,2)) & 414 & / zhsro(:,:) )**(1.5_wp*ra_sf))**(2._wp/3._wp) 415 en(:,:,2) = MAX(en(:,:,2), rn_emin ) 416 z_elem_a(:,:,2) = 0._wp 417 z_elem_c(:,:,2) = 0._wp 418 z_elem_b(:,:,2) = 1._wp 419 ! 420 ! 421 CASE ( 1 ) ! Neumann boundary condition on d(e)/dz 422 ! Dirichlet conditions at k=1 423 en(:,:,1) = rc02r * ustars2(:,:) * (1._wp + rsbc_tke1_default)**(2._wp/3._wp) 424 en(:,:,1) = MAX(en(:,:,1), rn_emin) 425 z_elem_a(:,:,1) = en(:,:,1) 426 z_elem_c(:,:,1) = 0._wp 427 z_elem_b(:,:,1) = 1._wp 428 ! 429 ! at k=2, set de/dz=Fw 430 !cbr 431 z_elem_b(:,:,2) = z_elem_b(:,:,2) + z_elem_a(:,:,2) ! Remove z_elem_a from z_elem_b 432 z_elem_a(:,:,2) = 0._wp 433 zkar(:,:) = (rl_sf + (vkarmn-rl_sf)*(1.-exp(-rtrans_default*fsdept(:,:,1)/zhsro(:,:)) )) 434 zflxs(:,:) = rsbc_tke2 * ustars2(:,:)**1.5_wp * zkar(:,:) & 435 & * ((zhsro(:,:)+fsdept(:,:,1))/zhsro(:,:) )**(1.5_wp*ra_sf) 436 437 en(:,:,2) = en(:,:,2) + zflxs(:,:)/fse3w(:,:,2) 438 ! 439 ! 438 440 END SELECT 441 ENDIF ! ln_phioc 439 442 440 443 ! Bottom boundary condition on tke
Note: See TracChangeset
for help on using the changeset viewer.