Ignore:
Timestamp:
Oct 9, 2023, 5:33:07 PM (12 months ago)
Author:
Laurent Fairhead
Message:

Modification by O. Torres to the cdrag routines to include different bulk formulae
to calculate cdrag coefficients over ocean as well as an iteration of that
calculation.
The iteration is controlled by flag ok_cdrag_iter which if set to FALSE by default
to converge with previous results.
The choice of bulk formulae is set with the choix_bulk parameter
The number of iterations to run is set with nit_bulk
OT, PB, CD, LF

Location:
LMDZ6/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk

  • LMDZ6/trunk/libf/phylmd/pbl_surface_mod.F90

    r4687 r4722  
    348348    REAL, DIMENSION(klon),        INTENT(IN)        :: rugoro  ! rugosity length
    349349    REAL, DIMENSION(klon),        INTENT(IN)        :: rmu0    ! cosine of solar zenith angle
    350     REAL, DIMENSION(klon),        INTENT(IN)        :: rain_f  ! rain fall
     350    REAL, DIMENSION(klon),        INTENT(INOUT)     :: rain_f  ! rain fall
    351351    REAL, DIMENSION(klon),        INTENT(IN)        :: snow_f  ! snow fall
    352352    REAL, DIMENSION(klon),        INTENT(IN)        :: bs_f  ! blowing snow fall
     
    10711071!albedo SB <<<
    10721072    yrain_f = 0.0 ; ysnow_f = 0.0  ; ybs_f=0.0  ; yfder = 0.0     ; ysolsw = 0.0
    1073     ysollw = 0.0  ; yz0m = 0.0 ; yz0h = 0.0    ; yu1 = 0.0   
     1073    ysollw = 0.0  ; yz0m = 0.0 ; yz0h = 0.0    ; yz0h_oupas = 0.0 ; yu1 = 0.0   
    10741074    yv1 = 0.0     ; ypaprs = 0.0     ; ypplay = 0.0     ; yqbs1 = 0.0
    10751075    ydelp = 0.0   ; yu = 0.0         ; yv = 0.0        ; yt = 0.0         
     
    15981598        ENDDO
    15991599        CALL cdrag(knon, nsrf, &
    1600             speed, yt(:,1), yq(:,1), zgeo1, ypaprs(:,1),&
     1600            speed, yt(:,1), yq(:,1), zgeo1, ypaprs(:,1), s_pblh, &
    16011601            yts, yqsurf, yz0m, yz0h, yri0, 0, &
    1602             ycdragm, ycdragh, zri1, pref )
     1602            ycdragm, ycdragh, zri1, pref, rain_f, zxtsol, ypplay(:,1))
    16031603
    16041604! --- special Dice: on force cdragm ( a defaut de forcer ustar) MPL 05082013
     
    16321632
    16331633            CALL cdrag(knon, nsrf, &
    1634             speed_x, yt_x(:,1), yq_x(:,1), zgeo1_x, ypaprs(:,1),&
     1634            speed_x, yt_x(:,1), yq_x(:,1), zgeo1_x, ypaprs(:,1),s_pblh_x,&
    16351635            yts_x, yqsurf_x, yz0m, yz0h, yri0, 0, &
    1636             ycdragm_x, ycdragh_x, zri1_x, pref_x )
     1636            ycdragm_x, ycdragh_x, zri1_x, pref_x, rain_f, zxtsol, ypplay(:,1) )
    16371637
    16381638! --- special Dice. JYG+MPL 25112013
     
    16591659        ENDDO
    16601660        CALL cdrag(knon, nsrf, &
    1661             speed_w, yt_w(:,1), yq_w(:,1), zgeo1_w, ypaprs(:,1),&
     1661            speed_w, yt_w(:,1), yq_w(:,1), zgeo1_w, ypaprs(:,1),s_pblh_w,&
    16621662            yts_w, yqsurf_w, yz0m, yz0h, yri0, 0, &
    1663             ycdragm_w, ycdragh_w, zri1_w, pref_w )
     1663            ycdragm_w, ycdragh_w, zri1_w, pref_w, rain_f, zxtsol, ypplay(:,1) )
    16641664!
    16651665!!!bug !!        zgeo1(:) = wake_s(:)*zgeo1_w(:) + (1.-wake_s(:))*zgeo1_x(:)
     
    20862086               yu(:,1), yv(:,1), yt(:,1), yq(:,1), zgeo1, &
    20872087               yts, yqsurf, yz0m, yz0h, ypaprs(:,1), ypplay(:,1), &
    2088                yt2m, yq2m, yt10m, yq10m, yu10m, yustar)
     2088               yt2m, yq2m, yt10m, yq10m, yu10m, yustar, ypblh, rain_f, zxtsol)
    20892089          ENDIF
    20902090         
     
    30723072       IF (iflag_split .eq.0) THEN
    30733073        IF (iflag_new_t2mq2m==1) THEN
    3074          CALL stdlevvarn(klon, knon, nsrf, zxli, &
     3074           CALL stdlevvarn(klon, knon, nsrf, zxli, &
    30753075            uzon, vmer, tair1, qair1, zgeo1, &
    30763076            tairsol, qairsol, yz0m, yz0h_oupas, psfce, patm, &
     
    30813081            uzon, vmer, tair1, qair1, zgeo1, &
    30823082            tairsol, qairsol, yz0m, yz0h_oupas, psfce, patm, &
    3083             yt2m, yq2m, yt10m, yq10m, yu10m, yustar)
     3083            yt2m, yq2m, yt10m, yq10m, yu10m, yustar, ypblh, rain_f, zxtsol)
    30843084        ENDIF
    30853085       ELSE  !(iflag_split .eq.0)
     
    30993099            uzon_x, vmer_x, tair1_x, qair1_x, zgeo1_x, &
    31003100            tairsol_x, qairsol, yz0m, yz0h_oupas, psfce, patm, &
    3101             yt2m_x, yq2m_x, yt10m_x, yq10m_x, yu10m_x, yustar_x)
     3101            yt2m_x, yq2m_x, yt10m_x, yq10m_x, yu10m_x, yustar_x, ypblh_x, rain_f, zxtsol)
    31023102        CALL stdlevvar(klon, knon, nsrf, zxli, &
    31033103            uzon_w, vmer_w, tair1_w, qair1_w, zgeo1_w, &
    31043104            tairsol_w, qairsol, yz0m, yz0h_oupas, psfce, patm, &
    3105             yt2m_w, yq2m_w, yt10m_w, yq10m_w, yu10m_w, yustar_w)
     3105            yt2m_w, yq2m_w, yt10m_w, yq10m_w, yu10m_w, yustar_w, ypblh_w, rain_f, zxtsol)
    31063106        ENDIF
    31073107!!!
Note: See TracChangeset for help on using the changeset viewer.