- Timestamp:
- 2019-11-28T12:28:31+01:00 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/src/OCE/SBC/sbcblk.F90
r11963 r11996 505 505 ztpot = sf(jp_tair)%fnow(:,:,1) + gamma_moist( sf(jp_tair)%fnow(:,:,1), zqair(:,:) ) * rn_zqt 506 506 507 508 !! Time to call the user-selected bulk parameterization for 509 !! == transfer coefficients ==! Cd, Ch, Ce at T-point, and more... 510 SELECT CASE( nblk ) 511 512 CASE( np_NCAR ) 513 CALL turb_ncar ( rn_zqt, rn_zu, zst, ztpot, zsq, zqair, wndm, & 514 & Cd_atm, Ch_atm, Ce_atm, t_zu, q_zu, zU_zu, cdn_oce, chn_oce, cen_oce ) 515 516 CASE( np_COARE_3p0 ) 517 CALL turb_coare3p0 ( kt, rn_zqt, rn_zu, zst, ztpot, zsq, zqair, wndm, ln_skin_cs, ln_skin_wl, & 518 & Cd_atm, Ch_atm, Ce_atm, t_zu, q_zu, zU_zu, cdn_oce, chn_oce, cen_oce, & 519 & Qsw=qsr(:,:), rad_lw=sf(jp_qlw)%fnow(:,:,1), slp=sf(jp_slp)%fnow(:,:,1) ) 520 521 CASE( np_COARE_3p6 ) 522 CALL turb_coare3p6 ( kt, rn_zqt, rn_zu, zst, ztpot, zsq, zqair, wndm, ln_skin_cs, ln_skin_wl, & 523 & Cd_atm, Ch_atm, Ce_atm, t_zu, q_zu, zU_zu, cdn_oce, chn_oce, cen_oce, & 524 & Qsw=qsr(:,:), rad_lw=sf(jp_qlw)%fnow(:,:,1), slp=sf(jp_slp)%fnow(:,:,1) ) 525 526 CASE( np_ECMWF ) 527 CALL turb_ecmwf ( kt, rn_zqt, rn_zu, zst, ztpot, zsq, zqair, wndm, ln_skin_cs, ln_skin_wl, & 528 & Cd_atm, Ch_atm, Ce_atm, t_zu, q_zu, zU_zu, cdn_oce, chn_oce, cen_oce, & 529 & Qsw=qsr(:,:), rad_lw=sf(jp_qlw)%fnow(:,:,1), slp=sf(jp_slp)%fnow(:,:,1) ) 530 531 CASE DEFAULT 532 CALL ctl_stop( 'STOP', 'sbc_oce: non-existing bulk formula selected' ) 533 END SELECT 507 534 508 535 IF( ln_skin_cs .OR. ln_skin_wl ) THEN 509 510 SELECT CASE( nblk ) !== transfer coefficients ==! Cd, Ch, Ce at T-point511 512 CASE( np_COARE_3p0 )513 CALL turb_coare3p0 ( kt, rn_zqt, rn_zu, zst, ztpot, zsq, zqair, wndm, ln_skin_cs, ln_skin_wl, &514 & Cd_atm, Ch_atm, Ce_atm, t_zu, q_zu, zU_zu, cdn_oce, chn_oce, cen_oce, &515 & Qsw=qsr(:,:), rad_lw=sf(jp_qlw)%fnow(:,:,1), slp=sf(jp_slp)%fnow(:,:,1) )516 517 CASE( np_COARE_3p6 )518 CALL turb_coare3p6 ( kt, rn_zqt, rn_zu, zst, ztpot, zsq, zqair, wndm, ln_skin_cs, ln_skin_wl, &519 & Cd_atm, Ch_atm, Ce_atm, t_zu, q_zu, zU_zu, cdn_oce, chn_oce, cen_oce, &520 & Qsw=qsr(:,:), rad_lw=sf(jp_qlw)%fnow(:,:,1), slp=sf(jp_slp)%fnow(:,:,1) )521 522 CASE( np_ECMWF )523 CALL turb_ecmwf ( kt, rn_zqt, rn_zu, zst, ztpot, zsq, zqair, wndm, ln_skin_cs, ln_skin_wl, &524 & Cd_atm, Ch_atm, Ce_atm, t_zu, q_zu, zU_zu, cdn_oce, chn_oce, cen_oce, &525 & Qsw=qsr(:,:), rad_lw=sf(jp_qlw)%fnow(:,:,1), slp=sf(jp_slp)%fnow(:,:,1) )526 527 CASE DEFAULT528 CALL ctl_stop( 'STOP', 'sbc_oce: unsuported bulk formula selection for "ln_skin_*==.true."' )529 END SELECT530 531 536 !! In the presence of sea-ice we forget about the cool-skin/warm-layer update of zst and zsq: 532 537 WHERE ( fr_i < 0.001_wp ) … … 536 541 ELSEWHERE 537 542 ! we forget about the update... 538 zst(:,:) = zqsb(:,:) ! LB: using what we backed up before skin-algo539 zsq(:,:) = zqla(:,:) ! LB: " " "543 zst(:,:) = zqsb(:,:) !#LB: using what we backed up before skin-algo 544 zsq(:,:) = zqla(:,:) !#LB: " " " 540 545 END WHERE 541 542 !LB: Update of tsk, the "official" array for skin temperature 543 tsk(:,:) = zst(:,:) 544 545 ELSE !IF( ln_skin_cs .OR. ln_skin_wl ) 546 547 SELECT CASE( nblk ) !== transfer coefficients ==! Cd, Ch, Ce at T-point 548 ! 549 CASE( np_NCAR ) 550 CALL turb_ncar ( rn_zqt, rn_zu, zst, ztpot, zsq, zqair, wndm, & 551 & Cd_atm, Ch_atm, Ce_atm, t_zu, q_zu, zU_zu, cdn_oce, chn_oce, cen_oce ) 552 553 CASE( np_COARE_3p0 ) 554 CALL turb_coare3p0 ( kt, rn_zqt, rn_zu, zst, ztpot, zsq, zqair, wndm, ln_skin_cs, ln_skin_wl, & 555 & Cd_atm, Ch_atm, Ce_atm, t_zu, q_zu, zU_zu, cdn_oce, chn_oce, cen_oce ) 556 557 CASE( np_COARE_3p6 ) 558 CALL turb_coare3p6 ( kt, rn_zqt, rn_zu, zst, ztpot, zsq, zqair, wndm, ln_skin_cs, ln_skin_wl, & 559 & Cd_atm, Ch_atm, Ce_atm, t_zu, q_zu, zU_zu, cdn_oce, chn_oce, cen_oce ) 560 561 CASE( np_ECMWF ) 562 CALL turb_ecmwf ( kt, rn_zqt, rn_zu, zst, ztpot, zsq, zqair, wndm, ln_skin_cs, ln_skin_wl, & 563 & Cd_atm, Ch_atm, Ce_atm, t_zu, q_zu, zU_zu, cdn_oce, chn_oce, cen_oce ) 564 565 CASE DEFAULT 566 CALL ctl_stop( 'STOP', 'sbc_oce: non-existing bulk formula selected' ) 567 END SELECT 568 569 ENDIF ! IF( ln_skin_cs .OR. ln_skin_wl ) 546 tsk(:,:) = zst(:,:) !#LB: Update of tsk, the "official" array for skin temperature 547 END IF 548 549 !ELSE !IF( ln_skin_cs .OR. ln_skin_wl ) 550 ! 551 ! SELECT CASE( nblk ) !== transfer coefficients ==! Cd, Ch, Ce at T-point 552 ! 553 !CASE( np_COARE_3p0 ) 554 ! CALL turb_coare3p0 ( kt, rn_zqt, rn_zu, zst, ztpot, zsq, zqair, wndm, ln_skin_cs, ln_skin_wl, & 555 ! & Cd_atm, Ch_atm, Ce_atm, t_zu, q_zu, zU_zu, cdn_oce, chn_oce, cen_oce ) 556 ! 557 ! CASE( np_COARE_3p6 ) 558 !CALL turb_coare3p6 ( kt, rn_zqt, rn_zu, zst, ztpot, zsq, zqair, wndm, ln_skin_cs, ln_skin_wl, & 559 ! & Cd_atm, Ch_atm, Ce_atm, t_zu, q_zu, zU_zu, cdn_oce, chn_oce, cen_oce ) 560 ! 561 ! CASE( np_ECMWF ) 562 ! CALL turb_ecmwf ( kt, rn_zqt, rn_zu, zst, ztpot, zsq, zqair, wndm, ln_skin_cs, ln_skin_wl, & 563 ! & Cd_atm, Ch_atm, Ce_atm, t_zu, q_zu, zU_zu, cdn_oce, chn_oce, cen_oce ) 564 ! ! 565 ! CASE DEFAULT 566 ! CALL ctl_stop( 'STOP', 'sbc_oce: non-existing bulk formula selected' ) 567 ! END SELECT! 568 ! 569 !ENDIF ! IF( ln_skin_cs .OR. ln_skin_wl ) 570 570 571 571 !! CALL iom_put( "Cd_oce", Cd_atm) ! output value of pure ocean-atm. transfer coef.
Note: See TracChangeset
for help on using the changeset viewer.