Changeset 5549


Ignore:
Timestamp:
Feb 18, 2025, 5:49:06 PM (4 months ago)
Author:
aborella
Message:

Fix for reading aviation data with multiple OMPs

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

Legend:

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

    r5546 r5549  
    4848
    4949  END SUBROUTINE init_limit_read
    50  
    51   SUBROUTINE init_aviation_read(first_day)
    52   USE mod_grid_phy_lmdz
    53   USE surface_data
    54   USE mod_phys_lmdz_para
    55   USE lmdz_xios
    56 
    57   IMPLICIT NONE
    58     INTEGER, INTENT(IN) :: first_day
    59     LOGICAL :: ok_plane_contrail, ok_plane_h2o
    60    
    61     IF ( ok_plane_contrail .OR. ok_plane_h2o ) THEN
    62       IF (grid_type==unstructured) THEN
    63         IF (is_omp_master) CALL xios_set_file_attr("aviation_file", enabled=.TRUE.)
    64       ENDIF 
    65     ENDIF
    66 
    67   END SUBROUTINE init_aviation_read
    6850
    6951  SUBROUTINE limit_read_frac(itime, dtime, jour, pctsrf_new, is_modified)
  • LMDZ6/branches/contrails/libf/phylmd/lmdz_aviation.f90

    r5546 r5549  
    631631    USE lmdz_xios
    632632    USE print_control_mod, ONLY: lunout
    633     !USE dimphy
    634     !USE phys_state_var_mod
    635633    IMPLICIT NONE
    636634
     635    INTEGER,                    INTENT(IN)  :: klon, klev  ! number of horizontal grid points and vertical levels
    637636    REAL, DIMENSION(klon,klev), INTENT(OUT) :: flight_dist ! Aviation distance flown within the mesh [m/s/mesh]
    638637    REAL, DIMENSION(klon,klev), INTENT(OUT) :: flight_h2o  ! Aviation H2O emitted within the mesh [kgH2O/s/mesh]
    639 
    640     INTEGER, INTENT(IN)                        :: klon, klev       ! number of horizontal grid points and vertical levels
    641638
    642639    !----------------------------------------------------
    643640    ! Local variable
    644641    !----------------------------------------------------
    645     INTEGER :: i, error, varid, iret
    646     CHARACTER(len=*), PARAMETER :: filename='aviation.nc'
    647     REAL, ALLOCATABLE :: flight_dist_mpi(:,:,:)
     642    REAL, DIMENSION(klon_mpi,klev,1) :: flight_dist_mpi
    648643
    649644    !--Initialisation
     
    651646    flight_h2o(:,:) = 0.
    652647
     648    ! Read the data from the file
    653649    ! is_omp_master is necessary to make XIOS works
    654     IF (is_omp_master) THEN
    655 
    656         ! Allocation of KMFLOWN for the local MPI process
    657         ALLOCATE(flight_dist_mpi(klon_mpi,klev,1), STAT=error)
    658         IF (error /= 0) CALL abort_physic('airplane_mod.F90', 'pb in allocation pointer flight_dist_mpi',1)
    659 
    660         ! Read the data from the file
    661         CALL xios_recv_field("KMFLOWN_interp", flight_dist_mpi(:,:,1))
    662    ENDIF !- is_omp_master
     650    IF (is_omp_master) CALL xios_recv_field("KMFLOWN_interp", flight_dist_mpi(:,:,1))
    663651
    664652   ! Propagate to other OMP threads: flight_dist_mpi(klon_mpi,klev) to flight_dist(klon,klev)
     
    668656END SUBROUTINE read_aviation_emissions
    669657
    670 !SUBROUTINE read_aviation_emissions( &
    671 !        klon, klev, latitude_deg, longitude_deg, pplay, &
    672 !        flight_dist, flight_h2o &
    673 !        )
    674 !
    675 !IMPLICIT NONE
    676 !!
    677 !! Input
    678 !!
    679 !INTEGER, INTENT(IN)                        :: klon, klev       ! number of horizontal grid points and vertical levels
    680 !REAL,    INTENT(IN),  DIMENSION(klon)      :: latitude_deg     ! latitude of the grid points [deg]
    681 !REAL,    INTENT(IN),  DIMENSION(klon)      :: longitude_deg    ! longitude of the grid points [deg]
    682 !REAL,    INTENT(IN),  DIMENSION(klon,klev) :: pplay            ! layer pressure [Pa]
    683 !!
    684 !! Output
    685 !!
    686 !REAL,    INTENT(OUT), DIMENSION(klon,klev) :: flight_dist      ! aviation distance flown within the mesh [m/s/mesh]
    687 !REAL,    INTENT(OUT), DIMENSION(klon,klev) :: flight_h2o       ! aviation H2O emitted within the mesh [kgH2O/s/mesh]
    688 !!
    689 !! Local
    690 !!
    691 !INTEGER :: i, k
    692 !
    693 !!--Initialisation
    694 !flight_dist(:,:) = 0.
    695 !flight_h2o(:,:) = 0.
    696 !
    697 !DO i=1, klon
    698 ! IF ( ( latitude_deg(i) .GE. 42. ) .AND. ( latitude_deg(i) .LE. 48. ) ) THEN
    699 !   flight_dist(i,15) = 50000.  !--5000 m of flight/second in grid cell x 10 scaling
    700 !   flight_h2o(i,15) = 100.  !--10 kgH2O/second in grid cell x 10 scaling
    701 ! ENDIF
    702 !ENDDO
    703 !
    704 !END SUBROUTINE read_aviation_emissions
    705 
    706658END MODULE lmdz_aviation
    707 
    708 !*******************************************************************
    709 !
    710 !SUBROUTINE airplane(debut,pphis,pplay,paprs,t_seri)
    711 !
    712 !  USE dimphy
    713 !  USE mod_grid_phy_lmdz,  ONLY: klon_glo
    714 !  USE geometry_mod, ONLY: cell_area
    715 !  USE phys_cal_mod, ONLY : mth_cur
    716 !  USE mod_phys_lmdz_mpi_data, ONLY: is_mpi_root
    717 !  USE mod_phys_lmdz_omp_data, ONLY: is_omp_root
    718 !  USE mod_phys_lmdz_para, ONLY: scatter, bcast
    719 !  USE print_control_mod, ONLY: lunout
    720 !
    721 !  IMPLICIT NONE
    722 !
    723 !  INCLUDE "YOMCST.h"
    724 !  INCLUDE 'netcdf.inc'
    725 !
    726 !!
    727 !END SUBROUTINE airplane
  • LMDZ6/branches/contrails/libf/phylmd/physiq_mod.F90

    r5546 r5549  
    21212121         IF (is_omp_master) CALL xios_get_field_attr("temp",default_value=missing_val)
    21222122         CALL bcast_omp(missing_val)
     2123
     2124         !--Read the aviation emissions
     2125         IF ( ok_plane_h2o .OR. ok_plane_contrail ) THEN
     2126           CALL read_aviation_emissions(klon, klev, flight_dist, flight_h2o)
     2127         ENDIF
    21232128       !
    21242129       ! Now we activate some double radiation call flags only if some
     
    38653870         ratqs,ratqsc,ratqs_inter_,sigma_qtherm)
    38663871
    3867     !--Read the aviation emissions
    3868     IF ( ok_plane_h2o .OR. ok_plane_contrail ) THEN
    3869       CALL read_aviation_emissions(klon, klev, flight_dist, flight_h2o)
    3870     ENDIF
    3871 
    38723872    !--Add the water emissions from aviation
    38733873    IF ( ok_plane_h2o ) THEN
Note: See TracChangeset for help on using the changeset viewer.