Ignore:
Timestamp:
Nov 5, 2018, 3:24:59 PM (6 years ago)
Author:
Laurent Fairhead
Message:

Undoing merge with trunk (r3356) to properly register Yann's latest modifications

Location:
LMDZ6/branches/DYNAMICO-conv
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/DYNAMICO-conv

  • LMDZ6/branches/DYNAMICO-conv/libf/phylmd/physiq_mod.F90

    r3356 r3411  
    6363       !
    6464       d_t_vdf,d_q_vdf,d_u_vdf,d_v_vdf,d_t_diss, &
     65       d_t_vdf_w,d_q_vdf_w, &
     66       d_t_vdf_x,d_q_vdf_x, &
    6567       d_ts, &
    6668       !
     
    125127       slab_wfbils, tpot, tpote,               &
    126128       ue, uq, ve, vq, zxffonte,               &
    127        uwat, vwat,                             &
    128129       zxfqcalving, zxfluxlat,                 &
    129130       zxrunofflic,                            &
     
    134135       zxfluxlat_x, zxfluxlat_w, &
    135136       !
    136        d_t_vdf_x, d_t_vdf_w, &
    137        d_q_vdf_x, d_q_vdf_w, &
     137       dtvdf_x, dtvdf_w, &
     138       dqvdf_x, dqvdf_w, &
    138139       pbl_tke_input, &
    139140       t_therm, q_therm, u_therm, v_therm, &
     
    143144       !
    144145       wake_k, &
    145        alp_wake, &
     146       ale_wake, alp_wake, &
    146147       wake_h, wake_omg, &
    147148                       ! tendencies of delta T and delta q:
     
    152153       d_deltat_ajs_cv, d_deltaq_ajs_cv, & ! due to dry adjustment of (w) before convection
    153154                       ! tendencies of wake fractional area and wake number per unit area:
    154        d_s_wk,  d_dens_a_wk,  d_dens_wk, &  ! due to wakes
    155 !!!       d_s_vdf, d_dens_a_vdf, d_dens_vdf, & ! due to vertical diffusion
    156 !!!       d_s_the, d_dens_a_the, d_dens_the, & ! due to thermals
     155       d_s_wk,  d_dens_wk, &             ! due to wakes
     156!!!       d_s_vdf, d_dens_vdf, &            ! due to vertical diffusion
     157!!!       d_s_the, d_dens_the, &            ! due to thermals
    157158       !                                 
    158        ptconv, ratqsc, &
     159       ptconv, &
    159160       wbeff, convoccur, zmax_th, &
    160161       sens, flwp, fiwp,  &
    161        alp_bl_conv,alp_bl_det,  &
     162       ale_bl_stat,alp_bl_conv,alp_bl_det,  &
    162163       alp_bl_fluct_m,alp_bl_fluct_tke,  &
    163164       alp_bl_stat, n2, s2,  &
    164165       proba_notrig, random_notrig,  &
    165        cv_gen,  &
    166        !
    167        dnwd0,  &
    168        omega,  &
     166       !
     167       dnwd, dnwd0,  &
     168       upwd, omega,  &
    169169       epmax_diag,  &
    170 
    171        !    Deep convective variables used in phytrac
    172        pmflxr, pmflxs,  &
    173        wdtrainA, wdtrainM,  &
    174        upwd, dnwd, &
    175170       ep,  &
    176        da, mp, &
    177        phi, &
    178        wght_cvfd, &
    179        phi2, &
    180        d1a, dam, &
    181        ev, &
    182        elij, &
    183        clw, &
    184        epmlmMm, eplaMm, &
    185        sij, &
    186 
    187171       cldemi,  &
    188172       cldfra, cldtau, fiwc,  &
     
    197181       fsolsw, wfbils, wfbilo,  &
    198182       wfevap, wfrain, wfsnow,  & 
    199        prfl, psfl, fraca, Vprecip,  &
     183       pmflxr, pmflxs, prfl,  &
     184       psfl, fraca, Vprecip,  &
    200185       zw2,  &
    201186       
     
    207192       qwriteSTD, twriteSTD, rhwriteSTD, &    !pour calcul_STDlev.h
    208193       
     194       wdtrainA, wdtrainM,  &
    209195       beta_prec,  &
    210196       rneb,  &
     
    347333    INTEGER igout
    348334    !======================================================================
    349     ! Clef iflag_cycle_diurne controlant l'activation du cycle diurne:
     335    ! Clef controlant l'activation du cycle diurne:
    350336    ! en attente du codage des cles par Fred
    351     ! iflag_cycle_diurne est initialise par conf_phys et se trouve
    352     ! dans clesphys.h (IM)
     337    INTEGER iflag_cycle_diurne
     338    PARAMETER (iflag_cycle_diurne=1)
    353339    !======================================================================
    354340    ! Modele thermique du sol, a activer pour le cycle diurne:
     
    460446    REAL dtadd(klon,klev)
    461447
     448    ! Variables pour le transport convectif
     449    real da(klon,klev),phi(klon,klev,klev),mp(klon,klev)
     450    real wght_cvfd(klon,klev)
    462451#ifndef CPP_XIOS
    463452    REAL, SAVE :: missing_val=nf90_fill_real
    464453#endif
    465 !!   Variables moved to phys_local_var_mod
    466 !!    ! Variables pour le transport convectif
    467 !!    real da(klon,klev),phi(klon,klev,klev),mp(klon,klev)
    468 !!    real wght_cvfd(klon,klev)
    469 !!    ! Variables pour le lessivage convectif
    470 !!    ! RomP >>>
    471 !!    real phi2(klon,klev,klev)
    472 !!    real d1a(klon,klev),dam(klon,klev)
    473 !!    real ev(klon,klev)
    474 !!    real clw(klon,klev),elij(klon,klev,klev)
    475 !!    real epmlmMm(klon,klev,klev),eplaMm(klon,klev)
    476 !!    ! RomP <<<
     454    ! Variables pour le lessivage convectif
     455    ! RomP >>>
     456    real phi2(klon,klev,klev)
     457    real d1a(klon,klev),dam(klon,klev)
     458    real ev(klon,klev)
     459    real clw(klon,klev),elij(klon,klev,klev)
     460    real epmlmMm(klon,klev,klev),eplaMm(klon,klev)
     461    ! RomP <<<
    477462    !IM definition dynamique o_trac dans phys_output_open
    478463    !      type(ctrl_out) :: o_trac(nqtot)
     
    549534    INTEGER k_upper_cv
    550535    !------------------------------------------------------------------
    551     ! Compteur de l'occurence de cvpas=1
    552     INTEGER Ncvpaseq1
    553     SAVE Ncvpaseq1
    554     !$OMP THREADPRIVATE(Ncvpaseq1)
    555536    !
    556537    !==========================================================================
     
    568549    ! variables supplementaires de concvl
    569550    REAL Tconv(klon,klev)
    570 !!    variable moved to phys_local_var_mod
    571 !!    REAL sij(klon,klev,klev)
     551    REAL sij(klon,klev,klev)
    572552!!    !
    573553!!    ! variables pour tester la conservation de l'energie dans concvl
     
    644624    REAL, SAVE :: alp_offset
    645625    !$OMP THREADPRIVATE(alp_offset)
    646     REAL, SAVE :: dtcon_multistep_max=1.e6
    647     !$OMP THREADPRIVATE(dtcon_multistep_max)
    648     REAL, SAVE :: dqcon_multistep_max=1.e6
    649     !$OMP THREADPRIVATE(dqcon_multistep_max)
    650 
    651626 
    652627    !
     
    899874    INTEGER :: flag_inhib_tend = 0 !  0 is the default value
    900875!!    INTEGER :: flag_inhib_tend = 2
    901     !
    902     ! Logical switch to a bug : reseting to 0 convective variables at the
    903     ! begining of physiq.
    904     LOGICAL, SAVE :: ok_bug_cv_trac = .TRUE.
    905     !$OMP THREADPRIVATE(ok_bug_cv_trac)
    906     !
    907     ! Logical switch to a bug : changing wake_deltat when thermals are active
    908     ! even when there are no wakes.
    909     LOGICAL, SAVE :: ok_bug_split_th = .TRUE.
    910     !$OMP THREADPRIVATE(ok_bug_split_th)
    911876
    912877    !
     
    921886    INTEGER kcbot(klon), kctop(klon), kdtop(klon)
    922887    !
     888    REAL ratqsc(klon,klev)
    923889    real ratqsbas,ratqshaut,tau_ratqs
    924890    save ratqsbas,ratqshaut,tau_ratqs
     
    11451111    REAL, dimension(klon, klev) :: cldfrarad   ! fraction nuageuse
    11461112
    1147     !lwoff=y : offset LW CRE for radiation code and other schemes
    1148     REAL, SAVE :: betalwoff
    1149     !OMP THREADPRIVATE(betalwoff)
    1150 !
    11511113    INTEGER :: nbtr_tmp ! Number of tracer inside concvl
    11521114    REAL, dimension(klon,klev) :: sh_in ! Specific humidity entering in phytrac
     
    11631125    logical, parameter :: mass_fixer=.false.
    11641126    real qql1(klon),qql2(klon),corrqql
    1165 
    1166     REAL pi
    1167 
    1168     pi = 4. * ATAN(1.)
    11691127
    11701128    ! Ehouarn: set value of jjmp1 since it is no longer a "fixed parameter"
     
    12461204       ENDIF
    12471205
    1248        Ncvpaseq1 = 0
    12491206       dnwd0=0.0
    12501207       ftd=0.0
     
    12541211       pbase=0
    12551212       !IM 180608
     1213
    12561214
    12571215       itau_con=0
     
    12791237    IF (debut) THEN
    12801238       CALL suphel ! initialiser constantes et parametres phys.
    1281 ! tau_gl : constante de rappel de la temperature a la surface de la glace - en
    1282        tau_gl=5.
    1283        CALL getin_p('tau_gl', tau_gl)
    1284 ! tau_gl : constante de rappel de la temperature a la surface de la glace - en
    1285 ! secondes
    1286        tau_gl=86400.*tau_gl
    1287        print*,'debut physiq_mod tau_gl=',tau_gl
    12881239       CALL getin_p('iflag_alp_wk_cond', iflag_alp_wk_cond)
    12891240       CALL getin_p('random_notrig_max',random_notrig_max)
     
    12941245                      ! 2 => convective adjustment and state variables are changed
    12951246       CALL getin_p('iflag_adjwk',iflag_adjwk)
    1296        CALL getin_p('dtcon_multistep_max',dtcon_multistep_max)
    1297        CALL getin_p('dqcon_multistep_max',dqcon_multistep_max)
    12981247       CALL getin_p('oliqmax',oliqmax)
    12991248       CALL getin_p('oicemax',oicemax)
     
    13051254                                  ! in rrtm/suphec.F90 (and rvtmp2 is set to 0).
    13061255       CALL getin_p('ok_bad_ecmwf_thermo',ok_bad_ecmwf_thermo)
    1307        CALL getin_p('ok_bug_cv_trac',ok_bug_cv_trac)
    1308        CALL getin_p('ok_bug_split_th',ok_bug_split_th)
    13091256       fl_ebil = 0 ! by default, conservation diagnostics are desactivated
    13101257       CALL getin_p('fl_ebil',fl_ebil)
     
    13811328       print*,'iflag_coupl,iflag_clos,iflag_wake', &
    13821329            iflag_coupl,iflag_clos,iflag_wake
    1383        print*,'iflag_cycle_diurne', iflag_cycle_diurne
     1330       print*,'iflag_CYCLE_DIURNE', iflag_cycle_diurne
    13841331       !
    13851332       IF (iflag_con.EQ.2.AND.iflag_cld_th.GT.-1) THEN
     
    14321379       print *,'physiq, nbapp_cv, nbapp_wk ',nbapp_cv,nbapp_wk
    14331380       IF (MOD(NINT(86400./phys_tstep),nbapp_cv).EQ.0) THEN
    1434           cvpas_0 = NINT( 86400./phys_tstep)/nbapp_cv
    1435           cvpas = cvpas_0
     1381          cvpas = NINT( 86400./phys_tstep)/nbapp_cv
    14361382       print *,'physiq, cvpas ',cvpas
    14371383       ELSE
     
    15641510!jyg<
    15651511       IF (klon_glo==1) THEN
    1566           IF (iflag_pbl > 1) THEN         
    1567               pbl_tke(:,:,is_ave) = 0.
    1568               DO nsrf=1,nbsrf
    1569                 DO k = 1,klev+1
    1570                      pbl_tke(:,k,is_ave) = pbl_tke(:,k,is_ave) &
    1571                          +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
    1572                 ENDDO
    1573               ENDDO
    1574           ELSE   ! (iflag_pbl > 1)
    1575               pbl_tke(:,:,:) = 0.
    1576           ENDIF  ! (iflag_pbl > 1)
     1512          pbl_tke(:,:,is_ave) = 0.
     1513          DO nsrf=1,nbsrf
     1514            DO k = 1,klev+1
     1515                 pbl_tke(:,k,is_ave) = pbl_tke(:,k,is_ave) &
     1516                     +pctsrf(:,nsrf)*pbl_tke(:,k,nsrf)
     1517            ENDDO
     1518          ENDDO
    15771519        ELSE
    15781520          pbl_tke(:,:,is_ave) = 0. !ym missing init : maybe must be initialized in the same way that for klon_glo==1 ??
     
    17441686
    17451687#ifdef CPP_XIOS
    1746 ! Need to put this initialisation after phyetat0 as in the coupled model the XIOS context is only
    1747 ! initialised at that moment
    1748        ! Get "missing_val" value from XML files (from temperature variable)
    1749        !$OMP MASTER
    1750        CALL xios_get_field_attr("temp",default_value=missing_val_omp)
    1751        !$OMP END MASTER
    1752        !$OMP BARRIER
    1753        missing_val=missing_val_omp
     1688       !--setting up swaero_diag to TRUE in XIOS case
     1689       IF (xios_field_is_active("topswad").OR.xios_field_is_active("topswad0").OR. &
     1690           xios_field_is_active("solswad").OR.xios_field_is_active("solswad0").OR. &
     1691           xios_field_is_active("topswai").OR.xios_field_is_active("solswai").OR.  &
     1692             (iflag_rrtm==1.AND.(xios_field_is_active("toplwad").OR.xios_field_is_active("toplwad0").OR. &
     1693                                 xios_field_is_active("sollwad").OR.xios_field_is_active("sollwad0"))))  &
     1694           !!!--for now these fields are not in the XML files so they are omitted
     1695           !!!  xios_field_is_active("toplwai").OR.xios_field_is_active("sollwai") !))) &
     1696           swaero_diag=.TRUE.
     1697
     1698       !--setting up dryaod_diag to TRUE in XIOS case
     1699       DO naero = 1, naero_tot-1
     1700         IF (xios_field_is_active("dryod550_"//name_aero_tau(naero))) dryaod_diag=.TRUE.
     1701       ENDDO
     1702       !
     1703       !--setting up ok_4xCO2atm to TRUE in XIOS case
     1704       IF (xios_field_is_active("rsut4co2").OR.xios_field_is_active("rlut4co2").OR. &
     1705           xios_field_is_active("rsutcs4co2").OR.xios_field_is_active("rlutcs4co2").OR. &
     1706           xios_field_is_active("rsu4co2").OR.xios_field_is_active("rsucs4co2").OR. &
     1707           xios_field_is_active("rsd4co2").OR.xios_field_is_active("rsdcs4co2").OR. &
     1708           xios_field_is_active("rlu4co2").OR.xios_field_is_active("rlucs4co2").OR. &
     1709           xios_field_is_active("rld4co2").OR.xios_field_is_active("rldcs4co2")) &
     1710           ok_4xCO2atm=.TRUE.
    17541711#endif
    17551712
     
    18671824       WRITE(*,*)'lat2_beta=',lat2_beta
    18681825       WRITE(*,*)'mskocean_beta=',mskocean_beta
    1869 
    1870       !lwoff=y : offset LW CRE for radiation code and other schemes
    1871       !lwoff=y : betalwoff=1.
    1872       betalwoff=0.
    1873       IF (ok_lwoff) THEN
    1874          betalwoff=1.
    1875       ENDIF
    1876       WRITE(*,*)'ok_lwoff=',ok_lwoff
    1877       !
    1878       !lwoff=y to begin only sollw and sollwdown are set up to CS values
    1879       sollw = sollw + betalwoff * (sollw0 - sollw)
    1880       sollwdown(:)= sollwdown(:) + betalwoff *(-1.*ZFLDN0(:,1) - &
    1881                     sollwdown(:))
    18821826    ENDIF
    18831827    !
     
    19461890       ENDDO
    19471891    ENDDO
     1892    da(:,:)=0.
     1893    mp(:,:)=0.
     1894    phi(:,:,:)=0.
     1895    ! RomP >>>
     1896    phi2(:,:,:)=0.
    19481897    beta_prec_fisrt(:,:)=0.
    19491898    beta_prec(:,:)=0.
    1950     !
    1951     !   Output variables from the convective scheme should not be set to 0
    1952     !   since convection is not always called at every time step.
    1953     IF (ok_bug_cv_trac) THEN
    1954       da(:,:)=0.
    1955       mp(:,:)=0.
    1956       phi(:,:,:)=0.
    1957       ! RomP >>>
    1958       phi2(:,:,:)=0.
    1959       epmlmMm(:,:,:)=0.
    1960       eplaMm(:,:)=0.
    1961       d1a(:,:)=0.
    1962       dam(:,:)=0.
    1963       pmflxr(:,:)=0.
    1964       pmflxs(:,:)=0.
    1965       ! RomP <<<
    1966     ENDIF
     1899    epmlmMm(:,:,:)=0.
     1900    eplaMm(:,:)=0.
     1901    d1a(:,:)=0.
     1902    dam(:,:)=0.
     1903    pmflxr=0.
     1904    pmflxs=0.
     1905    ! RomP <<<
    19671906
    19681907    !
     
    21412080          IF(adjust_tropopause) THEN
    21422081             CALL regr_pr_time_av(ncid_climoz, vars_climoz(1:read_climoz),   &
    2143                       ro3i, 'C', press_cen_climoz, pplay, wo, paprs(:,1),    &
    2144                       time_climoz ,  longitude_deg,   latitude_deg,          &
     2082                      ro3i,  press_edg_climoz,  paprs,   wo, time_climoz,    &
     2083                      longitude_deg,   latitude_deg,    press_cen_climoz,    &
    21452084                      dyn_tropopause(t_seri, ztsol, paprs, pplay, rot))
    21462085          ELSE
    2147              CALL regr_pr_time_av(ncid_climoz,  vars_climoz(1:read_climoz),  &
    2148                       ro3i, 'C', press_cen_climoz, pplay, wo, paprs(:,1),    &
    2149                       time_climoz )
     2086             CALL regr_pr_time_av(ncid_climoz, vars_climoz(1:read_climoz),   &
     2087                      ro3i,  press_edg_climoz,  paprs,  wo,  time_climoz)
    21502088          END IF
    21512089          ! Convert from mole fraction of ozone to column density of ozone in a
     
    22592197       END SELECT
    22602198    ENDIF
    2261     sza_o = ACOS (rmu0) *180./pi
    22622199
    22632200    IF (mydebug) THEN
     
    22972234!!jyg       IF (prt_level .ge. 2 .and. mod(iflag_pbl_split,2) .eq. 1) THEN
    22982235       IF (prt_level .ge. 2 .and. mod(iflag_pbl_split,10) .ge. 1) THEN
    2299           print *,'debut du splitting de la PBL, wake_s = ', wake_s(:)
    2300           print *,'debut du splitting de la PBL, wake_deltat = ', wake_deltat(:,1)
    2301           print *,'debut du splitting de la PBL, wake_deltaq = ', wake_deltaq(:,1)
     2236          print *,'debut du splitting de la PBL'
    23022237       ENDIF
    23032238       ! !!
     
    23112246          gustiness(1:klon)=0
    23122247       ELSE IF (iflag_gusts==1) THEN
    2313           gustiness(1:klon)=f_gust_bl*ale_bl(1:klon)+f_gust_wk*ale_wake(1:klon)
    2314        ELSE IF (iflag_gusts==2) THEN
    2315           gustiness(1:klon)=f_gust_bl*ale_bl_stat(1:klon)+f_gust_wk*ale_wake(1:klon)
     2248          do i = 1, klon
     2249             gustiness(i)=f_gust_bl*ale_bl(i)+f_gust_wk*ale_wake(i)
     2250          enddo
    23162251          ! ELSE IF (iflag_gusts==2) THEN
    23172252          !    do i = 1, klon
     
    23882323          d_deltaq_vdf(:,:) = d_q_vdf_w(:,:)-d_q_vdf_x(:,:)
    23892324          CALL add_wake_tend &
    2390              (d_deltat_vdf, d_deltaq_vdf, dsig0, ddens0, ddens0, wkoccur1, 'vdf', abortphy)
     2325             (d_deltat_vdf, d_deltaq_vdf, dsig0, ddens0, wkoccur1, 'vdf', abortphy)
    23912326       ELSE
    23922327          d_deltat_vdf(:,:) = 0.
     
    25302465    ! Appel de la convection tous les "cvpas"
    25312466    !
    2532 !!jyg    IF (MOD(itapcv,cvpas).EQ.0) THEN
    2533 !!    print *,' physiq : itapcv, cvpas, itap-1, cvpas_0 ', &
    2534 !!                       itapcv, cvpas, itap-1, cvpas_0
    2535     IF (MOD(itapcv,cvpas).EQ.0 .OR. MOD(itap-1,cvpas_0).EQ.0) THEN
    2536 
    2537     !
    2538     ! Mettre a zero des variables de sortie (pour securite)
    2539     !
    2540     pmflxr(:,:) = 0.
    2541     pmflxs(:,:) = 0.
    2542     wdtrainA(:,:) = 0.
    2543     wdtrainM(:,:) = 0.
    2544     upwd(:,:) = 0.
    2545     dnwd(:,:) = 0.
    2546     ep(:,:) = 0.
    2547     da(:,:)=0.
    2548     mp(:,:)=0.
    2549     wght_cvfd(:,:)=0.
    2550     phi(:,:,:)=0.
    2551     phi2(:,:,:)=0.
    2552     epmlmMm(:,:,:)=0.
    2553     eplaMm(:,:)=0.
    2554     d1a(:,:)=0.
    2555     dam(:,:)=0.
    2556     elij(:,:,:)=0.
    2557     ev(:,:)=0.
    2558     clw(:,:)=0.
    2559     sij(:,:,:)=0.
    2560     !
     2467    IF (MOD(itapcv,cvpas).EQ.0) THEN
     2468
    25612469    IF (iflag_con.EQ.1) THEN
    25622470       abort_message ='reactiver le call conlmd dans physiq.F'
     
    26312539             IF (iflag_adjwk == 2) THEN
    26322540               CALL add_wake_tend &
    2633                  (d_deltat_ajs_cv, d_deltaq_ajs_cv, dsig0, ddens0, ddens0, wkoccur1, 'ajs_cv', abortphy)
     2541                 (d_deltat_ajs_cv, d_deltaq_ajs_cv, dsig0, ddens0, wkoccur1, 'ajs_cv', abortphy)
    26342542             ENDIF  ! (iflag_adjwk == 2)
    26352543          ENDIF  ! (iflag_adjwk >= 1)
     
    26602568          ! Calculate the upmost level of deep convection loops: k_upper_cv
    26612569          !  (near 22 km)
     2570          izero = klon/2+1/klon
    26622571          k_upper_cv = klev
    2663           !izero = klon/2+1/klon
    2664           !DO k = klev,1,-1
    2665           !   IF (pphi(izero,k) > 22.e4) k_upper_cv = k
    2666           !ENDDO
    2667           ! FH : nouveau calcul base sur un profil global sans quoi
    2668           ! le modele etait sensible au decoupage de domaines
    26692572          DO k = klev,1,-1
    2670              IF (-7*log(presnivs(k)/presnivs(1)) > 25.) k_upper_cv = k
     2573             IF (pphi(izero,k) > 22.e4) k_upper_cv = k
    26712574          ENDDO
    26722575          IF (prt_level .ge. 5) THEN
     
    27122615          clwcon0=qcondc
    27132616          pmfu(:,:)=upwd(:,:)+dnwd(:,:)
    2714           !
    2715           !jyg<
    2716           ! If convective tendencies are too large, then call convection
    2717           !  every time step
    2718           cvpas = cvpas_0
    2719           DO k=1,k_upper_cv
    2720              DO i=1,klon
    2721                IF (d_t_con(i,k) > 6.721 .AND. d_t_con(i,k) < 6.722 .AND.&
    2722                    d_q_con(i,k) > -.0002171 .AND. d_q_con(i,k) < -.0002170) THEN
    2723                      dtcon_multistep_max = 3.
    2724                      dqcon_multistep_max = 0.02
    2725                ENDIF
    2726              ENDDO
    2727           ENDDO
    2728 !
    2729           DO k=1,k_upper_cv
    2730              DO i=1,klon
    2731 !!               IF (abs(d_t_con(i,k)) > 0.24 .OR. &
    2732 !!                   abs(d_q_con(i,k)) > 2.e-2) THEN
    2733                IF (abs(d_t_con(i,k)) > dtcon_multistep_max .OR. &
    2734                    abs(d_q_con(i,k)) > dqcon_multistep_max) THEN
    2735                  cvpas = 1
    2736 !!                 print *,'physiq1, i,k,d_t_con(i,k),d_q_con(i,k) ', &
    2737 !!                                   i,k,d_t_con(i,k),d_q_con(i,k)
    2738                ENDIF
    2739              ENDDO
    2740           ENDDO
    2741 !!!   Ligne a ne surtout pas remettre sans avoir murement reflechi (jyg)
    2742 !!!          call bcast(cvpas)
    2743 !!!   ------------------------------------------------------------
    2744           !>jyg
    2745           !
     2617
    27462618          DO i = 1, klon
    2747              IF (iflagctrl(i).le.1) itau_con(i)=itau_con(i)+cvpas
     2619             IF (iflagctrl(i).le.1) itau_con(i)=itau_con(i)+1
    27482620          ENDDO
    27492621          !
     
    28532725    proba_notrig(:) = 1.
    28542726    itapcv = 0
    2855     ENDIF !  (MOD(itapcv,cvpas).EQ.0 .OR. MOD(itapcv,cvpas_0).EQ.0)
     2727    ENDIF !  (MOD(itapcv,cvpas).EQ.0)
    28562728!
    28572729    itapcv = itapcv+1
    2858     !
    2859     ! Compter les steps ou cvpas=1
    2860     IF (cvpas == 1) THEN
    2861       Ncvpaseq1 = Ncvpaseq1+1
    2862     ENDIF
    2863     IF (mod(itap,1000) == 0) THEN
    2864       print *,' physiq, nombre de steps ou cvpas = 1 : ', Ncvpaseq1
    2865     ENDIF
    28662730
    28672731!!!jyg  Appel diagnostique a add_phys_tend pour tester la conservation de
     
    29852849               t_seri, q_seri, omega,  &
    29862850               dt_dwn, dq_dwn, M_dwn, M_up,  &
    2987                dt_a, dq_a, cv_gen, &
    2988                sigd, cin, &
    2989                wake_deltat, wake_deltaq, wake_s, awake_dens, wake_dens,  &
     2851               dt_a, dq_a, &
     2852               sigd, &
     2853               wake_deltat, wake_deltaq, wake_s, wake_dens,  &
    29902854               wake_dth, wake_h,  &
    29912855!!               wake_pe, wake_fip, wake_gfl,  &
     
    29972861               wake_omg, wake_dp_deltomg,  &
    29982862               wake_spread, wake_Cstar, d_deltat_wk_gw,  &
    2999                d_deltat_wk, d_deltaq_wk, d_s_wk, d_dens_a_wk, d_dens_wk)
     2863               d_deltat_wk, d_deltaq_wk, d_s_wk, d_dens_wk)
    30002864          !
    30012865          !jyg    Reinitialize itapwk when wakes have been called
     
    30162880
    30172881         CALL add_wake_tend &
    3018             (d_deltat_wk, d_deltaq_wk, d_s_wk, d_dens_a_wk, d_dens_wk, wake_k, &
     2882            (d_deltat_wk, d_deltaq_wk, d_s_wk, d_dens_wk, wake_k, &
    30192883             'wake', abortphy)
    30202884          call prt_enerbil('wake',itap)
    30212885       ENDIF   ! (iflag_wake_tend .GT. 0.)
    3022        !
    3023        IF (prt_level .GE. 10) THEN
    3024          print *,' physiq, after calwake, wake_s: ',wake_s(:)
    3025          print *,' physiq, after calwake, wake_deltat: ',wake_deltat(:,1)
    3026          print *,' physiq, after calwake, wake_deltaq: ',wake_deltaq(:,1)
    3027        ENDIF
    30282886
    30292887       IF (iflag_alp_wk_cond .GT. 0.) THEN
     
    31533011             ENDDO
    31543012          !
    3155              IF (ok_bug_split_th) THEN
    3156                CALL add_wake_tend &
    3157                    (d_deltat_the, d_deltaq_the, dsig0, ddens0, ddens0, wkoccur1, 'the', abortphy)
    3158              ELSE
    3159                CALL add_wake_tend &
    3160                    (d_deltat_the, d_deltaq_the, dsig0, ddens0, ddens0, wake_k, 'the', abortphy)
    3161              ENDIF
     3013             CALL add_wake_tend &
     3014                 (d_deltat_the, d_deltaq_the, dsig0, ddens0, wkoccur1, 'the', abortphy)
    31623015             call prt_enerbil('the',itap)
    31633016          !
     
    31733026                          ale_bl_trig, ale_bl_stat, ale_bl,  &
    31743027                          alp_bl, alp_bl_stat, &
    3175                           proba_notrig, random_notrig, cv_gen)
     3028                          proba_notrig, random_notrig)
    31763029          !>jyg
    31773030
     
    36353488                        tausum_aero, drytausum_aero, tau3d_aero)
    36363489#endif
    3637 
    3638                    IF (flag_aerosol .EQ. 7) THEN
    3639                       CALL MACv2SP(pphis,pplay,paprs,longitude_deg,latitude_deg,  &
    3640                                    tau_aero_sw_rrtm,piz_aero_sw_rrtm,cg_aero_sw_rrtm)
    3641                    ENDIF
    3642 
    36433490                   !
    36443491                ELSE IF (NSW.EQ.2) THEN
     
    36953542       !
    36963543       !--WMO criterion to determine tropopause
    3697        CALL stratosphere_mask(missing_val, pphis, t_seri, pplay, latitude_deg)
     3544       CALL stratosphere_mask(missing_val, t_seri, pplay, latitude_deg)
    36983545       !
    36993546       !--STRAT AEROSOL
     
    37353582#ifdef CPP_StratAer
    37363583       !--compute stratospheric mask
    3737        CALL stratosphere_mask(missing_val, pphis, t_seri, pplay, latitude_deg)
     3584       CALL stratosphere_mask(missing_val, t_seri, pplay, latitude_deg)
    37383585       !--interactive strat aerosols
    37393586       CALL calcaerosolstrato_rrtm(pplay,t_seri,paprs,debut)
     
    37653612#endif
    37663613          ENDIF
    3767           CALL newmicro (flag_aerosol, ok_cdnc, bl95_b0, bl95_b1, &
     3614          CALL newmicro (ok_cdnc, bl95_b0, bl95_b1, &
    37683615               paprs, pplay, t_seri, cldliq, cldfra, &
    37693616               cldtau, cldemi, cldh, cldl, cldm, cldt, cldq, &
     
    37953642          ! global
    37963643          !
    3797 !IM 251017 begin
    3798 !               print*,'physiq betaCRF global zdtime=',zdtime
    3799 !IM 251017 end
    38003644          DO k=1, klev
    38013645             DO i=1, klon
     
    39123756             print *,' ->radlwsw, number 1 '
    39133757          ENDIF
    3914 
    39153758          !
    39163759          CALL radlwsw &
     
    39293772               tau_aero_lw_rrtm, &
    39303773               cldtaupirad,new_aod, &
    3931 !              zqsat, flwcrad, fiwcrad, &
    39323774               zqsat, flwc, fiwc, &
    39333775               ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, &
     
    39363778               sollwdown, &
    39373779               topsw0,toplw0,solsw0,sollw0, &
    3938                lwdnc0, lwdn0, lwdn, lwupc0, lwup0, lwup,  &
    3939                swdnc0, swdn0, swdn, swupc0, swup0, swup, &
     3780               lwdn0, lwdn, lwup0, lwup,  &
     3781               swdn0, swdn, swup0, swup, &
    39403782               topswad_aero, solswad_aero, &
    39413783               topswai_aero, solswai_aero, &
     
    39523794               ZSWFT0_i, ZFSDN0, ZFSUP0)
    39533795
    3954           !lwoff=y, betalwoff=1. : offset LW CRE for radiation code and other
    3955           !schemes
    3956           toplw = toplw + betalwoff * (toplw0 - toplw)
    3957           sollw = sollw + betalwoff * (sollw0 - sollw)
    3958           lwdn = lwdn + betalwoff * (lwdn0 - lwdn)
    3959           lwup = lwup + betalwoff * (lwup0 - lwup)
    3960           sollwdown(:)= sollwdown(:) + betalwoff *(-1.*ZFLDN0(:,1) - &
    3961                         sollwdown(:))
    3962           cool = cool + betalwoff * (cool0 - cool)
    3963  
    39643796#ifndef CPP_XIOS
    39653797          !--OB 30/05/2016 modified 21/10/2016
     
    39683800          !--this is necessary to get the right swaero at first step
    39693801          !--but only in the case of no XIOS as XIOS is covered elsewhere
    3970           IF (debut) swaerofree_diag = .FALSE.
    39713802          IF (debut) swaero_diag = .FALSE.
    39723803          IF (debut) dryaod_diag = .FALSE.
     
    39743805          !--as for swaero_diag, see above
    39753806          IF (debut) ok_4xCO2atm = .FALSE.
    3976 
     3807#endif
    39773808          !
    39783809          !IM 2eme calcul radiatif pour le cas perturbe ou au moins un
     
    39853816              RCFC11_per.NE.RCFC11_act.OR. &
    39863817              RCFC12_per.NE.RCFC12_act) ok_4xCO2atm =.TRUE.
    3987 #endif
    39883818   !
    39893819          IF (ok_4xCO2atm) THEN
     
    40143844                     tau_aero_lw_rrtm, &
    40153845                     cldtaupi,new_aod, &
    4016 !                    zqsat, flwcrad, fiwcrad, &
    40173846                     zqsat, flwc, fiwc, &
    40183847                     ref_liq, ref_ice, ref_liq_pi, ref_ice_pi, &
     
    40213850                     sollwdownp, &
    40223851                     topsw0p,toplw0p,solsw0p,sollw0p, &
    4023                      lwdnc0p, lwdn0p, lwdnp, lwupc0p, lwup0p, lwupp,  &
    4024                      swdnc0p, swdn0p, swdnp, swupc0p, swup0p, swupp, &
     3852                     lwdn0p, lwdnp, lwup0p, lwupp,  &
     3853                     swdn0p, swdnp, swup0p, swupp, &
    40253854                     topswad_aerop, solswad_aerop, &
    40263855                     topswai_aerop, solswai_aerop, &
     
    40363865                     ZLWFT0_i, ZFLDN0, ZFLUP0, &
    40373866                     ZSWFT0_i, ZFSDN0, ZFSUP0)
    4038           endif !ok_4xCO2atm
     3867          endif
     3868          !
    40393869       ENDIF ! aerosol_couple
    40403870       itaprad = 0
     
    44274257
    44284258
    4429     CALL tend_to_tke(pdtphys,paprs,exner,t_seri,u_seri,v_seri,dtadd,duadd,dvadd,pctsrf,pbl_tke)
     4259    CALL tend_to_tke(pdtphys,paprs,exner,t_seri,u_seri,v_seri,dtadd,duadd,dvadd,pbl_tke)
    44304260
    44314261
     
    45824412    !
    45834413    CALL transp (paprs,zxtsol, &
    4584          t_seri, q_seri, ql_seri, qs_seri, u_seri, v_seri, zphi, &
    4585          ve, vq, ue, uq, vwat, uwat)
     4414         t_seri, q_seri, u_seri, v_seri, zphi, &
     4415         ve, vq, ue, uq)
    45864416    !
    45874417    !IM global posePB BEG
     
    48794709#endif
    48804710
    4881 ! On remet des variables a .false. apres un premier appel
    4882     if (debut) then
    4883 #ifdef CPP_XIOS
    4884       swaero_diag=.FALSE.
    4885       swaerofree_diag=.FALSE.
    4886       dryaod_diag=.FALSE.
    4887       ok_4xCO2atm= .FALSE.
    4888 !      write (lunout,*)'ok_4xCO2atm= ',swaero_diag, swaerofree_diag, dryaod_diag, ok_4xCO2atm
    4889 
    4890       IF (is_master) then
    4891         !--setting up swaero_diag to TRUE in XIOS case
    4892         IF (xios_field_is_active("topswad").OR.xios_field_is_active("topswad0").OR. &
    4893            xios_field_is_active("solswad").OR.xios_field_is_active("solswad0").OR. &
    4894            xios_field_is_active("topswai").OR.xios_field_is_active("solswai").OR.  &
    4895              (iflag_rrtm==1.AND.(xios_field_is_active("toplwad").OR.xios_field_is_active("toplwad0").OR. &
    4896                                  xios_field_is_active("sollwad").OR.xios_field_is_active("sollwad0"))))  &
    4897            !!!--for now these fields are not in the XML files so they are omitted
    4898            !!!  xios_field_is_active("toplwai").OR.xios_field_is_active("sollwai") !))) &
    4899            swaero_diag=.TRUE.
    4900 
    4901         !--setting up swaerofree_diag to TRUE in XIOS case
    4902         IF (xios_field_is_active("SWdnSFCcleanclr").OR.xios_field_is_active("SWupSFCcleanclr").OR. &
    4903            xios_field_is_active("SWupTOAcleanclr").OR.xios_field_is_active("rsucsaf").OR.   &
    4904            xios_field_is_active("rsdcsaf") .OR. xios_field_is_active("LWdnSFCcleanclr").OR. &
    4905            xios_field_is_active("LWupTOAcleanclr")) &
    4906            swaerofree_diag=.TRUE.
    4907 
    4908         !--setting up dryaod_diag to TRUE in XIOS case
    4909         DO naero = 1, naero_tot-1
    4910          IF (xios_field_is_active("dryod550_"//name_aero_tau(naero))) dryaod_diag=.TRUE.
    4911         ENDDO
    4912         !
    4913         !--setting up ok_4xCO2atm to TRUE in XIOS case
    4914         IF (xios_field_is_active("rsut4co2").OR.xios_field_is_active("rlut4co2").OR. &
    4915            xios_field_is_active("rsutcs4co2").OR.xios_field_is_active("rlutcs4co2").OR. &
    4916            xios_field_is_active("rsu4co2").OR.xios_field_is_active("rsucs4co2").OR. &
    4917            xios_field_is_active("rsd4co2").OR.xios_field_is_active("rsdcs4co2").OR. &
    4918            xios_field_is_active("rlu4co2").OR.xios_field_is_active("rlucs4co2").OR. &
    4919            xios_field_is_active("rld4co2").OR.xios_field_is_active("rldcs4co2")) &
    4920            ok_4xCO2atm=.TRUE.
    4921       endif
    4922       !$OMP BARRIER
    4923       call bcast(swaero_diag)
    4924       call bcast(swaerofree_diag)
    4925       call bcast(dryaod_diag)
    4926       call bcast(ok_4xCO2atm)
    4927 !      write (lunout,*)'ok_4xCO2atm= ',swaero_diag, swaerofree_diag, dryaod_diag, ok_4xCO2atm
    4928 #endif
    4929     endif
    49304711
    49314712    !====================================================================
     
    49644745       IF (is_omp_master) CALL xios_context_finalize
    49654746#endif
    4966        print *,' physiq fin, nombre de steps ou cvpas = 1 : ', Ncvpaseq1
    49674747    ENDIF
    49684748
Note: See TracChangeset for help on using the changeset viewer.