- Timestamp:
- Oct 19, 2023, 4:02:57 PM (9 months ago)
- Location:
- LMDZ6/branches/LMDZ_ECRad
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/LMDZ_ECRad
- Property svn:mergeinfo changed
-
LMDZ6/branches/LMDZ_ECRad/libf/phylmd/readaerosol_mod.F90
r4103 r4727 173 173 174 174 175 SUBROUTINE init_aero_fromfile(flag_aerosol)175 SUBROUTINE init_aero_fromfile(flag_aerosol, aerosol_couple) 176 176 USE netcdf 177 177 USE mod_phys_lmdz_para 178 178 USE mod_grid_phy_lmdz, ONLY: grid_type, unstructured 179 #ifdef CPP_XIOS 180 USE xios 181 #endif 179 USE lmdz_xios 182 180 IMPLICIT NONE 181 183 182 INTEGER, INTENT(IN) :: flag_aerosol 184 #ifdef CPP_XIOS 183 LOGICAL, INTENT(IN) :: aerosol_couple 184 185 185 REAL,ALLOCATABLE :: lat_src(:) 186 186 REAL,ALLOCATABLE :: lon_src(:) … … 191 191 REAL :: null_array(0) 192 192 193 IF (flag_aerosol>0 .AND. grid_type==unstructured) THEN 193 IF (using_xios) THEN 194 IF (flag_aerosol>0 .AND. grid_type==unstructured .AND. (.NOT. aerosol_couple) ) THEN 194 195 195 IF (is_omp_root) THEN196 IF (is_omp_root) THEN 196 197 197 IF (is_mpi_root) THEN198 IF (is_mpi_root) THEN 198 199 199 IF (nf90_open(TRIM(file_aerosol), NF90_NOWRITE, ncid) /= NF90_NOERR) THEN 200 CALL check_err( nf90_open(TRIM(file_so4), NF90_NOWRITE, ncid), "pb open "//trim(file_so4) ) 200 IF (nf90_open(TRIM(file_aerosol), NF90_NOWRITE, ncid) /= NF90_NOERR) THEN 201 CALL check_err( nf90_open(TRIM(file_so4), NF90_NOWRITE, ncid), "pb open "//trim(file_so4) ) 202 ENDIF 203 204 ! Read and test longitudes 205 CALL check_err( nf90_inq_dimid(ncid, "lon", dimID),"pb inq dim lon") 206 CALL check_err( nf90_inquire_dimension(ncid, dimID, len = nbp_lon_src),"pb inq dim lon") 207 CALL check_err( nf90_inq_varid(ncid, 'lon', varid),"pb inq lon" ) 208 ALLOCATE(lon_src(nbp_lon_src)) 209 CALL check_err( nf90_get_var(ncid, varid, lon_src(:)),"pb get lon" ) 210 211 ! Read and test latitudes 212 CALL check_err( nf90_inq_dimid(ncid, "lat", dimID),"pb inq dim lat") 213 CALL check_err( nf90_inquire_dimension(ncid, dimID, len = nbp_lat_src),"pb inq dim lat") 214 CALL check_err( nf90_inq_varid(ncid, 'lat', varid),"pb inq lat" ) 215 ALLOCATE(lat_src(nbp_lat_src)) 216 CALL check_err( nf90_get_var(ncid, varid, lat_src(:)),"pb get lat" ) 217 IF (nf90_inq_dimid(ncid, 'lev', dimid) /= NF90_NOERR) THEN 218 IF (nf90_inq_dimid(ncid, 'presnivs', dimid)/= NF90_NOERR) THEN 219 CALL check_err(nf90_inq_dimid(ncid, 'PRESNIVS', dimid),'dimension lev,PRESNIVS or presnivs not in file') 220 ENDIF 221 ENDIF 222 CALL check_err( nf90_inquire_dimension(ncid, dimid, len = klev_src),"pb inq dim for PRESNIVS or lev" ) 223 CALL check_err( nf90_close(ncid),"pb in close" ) 201 224 ENDIF 202 225 203 ! Read and test longitudes 204 CALL check_err( nf90_inq_dimid(ncid, "lon", dimID),"pb inq dim lon") 205 CALL check_err( nf90_inquire_dimension(ncid, dimID, len = nbp_lon_src),"pb inq dim lon") 206 CALL check_err( nf90_inq_varid(ncid, 'lon', varid),"pb inq lon" ) 207 ALLOCATE(lon_src(nbp_lon_src)) 208 CALL check_err( nf90_get_var(ncid, varid, lon_src(:)),"pb get lon" ) 209 210 ! Read and test latitudes 211 CALL check_err( nf90_inq_dimid(ncid, "lat", dimID),"pb inq dim lat") 212 CALL check_err( nf90_inquire_dimension(ncid, dimID, len = nbp_lat_src),"pb inq dim lat") 213 CALL check_err( nf90_inq_varid(ncid, 'lat', varid),"pb inq lat" ) 214 ALLOCATE(lat_src(nbp_lat_src)) 215 CALL check_err( nf90_get_var(ncid, varid, lat_src(:)),"pb get lat" ) 216 IF (nf90_inq_dimid(ncid, 'lev', dimid) /= NF90_NOERR) THEN 217 IF (nf90_inq_dimid(ncid, 'presnivs', dimid)/= NF90_NOERR) THEN 218 CALL check_err(nf90_inq_dimid(ncid, 'PRESNIVS', dimid),'dimension lev,PRESNIVS or presnivs not in file') 219 ENDIF 226 CALL bcast_mpi(nbp_lat_src) 227 CALL bcast_mpi(nbp_lon_src) 228 CALL bcast_mpi(klev_src) 229 230 IF (is_mpi_root ) THEN 231 CALL xios_set_domain_attr("domain_aerosol",nj_glo=nbp_lat_src, nj=nbp_lat_src, jbegin=0, latvalue_1d=lat_src) 232 CALL xios_set_domain_attr("domain_aerosol",ni_glo=nbp_lon_src, ni=nbp_lon_src, ibegin=0, lonvalue_1d=lon_src) 233 ELSE 234 CALL xios_set_domain_attr("domain_aerosol",nj_glo=nbp_lat_src, nj=0, jbegin=0, latvalue_1d=null_array ) 235 CALL xios_set_domain_attr("domain_aerosol",ni_glo=nbp_lon_src, ni=0, ibegin=0, lonvalue_1d=null_array) 220 236 ENDIF 221 CALL check_err( nf90_inquire_dimension(ncid, dimid, len = klev_src),"pb inq dim for PRESNIVS or lev" ) 222 CALL check_err( nf90_close(ncid),"pb in close" ) 237 CALL xios_set_axis_attr("axis_aerosol",n_glo=klev_src) 238 CALL xios_set_fieldgroup_attr("aerosols", enabled=.TRUE.) 239 223 240 ENDIF 224 225 CALL bcast_mpi(nbp_lat_src)226 CALL bcast_mpi(nbp_lon_src)227 CALL bcast_mpi(klev_src)228 229 IF (is_mpi_root ) THEN230 CALL xios_set_domain_attr("domain_aerosol",nj_glo=nbp_lat_src, nj=nbp_lat_src, jbegin=0, latvalue_1d=lat_src)231 CALL xios_set_domain_attr("domain_aerosol",ni_glo=nbp_lon_src, ni=nbp_lon_src, ibegin=0, lonvalue_1d=lon_src)232 ELSE233 CALL xios_set_domain_attr("domain_aerosol",nj_glo=nbp_lat_src, nj=0, jbegin=0, latvalue_1d=null_array )234 CALL xios_set_domain_attr("domain_aerosol",ni_glo=nbp_lon_src, ni=0, ibegin=0, lonvalue_1d=null_array)235 ENDIF236 CALL xios_set_axis_attr("axis_aerosol",n_glo=klev_src)237 CALL xios_set_fieldgroup_attr("aerosols", enabled=.TRUE.)238 239 ENDIF240 241 241 ENDIF242 #endif243 242 ENDIF 243 ENDIF !using_xios 244 END SUBROUTINE init_aero_fromfile 244 245 245 246 … … 271 272 USE iophy, ONLY : io_lon, io_lat 272 273 USE print_control_mod, ONLY: lunout 273 #ifdef CPP_XIOS 274 USE xios 275 #endif 274 USE lmdz_xios 276 275 IMPLICIT NONE 277 276 … … 685 684 686 685 IF (grid_type==unstructured) THEN 687 #ifdef CPP_XIOS688 686 IF (is_omp_master) THEN 689 687 CALL xios_send_field(TRIM(varname)//"_in",varyear) … … 702 700 CALL scatter_omp(psurf_interp,psurf_out) 703 701 first=.FALSE. 704 #endif705 702 ELSE 706 703 ! Scatter global field to local domain at local process
Note: See TracChangeset
for help on using the changeset viewer.