Changeset 3956


Ignore:
Timestamp:
Jul 6, 2021, 9:16:14 AM (3 years ago)
Author:
jyg
Message:

Bug fixes concerning various variables ill-initialized, ill-used, ill-printed, or ill-placed.
+ cv_gen moved from phys_local_var_mod.F90 to phys_state_var_mod.F90; ==> changes in physiq_mod.F90
and phys_output_write.F90
+ awake_dens added in phys_state_var_mod.F90
+ cv_gen and awake_dens now initialized in phyetat0.F90 and written in phyredem.F90
+ cv_gen, awake_dens, and solswfdiff now initialized in old_lmdz1d.F90 and scm.F90
+ useless variables suppressed in pbl_surface_mod.F90.

Location:
LMDZ6/trunk/libf/phylmd
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/dyn1d/old_lmdz1d.F90

    r3890 r3956  
    1313       ftsol, beta_aridity, pbl_tke, pctsrf, radsol, rain_fall, snow_fall, ratqs, &
    1414       rnebcon, rugoro, sig1, w01, solaire_etat0, sollw, sollwdown, &
    15        solsw, t_ancien, q_ancien, u_ancien, v_ancien, wake_cstar, &
     15       solsw, solswfdiff, t_ancien, q_ancien, u_ancien, v_ancien, &
    1616       wake_delta_pbl_TKE, delta_tsurf, wake_fip, wake_pe, &
    1717       wake_deltaq, wake_deltat, wake_s, wake_dens, &
     18       awake_dens, cv_gen, wake_cstar, &
    1819       zgam, zmax0, zmea, zpic, zsig, &
    1920       zstd, zthe, zval, ale_bl, ale_bl_trig, alp_bl, ql_ancien, qs_ancien, &
     
    880881        snow_fall=0.
    881882        solsw=0.
     883        solswfdiff=0.
    882884        sollw=0.
    883885        sollwdown=rsigma*tsurf**4
     
    895897        sig1=0.
    896898        w01=0.
    897         wake_cstar = 0.
     899!
    898900        wake_deltaq = 0.
    899901        wake_deltat = 0.
     
    904906        wake_s = 0.
    905907        wake_dens = 0.
     908        awake_dens = 0.
     909        cv_gen = 0.
     910        wake_cstar = 0.
    906911        ale_bl = 0.
    907912        ale_bl_trig = 0.
     
    928933! pctsrf(:,is_sic),ftsol(:,nsrf),tsoil(:,isoil,nsrf),qsurf(:,nsrf)
    929934! qsol,falb_dir(:,nsrf),falb_dif(:,nsrf),evap(:,nsrf),snow(:,nsrf)
    930 ! radsol,solsw,sollw, sollwdown,fder,rain_fall,snow_fall,frugs(:,nsrf)
     935! radsol,solsw,solswfdiff,sollw, sollwdown,fder,rain_fall,snow_fall,frugs(:,nsrf)
    931936! agesno(:,nsrf),zmea,zstd,zsig,zgam,zthe,zpic,zval,rugoro
    932937! t_ancien,q_ancien,,frugs(:,is_oce),clwcon(:,1),rnebcon(:,1),ratqs(:,1)
    933938! run_off_lic_0,pbl_tke(:,1:klev,nsrf), zmax0,f0,sig1,w01
    934 ! wake_deltat,wake_deltaq,wake_s,wake_dens,wake_cstar,
     939! wake_deltat,wake_deltaq,wake_s,wake_dens,awake_dens,cv_gen,wake_cstar,
    935940! wake_fip,wake_delta_pbl_tke(:,1:klev,nsrf)
    936941!
  • LMDZ6/trunk/libf/phylmd/dyn1d/scm.F90

    r3888 r3956  
    99       ftsol, beta_aridity, pbl_tke, pctsrf, radsol, rain_fall, snow_fall, ratqs, &
    1010       rnebcon, rugoro, sig1, w01, solaire_etat0, sollw, sollwdown, &
    11        solsw, t_ancien, q_ancien, u_ancien, v_ancien, wake_cstar, &
     11       solsw, solswfdiff, t_ancien, q_ancien, u_ancien, v_ancien, &
    1212       wake_delta_pbl_TKE, delta_tsurf, wake_fip, wake_pe, &
    1313       wake_deltaq, wake_deltat, wake_s, wake_dens, &
     14       awake_dens, cv_gen, wake_cstar, &
    1415       zgam, zmax0, zmea, zpic, zsig, &
    1516       zstd, zthe, zval, ale_bl, ale_bl_trig, alp_bl, ql_ancien, qs_ancien, &
     
    645646        snow_fall=0.
    646647        solsw=0.
     648        solswfdiff=0.
    647649        sollw=0.
    648650        sollwdown=rsigma*tsurf**4
     
    660662        sig1=0.
    661663        w01=0.
    662         wake_cstar = 0.
     664!
    663665        wake_deltaq = 0.
    664666        wake_deltat = 0.
     
    669671        wake_s = 0.
    670672        wake_dens = 0.
     673        awake_dens = 0.
     674        cv_gen = 0.
     675        wake_cstar = 0.
    671676        ale_bl = 0.
    672677        ale_bl_trig = 0.
     
    693698! pctsrf(:,is_sic),ftsol(:,nsrf),tsoil(:,isoil,nsrf),qsurf(:,nsrf)
    694699! qsol,falb_dir(:,nsrf),falb_dif(:,nsrf),evap(:,nsrf),snow(:,nsrf)
    695 ! radsol,solsw,sollw, sollwdown,fder,rain_fall,snow_fall,frugs(:,nsrf)
     700! radsol,solsw,solswfdiff,sollw, sollwdown,fder,rain_fall,snow_fall,frugs(:,nsrf)
    696701! agesno(:,nsrf),zmea,zstd,zsig,zgam,zthe,zpic,zval,rugoro
    697702! t_ancien,q_ancien,,frugs(:,is_oce),clwcon(:,1),rnebcon(:,1),ratqs(:,1)
    698703! run_off_lic_0,pbl_tke(:,1:klev,nsrf), zmax0,f0,sig1,w01
    699 ! wake_deltat,wake_deltaq,wake_s,wake_dens,wake_cstar,
     704! wake_deltat,wake_deltaq,wake_s,wake_dens,awake_dens,cv_gen,wake_cstar,
    700705! wake_fip,wake_delta_pbl_tke(:,1:klev,nsrf)
    701706!
  • LMDZ6/trunk/libf/phylmd/pbl_surface_mod.F90

    r3953 r3956  
    665665    REAL, DIMENSION(klon, klev)        :: zxfluxu_x, zxfluxv_x, zxfluxu_w, zxfluxv_w
    666666    REAL                               :: zx_qs_surf, zcor_surf, zdelta_surf
    667     REAL, DIMENSION(klon)              :: ytsurf_th, yqsatsurf
    668667!jyg<
    669668    REAL, DIMENSION(klon)              :: ybeta
     
    816815    REAL, PARAMETER                    :: facteur=2./sqrt(3.14)
    817816    REAL, PARAMETER                    :: inertia=2000.
    818     REAL, DIMENSION(klon)              :: ytsurf_th_x,ytsurf_th_w,yqsatsurf_x,yqsatsurf_w
    819817    REAL, DIMENSION(klon)              :: ydtsurf_th
    820818    REAL                               :: zdelta_surf_x,zdelta_surf_w,zx_qs_surf_x,zx_qs_surf_w
     
    890888!!jyg      iflag_split = mod(iflag_pbl_split,2)
    891889!!jyg      iflag_split = mod(iflag_pbl_split,10)
     890!
     891! Flags controlling the splitting of the turbulent boundary layer:
     892!   iflag_split_ref = 0  ==> no splitting
     893!                   = 1  ==> splitting without coupling with surface temperature
     894!                   = 2  ==> splitting with coupling with surface temperature over land
     895!                   = 3  ==> splitting over ocean; no splitting over land
     896!   iflag_split: actual flag controlling the splitting.
     897!   iflag_split = iflag_split_ref outside the sub-surface loop
     898!               = iflag_split_ref if iflag_split_ref = 0, 1, or 2
     899!               = 0 over land  if iflga_split_ref = 3
     900!               = 1 over ocean if iflga_split_ref = 3
     901
    892902      iflag_split_ref = mod(iflag_pbl_split,10)
     903      iflag_split = iflag_split_ref
    893904
    894905!****************************************************************************************
     
    24132424         print*,'Chx,Chw,Ch', ycdragh_x(j), ycdragh_w(j), ycdragh(j)
    24142425         print*,'Khx,Khw,Kh', Kech_h_x(j), Kech_h_w(j), Kech_h(j)
    2415 !         print*,'tsurf_x,tsurf_w,tsurf,t1', ytsurf_th_x(j), ytsurf_th_w(j), ytsurf_th(j), yt(j,1)
    2416          print*,'tsurf_x,t1x,tsurf_w,t1w,tsurf,t1,t1_ancien', &
    2417  &               ytsurf_th_x(j), yt_x(j,1), ytsurf_th_w(j), yt_w(j,1), ytsurf_th(j), yt(j,1),t(j,1)
    2418          print*,'qsatsurf,qsatsurf_x,qsatsurf_w', yqsatsurf(j), yqsatsurf_x(j), yqsatsurf_w(j)
     2426         print*,'t1x, t1w, t1, t1_ancien', &
     2427 &               yt_x(j,1), yt_w(j,1),  yt(j,1), t(j,1)
    24192428         print*,'delta_coef,delta_flux,delta_tsurf,tau', delta_coef(j), y_delta_flux_t1(j), y_delta_tsurf(j), tau_eq(j)
    24202429        ENDDO
     
    24232432         print*,'fluxT_x, fluxT_w, y_flux_t1, fluxQ_x, fluxQ_w, yfluxlat, wakes' &
    24242433 &             , y_flux_t1_x(j), y_flux_t1_w(j), y_flux_t1(j), y_flux_q1_x(j)*RLVTT, y_flux_q1_w(j)*RLVTT, yfluxlat(j), ywake_s(j)
    2425          print*,'beta,ytsurf_new,yqsatsurf', ybeta(j), ytsurf_new(j), yqsatsurf(j)
    2426          print*,'inertia,facteur,cstar', inertia, facteur,wake_cstar(j)
     2434         print*,'beta, ytsurf_new ', ybeta(j), ytsurf_new(j)
     2435         print*,'inertia, facteur, cstar', inertia, facteur,wake_cstar(j)
    24272436        ENDDO
    24282437       ENDIF  ! (prt_level >=10)
  • LMDZ6/trunk/libf/phylmd/phyetat0.F90

    r3933 r3956  
    1717       solsw, solswfdiff, t_ancien, u_ancien, v_ancien, w01, wake_cstar, wake_deltaq, &
    1818       wake_deltat, wake_delta_pbl_TKE, delta_tsurf, beta_aridity, wake_fip, wake_pe, &
    19        wake_s, wake_dens, zgam, zmax0, zmea, zpic, zsig, &
     19       wake_s, wake_dens, awake_dens, cv_gen, zgam, zmax0, zmea, zpic, zsig, &
    2020       zstd, zthe, zval, ale_bl, ale_bl_trig, alp_bl, u10m, v10m, treedrg, &
    2121       ale_wake, ale_bl_stat, ds_ns, dt_ns, delta_sst, delta_sal, ratqs_inter
     
    419419!!  found=phyetat0_get(1,wake_dens,"WAKE_DENS","Wake num. /unit area",0.)
    420420  found=phyetat0_get(1,wake_dens,"WAKE_DENS","Wake num. /unit area",-1000.)
     421  found=phyetat0_get(1,awake_dens,"AWAKE_DENS","Active Wake num. /unit area",0.)
     422  found=phyetat0_get(1,cv_gen,"CV_GEN","CB birth rate",0.)
    421423!>jyg
    422424  found=phyetat0_get(1,wake_cstar,"WAKE_CSTAR","WAKE_CSTAR",0.)
  • LMDZ6/trunk/libf/phylmd/phyredem.F90

    r3933 r3956  
    2323                                wake_delta_pbl_tke, zmax0, f0, sig1, w01,    &
    2424                                wake_deltat, wake_deltaq, wake_s, wake_dens, &
     25                                awake_dens, cv_gen,                          &
    2526                                wake_cstar,                                  &
    2627                                wake_pe, wake_fip, fm_therm, entr_therm,     &
     
    288289
    289290    CALL put_field(pass,"WAKE_DENS", "Wake num. /unit area", wake_dens)
     291
     292    CALL put_field(pass,"AWAKE_DENS", "Active Wake num. /unit area", awake_dens)
     293
     294    CALL put_field(pass,"CV_GEN", "CB birth rate", cv_gen)
    290295
    291296    CALL put_field(pass,"WAKE_CSTAR", "WAKE_CSTAR", wake_cstar)
  • LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90

    r3888 r3956  
    390390      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: proba_notrig, random_notrig
    391391!$OMP THREADPRIVATE(proba_notrig, random_notrig)
    392       REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: cv_gen
    393 !$OMP THREADPRIVATE(cv_gen)
    394392      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: fsolsw, wfbils, wfbilo
    395393!$OMP THREADPRIVATE(fsolsw, wfbils, wfbilo)
     
    765763      alp_bl_stat(:)=0
    766764      ALLOCATE(proba_notrig(klon), random_notrig(klon))
    767       ALLOCATE(cv_gen(klon))
    768765
    769766      ALLOCATE(dnwd0(klon, klev))
     
    10601057      DEALLOCATE(alp_bl_stat, n2, s2)
    10611058      DEALLOCATE(proba_notrig, random_notrig)
    1062       DEALLOCATE(cv_gen)
    10631059
    10641060      DEALLOCATE(dnwd0)
  • LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90

    r3950 r3956  
    239239         wstar, cape, ema_pcb, ema_pct, &
    240240         ema_cbmf, Mipsh, Ma, fm_therm, ale_bl, alp_bl, ale, &
    241          alp, cin, wake_pe, wake_dens, wake_s, wake_deltat, &
     241         alp, cin, wake_pe, wake_dens, cv_gen, wake_s, wake_deltat, &
    242242         wake_deltaq, ftd, fqd, ale_bl_trig, albsol1, &
    243243         ale_wake, ale_bl_stat, &
     
    278278         cdragh_x   ,cdragh_w   ,cdragm_x   ,cdragm_w   , &
    279279         kh         ,kh_x       ,kh_w       , &
    280          cv_gen, wake_h, &
     280         wake_h, &
    281281         wake_omg, d_t_wake, d_q_wake, Vprecip, qtaa, Clw, &
    282282         wdtrainA, wdtrainS, wdtrainM, n2, s2, proba_notrig, &
  • LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90

    r3888 r3956  
    249249! awake_dens  : number of active wakes per unit area
    250250! wake_dens   : number of wakes per unit area
     251! cv_gen      : birth rate of cumulonimbus per unit area.
    251252! wake_occ    : occurence of wakes (= 1 if wakes occur, =0 otherwise)
    252253! wake_Cstar  : vitesse d'etalement de la poche
     
    261262      REAL,ALLOCATABLE,SAVE :: awake_dens(:), wake_dens(:)
    262263!$OMP THREADPRIVATE(awake_dens, wake_dens)
     264      REAL,ALLOCATABLE,SAVE :: cv_gen(:)
     265!$OMP THREADPRIVATE(cv_gen)
    263266      REAL,ALLOCATABLE,SAVE :: wake_Cstar(:)
    264267!$OMP THREADPRIVATE(wake_Cstar)
     
    490493      print*, 'allocate falb'
    491494      ALLOCATE(falb_dir(klon,nsw,nbsrf),falb_dif(klon,nsw,nbsrf))
    492       print*, 'allocate falb good', falb_dir(1,1,1)
     495!!      print*, 'allocate falb good', falb_dir(1,1,1)
    493496      ALLOCATE(chl_con(klon))
    494497!albedo SB <<<
     
    588591      ALLOCATE(wake_deltat(klon,klev), wake_deltaq(klon,klev))
    589592      ALLOCATE(wake_s(klon), awake_dens(klon), wake_dens(klon))
    590       awake_dens = 0.
     593!!      awake_dens = 0.  ! initialized in phyetat0
     594      ALLOCATE(cv_gen(klon))
    591595      ALLOCATE(wake_Cstar(klon))
    592596      ALLOCATE(wake_pe(klon), wake_fip(klon))
     
    742746      DEALLOCATE(wake_deltat, wake_deltaq)
    743747      DEALLOCATE(wake_s, awake_dens, wake_dens)
     748      DEALLOCATE(cv_gen)
    744749      DEALLOCATE(wake_Cstar, wake_pe, wake_fip)
    745750!jyg<
  • LMDZ6/trunk/libf/phylmd/physiq_mod.F90

    r3908 r3956  
    245245       alp_bl_stat, n2, s2,  &
    246246       proba_notrig, random_notrig,  &
    247        cv_gen,  &
     247!!       cv_gen,  &  !moved to phys_state_var_mod
    248248       !
    249249       dnwd0,  &
     
    16901690
    16911691       CALL iniradia(klon,klev,paprs(1,1:klev+1))
    1692 
    1693        ! Initialisation des champs dans phytrac* qui sont utilisés par phys_output_write*
     1692       !
     1693!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     1694       ! Initialisation des champs dans phytrac* qui sont utilises par phys_output_write*
     1695       !
     1696!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     1697
    16941698#ifdef CPP_Dust
    16951699       ! Quand on utilise SPLA, on force iflag_phytrac=1
     
    17801784          CALL abort_physic(modname,abort_message,1)
    17811785       ENDIF
     1786
     1787!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     1788       ! Initialisation pour la convection de K.E. et pour les poches froides
     1789       !
     1790!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     1791
    17821792       WRITE(lunout,*)"Clef pour la convection, iflag_con=", iflag_con
    17831793       WRITE(lunout,*)"Clef pour le driver de la convection, ok_cvl=", &
     
    18291839             d_s_wk(:) = 0.
    18301840             d_dens_wk(:) = 0.
    1831           ENDIF
     1841          ENDIF  !  (iflag_wake>=1)
    18321842
    18331843          !        do i = 1,klon
     
    18401850       !   ALLOCATE(lonGCM(0), latGCM(0))
    18411851       !   ALLOCATE(iGCM(0), jGCM(0))
    1842        ENDIF
    1843 
     1852       ENDIF  !  (iflag_con.GE.3)
     1853       !
    18441854       DO i=1,klon
    18451855          rugoro(i) = f_rugoro * MAX(1.0e-05, zstd(i)*zsig(i)/2.0)
Note: See TracChangeset for help on using the changeset viewer.