Ignore:
Timestamp:
Jun 21, 2022, 11:05:31 AM (3 years ago)
Author:
aslmd
Message:

1st commit of generic clouds scheme

Location:
trunk/LMDZ.GENERIC/libf/phystd
Files:
4 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/libf/phystd/physiq_mod.F90

    r2663 r2690  
    3232                          alpha_lift, alpha_devil, qextrhor, &
    3333                          igcm_h2o_ice, igcm_h2o_vap, igcm_dustbin, &
    34                           igcm_co2_ice, nesp, is_chim
     34                          igcm_co2_ice, nesp, is_chim, is_generic
    3535      use time_phylmdz_mod, only: ecritphy, iphysiq, nday
    3636      use phyetat0_mod, only: phyetat0
     
    7070      use turb_mod, only : q2,sensibFlux,turb_resolved
    7171      use mass_redistribution_mod, only: mass_redistribution
     72      use largescale_generic_mod, only: largescale_generic
    7273#ifndef MESOSCALE
    7374      use vertical_layers_mod, only: presnivs, pseudoalt
     
    295296      ! For Atmospheric Temperatures : (K/s)   
    296297      real dtlscale(ngrid,nlayer)                             ! Largescale routine.
     298      real dtlscale_generic(ngrid,nlayer)                     ! largescale_generic routine.
    297299      real zdtc(ngrid,nlayer)                                 ! Condense_co2 routine.
    298300      real zdtdif(ngrid,nlayer)                               ! Turbdiff/vdifc routines.
     
    327329      real dqvaplscale(ngrid,nlayer)  ! Largescale routine.
    328330      real dqcldlscale(ngrid,nlayer)  ! Largescale routine.
     331      real dqvaplscale_generic(ngrid,nlayer) !largescale_generic routine.
     332      real dqcldlscale_generic(ngrid,nlayer) !largescale_generic routine.
    329333      REAL,allocatable,save :: zdqchim(:,:,:) ! Calchim_asis routine
    330334      REAL,allocatable,save :: zdqschim(:,:)  ! Calchim_asis routine
     
    15421546  !   VI.3. Aerosol particles
    15431547  ! -------------------------
     1548         ! Generic condensation and evaporation
     1549         ! i need the tracers and to check wether it ends with _vap
     1550         do iq=1,nq
     1551            ! print*,"starting the generic looping"
     1552            ! write(*,*)"for iq = ",iq, "is_generic = ",is_generic(iq)
     1553            ! write(*,*)"noms(iq) = ",noms(iq)
     1554            ! write(*,*),"noms(iq)(len(noms(iq)-2:)=",noms(iq)(len(noms(iq))-2:)
     1555            !loop on tracers and check if is_generic and _vap in noms
     1556            if((is_generic(iq)==1) .and. (index(noms(iq),"vap") .ne. 0)) then
     1557               ! call to largescale_generic
     1558               print*,"we're in the GENERIC condition"
     1559               call largescale_generic(ngrid,nlayer,nq,ptimestep,pplev,pplay,   &
     1560                                       pt,pq,pdt,pdq,noms(iq),dtlscale_generic, &
     1561                                       dqvaplscale_generic,dqcldlscale_generic)
     1562               !question sur la tendance de temperature qui sort. On l'ajoute dans une variable temp
     1563               ! et apres la fin de la boucle sur les tracers on l'ajouteà la tendance du pas de temps physique ?
     1564               !temp_dt = temp_dt+dtlscale_generic ?
     1565               pdq(1:ngrid,1:nlayer,ig) = pdq(1:ngrid,1:nlayer,ig)+dtlscale_generic(1:ngrid,1:nlayer)
     1566               pdq(1:ngrid,1:nlayer,ig+1) = pdq(1:ngrid,1:nlayer,ig+1)+dqcldlscale_generic(1:ngrid,1:nlayer)
     1567               !!!!huge assumption in the last line : ice tracer has index +1 of vap tracer
     1568            endif ! (is_generic(iq)==1 .and. (index(noms(iq),"vap")==1))
     1569         enddo ! iq=1,nq
     1570         !should I add the pdt = pdt + temp_dt ?
    15441571
    15451572         ! Sedimentation.
  • trunk/LMDZ.GENERIC/libf/phystd/tracer_h.F90

    r2543 r2690  
    66       integer, save :: nqtot ! total number of tracers
    77       integer, save :: nesp  ! number of species in the chemistry
     8       integer, save :: ngt   ! number of generic tracers
    89!$OMP THREADPRIVATE(nqtot,nesp)
    910
     
    1213
    1314       character*30, save, allocatable :: noms(:)   ! name of the tracer
    14        real, save, allocatable :: mmol(:)     ! mole mass of tracer (g/mol-1)
     15       real, save, allocatable :: mmol(:)     ! mole mass of tracer (g/mol)
    1516       real, save, allocatable :: aki(:)      ! to compute coefficient of thermal concduction if photochem
    1617       real, save, allocatable :: cpi(:)      ! to compute cpnew in concentration.F if photochem
     
    3940       integer, save, allocatable :: is_recomb_qotf(:) ! 1 if tracer recombination is done on-the-fly, else 0 (if 1, must have is_recomb_qset=0)
    4041!$OMP THREADPRIVATE(is_recomb,is_recomb_qset,is_recomb_qotf)
    41 
     42       integer, save, allocatable :: is_generic(:)      ! 1 if tracer is generic, else 0 (added LT)
     43!$OMP THREADPRIVATE(is_generic)   !also added by LT
    4244! tracer indexes: these are initialized in initracer and should be 0 if the
    4345!                 corresponding tracer does not exist
     
    8890       integer,save :: igcm_hcaer
    8991
    90 
     92       ! generic tracer (added LT 2022)
     93       integer,save :: igcm_generic_Fe_vap
     94       integer,save :: igcm_generic_Fe_ice
     95       integer,save :: igcm_generic_Cr_vap
     96       integer,save :: igcm_generic_Cr_ice
     97       integer,save :: igcm_generic_Mg_vap
     98       integer,save :: igcm_generic_Mg_ice
     99       integer,save :: igcm_generic_Na_vap
     100       integer,save :: igcm_generic_Na_ice
     101       integer,save :: igcm_generic_KCl_vap
     102       integer,save :: igcm_generic_KCl_ice
     103       integer,save :: igcm_generic_Mn_vap
     104       integer,save :: igcm_generic_Mn_ice
     105       integer,save :: igcm_generic_Zn_vap
     106       integer,save :: igcm_generic_Zn_ice
    91107
    92108       ! other tracers
    93109       integer,save :: igcm_ar_n2 ! for simulations using co2 +neutral gaz
    94110       integer,save :: igcm_co2_ice ! CO2 ice
    95 !$OMP THREADPRIVATE(igcm_dustbin,igcm_dust_mass,igcm_dust_number,igcm_h2o_vap,igcm_h2o_ice, &
    96         !$OMP igcm_co2,igcm_co,igcm_o,igcm_o1d,igcm_o2,igcm_o3,igcm_h,igcm_h2,igcm_oh,      &
    97         !$OMP igcm_ho2,igcm_h2o2,igcm_n2,igcm_ar,igcm_ar_n2,igcm_co2_ice,                   &
    98         !$OMP igcm_n,igcm_no,igcm_no2,igcm_n2d,igcm_ch4,igcm_ch3,igcm_ch,igcm_3ch2,         &
    99         !$OMP igcm_1ch2,igcm_cho,igcm_ch2o,igcm_ch3o,igcm_c,igcm_c2,igcm_c2h,igcm_c2h2,     &
    100         !$OMP igcm_c2h3,igcm_c2h4,igcm_c2h6,igcm_ch2co,igcm_ch3co,igcm_hcaer)
     111!$OMP THREADPRIVATE(igcm_dustbin,igcm_dust_mass,igcm_dust_number,igcm_h2o_vap,igcm_h2o_ice,      &
     112        !$OMP igcm_co2,igcm_co,igcm_o,igcm_o1d,igcm_o2,igcm_o3,igcm_h,igcm_h2,igcm_oh,        &
     113        !$OMP igcm_ho2,igcm_h2o2,igcm_n2,igcm_ar,igcm_ar_n2,igcm_co2_ice,                         &
     114       !$OMP igcm_n,igcm_no,igcm_no2,igcm_n2d,igcm_ch4,igcm_ch3,igcm_ch,igcm_3ch2,               &
     115       !$OMP igcm_1ch2,igcm_cho,igcm_ch2o,igcm_ch3o,igcm_c,igcm_c2,igcm_c2h,igcm_c2h2,           &
     116       !$OMP igcm_c2h3,igcm_c2h4,igcm_c2h6,igcm_ch2co,igcm_ch3co,igcm_hcaer,igcm_generic_Fe_vap, &
     117       !$OMP igcm_generic_Fe_ice, igcm_generic_Cr_vap,igcn_generic_Cr_ice,igcm_generic_Mg_vap,   &
     118       !$OMP igcm_generic_Mg_ice, igcm_generic_Na_vap,igcm_generic_Na_ice,igcm_generic_KCl_vap,  &
     119       !$OMP igcm_generic_KCl_ice,igcm_generic_Mn_vap,igcm_generic_Mn_ice,igcm_generic_Zn_vap,   &
     120       !$OMP igcm_generic_Zn_ice)
    101121
    102122       end module tracer_h
Note: See TracChangeset for help on using the changeset viewer.