From f8c3a17d16acf48b83468158096b81ae4f423208 Mon Sep 17 00:00:00 2001 From: Carles Tena Date: Mon, 18 Nov 2019 18:23:32 +0100 Subject: [PATCH] CMAQ writer: now writes all the variables. The no calculated ones are zeros --- hermesv3_bu/writer/cmaq_writer.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/hermesv3_bu/writer/cmaq_writer.py b/hermesv3_bu/writer/cmaq_writer.py index 53c5bec..d609162 100755 --- a/hermesv3_bu/writer/cmaq_writer.py +++ b/hermesv3_bu/writer/cmaq_writer.py @@ -293,7 +293,7 @@ class CmaqWriter(Writer): tflag[:] = self.create_tflag() # ========== POLLUTANTS ========== - for var_name in emissions.columns.values: + for var_name in self.pollutant_info.index: self.logger.write_log('\t\tCreating {0} variable'.format(var_name), message_level=3) if self.comm_write.Get_size() > 1: @@ -301,14 +301,20 @@ class CmaqWriter(Writer): var.set_collective(True) else: var = netcdf.createVariable(var_name, np.float64, ('TSTEP', 'LAY', 'ROW', 'COL',), zlib=True) - - var_data = self.dataframe_to_array(emissions.loc[:, [var_name]]) - - var[:, :, - self.rank_distribution[self.comm_write.Get_rank()]['y_min']: - self.rank_distribution[self.comm_write.Get_rank()]['y_max'], - self.rank_distribution[self.comm_write.Get_rank()]['x_min']: - self.rank_distribution[self.comm_write.Get_rank()]['x_max']] = var_data + try: + var_data = self.dataframe_to_array(emissions.loc[:, [var_name]]) + + var[:, :, + self.rank_distribution[self.comm_write.Get_rank()]['y_min']: + self.rank_distribution[self.comm_write.Get_rank()]['y_max'], + self.rank_distribution[self.comm_write.Get_rank()]['x_min']: + self.rank_distribution[self.comm_write.Get_rank()]['x_max']] = var_data + except KeyError: + var[:, :, + self.rank_distribution[self.comm_write.Get_rank()]['y_min']: + self.rank_distribution[self.comm_write.Get_rank()]['y_max'], + self.rank_distribution[self.comm_write.Get_rank()]['x_min']: + self.rank_distribution[self.comm_write.Get_rank()]['x_max']] = 0 var.long_name = self.pollutant_info.loc[var_name, 'long_name'] var.units = self.pollutant_info.loc[var_name, 'units'] -- GitLab