From 229ca5905567b6ee3224be17db89ab054d881ec8 Mon Sep 17 00:00:00 2001 From: Dustin Swales Date: Mon, 9 Dec 2019 16:25:31 -0700 Subject: [PATCH] Revert to original mpi_bcast for character arrays. --- physics/rrtmgp_lw_gas_optics.F90 | 23 ++++++++++++++--------- physics/rrtmgp_sw_gas_optics.F90 | 24 +++++++++++++++--------- 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/physics/rrtmgp_lw_gas_optics.F90 b/physics/rrtmgp_lw_gas_optics.F90 index c36b795a4..15967dd57 100644 --- a/physics/rrtmgp_lw_gas_optics.F90 +++ b/physics/rrtmgp_lw_gas_optics.F90 @@ -93,7 +93,6 @@ subroutine rrtmgp_lw_gas_optics_init(Model, mpicomm, mpirank, mpiroot, lw_gas_pr ! Dimensions (to be broadcast across all processors) integer :: & - str_len, & ! ntemps, & ! npress, & ! ngpts_lw, & ! @@ -298,9 +297,6 @@ subroutine rrtmgp_lw_gas_optics_init(Model, mpicomm, mpirank, mpiroot, lw_gas_pr ! status = nf90_inq_varid(ncid_lw,'plank_fraction',varID) status = nf90_get_var(ncid_lw,varID,planck_frac) - ! - status = nf90_inq_varid(ncid_lw,'str_len',varID) - status = nf90_get_var(ncid_lw,varID,str_len) ! Logical fields are read in as integers and then converted to logicals. status = nf90_inq_varid(ncid_lw,'minor_scales_with_density_lower',varID) @@ -374,12 +370,21 @@ subroutine rrtmgp_lw_gas_optics_init(Model, mpicomm, mpirank, mpiroot, lw_gas_pr call MPI_BCAST(planck_frac, size(planck_frac), MPI_REAL, mpiroot, mpicomm, ierr) #endif ! Character arrays - call MPI_BCAST(gas_names, size(gas_names)*str_len, MPI_CHAR, mpiroot, mpicomm, ierr) - call MPI_BCAST(gas_minor, size(gas_minor)*str_len, MPI_CHAR, mpiroot, mpicomm, ierr) - call MPI_BCAST(identifier_minor, size(identifier_minor)*str_len, MPI_CHAR, mpiroot, mpicomm, ierr) - call MPI_BCAST(minor_gases_lower, size(minor_gases_lower)*str_len, MPI_CHAR, mpiroot, mpicomm, ierr) - call MPI_BCAST(minor_gases_upper, size(minor_gases_upper)*str_len, MPI_CHAR, mpiroot, mpicomm, ierr) + do ij=1,nabsorbers + call MPI_BCAST(gas_names(ij), 32, MPI_CHAR, mpiroot, mpicomm, ierr) + enddo + do ij=1,nminorabsorbers + call MPI_BCAST(gas_minor(ij), 32, MPI_CHAR, mpiroot, mpicomm, ierr) + call MPI_BCAST(identifier_minor(ij), 32, MPI_CHAR, mpiroot, mpicomm, ierr) + enddo + do ij=1,nminor_absorber_intervals_lower + call MPI_BCAST(minor_gases_lower(ij), 32, MPI_CHAR, mpiroot, mpicomm, ierr) + enddo + do ij=1,nminor_absorber_intervals_upper + call MPI_BCAST(minor_gases_upper(ij), 32, MPI_CHAR, mpiroot, mpicomm, ierr) + enddo ! Logical arrays + ! call MPI_BCAST(minor_scales_with_density_lower, nminor_absorber_intervals_lower, MPI_LOGICAL, mpiroot, mpicomm, ierr) call MPI_BCAST(scale_by_complement_lower, nminor_absorber_intervals_lower, MPI_LOGICAL, mpiroot, mpicomm, ierr) call MPI_BCAST(minor_scales_with_density_upper, nminor_absorber_intervals_upper, MPI_LOGICAL, mpiroot, mpicomm, ierr) diff --git a/physics/rrtmgp_sw_gas_optics.F90 b/physics/rrtmgp_sw_gas_optics.F90 index 0f0349cd3..e9046ac34 100644 --- a/physics/rrtmgp_sw_gas_optics.F90 +++ b/physics/rrtmgp_sw_gas_optics.F90 @@ -89,7 +89,6 @@ subroutine rrtmgp_sw_gas_optics_init(Model, mpicomm, mpirank, mpiroot, sw_gas_p scale_by_complement_upper_sw ! ! Dimensions (to be broadcast across all processors) integer :: & - str_len, & ! ntemps_sw, & ! npress_sw, & ! ngpts_sw, & ! @@ -151,8 +150,6 @@ subroutine rrtmgp_sw_gas_optics_init(Model, mpicomm, mpirank, mpiroot, sw_gas_p status = nf90_inquire_dimension(ncid_sw, dimid, len=nminor_absorber_intervals_lower_sw) status = nf90_inq_dimid(ncid_sw, 'minor_absorber_intervals_upper', dimid) status = nf90_inquire_dimension(ncid_sw, dimid, len=nminor_absorber_intervals_upper_sw) - status = nf90_inq_varid(ncid_lw,'str_len',varID) - status = nf90_get_var(ncid_lw,varID,str_len) status = nf90_close(ncid_sw) endif endif @@ -373,13 +370,22 @@ subroutine rrtmgp_sw_gas_optics_init(Model, mpicomm, mpirank, mpiroot, sw_gas_p call MPI_BCAST(rayl_lower_sw, size(rayl_lower_sw), MPI_REAL, mpiroot, mpicomm, ierr) call MPI_BCAST(rayl_upper_sw, size(rayl_upper_sw), MPI_REAL, mpiroot, mpicomm, ierr) #endif - ! Character arrays - call MPI_BCAST(gas_names_sw, size(gas_names_sw)*str_len, MPI_CHAR, mpiroot, mpicomm, ierr) - call MPI_BCAST(gas_minor_sw, size(gas_minor_sw)*str_len, MPI_CHAR, mpiroot, mpicomm, ierr) - call MPI_BCAST(identifier_minor_sw, size(identifier_minor_sw)*str_len, MPI_CHAR, mpiroot, mpicomm, ierr) - call MPI_BCAST(minor_gases_lower_sw, size(minor_gases_lower_sw)*str_len, MPI_CHAR, mpiroot, mpicomm, ierr) - call MPI_BCAST(minor_gases_upper_sw, size(minor_gases_upper_sw)*str_len, MPI_CHAR, mpiroot, mpicomm, ierr) + ! Character arrays + do ij=1,nabsorbers_sw + call MPI_BCAST(gas_names_sw(ij), 32, MPI_CHAR, mpiroot, mpicomm, ierr) + enddo + do ij=1,nminorabsorbers_sw + call MPI_BCAST(gas_minor_sw(ij), 32, MPI_CHAR, mpiroot, mpicomm, ierr) + call MPI_BCAST(identifier_minor_sw(ij), 32, MPI_CHAR, mpiroot, mpicomm, ierr) + enddo + do ij=1,nminor_absorber_intervals_lower_sw + call MPI_BCAST(minor_gases_lower_sw(ij), 32, MPI_CHAR, mpiroot, mpicomm, ierr) + enddo + do ij=1,nminor_absorber_intervals_upper_sw + call MPI_BCAST(minor_gases_upper_sw(ij), 32, MPI_CHAR, mpiroot, mpicomm, ierr) + enddo ! Logical arrays + ! call MPI_BCAST(minor_scales_with_density_lower_sw, nminor_absorber_intervals_lower_sw, MPI_LOGICAL, mpiroot, mpicomm, ierr) call MPI_BCAST(scale_by_complement_lower_sw, nminor_absorber_intervals_lower_sw, MPI_LOGICAL, mpiroot, mpicomm, ierr) call MPI_BCAST(minor_scales_with_density_upper_sw, nminor_absorber_intervals_upper_sw, MPI_LOGICAL, mpiroot, mpicomm, ierr)