Ignore:
Timestamp:
Apr 30, 2025, 9:59:06 AM (8 weeks ago)
Author:
aborella
Message:

Fix for activating aviation emissions data file

Location:
LMDZ6/branches/contrails/libf/phylmd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_aviation.f90

    r5634 r5637  
    248248
    249249
     250SUBROUTINE init_read_aviation_emissions
     251
     252  USE mod_grid_phy_lmdz, ONLY: grid_type, unstructured
     253  USE mod_phys_lmdz_para, ONLY: is_omp_master
     254  USE lmdz_xios, ONLY: xios_set_file_attr, xios_set_field_attr
     255
     256  IF (grid_type==unstructured) THEN
     257    IF (is_omp_master) THEN
     258      ! Activate aviation file
     259      CALL xios_set_file_attr("aviation_file", enabled=.TRUE.)
     260      ! Activate aviation fields
     261      CALL xios_set_field_attr("KMFLOWN_read", enabled=.TRUE.)
     262      CALL xios_set_field_attr("KMFLOWN_interp", enabled=.TRUE.)
     263    ENDIF
     264  ENDIF
     265
     266END SUBROUTINE init_read_aviation_emissions
     267
     268
    250269SUBROUTINE read_aviation_emissions(klon, klev)
    251270    ! This subroutine allows to read the traffic density data read in the file aviation.nc
     
    270289    REAL, ALLOCATABLE :: flight_dist_mpi(:,:,:), flight_h2o_mpi(:,:,:)
    271290    INTEGER :: ierr
     291    LOGICAL, SAVE :: first = .TRUE.
     292    !$OMP THREADPRIVATE(first)
    272293
    273294    ! FOR REGULAR LON LAT
     
    288309IF (grid_type==unstructured) THEN
    289310
    290     IF (is_omp_master) THEN
    291       ! Activate aviation file
    292       CALL xios_set_file_attr("aviation", enabled=.TRUE.)
    293       ! Activate aviation fields
    294       CALL xios_set_field_attr("KMFLOWN_read", enabled=.TRUE.)
    295       CALL xios_set_field_attr("KMFLOWN_interp", enabled=.TRUE.)
    296 
    297       ! Get number of vertical levels and level values
    298       CALL xios_get_axis_attr( "aviation_lev", n_glo=nleva )
    299     ENDIF
    300     CALL bcast_omp(nleva)
    301 
    302     ! Allocation of arrays
    303     ALLOCATE(flight_dist_read(klon, nleva,1), STAT=ierr)
    304     IF (ierr /= 0) CALL abort_physic('lmdz_aviation', 'problem to allocate flight_dist',1)
    305     ALLOCATE(flight_h2o_read(klon, nleva,1), STAT=ierr)
    306     IF (ierr /= 0) CALL abort_physic('lmdz_aviation', 'problem to allocate flight_h2o',1)
    307     ALLOCATE(aviation_lev(nleva), STAT=ierr)
    308     IF (ierr /= 0) CALL abort_physic('lmdz_aviation', 'problem to allocate aviation_lev',1)
     311    IF (first) THEN
     312      IF (is_omp_master) THEN
     313        ! Get number of vertical levels and level values
     314        CALL xios_get_axis_attr("aviation_lev", n_glo=nleva)
     315      ENDIF
     316      CALL bcast_omp(nleva)
     317
     318      ! Allocation of arrays
     319      ALLOCATE(flight_dist_read(klon, nleva, 1), STAT=ierr)
     320      IF (ierr /= 0) CALL abort_physic('lmdz_aviation', 'problem to allocate flight_dist',1)
     321      ALLOCATE(flight_h2o_read(klon, nleva, 1), STAT=ierr)
     322      IF (ierr /= 0) CALL abort_physic('lmdz_aviation', 'problem to allocate flight_h2o',1)
     323      ALLOCATE(aviation_lev(nleva), STAT=ierr)
     324      IF (ierr /= 0) CALL abort_physic('lmdz_aviation', 'problem to allocate aviation_lev',1)
     325
     326      IF (is_omp_master) THEN
     327        ! Get number of vertical levels and level values
     328        CALL xios_get_axis_attr("aviation_lev", value=aviation_lev(:))
     329      ENDIF
     330      CALL bcast_omp(aviation_lev)
     331      first = .FALSE.
     332    ENDIF ! first
    309333
    310334    ! Read the data from the file
     
    318342        !CALL xios_recv_field("KGH2O_interp", flight_h2o_mpi(:,:,1))
    319343        flight_h2o_mpi(:,:,:) = 0.
    320         ! Get number of vertical levels and level values
    321         CALL xios_get_axis_attr( "aviation_lev", value=aviation_lev(:))
    322344    ENDIF
    323345
     
    325347    CALL scatter_omp(flight_dist_mpi, flight_dist_read)
    326348    CALL scatter_omp(flight_h2o_mpi, flight_h2o_read)
    327     CALL bcast_omp(aviation_lev)
    328349
    329350ELSE
  • LMDZ6/branches/contrails/libf/phylmd/physiq_mod.F90

    r5626 r5637  
    7575    USE write_field_phy
    7676    use wxios_mod, ONLY: g_ctx, wxios_set_context
    77     USE lmdz_aviation, ONLY : read_aviation_emissions, aviation_water_emissions, vertical_interpolation_aviation
     77    USE lmdz_aviation, ONLY : init_read_aviation_emissions, read_aviation_emissions, &
     78        aviation_water_emissions, vertical_interpolation_aviation
    7879    USE lmdz_lscp, ONLY : lscp
    7980    USE lmdz_call_cloud_optics_prop, ONLY : call_cloud_optics_prop
     
    13931394       IF (read_climoz>=1 .AND. create_etat0_limit .AND. grid_type==unstructured) &
    13941395          CALL regr_horiz_time_climoz(read_climoz,ok_daily_climoz)
     1396       CALL init_read_aviation_emissions
    13951397
    13961398       print*, '================================================='
Note: See TracChangeset for help on using the changeset viewer.