diff --git a/conf/hermes.conf b/conf/hermes.conf index a721eef94b1e83a548a6d13874050ca28ab443ee..ca1c47cf0373000723b668beb461f82a0a8e63f8 100755 --- a/conf/hermes.conf +++ b/conf/hermes.conf @@ -3,7 +3,7 @@ log_level = 3 input_dir = /home/Earth/ctena/Models/hermesv3_bu_data data_path = /esarchive/recon output_dir = /scratch/Earth/HERMESv3_BU_OUT -output_name = HERMESv3__crop_fert.nc +output_name = HERMESv3__tr_area.nc emission_summary = 0 start_date = 2016/11/29 00:00:00 # ----- end_date = start_date [DEFAULT] ----- @@ -142,13 +142,13 @@ aviation_processors = 0 shipping_port_processors = 0 livestock_processors = 0 crop_operations_processors = 0 -crop_fertilizers_processors = 1 +crop_fertilizers_processors = 0 agricultural_machinery_processors = 0 residential_processors = 0 recreational_boats_processors = 0 point_sources_processors = 0 traffic_processors = 0 -traffic_area_processors = 0 +traffic_area_processors = 1 [SHAPEFILES] diff --git a/hermesv3_bu/hermes.py b/hermesv3_bu/hermes.py index d64e757d21007b2b3181063884d74cf7b6a3352f..2dd8557b27e3cfdf0812ab00c7d267ded91e8c81 100755 --- a/hermesv3_bu/hermes.py +++ b/hermesv3_bu/hermes.py @@ -31,7 +31,7 @@ class Hermes(object): self.date_array = [self.arguments.start_date + timedelta(hours=hour) for hour in range(self.arguments.output_timestep_num)] self.logger.write_log('Dates to simulate: {0}'.format( - [aux_date.strftime("%Y/%m/%d, %H:%M:%S") for aux_date in self.date_array]), message_level=2) + [aux_date.strftime("\n\t%Y/%m/%d, %H:%M:%S") for aux_date in self.date_array]), message_level=3) self.sector_manager = SectorManager( self.comm, self.logger, self.grid, self.clip, self.date_array, self.arguments) diff --git a/hermesv3_bu/sectors/aviation_sector.py b/hermesv3_bu/sectors/aviation_sector.py index 3bc15a0fc7e4a07f6b972089ab2e6efc7090bffb..ab7c6055745c7186c1ab49034c7bb101d3b391ed 100755 --- a/hermesv3_bu/sectors/aviation_sector.py +++ b/hermesv3_bu/sectors/aviation_sector.py @@ -380,7 +380,7 @@ class AviationSector(Sector): new_list = list(set(shp_airport_list) & set(airports_with_operations)) if len(new_list) != len(shp_airport_list): warn('{0} airports have no operations. Ignoring them.'.format( - list(set(new_list) - set(shp_airport_list)))) + list(set(shp_airport_list) - set(new_list)))) max_len = len(new_list) # Only for master (rank == 0) diff --git a/hermesv3_bu/sectors/traffic_area_sector.py b/hermesv3_bu/sectors/traffic_area_sector.py index f870161c9bb533bfd0960f4ca9cea9d37e24465f..a7cad42f39884f5a23b8c90b2c2f34c6e30685b2 100755 --- a/hermesv3_bu/sectors/traffic_area_sector.py +++ b/hermesv3_bu/sectors/traffic_area_sector.py @@ -32,6 +32,7 @@ class TrafficAreaSector(Sector): self.speciation_profiles_evaporative = self.read_speciation_profiles(speciation_profiles_evaporative) self.evaporative_ef_file = evaporative_ef_file if do_evaporative: + logger.write_log('\tInitialising evaporative emissions.', message_level=2) self.evaporative = self.init_evaporative(population_tif_path, nuts_shapefile, gasoline_path, total_pop_by_prov) else: @@ -44,6 +45,7 @@ class TrafficAreaSector(Sector): self.small_cities_weekly_profile = self.read_weekly_profiles(small_cities_weekly_profile) self.small_cities_hourly_profile = self.read_hourly_profiles(small_cities_hourly_profile) if do_small_cities: + logger.write_log('\tInitialising small cities emissions.', message_level=2) self.small_cities = self.init_small_cities(population_tif_path, small_cities_shp) else: self.small_cities = None @@ -55,18 +57,22 @@ class TrafficAreaSector(Sector): if self.comm.Get_rank() == 0: if not os.path.exists(os.path.join(self.auxiliary_dir, 'traffic_area', 'vehicle_by_cell.shp')): + self.logger.write_log('\t\tCreating population shapefile.', message_level=3) pop = self.get_clipped_population( - global_path, os.path.join(self.auxiliary_dir, 'traffic_area', 'population.shp')) + global_path, os.path.join(self.auxiliary_dir, 'traffic_area', 'population.shp'), write_file=True) + self.logger.write_log('\t\tCreating population shapefile by NUT.', message_level=3) pop = self.make_population_by_nuts( pop, provinces_shapefile, os.path.join(self.auxiliary_dir, 'traffic_area', 'pop_NUT.shp'), - write_file=False) + write_file=True) + self.logger.write_log('\t\tCreating population shapefile by NUT and cell.', message_level=3) pop = self.make_population_by_nuts_cell( - pop, os.path.join(self.auxiliary_dir, 'traffic_area', 'pop_NUT_cell.shp')) - + pop, os.path.join(self.auxiliary_dir, 'traffic_area', 'pop_NUT_cell.shp'), write_file=True) + self.logger.write_log('\t\tCreating vehicle shapefile by cell.', message_level=3) veh_cell = self.make_vehicles_by_cell( pop, gasoline_path, pd.read_csv(total_pop_by_prov), os.path.join(self.auxiliary_dir, 'traffic_area', 'vehicle_by_cell.shp')) else: + self.logger.write_log('\t\tReading vehicle shapefile by cell.', message_level=3) veh_cell = IoShapefile(self.comm).read_shapefile_serial( os.path.join(self.auxiliary_dir, 'traffic_area', 'vehicle_by_cell.shp')) else: @@ -81,14 +87,18 @@ class TrafficAreaSector(Sector): spent_time = timeit.default_timer() if self.comm.Get_rank() == 0: if not os.path.exists(os.path.join(self.auxiliary_dir, 'traffic_area', 'pop_SMALL_cell.shp')): + self.logger.write_log('\t\tCreating population shapefile.', message_level=3) pop = self.get_clipped_population( - global_path, os.path.join(self.auxiliary_dir, 'traffic_area', 'population.shp')) + global_path, os.path.join(self.auxiliary_dir, 'traffic_area', 'population.shp'), write_file=True) + self.logger.write_log('\t\tCreating population small cities shapefile.', message_level=3) pop = self.make_population_by_nuts( pop, small_cities_shapefile, os.path.join(self.auxiliary_dir, 'traffic_area', 'pop_SMALL.shp'), - write_file=False) + write_file=True) + self.logger.write_log('\t\tCreating population small cities shapefile by cell.', message_level=3) pop = self.make_population_by_nuts_cell( - pop, os.path.join(self.auxiliary_dir, 'traffic_area', 'pop_SMALL_cell.shp')) + pop, os.path.join(self.auxiliary_dir, 'traffic_area', 'pop_SMALL_cell.shp'), write_file=True) else: + self.logger.write_log('\t\tReading population small cities shapefile by cell.', message_level=3) pop = IoShapefile(self.comm).read_shapefile_serial( os.path.join(self.auxiliary_dir, 'traffic_area', 'pop_SMALL_cell.shp')) else: @@ -98,7 +108,7 @@ class TrafficAreaSector(Sector): self.logger.write_time_log('TrafficAreaSector', 'init_small_cities', timeit.default_timer() - spent_time) return pop - def get_clipped_population(self, global_path, population_shapefile_path): + def get_clipped_population(self, global_path, population_shapefile_path, write_file=True): from hermesv3_bu.io_server.io_raster import IoRaster spent_time = timeit.default_timer() @@ -106,7 +116,8 @@ class TrafficAreaSector(Sector): population_density = IoRaster(self.comm).clip_raster_with_shapefile_poly( global_path, self.clip.shapefile, os.path.join(self.auxiliary_dir, 'traffic_area', 'population.tif')) - population_density = IoRaster(self.comm).to_shapefile_serie_by_cell(population_density) + population_density = IoRaster(self.comm).to_shapefile_serie_by_cell( + population_density, out_path=population_shapefile_path, write=write_file) else: population_density = IoShapefile(self.comm).read_shapefile_serial(population_shapefile_path) @@ -264,7 +275,7 @@ class TrafficAreaSector(Sector): df1=self.evaporative, df2=temperature_mean, geom1_col='centroid', src_column='REC', axis=1) del self.evaporative['c_lat'], self.evaporative['c_lon'], self.evaporative['centroid'] - IoShapefile(self.comm).write_shapefile_serial( + IoShapefile(self.comm).write_shapefile_parallel( self.evaporative, os.path.join(self.auxiliary_dir, 'traffic_area', 'vehicle_by_cell.shp')) else: del self.evaporative['c_lat'], self.evaporative['c_lon'], self.evaporative['centroid'] @@ -457,8 +468,10 @@ class TrafficAreaSector(Sector): spent_time = timeit.default_timer() if self.do_evaporative: + self.logger.write_log('\tCalculating evaporative emissions.', message_level=2) self.calculate_evaporative_emissions() if self.do_small_cities: + self.logger.write_log('\tCalculating small cities emissions.', message_level=2) self.calculate_small_cities_emissions() emissions = self.to_grid()