Changeset 5551


Ignore:
Timestamp:
Feb 19, 2025, 5:40:06 PM (41 hours ago)
Author:
aborella
Message:

Changed input: from absolute to concentration (per mesh to per m3)

Location:
LMDZ6/branches/contrails
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/contrails/DefLists/field_def_lmdz.xml

    r5547 r5551  
    908908        <field id="rcontseri"  long_name="Linear contrail fraction to cloud fraction ratio" unit="-" />
    909909        <field id="drcontdyn"  long_name="Dynamics linear contrail fraction to cloud fraction ratio tendency" unit="s-1" />
    910         <field id="Tcritcont"  long_name="Temperature threshold for contrail formation"    unit="m/s/mesh" />
    911         <field id="qcritcont"  long_name="Specific humidity threshold for contrail formation"    unit="Pa" />
     910        <field id="Tcritcont"  long_name="Temperature threshold for contrail formation"    unit="K" />
     911        <field id="qcritcont"  long_name="Specific humidity threshold for contrail formation"    unit="kg/kg" />
    912912        <field id="potcontfraP"  long_name="Fraction with pontential persistent contrail"    unit="-" />
    913913        <field id="potcontfraNP" long_name="Fraction with potential non-persistent contrail"    unit="-" />
     
    917917        <field id="dqiavi"     long_name="Aviation ice tendency"    unit="kg/kg/s" />
    918918        <field id="dqvcavi"    long_name="Aviation cloudy water vapor tendency"    unit="kg/kg/s" />
    919         <field id="flightdist" long_name="Aviation flown distance"    unit="m/s/mesh" />
    920         <field id="flighth2o"  long_name="Aviation H2O flight emission"    unit="kg H2O/s/mesh" />
     919        <field id="flightdist" long_name="Aviation flown distance concentration"    unit="m/s/m3" />
     920        <field id="flighth2o"  long_name="Aviation emitted H2O concentration"    unit="kg H2O/s/m3" />
    921921        <field id="dqavi"      long_name="Water vapor emissions from aviation tendency"    unit="kg/kg/s" />
    922922
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_aviation.f90

    r5549 r5551  
    88
    99SUBROUTINE aviation_water_emissions( &
    10       klon, klev, dtime, paprs, pplay, temp, qtot, cell_area, &
     10      klon, klev, dtime, pplay, temp, qtot, &
    1111      flight_h2o, d_q_avi &
    1212      )
    1313
    14 USE lmdz_lscp_ini, ONLY: RD, RG
     14USE lmdz_lscp_ini, ONLY: RD
    1515
    1616IMPLICIT NONE
     
    1818INTEGER,                      INTENT(IN)  :: klon, klev ! number of horizontal grid points and vertical levels
    1919REAL,                         INTENT(IN)  :: dtime      ! time step [s]
    20 REAL, DIMENSION(klon,klev+1), INTENT(IN)  :: paprs      ! inter-layer pressure [Pa]
    2120REAL, DIMENSION(klon,klev),   INTENT(IN)  :: pplay      ! mid-layer pressure [Pa]
    2221REAL, DIMENSION(klon,klev),   INTENT(IN)  :: temp       ! temperature (K)
    2322REAL, DIMENSION(klon,klev),   INTENT(IN)  :: qtot       ! total specific humidity (in vapor phase) [kg/kg]
    24 REAL, DIMENSION(klon),        INTENT(IN)  :: cell_area  ! area of each cell [m2]
    25 REAL, DIMENSION(klon,klev),   INTENT(IN)  :: flight_h2o ! aviation H2O emitted within the mesh [kgH2O/s/mesh]
     23REAL, DIMENSION(klon,klev),   INTENT(IN)  :: flight_h2o ! aviation emitted H2O concentration [kgH2O/s/m3]
    2624REAL, DIMENSION(klon,klev),   INTENT(OUT) :: d_q_avi    ! water vapor tendency from aviation [kg/kg]
    2725! Local
    2826INTEGER :: i, k
    29 REAL :: rho, rhodz, dz, M_cell
     27REAL :: rho
    3028
    3129DO i=1, klon
     
    3432    rho = pplay(i,k) / temp(i,k) / RD
    3533    !--Dry air mass [kg/m2]
    36     rhodz = ( paprs(i,k) - paprs(i,k+1) ) / RG
     34    !rhodz = ( paprs(i,k) - paprs(i,k+1) ) / RG
    3735    !--Cell thickness [m]
    38     dz = rhodz / rho
     36    !dz = rhodz / rho
    3937    !--Cell dry air mass [kg]
    40     M_cell = rhodz * cell_area(i)
     38    !M_cell = rhodz * cell_area(i)
    4139
    4240    !--q is the specific humidity (kg/kg humid air) hence the complicated equation to update q
     
    4442    !      = ( m_dry_air * qold + dm_h2O * (1-qold) ) / (m_dry_air + dm_H2O * (1-qold) )
    4543    !--The equation is derived by writing m_humid_air = m_dry_air + m_H2O = m_dry_air / (1-q)
    46     !--flight_h2O is in kg H2O / s / mesh
     44    !--flight_h2O is in kg H2O / s / m3
    4745   
    48     !d_q_avi(i,k) = ( M_cell * qtot(i,k) + flight_h2o(i,k) * dtime * ( 1. - qtot(i,k) ) ) &
    49     !             / ( M_cell             + flight_h2o(i,k) * dtime * ( 1. - qtot(i,k) ) ) &
     46    !d_q_avi(i,k) = ( M_cell * qtot(i,k) + V_cell * flight_h2o(i,k) * dtime * ( 1. - qtot(i,k) ) ) &
     47    !             / ( M_cell             + V_cell * flight_h2o(i,k) * dtime * ( 1. - qtot(i,k) ) ) &
     48    !             - qtot(i,k)
     49    !--NB., M_cell = V_cell * rho
     50    !d_q_avi(i,k) = ( rho * qtot(i,k) + flight_h2o(i,k) * dtime * ( 1. - qtot(i,k) ) ) &
     51    !             / ( rho             + flight_h2o(i,k) * dtime * ( 1. - qtot(i,k) ) ) &
    5052    !             - qtot(i,k)
    5153    !--Same formula, more computationally effective but less readable
    5254    d_q_avi(i,k) = flight_h2o(i,k) * ( 1. - qtot(i,k) ) &
    53                  / ( M_cell / dtime / ( 1. - qtot(i,k) ) + flight_h2o(i,k) )
     55                 / ( rho / dtime / ( 1. - qtot(i,k) ) + flight_h2o(i,k) )
    5456  ENDDO
    5557ENDDO
     
    6163SUBROUTINE contrails_formation_evolution( &
    6264      dtime, pplay, temp, qsat, qsatl, gamma_cond, rcont_seri, flight_dist, &
    63       cldfra, qvc, dz, V_cell, pdf_loc, pdf_scale, pdf_alpha, &
     65      cldfra, qvc, dz, pdf_loc, pdf_scale, pdf_alpha, &
    6466      Tcritcont, qcritcont, potcontfraP, potcontfraNP, contfra, &
    6567      dcontfra_cir, dcf_avi, dqvc_avi, dqi_avi &
     
    8587REAL, INTENT(IN)  :: gamma_cond   ! condensation threshold w.r.t. qsat [-]
    8688REAL, INTENT(IN)  :: rcont_seri   ! ratio of contrails fraction to total cloud fraction [-]
    87 REAL, INTENT(IN)  :: flight_dist  ! aviation distance flown within the mesh [m/s/mesh]
     89REAL, INTENT(IN)  :: flight_dist  ! aviation distance flown concentration [m/s/m3]
    8890REAL, INTENT(IN)  :: cldfra       ! cloud fraction [-]
    8991REAL, INTENT(IN)  :: qvc          ! gridbox-mean vapor in the cloud [kg/kg]
    9092REAL, INTENT(IN)  :: dz           ! cell width [m]
    91 REAL, INTENT(IN)  :: V_cell       ! cell volume [m3]
    9293REAL, INTENT(IN)  :: pdf_loc      ! location parameter of the clear sky PDF [%]
    9394REAL, INTENT(IN)  :: pdf_scale    ! scale parameter of the clear sky PDF [%]
     
    197198IF ( potcontfraP .GT. eps ) THEN
    198199  contrail_cross_section = CONTRAIL_CROSS_SECTION_ONERA(dz)
    199   contfra_new = MIN(1., flight_dist * dtime * contrail_cross_section / V_cell)
     200  contfra_new = MIN(1., flight_dist * dtime * contrail_cross_section)
    200201  dcf_avi = potcontfraP * contfra_new
    201202  IF ( cldfra .GT. eps ) THEN
     
    634635
    635636    INTEGER,                    INTENT(IN)  :: klon, klev  ! number of horizontal grid points and vertical levels
    636     REAL, DIMENSION(klon,klev), INTENT(OUT) :: flight_dist ! Aviation distance flown within the mesh [m/s/mesh]
    637     REAL, DIMENSION(klon,klev), INTENT(OUT) :: flight_h2o  ! Aviation H2O emitted within the mesh [kgH2O/s/mesh]
     637    REAL, DIMENSION(klon,klev), INTENT(OUT) :: flight_dist ! Aviation distance flown concentration [m/s/m3]
     638    REAL, DIMENSION(klon,klev), INTENT(OUT) :: flight_h2o  ! Aviation emitted H2O [kgH2O/s/m3]
    638639
    639640    !----------------------------------------------------
     
    650651    IF (is_omp_master) CALL xios_recv_field("KMFLOWN_interp", flight_dist_mpi(:,:,1))
    651652
    652    ! Propagate to other OMP threads: flight_dist_mpi(klon_mpi,klev) to flight_dist(klon,klev)
    653    ! (klon_mpi,klon) = (200,50) avec 80 MPI, 4 OMP, nbp40
    654    CALL scatter_omp(flight_dist_mpi(:,:,1), flight_dist)
     653    ! Propagate to other OMP threads: flight_dist_mpi(klon_mpi,klev) to flight_dist(klon,klev)
     654    ! (klon_mpi,klon) = (200,50) avec 80 MPI, 4 OMP, nbp40
     655    CALL scatter_omp(flight_dist_mpi(:,:,1), flight_dist)
    655656
    656657END SUBROUTINE read_aviation_emissions
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp.f90

    r5545 r5551  
    175175  !--------------------------------------------------
    176176  REAL, DIMENSION(klon,klev),      INTENT(INOUT):: rcont_seri       ! ratio of contrails fraction to total cloud fraction [-]
    177   REAL, DIMENSION(klon,klev),      INTENT(IN)   :: flight_dist      ! aviation distance flown within the mesh [m/s/mesh]
    178   REAL, DIMENSION(klon,klev),      INTENT(IN)   :: flight_h2o       ! aviation H2O emitted within the mesh [kgH2O/s/mesh]
     177  REAL, DIMENSION(klon,klev),      INTENT(IN)   :: flight_dist      ! aviation distance flown concentration [m/s/m3]
     178  REAL, DIMENSION(klon,klev),      INTENT(IN)   :: flight_h2o       ! aviation emitted H2O concentration [kgH2O/s/m3]
    179179 
    180180  ! OUTPUT variables
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_lscp_condensation.f90

    r5456 r5551  
    158158!
    159159REAL,     INTENT(INOUT), DIMENSION(klon) :: rcont_seri    ! ratio of contrails fraction to total cloud fraction [-]
    160 REAL,     INTENT(IN),    DIMENSION(klon) :: flight_dist   ! aviation distance flown within the mesh [m/s/mesh]
    161 REAL,     INTENT(IN),    DIMENSION(klon) :: flight_h2o    ! aviation H2O emitted within the mesh [kgH2O/s/mesh]
     160REAL,     INTENT(IN),    DIMENSION(klon) :: flight_dist   ! aviation distance flown concentration [m/s/m3]
     161REAL,     INTENT(IN),    DIMENSION(klon) :: flight_h2o    ! aviation emitted H2O concentration [kgH2O/s/m3]
    162162!
    163163!  Output
     
    240240!
    241241! for cell properties
    242 REAL :: rho, rhodz, dz, V_cell
     242REAL :: rho, rhodz, dz
    243243
    244244qzero(:) = 0.
     
    335335      !--Cell thickness [m]
    336336      dz = rhodz / rho
    337       !--Cell volume [m3]
    338       V_cell = dz * cell_area(i)
    339337
    340338
     
    788786            dtime, pplay(i), temp(i), qsat(i), qsatl(i), gamma_cond(i), &
    789787            rcont_seri(i), flight_dist(i), cldfra(i), qvc(i), &
    790             dz, V_cell, pdf_loc, pdf_scale, pdf_alpha, &
     788            dz, pdf_loc, pdf_scale, pdf_alpha, &
    791789            Tcritcont(i), qcritcont(i), potcontfraP(i), potcontfraNP(i), contfra(i), &
    792790            dcontfra_cir(i), dcf_avi(i), dqvc_avi(i), dqi_avi(i) &
  • LMDZ6/branches/contrails/libf/phylmd/phys_output_ctrlout_mod.F90

    r5536 r5551  
    21932193    'dqvcavi', 'Aviation cloudy water vapor tendency', 'kg/kg/s', (/ ('', i=1, 10) /))
    21942194  TYPE(ctrl_out), SAVE :: o_flight_dist = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    2195     'flightdist', 'Aviation flown distance', 'm/s/mesh', (/ ('', i=1, 10) /))
     2195    'flightdist', 'Aviation flown distance concentration', 'm/s/m3', (/ ('', i=1, 10) /))
    21962196  TYPE(ctrl_out), SAVE :: o_flight_h2o = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    2197     'flighth2o', 'Aviation H2O flight emission', 'kg H2O/s/mesh', (/ ('', i=1, 10) /))
     2197    'flighth2o', 'Aviation emitted H2O concentration', 'kg H2O/s/m3', (/ ('', i=1, 10) /))
    21982198
    21992199!!!!!!!!!!!!! Sorties niveaux standards de pression NMC
  • LMDZ6/branches/contrails/libf/phylmd/physiq_mod.F90

    r5549 r5551  
    38723872    !--Add the water emissions from aviation
    38733873    IF ( ok_plane_h2o ) THEN
    3874        CALL aviation_water_emissions(klon, klev, phys_tstep, paprs, pplay, &
    3875             t_seri, q_seri, cell_area, flight_h2o, d_q_avi)
     3874       CALL aviation_water_emissions(klon, klev, phys_tstep, pplay, &
     3875            t_seri, q_seri, flight_h2o, d_q_avi)
    38763876       CALL add_phys_tend(du0, dv0, dt0, d_q_avi, dql0, dqi0, dqbs0, paprs, &
    38773877            'avi', abortphy, flag_inhib_tend, itap, 0)
Note: See TracChangeset for help on using the changeset viewer.