New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 11996 for NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/src – NEMO

Ignore:
Timestamp:
2019-11-28T12:28:31+01:00 (4 years ago)
Author:
laurent
Message:

Only 1 call to each algo in "sbcblk.F90"; + added "no-skin" cases in STATION_ASF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/src/OCE/SBC/sbcblk.F90

    r11963 r11996  
    505505      ztpot = sf(jp_tair)%fnow(:,:,1) + gamma_moist( sf(jp_tair)%fnow(:,:,1), zqair(:,:) ) * rn_zqt 
    506506 
     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 
    507534 
    508535      IF( ln_skin_cs .OR. ln_skin_wl ) THEN 
    509  
    510          SELECT CASE( nblk )        !==  transfer coefficients  ==!   Cd, Ch, Ce at T-point 
    511  
    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 DEFAULT 
    528             CALL ctl_stop( 'STOP', 'sbc_oce: unsuported bulk formula selection for "ln_skin_*==.true."' ) 
    529          END SELECT 
    530  
    531536         !! In the presence of sea-ice we forget about the cool-skin/warm-layer update of zst and zsq: 
    532537         WHERE ( fr_i < 0.001_wp ) 
     
    536541         ELSEWHERE 
    537542            ! we forget about the update... 
    538             zst(:,:) = zqsb(:,:) !LB: using what we backed up before skin-algo 
    539             zsq(:,:) = zqla(:,:) !LB:  "   "   " 
     543            zst(:,:) = zqsb(:,:) !#LB: using what we backed up before skin-algo 
     544            zsq(:,:) = zqla(:,:) !#LB:  "   "   " 
    540545         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 ) 
    570570 
    571571      !!      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.