From 93d816fc246313d4ed52f97737eef34fb6b4b8cf Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Mon, 15 Sep 2025 23:56:06 -0600 Subject: [PATCH 01/49] Allow single dx,dy input --- erftools/preprocessing/wrf_inputs.py | 12 +++++++----- erftools/wrf/namelist.py | 14 ++++++++++++-- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index 783a497..5d2471b 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -204,14 +204,16 @@ def generate_inputs(self): grid_ratio = self.domains.parent_grid_ratio[idom] ref_ratio_vect += [grid_ratio, grid_ratio, 1] - parent_ds = np.array([ dx[idom-1], dy[idom-1]], dtype=float) - child_ds = np.array([ dx[idom ], dy[idom ]], dtype=float) - parent_ext = np.array([imax[idom-1], jmax[idom-1]]) * parent_ds - child_ext = np.array([imax[idom ], jmax[idom ]]) * child_ds + parent_dx = np.array([ dx[idom-1], dy[idom-1]], dtype=float) + child_dx = np.array([ dx[idom ], dy[idom ]], dtype=float) + parent_ext = np.array([imax[idom-1], jmax[idom-1]]) * parent_dx + child_ext = np.array([imax[idom ], jmax[idom ]]) * child_dx + print(f'd{idom+1} parent dx,ext :',parent_dx,parent_ext) + print(f'd{idom+1} child dx,ext :',child_dx,child_ext) lo_idx = np.array([ self.domains.i_parent_start[idom] - 1, self.domains.j_parent_start[idom] - 1]) - in_box_lo = lo_idx * parent_ds + in_box_lo = lo_idx * parent_dx in_box_hi = in_box_lo + child_ext assert (in_box_hi[0] <= parent_ext[0]) assert (in_box_hi[1] <= parent_ext[1]) diff --git a/erftools/wrf/namelist.py b/erftools/wrf/namelist.py index 58aab2d..44020b2 100644 --- a/erftools/wrf/namelist.py +++ b/erftools/wrf/namelist.py @@ -177,8 +177,18 @@ def parse_grid(self): assert self.i_parent_start[0] == 1 assert self.j_parent_start[0] == 1 for dom in range(1,self.max_dom): - assert (self.dx[dom-1]/self.dx[dom] == self.parent_grid_ratio[dom]) - assert (self.dy[dom-1]/self.dy[dom] == self.parent_grid_ratio[dom]) + if len(self.dx) >= self.max_dom: + assert (self.dx[dom-1]/self.dx[dom] == self.parent_grid_ratio[dom]) + else: + print(f'Note: dx on d{dom+1:02d} not found,' + ' setting from parent_grid_ratio') + self.dx.append(self.dx[dom-1] / self.parent_grid_ratio[dom]) + if len(self.dy) >= self.max_dom: + assert (self.dy[dom-1]/self.dy[dom] == self.parent_grid_ratio[dom]) + else: + print(f'Note: dy on d{dom+1:02d} not found' + ' setting from parent_grid_ratio') + self.dy.append(self.dy[dom-1] / self.parent_grid_ratio[dom]) self.eta_levels = self.getarrayvar('eta_levels',optional=True) self.etac = self.getvar('etac',default=0.2) self.auto_levels_opt = self.getvar('auto_levels_opt',default=2) From a2355218cdb6808ec1ce815791ed520336165703 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 00:04:04 -0600 Subject: [PATCH 02/49] Cleanup code with RealInit --- erftools/preprocessing/wrf_inputs.py | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index 5d2471b..16078cb 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -146,18 +146,9 @@ def generate_inputs(self): assert eta_levels[0] == 1 assert eta_levels[-1] == 0 - # get geopotential height from base state - real = RealInit(eta_stag=eta_levels, ptop=ptop) - #phb = real.phb.squeeze().values - # better match real.exe output... - alb = real.alb.squeeze().values - phb = np.zeros_like(eta_levels) - psurf = p_0 - mub = psurf - ptop - for k in range(len(eta_levels)-1): - phb[k+1] = phb[k] - (eta_levels[k+1]-eta_levels[k]) * mub * alb[k] - - z_levels = phb / CONST_GRAV + # get geopotential heights from base state + real = RealInit(eta_levels=eta_levels, ptop=ptop) + z_levels = real.zlevels.squeeze().values self.base_heights = z_levels inp['erf.terrain_z_levels'] = z_levels From 041e684bc50136dad46a1802c4b02866e42efb34 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 00:26:08 -0600 Subject: [PATCH 03/49] Fix timestep parsing logic; fix output intervals --- erftools/preprocessing/wrf_inputs.py | 14 ++++++++++---- erftools/wrf/namelist.py | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index 16078cb..d42a0f6 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -199,8 +199,6 @@ def generate_inputs(self): child_dx = np.array([ dx[idom ], dy[idom ]], dtype=float) parent_ext = np.array([imax[idom-1], jmax[idom-1]]) * parent_dx child_ext = np.array([imax[idom ], jmax[idom ]]) * child_dx - print(f'd{idom+1} parent dx,ext :',parent_dx,parent_ext) - print(f'd{idom+1} child dx,ext :',child_dx,child_ext) lo_idx = np.array([ self.domains.i_parent_start[idom] - 1, self.domains.j_parent_start[idom] - 1]) @@ -213,11 +211,19 @@ def generate_inputs(self): inp['amr.ref_ratio_vect'] = ref_ratio_vect + print('DEBUG dt[0]',dt[0]) + restart_interval = self.time_control.restart_interval * 60.0 # [s] - inp['erf.check_int'] = int(restart_interval / dt[0]) + if restart_interval <= 0: + inp['erf.check_int'] = -1 + else: + inp['erf.check_int'] = int(restart_interval / dt[0]) wrfout_interval = self.time_control.history_interval[0] * 60.0 # [s] - inp['erf.plot_int_1'] = int(wrfout_interval / dt[0]) + if wrfout_interval <= 0: + inp['erf.plot_int_1'] = -1 + else: + inp['erf.plot_int_1'] = int(wrfout_interval / dt[0]) sfclayscheme = self.physics.sf_sfclay_physics[0] if sfclayscheme == 'None': diff --git a/erftools/wrf/namelist.py b/erftools/wrf/namelist.py index 44020b2..453f930 100644 --- a/erftools/wrf/namelist.py +++ b/erftools/wrf/namelist.py @@ -145,7 +145,7 @@ def __str__(self): def parse_time_integration(self): self.time_step = self.getvar('time_step') # seconds dt_num = self.getvar('time_step_fract_num',optional=True) - if dt_num is not None: + if dt_num is not None and dt_num > 0: dt_den = self.getvar('time_step_fract_den') self.time_step = dt_num / dt_den self.parent_time_step_ratio = self.getarrayvar( From bc4f30064dec7518ba78d03ab641ac84100b053f Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 00:59:42 -0600 Subject: [PATCH 04/49] Add more output params, including auxhist2 --- erftools/preprocessing/wrf_inputs.py | 25 ++++++++++++++++++++++--- erftools/wrf/namelist.py | 2 ++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index d42a0f6..1b15326 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -211,19 +211,38 @@ def generate_inputs(self): inp['amr.ref_ratio_vect'] = ref_ratio_vect - print('DEBUG dt[0]',dt[0]) - restart_interval = self.time_control.restart_interval * 60.0 # [s] if restart_interval <= 0: inp['erf.check_int'] = -1 else: inp['erf.check_int'] = int(restart_interval / dt[0]) + default_plot_vars = ['density','pressure','theta', + 'x_velocity','y_velocity','z_velocity', + 'qv','qc','qp'] + wrfout_interval = self.time_control.history_interval[0] * 60.0 # [s] if wrfout_interval <= 0: inp['erf.plot_int_1'] = -1 else: - inp['erf.plot_int_1'] = int(wrfout_interval / dt[0]) + inp['erf_plot_file_1'] = 'plt' + #inp['erf.plot_int_1'] = int(wrfout_interval / dt[0]) + inp['erf.plot_per_1'] = wrfout_interval + inp['erf.plot_vars_1'] = default_plot_vars + self.log.info('Setting default plotting vars for history output: ' + f'{default_plot_vars}') + + auxhist2_interval = self.time_control.auxhist2_interval[0] * 60.0 # [s] + if auxhist2_interval <= 0: + inp['erf.plot_int_2'] = -1 + else: + inp['erf.plot_file_2'] = 'aux' + #inp['erf.plot_int_2'] = int(auxhist2_interval / dt[0]) + inp['erf.plot_per_2'] = auxhist2_interval + inp['erf.plot_vars_1'] = default_plot_vars + self.log.info('Setting default plotting vars for auxhist output: ' + f'{default_plot_vars} -- need to manually specify ' + 'erf.plot_vars_2 to replicate auxhist2 output') sfclayscheme = self.physics.sf_sfclay_physics[0] if sfclayscheme == 'None': diff --git a/erftools/wrf/namelist.py b/erftools/wrf/namelist.py index 453f930..ddc6ec8 100644 --- a/erftools/wrf/namelist.py +++ b/erftools/wrf/namelist.py @@ -60,6 +60,8 @@ def __init__(self,nmldict): if history_interval_s is not None: self.history_interval = [interval / 60. for interval in history_interval_s] + self.auxhist2_interval = self.getarrayvar('auxhist2_interval',default=[0]) # [min] + self.parse_datetime_range() def __str__(self): From 0a2f7d34ef569c6f5a463f93e46eb16c8414073e Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 01:06:47 -0600 Subject: [PATCH 05/49] refinement_indicators already a list --- erftools/parms.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/erftools/parms.py b/erftools/parms.py index fc9fc1e..379901b 100644 --- a/erftools/parms.py +++ b/erftools/parms.py @@ -17,8 +17,7 @@ def check_unknown_params(data_dict, dataclass_type): unknown_params = list(provided_params - known_params) if 'refinement_indicators' in data_dict: - boxes = data_dict['refinement_indicators'].split() - for box in boxes: + for box in data_dict['refinement_indicators']: unknown_params = [param for param in unknown_params if not param.startswith(f'{box}.')] From de92054cd20a38a69dc5fad5461521d7facf5411 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 10:00:44 -0600 Subject: [PATCH 06/49] Revert to level 2.5 and add note about MYNN --- erftools/parms.py | 2 +- erftools/wrf/namelist.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/erftools/parms.py b/erftools/parms.py index 379901b..f8cc229 100644 --- a/erftools/parms.py +++ b/erftools/parms.py @@ -328,7 +328,7 @@ def __post_init__(self): pbl_types = self.pbl_type if isinstance(self.pbl_type,list) else [self.pbl_type] for pblscheme in pbl_types: - assert pblscheme in ['None','MYNN25','YSU'], \ + assert pblscheme in ['None','MYJ','MYNN25','MRF','YSU'], \ f'Unexpected erf.pbl_type={pblscheme}' assert self.abl_driver_type in \ diff --git a/erftools/wrf/namelist.py b/erftools/wrf/namelist.py index ddc6ec8..d6c80fa 100644 --- a/erftools/wrf/namelist.py +++ b/erftools/wrf/namelist.py @@ -225,6 +225,13 @@ def parse_all(self): self.bl_pbl_physics = [pbl_mapping.get(idx,'UNKNOWN') for idx in pbl_idx_list] for i in range(len(self.bl_pbl_physics)): if self.bl_pbl_physics[i] == 'MYNN': + if pbl_mynn_closure > 2.5: + pbl_mynn_closure = 2.5 + warnings.warn(f'MYNN level {pbl_mynn_closure} selected, but' + ' it is currently not available in ERF' + ' -- reverting to MYNN level 2.5.' + ' Note: A port of MYNN-EDMF is also available' + ' but it has not been fully verified.') lvlstr = str(pbl_mynn_closure).replace('.','') self.bl_pbl_physics[i] += lvlstr self.sf_sfclay_physics = [sfclay_mapping.get(idx,'UNKNOWN') for idx in sfclay_idx_list] From 5272315a845e12068dc02b12042f6982d4a060d2 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 10:10:24 -0600 Subject: [PATCH 07/49] Update mp_physics input mapping --- erftools/wrf/namelist_mappings.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/erftools/wrf/namelist_mappings.py b/erftools/wrf/namelist_mappings.py index f2f6d10..60b5790 100644 --- a/erftools/wrf/namelist_mappings.py +++ b/erftools/wrf/namelist_mappings.py @@ -1,3 +1,5 @@ +# for reference, see WRF/run/README.namelist + pbl_mapping = { 0: 'None', 1: 'YSU', # YSU scheme @@ -41,7 +43,9 @@ 2: 'SAM', # SAM is comparable to Lin et al. scheme 3: 'Kessler', # WRF Single-Moment, 3-class scheme 6: 'SAM', # WRF Single-Moment, 6-class scheme - 28: 'SAM', # aerosol-aware Thompson scheme + 8: 'Morrison', # Thompson scheme + 10: 'Morrison', # Morrison (double moment) scheme + 28: 'Morrison', # aerosol-aware Thompson scheme } ra_physics_mapping = { From 6664bd5b12de5c493e27552b15d85e23bc6d92bf Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 10:24:47 -0600 Subject: [PATCH 08/49] Update log info --- erftools/preprocessing/wrf_inputs.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index 1b15326..20f44b6 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -154,6 +154,9 @@ def generate_inputs(self): most_zref = 0.5*(z_levels[0] + z_levels[1]) inp['erf.most.zref'] = most_zref # need to specify for terrain + self.log.info('Reference height for MOST set to the average of the ' + 'first two base-state geopotential heights: ' + f'{z_levels[0]:g} {z_levels[1]:g}') ztop = z_levels[-1] self.log.info('Estimated domain ztop from domains.p_top_requested' @@ -272,9 +275,9 @@ def generate_inputs(self): inp['erf.dryscal_horiz_adv_type'] = h_sca_adv_order inp['erf.dryscal_vert_adv_type'] = v_sca_adv_order if not all([adv_opt == 'WENO5' for adv_opt in self.dynamics.moist_adv_opt]): - self.log.warning('Need to manually specify moist erf.moistscal_*_adv_type' - f' for WRF moist_adv_opt = {self.dynamics.moist_adv_opt}' - ' -- defaulting to 5th-order WENO') + self.log.warning(f'WRF moist_adv_opt = {self.dynamics.moist_adv_opt}' + ' not available -- defaulting to 5th-order WENO for' + ' erf.moistscal_*_adv_type') inp['erf.pbl_type'] = self.physics.bl_pbl_physics for idom in range(max_dom): From 078233215776e4b8ba672e5b17708d1cf8c4ef22 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 10:32:38 -0600 Subject: [PATCH 09/49] Fix unknown param warning --- erftools/parms.py | 5 +++++ erftools/wrf/namelist.py | 2 ++ 2 files changed, 7 insertions(+) diff --git a/erftools/parms.py b/erftools/parms.py index f8cc229..76a0dbe 100644 --- a/erftools/parms.py +++ b/erftools/parms.py @@ -16,6 +16,11 @@ def check_unknown_params(data_dict, dataclass_type): provided_params = set(data_dict.keys()) unknown_params = list(provided_params - known_params) + # ignore MOST settings + unknown_params = [param for param in unknown_params + if not param.startswith('most.')] + + # ignore refinement indicators if 'refinement_indicators' in data_dict: for box in data_dict['refinement_indicators']: unknown_params = [param for param in unknown_params diff --git a/erftools/wrf/namelist.py b/erftools/wrf/namelist.py index d6c80fa..b799b79 100644 --- a/erftools/wrf/namelist.py +++ b/erftools/wrf/namelist.py @@ -120,6 +120,8 @@ def parse_datetime_range(self): if spec_run_time != simtime.total_seconds(): new_end_datetime = self.start_datetimes[0] \ + timedelta(seconds=spec_run_time) + # From WRF user guide: run_days/run_hours takes precedence + # over the end times print(f'Specified run time {spec_run_time} s' f' differs from {simtime.total_seconds()} s' \ f' (from {self.start_datetimes[0]}' From 4b92777907c0f23f2848df42a7871bd39790ebdd Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 10:46:17 -0600 Subject: [PATCH 10/49] Rename MOST bc to SurfaceLayer --- erftools/inputs.py | 4 ++-- erftools/preprocessing/wrf_inputs.py | 4 ++-- erftools/wrf/namelist_mappings.py | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/erftools/inputs.py b/erftools/inputs.py index 8162af2..2c033f2 100644 --- a/erftools/inputs.py +++ b/erftools/inputs.py @@ -128,7 +128,7 @@ def read_bcs(self,ppdata): assert 'zhi.type' in ppdata.keys() self.zlo = parmparse('zlo',ppdata) self.zhi = parmparse('zhi',ppdata) - if self.zlo['type'] == 'MOST': + if self.zlo['type'] == 'SurfaceLayer': self.most = parmparse('erf.most',ppdata) def read_refinement(self,ppdata): @@ -238,7 +238,7 @@ def write(self,fpath=None): if hasattr(self,'zlo'): f.write('\n') write_bc(f,'zlo',self.zlo) - if self.zlo['type'] == 'MOST': + if self.zlo['type'] == 'SurfaceLayer': for key,val in self.most.items(): f.write(f'erf.most.{key} = {val}\n') write_bc(f,'zhi',self.zhi) diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index 20f44b6..d2797d5 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -250,8 +250,8 @@ def generate_inputs(self): sfclayscheme = self.physics.sf_sfclay_physics[0] if sfclayscheme == 'None': inp['zlo.type'] = 'SlipWall' - elif sfclayscheme == 'MOST': - inp['zlo.type'] = 'MOST' + elif sfclayscheme == 'SurfaceLayer': + inp['zlo.type'] = 'SurfaceLayer' else: self.log.warning(f'Surface layer scheme {sfclayscheme} not implemented in ERF') inp['zlo.type'] = sfclayscheme diff --git a/erftools/wrf/namelist_mappings.py b/erftools/wrf/namelist_mappings.py index 60b5790..ed6c870 100644 --- a/erftools/wrf/namelist_mappings.py +++ b/erftools/wrf/namelist_mappings.py @@ -18,9 +18,9 @@ sfclay_mapping = { 0: 'None', - 1: 'MOST', # Revised MM5 Monin-Obukhov scheme (Jimenez, renamed in v3.6) - 2: 'MOST', # Monin-Obukhov (Janjic) scheme - 5: 'MOST', # MYNN surface layer + 1: 'SurfaceLayer', # Revised MM5 Monin-Obukhov scheme (Jimenez, renamed in v3.6) + 2: 'SurfaceLayer', # Monin-Obukhov (Janjic) scheme + 5: 'SurfaceLayer', # MYNN surface layer } valid_sfclay = { # for each PBL scheme, based on acceptable WRF inputs From 9b8683c6358372188b54585b351d2182190ab13c Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 10:46:28 -0600 Subject: [PATCH 11/49] Always write out erf.plt_file_1 sampling --- erftools/inputs.py | 17 +++++++++-------- erftools/preprocessing/wrf_inputs.py | 8 ++------ 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/erftools/inputs.py b/erftools/inputs.py index 2c033f2..75fc69c 100644 --- a/erftools/inputs.py +++ b/erftools/inputs.py @@ -337,14 +337,15 @@ def write(self,fpath=None): f.write('\n# PLOTFILES\n') if self.erf.plotfile_type != 'amrex': f.write(f'erf.plotfile_type = {self.erf.plotfile_type}\n') - if (self.erf.plot_int_1 > 0) or (self.erf.plot_per_1 > 0): - f.write(f'erf.plot_file_1 = {self.erf.plot_file_1}\n') - if self.erf.plot_per_1 > 0: - f.write(f'erf.plot_per_1 = {self.erf.plot_per_1}\n') - else: - f.write(f'erf.plot_int_1 = {self.erf.plot_int_1}\n') - f.write('erf.plot_vars_1 = ' - f"{strs_to_str(self.erf.plot_vars_1)}\n") + + f.write(f'erf.plot_file_1 = {self.erf.plot_file_1}\n') + if self.erf.plot_per_1 > 0: + f.write(f'erf.plot_per_1 = {self.erf.plot_per_1}\n') + else: + f.write(f'erf.plot_int_1 = {self.erf.plot_int_1}\n') + f.write('erf.plot_vars_1 = ' + f"{strs_to_str(self.erf.plot_vars_1)}\n") + if (self.erf.plot_int_2 > 0) or (self.erf.plot_per_2 > 0): f.write(f'erf.plot_file_2 = {self.erf.plot_file_2}\n') if self.erf.plot_per_2 > 0: diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index d2797d5..2fe1ba8 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -220,10 +220,6 @@ def generate_inputs(self): else: inp['erf.check_int'] = int(restart_interval / dt[0]) - default_plot_vars = ['density','pressure','theta', - 'x_velocity','y_velocity','z_velocity', - 'qv','qc','qp'] - wrfout_interval = self.time_control.history_interval[0] * 60.0 # [s] if wrfout_interval <= 0: inp['erf.plot_int_1'] = -1 @@ -242,9 +238,9 @@ def generate_inputs(self): inp['erf.plot_file_2'] = 'aux' #inp['erf.plot_int_2'] = int(auxhist2_interval / dt[0]) inp['erf.plot_per_2'] = auxhist2_interval - inp['erf.plot_vars_1'] = default_plot_vars + inp['erf.plot_vars_2'] = self.input_dict['erf.plot_vars_1'] # default self.log.info('Setting default plotting vars for auxhist output: ' - f'{default_plot_vars} -- need to manually specify ' + f'{inp["erf.plot_vars_2"]} -- need to manually specify ' 'erf.plot_vars_2 to replicate auxhist2 output') sfclayscheme = self.physics.sf_sfclay_physics[0] From 431cfec3e944dc7c275e7943b93d67ee328d16c4 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 10:49:50 -0600 Subject: [PATCH 12/49] Add comment about default smag Cs --- erftools/inputs.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/erftools/inputs.py b/erftools/inputs.py index 75fc69c..8545ce1 100644 --- a/erftools/inputs.py +++ b/erftools/inputs.py @@ -411,7 +411,8 @@ def write(self,fpath=None): f.write(f'\nerf.les_type = {strs_to_str(lestypes)}\n') if have_smag: Cs_list = self.erf.Cs if isinstance(self.erf.Cs,list) else [self.erf.Cs] - f.write(f'erf.Cs = {list_to_str(Cs_list)}\n') + comment = ' # Cs=0.25 is WRF default' if (0.25 in Cs_list) else '' + f.write(f'erf.Cs = {list_to_str(Cs_list)}{comment}\n') if have_dear: Ck_list = self.erf.Ck if isinstance(self.erf.Ck,list) else [self.erf.Ck] f.write(f'erf.Ck = {list_to_str(Ck_list)}\n') From ad690c15f35d1c5fb80d2c615d7251a96782fdfd Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 11:00:34 -0600 Subject: [PATCH 13/49] Handle multiple wrfinput files --- erftools/inputs.py | 11 +++++++---- erftools/preprocessing/wrf_inputs.py | 7 +++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/erftools/inputs.py b/erftools/inputs.py index 8545ce1..5779dd2 100644 --- a/erftools/inputs.py +++ b/erftools/inputs.py @@ -518,12 +518,15 @@ def write(self,fpath=None): erf.init_sounding_ideal = {bool_to_str(self.erf.init_sounding_ideal)} """) elif self.erf.init_type.lower() == 'wrfinput': - f.write(f""" -erf.init_type = wrfinput -erf.use_real_bcs = {bool_to_str(self.erf.use_real_bcs)} -erf.nc_init_file_0 = {self.erf.nc_init_file_0}""") + f.write('\nerf.init_type = wrfinput\n') + nc_init_files = [ + param for param in dir(self.erf) + if param.startswith('nc_init_file_')] + for initfile in nc_init_files: + f.write(f'erf.{initfile} = {getattr(self.erf,initfile)}\n') if self.erf.use_real_bcs: f.write(f""" +erf.use_real_bcs = {bool_to_str(self.erf.use_real_bcs)} erf.nc_bdy_file = {self.erf.nc_bdy_file} erf.real_width = {self.erf.real_width} erf.real_set_width = {self.erf.real_set_width} diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index 2fe1ba8..8bba187 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -77,7 +77,6 @@ def set_defaults(self): 'erf.terrain_smoothing': 1, 'erf.init_type': 'wrfinput', 'erf.use_real_bcs': True, - 'erf.nc_init_file_0': 'wrfinput_d01', 'erf.nc_bdy_file': 'wrfbdy_d01', 'erf.dycore_horiz_adv_type': 'Upwind_5th', 'erf.dycore_vert_adv_type': 'Upwind_3rd', @@ -180,8 +179,12 @@ def generate_inputs(self): dt = np.array(self.domains.parent_time_step_ratio) * self.domains.time_step inp['erf.fixed_dt'] = dt[0] - # refinements + # initial conditions max_dom = self.domains.max_dom + for i in range(max_dom): + inp[f'erf.nc_init_file_{i}'] = f'wrfinput_d{i+1:02d}' + + # refinements inp['amr.max_level'] = max_dom - 1 # zero-based indexing if max_dom > 1: self.log.info('Assuming parent_time_step_ratio == parent_grid_ratio') From 3eea000c2f28c8b16bff4ad66cb9e4442b2d515b Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 11:43:58 -0600 Subject: [PATCH 14/49] Dont warn about additional nc_init_files --- erftools/parms.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/erftools/parms.py b/erftools/parms.py index 76a0dbe..64c3774 100644 --- a/erftools/parms.py +++ b/erftools/parms.py @@ -26,6 +26,10 @@ def check_unknown_params(data_dict, dataclass_type): unknown_params = [param for param in unknown_params if not param.startswith(f'{box}.')] + # ignore nc_init_file_* + unknown_params = [param for param in unknown_params + if not param.startswith('nc_init_file_')] + if unknown_params: warnings.warn(f'Non-standard {dataclass_type.__name__} ignored: {unknown_params}') From 138cd255ae02a8e317f52363fc91ea081ea87fb2 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 11:46:31 -0600 Subject: [PATCH 15/49] Correctly output Smag2D opt --- erftools/inputs.py | 2 +- erftools/parms.py | 2 +- erftools/preprocessing/wrf_inputs.py | 5 +---- erftools/wrf/namelist_mappings.py | 6 +++--- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/erftools/inputs.py b/erftools/inputs.py index 5779dd2..92e53ac 100644 --- a/erftools/inputs.py +++ b/erftools/inputs.py @@ -405,7 +405,7 @@ def write(self,fpath=None): lestypes = self.erf.les_type \ if isinstance(self.erf.les_type,list) \ else [self.erf.les_type] - have_smag = ('Smagorinsky' in lestypes) + have_smag = ('Smagorinsky' in lestypes) or ('Smagorinsky2D' in lestypes) have_dear = ('Deardorff' in lestypes) if have_smag or have_dear: f.write(f'\nerf.les_type = {strs_to_str(lestypes)}\n') diff --git a/erftools/parms.py b/erftools/parms.py index 64c3774..e80925b 100644 --- a/erftools/parms.py +++ b/erftools/parms.py @@ -329,7 +329,7 @@ def __post_init__(self): les_types = self.les_type if isinstance(self.les_type,list) else [self.les_type] for turbmodel in les_types: - assert turbmodel in ['None','Smagorinsky','Deardorff'], \ + assert turbmodel in ['None','Smagorinsky','Smagorinsky2D','Deardorff'], \ f'Unexpected erf.les_type={turbmodel}' if any([turbmodel == 'Smagorinsky' for turbmodel in les_types]): smag_Cs = self.Cs if isinstance(self.Cs,list) else len(les_types)*[self.Cs] diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index 8bba187..d60c19b 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -316,10 +316,7 @@ def generate_inputs(self): inp['erf.num_diff_coeff'] = num_diff_coeff if any([opt != 'constant' for opt in self.dynamics.km_opt]): - # in ERF, Smagorinsky == 2D Smagorinsky - les_types = [turb if 'Smagorinsky' not in turb else 'Smagorinsky' - for turb in self.dynamics.km_opt] - les_types = les_types[:max_dom] + les_types = self.dynamics.km_opt[:max_dom] inp['erf.les_type'] = les_types smag_Cs = self.dynamics.c_s dear_Ck = self.dynamics.c_k diff --git a/erftools/wrf/namelist_mappings.py b/erftools/wrf/namelist_mappings.py index ed6c870..ae124c0 100644 --- a/erftools/wrf/namelist_mappings.py +++ b/erftools/wrf/namelist_mappings.py @@ -81,9 +81,9 @@ 1: 'constant', 2: 'Deardorff', # 1.5 order TKE closure (3D) 3: 'Smagorinsky', # Smagorinsky first-order closure (3D) - 4: '2D Smagorinsky', # horizontal Smagorinsky closure (diagnosed from just - # horizontal deformation); vertical diffusion from - # PBL scheme + 4: 'Smagorinsky2D', # horizontal Smagorinsky closure (diagnosed from just + # horizontal deformation); vertical diffusion from + # PBL scheme } damp_opt_mapping = { From e50faa16992f8e669d887ac8be5dcb844e0536bc Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 11:51:36 -0600 Subject: [PATCH 16/49] Output max_level for each nest --- erftools/preprocessing/wrf_inputs.py | 1 + 1 file changed, 1 insertion(+) diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index d60c19b..a2a69ca 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -212,6 +212,7 @@ def generate_inputs(self): in_box_hi = in_box_lo + child_ext assert (in_box_hi[0] <= parent_ext[0]) assert (in_box_hi[1] <= parent_ext[1]) + inp[f'erf.nest{idom:d}.max_level'] = idom inp[f'erf.nest{idom:d}.in_box_lo'] = in_box_lo inp[f'erf.nest{idom:d}.in_box_hi'] = in_box_hi From 2ba746ce3d47267cfbbb120cf93950b57d5c9c2c Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 12:26:49 -0600 Subject: [PATCH 17/49] Parse lsm physics from wrf --- erftools/inputs.py | 6 ++++++ erftools/parms.py | 3 +++ erftools/preprocessing/wrf_inputs.py | 9 +++++++++ erftools/wrf/namelist.py | 3 +++ erftools/wrf/namelist_mappings.py | 7 +++++++ 5 files changed, 28 insertions(+) diff --git a/erftools/inputs.py b/erftools/inputs.py index 92e53ac..36d8338 100644 --- a/erftools/inputs.py +++ b/erftools/inputs.py @@ -448,6 +448,12 @@ def write(self,fpath=None): if self.erf.radiation_model != 'None': f.write(f"""\n# RADIATION erf.radiation_model = {self.erf.radiation_model} +""") + + ######################################## + if self.erf.land_surface_model != 'None': + f.write(f"""\n# LAND SURFACE +erf.land_surface_model = {self.erf.land_surface_model} """) ######################################## diff --git a/erftools/parms.py b/erftools/parms.py index e80925b..9475f9c 100644 --- a/erftools/parms.py +++ b/erftools/parms.py @@ -272,6 +272,9 @@ class ERFParms: # Radiation radiation_model: str = 'None' + # Land Surface + land_surface_model = str = 'None' + def __post_init__(self): if self.anelastic: assert self.use_fft diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index a2a69ca..4bcce87 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -342,6 +342,15 @@ def generate_inputs(self): self.log.warning(f'Applying the {rad_model} radiation scheme on all levels') inp['erf.radiation_model'] = rad_model + if any([opt != 'None' for opt in self.physics.surface_physics]): + lsm_model = self.physics.surface_physics[0] + if len(set(self.physics.surface_physics)) > 1: + self.log.warning(f'Applying the {lsm_model} surface scheme on all levels') + if lsm_model == 'NoahMP': + self.log.warning(f'&noah_mp was not parsed, additional options' + ' need to be manually specified') + inp['erf.land_surface_model'] = lsm_model + if any([opt != 'None' for opt in self.physics.cu_physics]): self.log.warning('ERF currently does not have any cumulus parameterizations') diff --git a/erftools/wrf/namelist.py b/erftools/wrf/namelist.py index b799b79..cf6e0f8 100644 --- a/erftools/wrf/namelist.py +++ b/erftools/wrf/namelist.py @@ -248,6 +248,9 @@ def parse_all(self): 'Different longwave/shortwave radiation schemes not handled' self.ra_physics = [ra_physics_mapping.get(idx,'UNKNOWN') for idx in ra_lw_idx_list] + lsm_idx_list = self.getarrayvar('sf_surface_physics') + self.surface_physics = [surface_physics_mapping.get(idx,'UNKNOWN') for idx in lsm_idx_list] + cu_idx_list = self.getarrayvar('cu_physics') self.cu_physics = [cu_physics_mapping.get(idx,'UNKNOWN') for idx in cu_idx_list] diff --git a/erftools/wrf/namelist_mappings.py b/erftools/wrf/namelist_mappings.py index ae124c0..3527208 100644 --- a/erftools/wrf/namelist_mappings.py +++ b/erftools/wrf/namelist_mappings.py @@ -53,6 +53,13 @@ 4: 'RRTMGP', } +surface_physics_mapping = { + 0: 'None', + 1: 'SLM', # thermal diffusion scheme (soil temperature only, 5 layers) + 2: 'NoahMP', # Unified Noah land-surface model + 4: 'NoahMP', # Noah-MP land-surface model +} + cu_physics_mapping = { 0: 'None', } From 4e4cc0069b0874cea3e98111788927f4ff67e7fa Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 13:52:48 -0600 Subject: [PATCH 18/49] Fix nest indexing --- erftools/preprocessing/wrf_inputs.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index 4bcce87..e84b64e 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -201,10 +201,10 @@ def generate_inputs(self): grid_ratio = self.domains.parent_grid_ratio[idom] ref_ratio_vect += [grid_ratio, grid_ratio, 1] - parent_dx = np.array([ dx[idom-1], dy[idom-1]], dtype=float) - child_dx = np.array([ dx[idom ], dy[idom ]], dtype=float) - parent_ext = np.array([imax[idom-1], jmax[idom-1]]) * parent_dx - child_ext = np.array([imax[idom ], jmax[idom ]]) * child_dx + parent_dx = np.array([ dx[idom-1] , dy[idom-1] ], dtype=float) + child_dx = np.array([ dx[idom ] , dy[idom ] ], dtype=float) + parent_ext = np.array([imax[idom-1]-1, jmax[idom-1]-1]) * parent_dx + child_ext = np.array([imax[idom ]-1, jmax[idom ]-1]) * child_dx lo_idx = np.array([ self.domains.i_parent_start[idom] - 1, self.domains.j_parent_start[idom] - 1]) From 9e02d16766ecd63dd7cd36f9ed92cf4441acc7c9 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 14:05:51 -0600 Subject: [PATCH 19/49] No need to output default substepping type --- erftools/inputs.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/erftools/inputs.py b/erftools/inputs.py index 36d8338..c36c3e5 100644 --- a/erftools/inputs.py +++ b/erftools/inputs.py @@ -245,7 +245,8 @@ def write(self,fpath=None): ######################################## f.write('\n# TIME STEP CONTROL\n') - f.write(f'erf.substepping_type = {self.erf.substepping_type}\n') + if self.erf.substepping_type != 'implicit': + f.write(f'erf.substepping_type = {self.erf.substepping_type}\n') if self.erf.fixed_dt > 0: f.write(f'erf.fixed_dt = {self.erf.fixed_dt}\n') else: From 9d7d6495d9698278b453e24a61ac791aa6c79ce3 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 14:06:11 -0600 Subject: [PATCH 20/49] Revert to SLM for usability at the moment --- erftools/parms.py | 2 +- erftools/preprocessing/wrf_inputs.py | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/erftools/parms.py b/erftools/parms.py index 9475f9c..7a63bd6 100644 --- a/erftools/parms.py +++ b/erftools/parms.py @@ -273,7 +273,7 @@ class ERFParms: radiation_model: str = 'None' # Land Surface - land_surface_model = str = 'None' + land_surface_model: str = 'None' def __post_init__(self): if self.anelastic: diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index e84b64e..44e68c4 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -347,8 +347,11 @@ def generate_inputs(self): if len(set(self.physics.surface_physics)) > 1: self.log.warning(f'Applying the {lsm_model} surface scheme on all levels') if lsm_model == 'NoahMP': - self.log.warning(f'&noah_mp was not parsed, additional options' - ' need to be manually specified') + #self.log.warning(f'&noah_mp was not parsed, additional options' + # ' need to be manually specified') + self.log.warning('NoahMP verification is ongoing; ' + 'reverting to simple land model (SLM) for now') + lsm_model = 'SLM' inp['erf.land_surface_model'] = lsm_model if any([opt != 'None' for opt in self.physics.cu_physics]): From a5a58f04f8b06839287d964395b1b9b441eb2fe5 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 14:09:36 -0600 Subject: [PATCH 21/49] Fix sfclay name --- erftools/inputs.py | 4 ++-- erftools/preprocessing/wrf_inputs.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/erftools/inputs.py b/erftools/inputs.py index c36c3e5..93b96ba 100644 --- a/erftools/inputs.py +++ b/erftools/inputs.py @@ -128,7 +128,7 @@ def read_bcs(self,ppdata): assert 'zhi.type' in ppdata.keys() self.zlo = parmparse('zlo',ppdata) self.zhi = parmparse('zhi',ppdata) - if self.zlo['type'] == 'SurfaceLayer': + if self.zlo['type'] == 'surface_layer': self.most = parmparse('erf.most',ppdata) def read_refinement(self,ppdata): @@ -238,7 +238,7 @@ def write(self,fpath=None): if hasattr(self,'zlo'): f.write('\n') write_bc(f,'zlo',self.zlo) - if self.zlo['type'] == 'SurfaceLayer': + if self.zlo['type'] == 'surface_layer': for key,val in self.most.items(): f.write(f'erf.most.{key} = {val}\n') write_bc(f,'zhi',self.zhi) diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index 44e68c4..fe7c020 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -251,7 +251,7 @@ def generate_inputs(self): if sfclayscheme == 'None': inp['zlo.type'] = 'SlipWall' elif sfclayscheme == 'SurfaceLayer': - inp['zlo.type'] = 'SurfaceLayer' + inp['zlo.type'] = 'surface_layer' else: self.log.warning(f'Surface layer scheme {sfclayscheme} not implemented in ERF') inp['zlo.type'] = sfclayscheme From 471a6072025f75f047732e9612cf30ce1d934c47 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 14:31:17 -0600 Subject: [PATCH 22/49] Change default terrain_smoothing option --- erftools/preprocessing/wrf_inputs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index fe7c020..d8fb9da 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -74,7 +74,7 @@ def set_defaults(self): 'yhi.type': 'Outflow', 'zhi.type': 'SlipWall', 'erf.terrain_type': 'StaticFittedMesh', - 'erf.terrain_smoothing': 1, + 'erf.terrain_smoothing': 0, # only valid option with multilievel 'erf.init_type': 'wrfinput', 'erf.use_real_bcs': True, 'erf.nc_bdy_file': 'wrfbdy_d01', From 1c659bb9149821c76eec19744d61d4eb9aa9c833 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 14:42:09 -0600 Subject: [PATCH 23/49] amr.regrid_int --> erf.regrid_int --- erftools/inputs.py | 6 +++--- erftools/parms.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/erftools/inputs.py b/erftools/inputs.py index 93b96ba..cd6cb26 100644 --- a/erftools/inputs.py +++ b/erftools/inputs.py @@ -178,9 +178,9 @@ def validate(self): f' will be inactive with' f' amr.max_level={self.amr.max_level}') if 'field_name' in refineparams and \ - self.amr.regrid_int <= 0: + self.erf.regrid_int <= 0: warnings.warn(f'{box} dynamic refinement will be inactive' - f' with amr.regrid_int={self.amr.regrid_int}') + f' with erf.regrid_int={self.erf.regrid_int}') def write(self,fpath=None): with open_file_or_stdout(fpath) as f: @@ -271,7 +271,7 @@ def write(self,fpath=None): ######################################## f.write('\n# REFINEMENT / REGRIDDING\n') f.write(f'amr.max_level = {self.amr.max_level}\n') - f.write(f'amr.regrid_int = {self.amr.regrid_int}\n') + f.write(f'erf.regrid_int = {self.erf.regrid_int}\n') if len(self.erf.refinement_indicators) > 0: if len(self.amr.ref_ratio_vect) > 0: f.write('amr.ref_ratio_vect = ' diff --git a/erftools/parms.py b/erftools/parms.py index 7a63bd6..95a41e6 100644 --- a/erftools/parms.py +++ b/erftools/parms.py @@ -41,7 +41,6 @@ class AMRParms: max_level: int = 0 ref_ratio: Union[int,List[int]] = 2 ref_ratio_vect: List[int] = field(default_factory=list) - regrid_int: int = -1 v: int = 0 # verbosity @@ -133,6 +132,7 @@ class ERFParms: # Refinement refinement_indicators: Union[str,List[str]] = field(default_factory=list) + regrid_int: int = -1 # Grid Stretching grid_stretching_ratio: float = 1. From 127608c6b0031744157bb1544bec38d31505be38 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 14:49:09 -0600 Subject: [PATCH 24/49] Change output name to be automatically detected by paraview --- erftools/preprocessing/wrf_inputs.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index d8fb9da..a749085 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -239,7 +239,7 @@ def generate_inputs(self): if auxhist2_interval <= 0: inp['erf.plot_int_2'] = -1 else: - inp['erf.plot_file_2'] = 'aux' + inp['erf.plot_file_2'] = 'plt_aux' #inp['erf.plot_int_2'] = int(auxhist2_interval / dt[0]) inp['erf.plot_per_2'] = auxhist2_interval inp['erf.plot_vars_2'] = self.input_dict['erf.plot_vars_1'] # default From f68a80bce113695633a5eee05b21498f65936fea Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 15:19:06 -0600 Subject: [PATCH 25/49] Add more flexible ascii output --- erftools/preprocessing/wrf_inputs.py | 30 +++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index a749085..033b89d 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -368,7 +368,7 @@ def generate_inputs(self): self.log.warning(f'Damping option {self.dynamics.damp_opt} not supported') self.input_dict = inp - + def process_initial_conditions(self,init_input='wrfinput_d01', calc_geopotential_heights=False, landuse_table_path=None, @@ -428,8 +428,8 @@ def process_initial_conditions(self,init_input='wrfinput_d01', xyz = np.stack((xg.ravel(order='F'), yg.ravel(order='F'), hgt_nodes.ravel(order='F')),axis=-1) - print('Writing out',write_hgt) - np.savetxt(write_hgt, xyz, fmt='%.8g') + + write_ascii_table(write_hgt, xyz, names=['x','y','hgt']) self.input_dict['erf.terrain_file_name'] = \ os.path.split(write_hgt)[1] @@ -490,8 +490,8 @@ def alfun(idx): xyz0 = np.stack((xg.ravel(order='F'), yg.ravel(order='F'), z0_nodes.ravel(order='F')),axis=-1) - print('Writing out',write_z0) - np.savetxt(write_z0, xyz0, fmt='%.8g') + + write_ascii_table(write_z0, xyz0, names=['x','y','z0']) self.input_dict['erf.most.roughness_file_name'] = \ os.path.split(write_z0)[1] else: @@ -513,8 +513,8 @@ def alfun(idx): xyz0 = np.stack((xg.ravel(order='F'), yg.ravel(order='F'), al_nodes.ravel(order='F')),axis=-1) - print('Writing out',write_albedo) - np.savetxt(write_albedo, xyz0, fmt='%.8g') + + write_ascii_table(write_albedo, xyz0, names=['x','y','alb']) self.input_dict['erf.rad_albedo_file_name'] = \ os.path.split(write_albedo)[1] @@ -534,3 +534,19 @@ def write_inputfile(self,fpath): inp = self.to_erf() inp.write(fpath) print('Wrote',fpath) + + +def write_ascii_table(fpath, xyz, names=None): + print('Writing out',fpath) + ext = os.path.splitext(fpath)[1] + if ext == '.csv': + columns = None + if names is not None: + columns = names + df = pd.DataFrame(xyz, columns=columns) + df.to_csv(fpath, index=False) + else: + header = '' + if names is not None: + header = ' '.join(names) + np.savetxt(fpath, xyz, header=header, fmt='%.8g') From 4752d31952d7a8f8a544949427182243a1ee4fb4 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 21:04:08 -0600 Subject: [PATCH 26/49] Correctly output terrain grids for different domains --- erftools/preprocessing/wrf_inputs.py | 32 ++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/preprocessing/wrf_inputs.py index 033b89d..e029c37 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/preprocessing/wrf_inputs.py @@ -184,11 +184,13 @@ def generate_inputs(self): for i in range(max_dom): inp[f'erf.nc_init_file_{i}'] = f'wrfinput_d{i+1:02d}' - # refinements + # refinements / nests inp['amr.max_level'] = max_dom - 1 # zero-based indexing if max_dom > 1: self.log.info('Assuming parent_time_step_ratio == parent_grid_ratio') + self.refinement_boxes = [] + refine_names = [f'nest{idom:d}' for idom in range(1,max_dom)] inp['erf.refinement_indicators'] = refine_names @@ -215,6 +217,7 @@ def generate_inputs(self): inp[f'erf.nest{idom:d}.max_level'] = idom inp[f'erf.nest{idom:d}.in_box_lo'] = in_box_lo inp[f'erf.nest{idom:d}.in_box_hi'] = in_box_hi + self.refinement_boxes.append((in_box_lo, in_box_hi)) inp['amr.ref_ratio_vect'] = ref_ratio_vect @@ -377,6 +380,9 @@ def process_initial_conditions(self,init_input='wrfinput_d01', write_albedo=None): wrfinp = xr.open_dataset(init_input) + idx = init_input.index('_d') + idom = int(init_input[idx+2:idx+4]) - 1 + # Get Coriolis parameters period = 4*np.pi / wrfinp['F'] * np.sin(np.radians(wrfinp.coords['XLAT'])) # F: "Coriolis sine latitude term" mean_lat = np.mean(wrfinp.coords['XLAT'].values) @@ -401,14 +407,22 @@ def process_initial_conditions(self,init_input='wrfinput_d01', inp['erf.most.zref'] = most_zref # need to specify for terrain # Grid data needed if hgt or z0 are written - dx = self.domains.dx[0] - dy = self.domains.dy[0] + dx = self.domains.dx[idom] + assert dx == wrfinp.attrs['DX'] + dy = self.domains.dy[idom] + assert dy == wrfinp.attrs['DY'] nx = wrfinp.sizes['west_east'] ny = wrfinp.sizes['south_north'] - west_east = np.arange(0.5,nx) * dx - south_north = np.arange(0.5,ny) * dy - west_east_stag = np.arange(nx+1) * dx - south_north_stag = np.arange(ny+1) * dy + + x0, y0 = 0.0, 0.0 + if idom > 0: + refine_box_lo, _ = self.refinement_boxes[idom-1] + x0, y0 = refine_box_lo[:2] + + west_east = x0 + np.arange(0.5,nx) * dx + south_north = y0 + np.arange(0.5,ny) * dy + west_east_stag = x0 + np.arange(nx+1) * dx + south_north_stag = y0 + np.arange(ny+1) * dy xg,yg = np.meshgrid(west_east_stag, south_north_stag, indexing='ij') hgt = wrfinp['HGT'].isel(Time=0) # terrain height @@ -435,8 +449,8 @@ def process_initial_conditions(self,init_input='wrfinput_d01', # Process land use information if landuse_table_path is None: - print('Need to specify `landuse_table_path` from your WRF installation' - 'land-use indices to estimate z0') + print('Need to specify `landuse_table_path` from your WRF ' + ' installation to determine z0, alb from land-use indices') if write_z0: print('Surface roughness map was not written') if write_albedo: From eccccdb82606907b45f69c164fc6ef77292bc90e Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Tue, 16 Sep 2025 21:08:35 -0600 Subject: [PATCH 27/49] Rename for clarity --- erftools/{parms.py => erfparms.py} | 0 erftools/inputs.py | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename erftools/{parms.py => erfparms.py} (100%) diff --git a/erftools/parms.py b/erftools/erfparms.py similarity index 100% rename from erftools/parms.py rename to erftools/erfparms.py diff --git a/erftools/inputs.py b/erftools/inputs.py index cd6cb26..4e79696 100644 --- a/erftools/inputs.py +++ b/erftools/inputs.py @@ -4,7 +4,7 @@ import numpy as np # parameters parsed by AMReX's ParmParse -from .parms import AMRParms, GeometryParms, ERFParms, check_unknown_params +from .erfparms import AMRParms, GeometryParms, ERFParms, check_unknown_params def parmparse(prefix, ppdata): From a8d58b3061761be0776a56454adcdb7371b96f48 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Wed, 17 Sep 2025 10:18:39 -0600 Subject: [PATCH 28/49] Reorg modules for clarity --- erftools/preprocessing/__init__.py | 2 +- erftools/wrf/__init__.py | 1 + .../wrf_inputs.py => wrf/inputdeck.py} | 16 +++++++++++----- erftools/wrf/{namelist.py => namelist/input.py} | 2 +- .../mappings.py} | 0 erftools/wrf/{ => namelist}/tslist.py | 0 6 files changed, 14 insertions(+), 7 deletions(-) rename erftools/{preprocessing/wrf_inputs.py => wrf/inputdeck.py} (98%) rename erftools/wrf/{namelist.py => namelist/input.py} (99%) rename erftools/wrf/{namelist_mappings.py => namelist/mappings.py} (100%) rename erftools/wrf/{ => namelist}/tslist.py (100%) diff --git a/erftools/preprocessing/__init__.py b/erftools/preprocessing/__init__.py index 2e7de1c..401e4d6 100644 --- a/erftools/preprocessing/__init__.py +++ b/erftools/preprocessing/__init__.py @@ -1,4 +1,4 @@ -from .wrf_inputs import WRFInputDeck +from ..wrf.inputdeck import WRFInputDeck from .grids import LambertConformalGrid # ERA5 related funrcions diff --git a/erftools/wrf/__init__.py b/erftools/wrf/__init__.py index c545d20..27e23c0 100644 --- a/erftools/wrf/__init__.py +++ b/erftools/wrf/__init__.py @@ -1,3 +1,4 @@ from .real import (get_zlevels_auto, get_eta_levels) +from .namelist.tslist import TSList diff --git a/erftools/preprocessing/wrf_inputs.py b/erftools/wrf/inputdeck.py similarity index 98% rename from erftools/preprocessing/wrf_inputs.py rename to erftools/wrf/inputdeck.py index e029c37..24d3b33 100644 --- a/erftools/preprocessing/wrf_inputs.py +++ b/erftools/wrf/inputdeck.py @@ -1,5 +1,6 @@ import logging import os + import numpy as np import pandas as pd import xarray as xr @@ -7,14 +8,19 @@ import calendar from scipy.interpolate import RegularGridInterpolator -from ..wrf.namelist import (TimeControl, Domains, Physics, Dynamics, - BoundaryControl) -from ..wrf.tslist import TSList -from ..wrf.landuse import LandUseTable -from ..wrf.real import RealInit, get_zlevels_auto +from .namelist.input import (TimeControl, + Domains, + Physics, + Dynamics, + BoundaryControl) +from .namelist.tslist import TSList +from .landuse import LandUseTable +from .real import RealInit, get_zlevels_auto + from ..constants import CONST_GRAV, p_0 from ..inputs import ERFInputs + class WRFInputDeck(object): """Class to parse inputs from WRF and convert to inputs for ERF WRF inputs include: diff --git a/erftools/wrf/namelist.py b/erftools/wrf/namelist/input.py similarity index 99% rename from erftools/wrf/namelist.py rename to erftools/wrf/namelist/input.py index cf6e0f8..f18abdb 100644 --- a/erftools/wrf/namelist.py +++ b/erftools/wrf/namelist/input.py @@ -4,7 +4,7 @@ import warnings from datetime import datetime, timedelta -from .namelist_mappings import * +from .mappings import * class WRFNamelist(object): def __init__(self,nmldict): diff --git a/erftools/wrf/namelist_mappings.py b/erftools/wrf/namelist/mappings.py similarity index 100% rename from erftools/wrf/namelist_mappings.py rename to erftools/wrf/namelist/mappings.py diff --git a/erftools/wrf/tslist.py b/erftools/wrf/namelist/tslist.py similarity index 100% rename from erftools/wrf/tslist.py rename to erftools/wrf/namelist/tslist.py From 3cfcaf9a32046e68aed5e115feb88cd8026ac6b1 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Wed, 17 Sep 2025 13:58:36 -0600 Subject: [PATCH 29/49] Cherry pick pyproject.toml, README from PR #36 --- README.md | 36 +++++++++-- erftools/preprocessing/__init__.py | 35 ++++++----- pyproject.toml | 68 +++++++++++++++++++++ setup.py | 98 ------------------------------ 4 files changed, 118 insertions(+), 119 deletions(-) create mode 100644 pyproject.toml delete mode 100644 setup.py diff --git a/README.md b/README.md index 9425d50..7f52af5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,25 @@ -# ERFtools -A collection of scripts for facilitating the usage of ERF. +# ERF Tools +A collection of Python-based modules and scripts for facilitating the usage of +the Energy Research and Forecasting (ERF) model. + +## Installation + +Clone and create a conda (or mamba) environment: +```shell +git clone https://github.com/erf-model/erftools.git +cd erftools +conda create -n erftools python=3.9 +conda activate erftools +``` + +Then, install with: +```shell +pip install -e . # editable install +``` +or install with all optional dependencies: +```shell +pip install -e .[all] +``` ## Examples @@ -15,7 +35,9 @@ wrf.write_inputfile('inputs') ``` ### Postprocessing data logs -Data logs are output with the `erf.data_log` param and can include time histories of surface conditions and planar averaged profiles (e.g., for idealized LES simulations) +Data logs are output with the `erf.data_log` param and can include time +histories of surface conditions and planar averaged profiles (e.g., for +idealized LES simulations) ```python from erftools.postprocessing import DataLog log = DataLog(f'{simdir}/surf_hist.dat', @@ -31,6 +53,8 @@ print(log.ds) # data are stored in an xarray dataset Some notes and recommendations: -* An aspirational goal is to contribute code that can be used as in the examples above, with clear, intuitive naming and following PEP-8 style as a set of guidelines rather than gospel. -* To avoid duplication, model constants are defined in `erf.constants`, which should replicate `ERF/Source/ERF_Constants.H`. -* In the same vein, equation of state evaluations are defined in `erf.EOS`, which should replicate `ERF/Source/Utils/ERF_EOS.H`. +* An aspirational goal is to contribute code that can be used as in the examples above, with clear, intuitive naming. +* To avoid duplication, model constants are defined in `erftools.constants`, which should replicate `ERF/Source/ERF_Constants.H`. +* In the same vein, equation of state evaluations are defined in `erftools.utils.EOS`, which should replicate `ERF/Source/Utils/ERF_EOS.H`. +* Other utilities for calculating/deriving/diagnosing quantities of interest are also in `erftools.utils.*` +* Please follow PEP-8 style--as a set of guidelines rather than gospel--to facilitate code usage and maintenance by the community. diff --git a/erftools/preprocessing/__init__.py b/erftools/preprocessing/__init__.py index 401e4d6..14f882b 100644 --- a/erftools/preprocessing/__init__.py +++ b/erftools/preprocessing/__init__.py @@ -1,21 +1,26 @@ from ..wrf.inputdeck import WRFInputDeck from .grids import LambertConformalGrid -# ERA5 related funrcions -from .era5.IO import calculate_utm_zone -from .era5.IO import write_binary_simple_ERF -from .era5.IO import write_binary_vtk_structured_grid -from .era5.IO import write_binary_vtk_cartesian_file -from .era5.IO import find_latlon_indices -from .era5.IO import find_erf_domain_extents -from .era5.IO import write_binary_vtk_cartesian -from .era5.Plot_1D import plot_1d -from .era5.ReadERA5DataAndWriteERF_IC import ReadERA5_3DData -from .era5.ReadERA5DataAndWriteERF_SurfBC import Download_ERA5_SurfaceData -from .era5.ReadERA5DataAndWriteERF_SurfBC import Download_ERA5_ForecastSurfaceData -from .era5.ReadERA5DataAndWriteERF_SurfBC import ReadERA5_SurfaceData -from .era5.Download_ERA5Data import Download_ERA5_Data -from .era5.Download_ERA5Data import Download_ERA5_ForecastData +try: + import cdsapi +except ModuleNotFoundError: + print("Note: Need to install package 'cdsapi' to work with reanalysis data") +else: + # ERA5 related funrcions + from .era5.IO import calculate_utm_zone + from .era5.IO import write_binary_simple_ERF + from .era5.IO import write_binary_vtk_structured_grid + from .era5.IO import write_binary_vtk_cartesian_file + from .era5.IO import find_latlon_indices + from .era5.IO import find_erf_domain_extents + from .era5.IO import write_binary_vtk_cartesian + from .era5.Plot_1D import plot_1d + from .era5.ReadERA5DataAndWriteERF_IC import ReadERA5_3DData + from .era5.ReadERA5DataAndWriteERF_SurfBC import Download_ERA5_SurfaceData + from .era5.ReadERA5DataAndWriteERF_SurfBC import Download_ERA5_ForecastSurfaceData + from .era5.ReadERA5DataAndWriteERF_SurfBC import ReadERA5_SurfaceData + from .era5.Download_ERA5Data import Download_ERA5_Data + from .era5.Download_ERA5Data import Download_ERA5_ForecastData # GFS related funrcions from .gfs.Download_GFSData import Download_GFS_Data diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..fc16749 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,68 @@ +[build-system] +requires = ["setuptools>=64", "wheel"] +build-backend = "setuptools.build_meta" + +[project] +name = "erftools" +version = "0.1.1" +description = "Python code to make life easier for users of the Energy Research & Forecasting model" +authors = [ + {name = "U.S. Department of Energy", email = "eliot.quon@nrel.gov"} +] +readme = "README.md" +license = "Apache-2.0" + +classifiers = [ + "Development Status :: 4 - Beta", + "Intended Audience :: Science/Research", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", +] + +requires-python = ">=3.9" + +dependencies = [ + "numpy>=2.0.2", + "scipy>=1.13.1", + "pandas>=2.3.2", + "xarray>=2024.7.0", + "netcdf4>=1.7.2", + "pydantic", + "f90nml", + "click", +] + +[project.optional-dependencies] +dev = [ + "jupyter", + "matplotlib", +] +performance = [ + "dask>=2024.8.0", + "mpi4py>=4.1.0", +] +grib = [ + "pygrib>=2.1.6", + "cdsapi>=0.7.6", + "herbie-data>=2024.8.0", + "cartopy>=0.23.0", + "pyproj>=3.6.1", +] +all = [ + "erftools[dev,performance,grib]" +] + +[tool.setuptools] +packages = ["erftools"] + +# Console scripts -- creates command line tools +[project.scripts] + +[project.urls] +Homepage = "https://erf.readthedocs.io/en/latest/" +Repository = "https://github.com/erf-model/erftools" +Issues = "https://github.com/erf-model/erftools/issues" + diff --git a/setup.py b/setup.py deleted file mode 100644 index fd343f0..0000000 --- a/setup.py +++ /dev/null @@ -1,98 +0,0 @@ -# This setup file is based on https://github.com/a2e-mmc/mmctools/blob/master/setup.py -# accessed on April 3, 2020. - -# Note: To use the 'upload' functionality of this file, you must: -# $ pip install twine - -import io -import os - -from setuptools import find_packages, setup - -# Package meta-data. -NAME = 'erftools' -DESCRIPTION = 'Scripts to make life easier for users of the Energy Research & Forecasting model' -URL = 'https://github.com/erf-model/erftools' -EMAIL = 'eliot.quon@nrel.gov' -AUTHOR = 'U.S. Department of Energy' -REQUIRES_PYTHON = '>=3.6.0' -VERSION = '0.1.1' - -# What packages are required for this module to be executed? -REQUIRED = [ - # core - 'numpy>=1.18.1', - 'pandas>=1.0.1', - 'xarray>=0.15.0', - 'netcdf4>=1.5.1', - 'pydantic', - 'f90nml', - 'cartopy', - #'matplotlib>=3', - #'scipy>=1.4.1', - #'dask>=2.10.1', - #'utm>=0.5.0', -] - -EXTRAS = { -} - -# The rest you shouldn't have to touch too much :) -# ------------------------------------------------ -# Except, perhaps the License and Trove Classifiers! -# If you do change the License, remember to change the Trove Classifier for that! - -here = os.path.abspath(os.path.dirname(__file__)) - -# Import the README and use it as the long-description. -# Note: this will only work if 'README.md' is present in your MANIFEST.in file! -try: - with io.open(os.path.join(here, 'README.md'), encoding='utf-8') as f: - long_description = '\n' + f.read() -except FileNotFoundError: - long_description = DESCRIPTION - -# Load the package's __version__.py module as a dictionary. -about = {} -if not VERSION: - project_slug = NAME.lower().replace("-", "_").replace(" ", "_") - with open(os.path.join(here, project_slug, '__version__.py')) as f: - exec(f.read(), about) -else: - about['__version__'] = VERSION - -# Where the magic happens: -setup( - name=NAME, - version=about['__version__'], - description=DESCRIPTION, - long_description=long_description, - long_description_content_type='text/markdown', - author=AUTHOR, - author_email=EMAIL, - python_requires=REQUIRES_PYTHON, - url=URL, - #packages=find_packages(exclude=["tests", "*.tests", "*.tests.*", "tests.*"]), - # If your package is a single module, use this instead of 'packages': - py_modules=[NAME], - # entry_points={ - # 'console_scripts': ['mycli=mymodule:cli'], - # }, - install_requires=REQUIRED, - extras_require=EXTRAS, - include_package_data=True, - license='Apache-2.0', - classifiers=[ - # Trove classifiers - # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers - 'License :: OSI Approved :: Apache Software License', - 'Topic :: Scientific/Engineering', - 'Programming Language :: Python', - 'Programming Language :: Python :: 3', - 'Development Status :: 4 - Beta', - ], - # $ setup.py publish support. - #cmdclass={ - # 'upload': UploadCommand, - #}, -) From d79f1b555b3791be75ca410f6416130a8dd8c9d7 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Wed, 17 Sep 2025 14:18:07 -0600 Subject: [PATCH 30/49] Create wrf_namelist_to_erf console script --- README.md | 9 ++++++++- erftools/wrf/inputdeck.py | 11 +++++++++++ pyproject.toml | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7f52af5..aafac32 100644 --- a/README.md +++ b/README.md @@ -27,11 +27,18 @@ pip install -e .[all] ```python from erftools.preprocessing import WRFInputDeck wrf = WRFInputDeck('namelist.input') +wrf.write_inputfile('inputs') + +# optional: extract data from wrfinput wrf.process_initial_conditions('wrfinput_d01', landuse_table_path='/Users/equon/WRF/run/LANDUSE.TBL', write_hgt='terrain_height.txt', write_z0='roughness_height.txt') -wrf.write_inputfile('inputs') +``` + +The namelist conversion may also be accomplished from the command line: +```bash +wrf_namelist_to_erf namelist.input inputs ``` ### Postprocessing data logs diff --git a/erftools/wrf/inputdeck.py b/erftools/wrf/inputdeck.py index 24d3b33..2a73b50 100644 --- a/erftools/wrf/inputdeck.py +++ b/erftools/wrf/inputdeck.py @@ -7,6 +7,7 @@ import f90nml import calendar from scipy.interpolate import RegularGridInterpolator +import click from .namelist.input import (TimeControl, Domains, @@ -570,3 +571,13 @@ def write_ascii_table(fpath, xyz, names=None): if names is not None: header = ' '.join(names) np.savetxt(fpath, xyz, header=header, fmt='%.8g') + + +@click.command() +@click.argument('namelist_input', type=click.Path(exists=True, readable=True)) +@click.argument('erf_input', type=click.Path(writable=True), required=False, + default='input') +def wrf_namelist_to_erf(namelist_input, erf_input): + """Convert a WRF namelist.input to an ERF input file""" + wrf = WRFInputDeck(namelist_input) + wrf.write_inputfile(erf_input) diff --git a/pyproject.toml b/pyproject.toml index fc16749..e5cd9df 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -60,6 +60,7 @@ packages = ["erftools"] # Console scripts -- creates command line tools [project.scripts] +wrf_namelist_to_erf = "erftools.wrf.inputdeck:wrf_namelist_to_erf" [project.urls] Homepage = "https://erf.readthedocs.io/en/latest/" From 93d30a5013883f72fbe7c4e51af70b3cefd3cd20 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Wed, 17 Sep 2025 14:26:09 -0600 Subject: [PATCH 31/49] Make datetime parsing more robust --- erftools/wrf/namelist/input.py | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/erftools/wrf/namelist/input.py b/erftools/wrf/namelist/input.py index f18abdb..6a7b63a 100644 --- a/erftools/wrf/namelist/input.py +++ b/erftools/wrf/namelist/input.py @@ -73,14 +73,23 @@ def parse_datetime_range(self): start_month = self.getarrayvar('start_month') start_day = self.getarrayvar('start_day') start_hour = self.getarrayvar('start_hour') - start_minute = self.getarrayvar('start_minute') - start_second = self.getarrayvar('start_second') + start_minute = self.getarrayvar('start_minute', optional=True) + start_second = self.getarrayvar('start_second', optional=True) end_year = self.getarrayvar('end_year') end_month = self.getarrayvar('end_month') end_day = self.getarrayvar('end_day') end_hour = self.getarrayvar('end_hour') - end_minute = self.getarrayvar('end_minute') - end_second = self.getarrayvar('end_second') + end_minute = self.getarrayvar('end_minute', optional=True) + end_second = self.getarrayvar('end_second', optional=True) + if start_minute is None: + start_minute = len(start_year) * [0] + if start_second is None: + start_second = len(start_year) * [0] + if end_minute is None: + end_minute = len(start_year) * [0] + if end_second is None: + end_second = len(start_year) * [0] + self.start_datetimes = [] self.end_datetimes = [] for idom in range(len(start_year)): @@ -107,10 +116,10 @@ def parse_datetime_range(self): self.start_datetimes.append(start_date) self.end_datetimes.append(end_date) - run_days = self.getvar('run_days') - run_hours = self.getvar('run_hours') - run_minutes = self.getvar('run_minutes') - run_seconds = self.getvar('run_seconds') + run_days = self.getvar('run_days', default=0) + run_hours = self.getvar('run_hours', default=0) + run_minutes = self.getvar('run_minutes', default=0) + run_seconds = self.getvar('run_seconds', default=0) spec_run_time = run_days * 86400 \ + run_hours * 3600 \ + run_minutes * 60 \ From 77952c31168b41917e09148adc2970a416cc1487 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Wed, 17 Sep 2025 14:29:57 -0600 Subject: [PATCH 32/49] Fix handling of default plot vars --- erftools/wrf/inputdeck.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/erftools/wrf/inputdeck.py b/erftools/wrf/inputdeck.py index 2a73b50..b84b695 100644 --- a/erftools/wrf/inputdeck.py +++ b/erftools/wrf/inputdeck.py @@ -35,6 +35,10 @@ class WRFInputDeck(object): occurs. ERFInputs.write() is used to finally output an ERF input file. """ + default_plot_vars = ['density','x_velocity','y_velocity','z_velocity', + 'pressure','theta','KE', + 'Kmh','Kmv','Khh','Khv','qv','qc'] + def __init__(self,nmlpath,tslist=None,verbosity=logging.DEBUG): # setup logger self.log = logging.getLogger(__name__) @@ -95,9 +99,7 @@ def set_defaults(self): 'erf.v': 1, # verbosity in ERF.cpp 'erf.sum_interval': 1, # timesteps between computing mass 'erf.plot_file_1': 'plt', - 'erf.plot_vars_1': ['density','x_velocity','y_velocity','z_velocity', - 'pressure','theta','KE', - 'Kmh','Kmv','Khh','Khv','qv','qc'], + 'erf.plot_vars_1': self.default_plot_vars, } def generate_inputs(self): @@ -241,9 +243,9 @@ def generate_inputs(self): inp['erf_plot_file_1'] = 'plt' #inp['erf.plot_int_1'] = int(wrfout_interval / dt[0]) inp['erf.plot_per_1'] = wrfout_interval - inp['erf.plot_vars_1'] = default_plot_vars + inp['erf.plot_vars_1'] = self.default_plot_vars self.log.info('Setting default plotting vars for history output: ' - f'{default_plot_vars}') + f'{self.default_plot_vars}') auxhist2_interval = self.time_control.auxhist2_interval[0] * 60.0 # [s] if auxhist2_interval <= 0: @@ -252,9 +254,9 @@ def generate_inputs(self): inp['erf.plot_file_2'] = 'plt_aux' #inp['erf.plot_int_2'] = int(auxhist2_interval / dt[0]) inp['erf.plot_per_2'] = auxhist2_interval - inp['erf.plot_vars_2'] = self.input_dict['erf.plot_vars_1'] # default + inp['erf.plot_vars_2'] = self.default_plot_vars self.log.info('Setting default plotting vars for auxhist output: ' - f'{inp["erf.plot_vars_2"]} -- need to manually specify ' + f'{self.default_plot_vars} -- need to manually specify ' 'erf.plot_vars_2 to replicate auxhist2 output') sfclayscheme = self.physics.sf_sfclay_physics[0] From ee0f2144fc94c4d22989f87d09014ea01f5ab214 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Wed, 17 Sep 2025 14:37:26 -0600 Subject: [PATCH 33/49] Update mp_physics mappings --- erftools/wrf/namelist/mappings.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/erftools/wrf/namelist/mappings.py b/erftools/wrf/namelist/mappings.py index 3527208..8e1c25a 100644 --- a/erftools/wrf/namelist/mappings.py +++ b/erftools/wrf/namelist/mappings.py @@ -41,10 +41,14 @@ 0: 'None', 1: 'Kessler', 2: 'SAM', # SAM is comparable to Lin et al. scheme - 3: 'Kessler', # WRF Single-Moment, 3-class scheme + 3: 'SAM', # WRF Single-Moment, 3-class scheme with ice + 4: 'SAM', # WRF Single-Moment, 5-class scheme + 5: 'SAM', # Ferrier (new Eta), operational High-Resolution Window version 6: 'SAM', # WRF Single-Moment, 6-class scheme 8: 'Morrison', # Thompson scheme 10: 'Morrison', # Morrison (double moment) scheme + 14: 'Morrison', # WRF Double-Moment 5-class scheme + 16: 'Morrison', # WRF Double-Moment 6-class scheme 28: 'Morrison', # aerosol-aware Thompson scheme } From 1e2c889e58a0aab239223acd6012976c511bcc34 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Wed, 17 Sep 2025 20:27:34 -0600 Subject: [PATCH 34/49] Fix syntax --- erftools/preprocessing/hrrr.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/erftools/preprocessing/hrrr.py b/erftools/preprocessing/hrrr.py index 6aee911..10e2116 100644 --- a/erftools/preprocessing/hrrr.py +++ b/erftools/preprocessing/hrrr.py @@ -549,8 +549,8 @@ def to_wrfbdy(self,bdy_width,dtype=float): ds = xr.Dataset() # interpolate staggered velocity fields - Ugrid = self.interpxy('U', self.xg_u[*idxs], self.yg_u[*idxs], dtype=dtype) - Vgrid = self.interpxy('V', self.xg_v[*idxs], self.yg_v[*idxs], dtype=dtype) + Ugrid = self.interpxy('U', self.xg_u[idxs], self.yg_u[idxs], dtype=dtype) + Vgrid = self.interpxy('V', self.xg_v[idxs], self.yg_v[idxs], dtype=dtype) ds['U'] = Ugrid.rename(west_east='west_east_stag') ds['V'] = Vgrid.rename(south_north='south_north_stag') @@ -567,12 +567,12 @@ def to_wrfbdy(self,bdy_width,dtype=float): 'QRAIN', ] for varn in unstag_interp_vars: - ds[varn] = self.interpxy(varn, self.xg[*idxs], self.yg[*idxs], dtype=dtype) + ds[varn] = self.interpxy(varn, self.xg[idxs], self.yg[idxs], dtype=dtype) # setup map scale factors sn_ew_idxs = idxs[::-1] - msf_u = self.grid.calc_msf(lat_u[*sn_ew_idxs]) - msf_v = self.grid.calc_msf(lat_v[*sn_ew_idxs]) + msf_u = self.grid.calc_msf(lat_u[sn_ew_idxs]) + msf_v = self.grid.calc_msf(lat_v[sn_ew_idxs]) ds['MAPFAC_U'] = (('south_north', 'west_east_stag'), msf_u.astype(dtype)) ds['MAPFAC_V'] = (('south_north_stag', 'west_east'), msf_v.astype(dtype)) From 8bac92bb95f1626c7cc4f0d06420a894b13866ed Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Wed, 17 Sep 2025 20:51:14 -0600 Subject: [PATCH 35/49] Add radiation params; estiamte rad_freq_in_steps if needed --- erftools/erfparms.py | 18 ++++++++++++++++++ erftools/inputs.py | 12 +++++++++++- erftools/wrf/inputdeck.py | 15 ++++++++++++++- erftools/wrf/namelist/input.py | 4 ++++ 4 files changed, 47 insertions(+), 2 deletions(-) diff --git a/erftools/erfparms.py b/erftools/erfparms.py index 95a41e6..c030b24 100644 --- a/erftools/erfparms.py +++ b/erftools/erfparms.py @@ -271,6 +271,24 @@ class ERFParms: # Radiation radiation_model: str = 'None' + rad_freq_in_steps: int = 1 + rad_write_fluxes: bool = False + #nswbands: int = 14 + #nlwbands: int = 16 + #nswgpts: int = 224 + #nlwgpts: int = 256 + co2vmr: float = 0.00036 # from DevTests/Radiation + o3vmr: float = 1.887e-7 # default + n2ovmr: float = 3.2e-7 # from DevTests/Radiation + covmr: float = 1.5e-7 # from DevTests/Radiation + ch4vmr: float = 1.7e-6 # from DevTests/Radiation + o2vmr: float = 0.209 # default + n2vmr: float = 0.7906 # default + rrtmgp_file_path: str = './' + #rrtmgp_coeffs_sw: str = 'rrtmgp-data-sw-g224-2018-12-04.nc' + #rrtmgp_coeffs_lw: str = 'rrtmgp-data-lw-g256-2018-12-04.nc' + #rrtmgp_cloud_optics_sw: str = 'rrtmgp-cloud-optics-coeffs-sw.nc' + #rrtmgp_cloud_optics_lw: str = 'rrtmgp-cloud-optics-coeffs-lw.nc' # Land Surface land_surface_model: str = 'None' diff --git a/erftools/inputs.py b/erftools/inputs.py index 4e79696..f8a3d44 100644 --- a/erftools/inputs.py +++ b/erftools/inputs.py @@ -448,7 +448,17 @@ def write(self,fpath=None): ######################################## if self.erf.radiation_model != 'None': f.write(f"""\n# RADIATION -erf.radiation_model = {self.erf.radiation_model} +erf.radiation_model = {self.erf.radiation_model} +erf.rad_freq_in_steps = {self.erf.rad_freq_in_steps} +erf.rad_write_fluxes = {bool_to_str(self.erf.rad_write_fluxes)} +erf.co2vmr = {self.erf.co2vmr} +erf.o3vmr = {self.erf.o3vmr} +erf.n2ovmr = {self.erf.n2ovmr} +erf.covmr = {self.erf.covmr} +erf.ch4vmr = {self.erf.ch4vmr} +erf.o2vmr = {self.erf.o2vmr} +erf.n2vmr = {self.erf.n2vmr} +erf.rrtmgp_file_path = {self.erf.rrtmgp_file_path} """) ######################################## diff --git a/erftools/wrf/inputdeck.py b/erftools/wrf/inputdeck.py index b84b695..b51a107 100644 --- a/erftools/wrf/inputdeck.py +++ b/erftools/wrf/inputdeck.py @@ -30,7 +30,7 @@ class WRFInputDeck(object): This will instantiate WRFNamelist objects from a given namelist, with WRF defaults included. From the WRFNamelists, a WRFInputDeck.input_dict will be - populated with ERF input parameters. When WRFInputDec.write() is called, an + populated with ERF input parameters. When WRFInputDeck.write() is called, an ERFInputs object is instantiated--inside ERFInputs is where error checking occurs. ERFInputs.write() is used to finally output an ERF input file. """ @@ -100,6 +100,7 @@ def set_defaults(self): 'erf.sum_interval': 1, # timesteps between computing mass 'erf.plot_file_1': 'plt', 'erf.plot_vars_1': self.default_plot_vars, + 'erf.rad_freq_in_steps': -1, } def generate_inputs(self): @@ -354,6 +355,18 @@ def generate_inputs(self): self.log.warning(f'Applying the {rad_model} radiation scheme on all levels') inp['erf.radiation_model'] = rad_model + inp['erf.rad_freq_in_steps'] = self.physics.radt[0] + if inp['erf.rad_freq_in_steps'] < 0: + # rule of thumb: rad freq is "1 min per km of dx" + dx_km = self.domains.dx[0] / 1000. + radt = dx_km * 60. # [s] + rad_freq = int(radt / dt[0]) + inp['erf.rad_freq_in_steps'] = rad_freq + self.log.info('Calculated radiation update frequency to be ' + f'every {rad_freq} steps, corresponding to an ' + f'interval of {rad_freq * dt[0] / 60:g} min on ' + 'domain d01') + if any([opt != 'None' for opt in self.physics.surface_physics]): lsm_model = self.physics.surface_physics[0] if len(set(self.physics.surface_physics)) > 1: diff --git a/erftools/wrf/namelist/input.py b/erftools/wrf/namelist/input.py index 6a7b63a..d38fa72 100644 --- a/erftools/wrf/namelist/input.py +++ b/erftools/wrf/namelist/input.py @@ -257,6 +257,10 @@ def parse_all(self): 'Different longwave/shortwave radiation schemes not handled' self.ra_physics = [ra_physics_mapping.get(idx,'UNKNOWN') for idx in ra_lw_idx_list] + self.radt = self.getarrayvar('radt', default=-1) + assert all([t==self.radt[0] for t in self.radt]), \ + 'Different radiation call intervals not handled' + lsm_idx_list = self.getarrayvar('sf_surface_physics') self.surface_physics = [surface_physics_mapping.get(idx,'UNKNOWN') for idx in lsm_idx_list] From 70249c6fce7856bc3003a9f1bf6bdfb21159fefb Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Wed, 17 Sep 2025 21:15:37 -0600 Subject: [PATCH 36/49] Remove deprecated param --- erftools/erfparms.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/erftools/erfparms.py b/erftools/erfparms.py index c030b24..3a392fe 100644 --- a/erftools/erfparms.py +++ b/erftools/erfparms.py @@ -248,9 +248,6 @@ class ERFParms: rayleigh_dampcoef: float = 0.2 rayleigh_zdamp: float = 500. - # BCs - use_explicit_most: bool = False - # Initialization init_type: str = 'None' init_sounding_ideal: bool = False From abedd66d3b67107e5863599c653610280e56d914 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Thu, 18 Sep 2025 13:07:52 -0600 Subject: [PATCH 37/49] Generalize o3vmr to be constant or column array --- erftools/erfparms.py | 2 +- erftools/inputs.py | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/erftools/erfparms.py b/erftools/erfparms.py index 3a392fe..26c6ba3 100644 --- a/erftools/erfparms.py +++ b/erftools/erfparms.py @@ -275,7 +275,7 @@ class ERFParms: #nswgpts: int = 224 #nlwgpts: int = 256 co2vmr: float = 0.00036 # from DevTests/Radiation - o3vmr: float = 1.887e-7 # default + o3vmr: Union[float,List[float]] = 1.887e-7 # default n2ovmr: float = 3.2e-7 # from DevTests/Radiation covmr: float = 1.5e-7 # from DevTests/Radiation ch4vmr: float = 1.7e-6 # from DevTests/Radiation diff --git a/erftools/inputs.py b/erftools/inputs.py index f8a3d44..3d816da 100644 --- a/erftools/inputs.py +++ b/erftools/inputs.py @@ -182,6 +182,9 @@ def validate(self): warnings.warn(f'{box} dynamic refinement will be inactive' f' with erf.regrid_int={self.erf.regrid_int}') + if isinstance(self.erf.o3vmr, list): + assert len(self.erf.o3vmr) == self.amr.n_cell[2] + def write(self,fpath=None): with open_file_or_stdout(fpath) as f: f.write('# ------------------------------- INPUTS TO ERF -------------------------------\n') @@ -452,7 +455,12 @@ def write(self,fpath=None): erf.rad_freq_in_steps = {self.erf.rad_freq_in_steps} erf.rad_write_fluxes = {bool_to_str(self.erf.rad_write_fluxes)} erf.co2vmr = {self.erf.co2vmr} -erf.o3vmr = {self.erf.o3vmr} +""") + if isinstance(self.erf.o3vmr, list): + f.write(f'erf.o3vmr = {list_to_str(self.erf.o3vmr)}') + else: + f.write(f'erf.o3vmr = {self.erf.o3vmr}') + f.write(f""" erf.n2ovmr = {self.erf.n2ovmr} erf.covmr = {self.erf.covmr} erf.ch4vmr = {self.erf.ch4vmr} From 7d2cc94cfb51b96e73c603cdfbe6789c233630f5 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Thu, 18 Sep 2025 13:36:28 -0600 Subject: [PATCH 38/49] Add check_erf_input script --- erftools/erfparms.py | 5 ++++- erftools/inputs.py | 9 +++++++++ pyproject.toml | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/erftools/erfparms.py b/erftools/erfparms.py index 26c6ba3..eeb8a82 100644 --- a/erftools/erfparms.py +++ b/erftools/erfparms.py @@ -22,7 +22,10 @@ def check_unknown_params(data_dict, dataclass_type): # ignore refinement indicators if 'refinement_indicators' in data_dict: - for box in data_dict['refinement_indicators']: + refine_names = data_dict['refinement_indicators'] + if isinstance(refine_names, str): + refine_names = [refine_names] + for box in refine_names: unknown_params = [param for param in unknown_params if not param.startswith(f'{box}.')] diff --git a/erftools/inputs.py b/erftools/inputs.py index 3d816da..dced48c 100644 --- a/erftools/inputs.py +++ b/erftools/inputs.py @@ -1,5 +1,7 @@ import sys import warnings + +import click import contextlib import numpy as np @@ -587,3 +589,10 @@ def write_bc(f, bcname, bcdict): else: assert isinstance(val, list) f.write(f"{bcname}.{key} = {list_to_str(val,float)}\n") + + +@click.command() +@click.argument('input_file', type=click.Path(exists=True, readable=True)) +def check_erf_input(input_file): + """Validate ERF input file""" + ERFInputs(input_file) diff --git a/pyproject.toml b/pyproject.toml index e5cd9df..88e9f02 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -60,6 +60,7 @@ packages = ["erftools"] # Console scripts -- creates command line tools [project.scripts] +check_erf_input = "erftools.inputs:check_erf_input" wrf_namelist_to_erf = "erftools.wrf.inputdeck:wrf_namelist_to_erf" [project.urls] From 40f69c57c5ea5880d93a1f05754cd3e49c522e65 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Thu, 18 Sep 2025 15:10:17 -0600 Subject: [PATCH 39/49] Add --tslist option to namelist converter --- erftools/wrf/inputdeck.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/erftools/wrf/inputdeck.py b/erftools/wrf/inputdeck.py index b51a107..4488347 100644 --- a/erftools/wrf/inputdeck.py +++ b/erftools/wrf/inputdeck.py @@ -592,7 +592,11 @@ def write_ascii_table(fpath, xyz, names=None): @click.argument('namelist_input', type=click.Path(exists=True, readable=True)) @click.argument('erf_input', type=click.Path(writable=True), required=False, default='input') -def wrf_namelist_to_erf(namelist_input, erf_input): +@click.option('--tslist', + type=click.Path(exists=True, readable=True), + help='tslist file to convert to line sampling inputs for ERF (optional)', + required=False) +def wrf_namelist_to_erf(namelist_input, erf_input, tslist=None): """Convert a WRF namelist.input to an ERF input file""" - wrf = WRFInputDeck(namelist_input) + wrf = WRFInputDeck(namelist_input, tslist=tslist) wrf.write_inputfile(erf_input) From e0103fb39ddaf717283bba3e854fe1bcdab7d351 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Thu, 18 Sep 2025 23:02:46 -0600 Subject: [PATCH 40/49] Add CAM ozone data and notebook to process and check it from WRF/run: - ozone_lat.formatted - ozone_plev.formatted - ozone.formatted --- erftools/data/ozone_CAM.nc | Bin 0 -> 371768 bytes notebooks/read_CAM_ozone_data.ipynb | 686 ++++++++++++++++++++++++++++ pyproject.toml | 1 + 3 files changed, 687 insertions(+) create mode 100644 erftools/data/ozone_CAM.nc create mode 100644 notebooks/read_CAM_ozone_data.ipynb diff --git a/erftools/data/ozone_CAM.nc b/erftools/data/ozone_CAM.nc new file mode 100644 index 0000000000000000000000000000000000000000..7810df1e6f197a2b25448c70a70bd8d4d91c5e28 GIT binary patch literal 371768 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

{3xj4}< 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

^emsaZa4PXHO?RCHnosM1slnuB>x;0 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 literal 0 HcmV?d00001 diff --git a/notebooks/read_CAM_ozone_data.ipynb b/notebooks/read_CAM_ozone_data.ipynb new file mode 100644 index 0000000..738815c --- /dev/null +++ b/notebooks/read_CAM_ozone_data.ipynb @@ -0,0 +1,686 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "4545ba45-299a-4092-a611-f96d8836287b", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import xarray as xr\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "2037da30-bc62-4df3-9212-0fbffd828cac", + "metadata": {}, + "outputs": [], + "source": [ + "wrfsrc = '/Users/equon/WRF/run'" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "497259e0-89a3-430b-9454-06d37334b18c", + "metadata": {}, + "outputs": [], + "source": [ + "lat = np.loadtxt(f'{wrfsrc}/ozone_lat.formatted')\n", + "plev = np.loadtxt(f'{wrfsrc}/ozone_plev.formatted')\n", + "o3vmr = np.loadtxt(f'{wrfsrc}/ozone.formatted')\n", + "\n", + "nlat = len(lat)\n", + "nz = len(plev)\n", + "o3vmr = o3vmr.reshape((nz, nlat, 12), order='F')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "d84be422-bb42-4bec-ab6c-b5de2f6bbae6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset>\n",
+       "Dimensions:  (plev: 59, lat: 64, month: 12)\n",
+       "Coordinates:\n",
+       "  * plev     (plev) float64 1.004e+03 959.0 849.5 750.4 ... 0.3719 0.3254 0.2842\n",
+       "  * lat      (lat) float64 -87.86 -85.1 -82.31 -79.53 ... 79.53 82.31 85.1 87.86\n",
+       "  * month    (month) int64 1 2 3 4 5 6 7 8 9 10 11 12\n",
+       "Data variables:\n",
+       "    o3vmr    (plev, lat, month) float64 1.43e-08 8.647e-09 ... 1.78e-06
" + ], + "text/plain": [ + "\n", + "Dimensions: (plev: 59, lat: 64, month: 12)\n", + "Coordinates:\n", + " * plev (plev) float64 1.004e+03 959.0 849.5 750.4 ... 0.3719 0.3254 0.2842\n", + " * lat (lat) float64 -87.86 -85.1 -82.31 -79.53 ... 79.53 82.31 85.1 87.86\n", + " * month (month) int64 1 2 3 4 5 6 7 8 9 10 11 12\n", + "Data variables:\n", + " o3vmr (plev, lat, month) float64 1.43e-08 8.647e-09 ... 1.78e-06" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ozone = xr.Dataset(\n", + " {\n", + " 'o3vmr': (('plev','lat','month'), o3vmr),\n", + " },\n", + " coords={'plev': plev, 'lat': lat, 'month': np.arange(1,13)},\n", + ")\n", + "\n", + "ozone.coords['plev'].attrs = {\n", + " 'long_name': 'Pressure Levels',\n", + " 'units': 'mbar',\n", + "}\n", + "ozone.coords['lat'].attrs = {\n", + " 'long_name': 'Latitude',\n", + " 'units': 'deg',\n", + "}\n", + "ozone['o3vmr'].attrs = {\n", + " 'long_name': 'Ozone Volume Mixing Ratio',\n", + " 'units': 'mol O3 / mol air',\n", + "}\n", + "\n", + "ozone = ozone.sortby('plev', ascending=False)\n", + "ozone" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "642d020e-e6a8-4807-a59d-c7d9c0f5873a", + "metadata": {}, + "outputs": [], + "source": [ + "ozone.to_netcdf('data/ozone_CAM.nc')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8b065fcd-4d71-4975-beb4-0324efcf767c", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "c0fb5e2c-e270-4a6e-8d22-d1464d6e8274", + "metadata": {}, + "source": [ + "## do some checks against literature" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "d782277e-c6fb-4191-9f96-b45718e68345", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABAMAAAFlCAYAAACeKyHOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAABqpklEQVR4nO3deXhU5d3/8c8kk50kZCErIWxhX8ImZVFQEFwQqb+nVFHEpa274l5rW9EqqH1UWtdqqbgWn1YR3FBwQRGVNew7AUJICNn3STJzfn8kGYyAJGQmZzLzfl1XLsmZk8xnMNyZ8z33/b0thmEYAgAAAAAAPsPP7AAAAAAAAKBtUQwAAAAAAMDHUAwAAAAAAMDHUAwAAAAAAMDHUAwAAAAAAMDHUAwAAAAAAMDHUAwAAAAAAMDHUAwAAAAAAMDHUAwAAAAAAMDHUAwAAAAAAMDHeGUx4Ouvv9Yll1yipKQkWSwWvf/++00eNwxDc+bMUVJSkkJCQjR+/Hht27atyTk2m0233XabYmNjFRYWpqlTp+rw4cNt+CoAAAAAAHAPrywGVFRUaPDgwXruuedO+viTTz6pp59+Ws8995zWrl2rhIQEnX/++SorK3OeM3v2bC1evFiLFi3SqlWrVF5erilTpshut7fVywAAAAAAwC0shmEYZodwJ4vFosWLF2vatGmS6mcFJCUlafbs2br//vsl1c8CiI+P1xNPPKEbbrhBJSUl6tSpk9544w39+te/liQdOXJEKSkp+vjjjzV58mSzXg4AAAAAAK1mNTtAW8vMzFRubq4mTZrkPBYUFKRx48Zp9erVuuGGG7R+/XrV1tY2OScpKUkDBgzQ6tWrT1kMsNlsstlszs8dDocKCwsVExMji8XivhcFwGsZhqGysjIlJSXJz6/9TuZifATgaoyPAHByzR0ffa4YkJubK0mKj49vcjw+Pl4HDx50nhMYGKioqKgTzmn8+pOZN2+eHn74YRcnBgApKytLnTt3NjvGGWN8BOAujI8AcHKnGx99rhjQ6KeVVsMwTlt9Pd05DzzwgO666y7n5yUlJerSpYuysrIUERHRusAAXK7W7tDOnFJtzCrWpkPF2phVpLyymhPOS+oYrPSUjhrapaPSU6KUFh8uf7+2uVtTWlqqlJQUhYeHt8nzuQvjIwBXY3wEgJNr7vjoc8WAhIQESfV3/xMTE53H8/LynLMFEhISVFNTo6KioiazA/Ly8jR69OhTfu+goCAFBQWdcDwiIoLBHPAAxZU12nCoSOsPFmndgSJtOlys6lrHj86wKjAkQP2TIjQsNVrDUqM0vGuU4iOCTcvcqL1PFWV8BOAujI8AcHKnGx99rhjQrVs3JSQkaPny5RoyZIgkqaamRitXrtQTTzwhSRo2bJgCAgK0fPlyTZ8+XZKUk5OjrVu36sknnzQtO4DmMwxDBwoqte5AodYfrC8A7MkrP+G8yJAADUuNcn4M7txRIYH+JiQGAAAA2o5XFgPKy8u1d+9e5+eZmZnKyMhQdHS0unTpotmzZ2vu3LlKS0tTWlqa5s6dq9DQUM2YMUOSFBkZqeuvv1533323YmJiFB0drXvuuUcDBw7UxIkTzXpZAH5Gda1dW7NLtK7hwn/DwSIVVJw45b97bJiGpkZpeMNd/+6xHeTXRlP+AQAAAE/hlcWAdevW6dxzz3V+3rgOa9asWVq4cKHuu+8+VVVV6eabb1ZRUZFGjhypzz77rMmaimeeeUZWq1XTp09XVVWVJkyYoIULF8rfnzuGgCfIL7c57/ivO1CordmlqrE7mpwTaPXToORIDesapWFd6u/8x3Q4cSomAAAA4GsshmEYZofwVqWlpYqMjFRJSQlrvoBWcDgM7T1WrnUHirTuYKE2HCzSgYLKE86L7RCooV3q7/gPS43WgOQIBVnbdwHPW8cRb31dANqOt44j3vq6ALSd5o4jXjkzAED7VllTp4ysYq0/UKT1h+qn/JdW151wXq/4DhqWGq3hDev9U2NC230jKQAAAKAtUAwAYLqckipnh//1B4u0PadUdkfTSUshAf5KT+mo4V2jNDQ1SkNTohQZGmBSYgAAAKB9oxgAoE3V2R3amVtWf/Hf0Ogvu7jqhPMSIoI1rGtDo7/UaPVJDFeAv58JiQEAAADvQzEAgFuVVtdq46HihmZ/hco4VKyKGnuTc/wsUt/ECA1Prb/rP7xrtJI7hpiUGAAAAPB+FAMAuIxhGMoqrNL6Q4XOKf+7jpbpp21Kw4OsGpJa3+F/eNcoDU7pqA5BDEcAAABAW+HdN4AzVlPn0LYjJcfX+x8q0rEy2wnndYkO1bCGJn/DUqPUKz5c/n40+gMAtEyd3aEDBZXamVuqjL05ZscBgHaNYgCAZiuqqKmf7n+oSOsPFGnT4WLZ6hxNzgnwt6h/UqSzw/+w1CjFRQSblBgA0F4VlNu0M7dMO3JKtSu3TDtzy7T7aJnz947DduIWswCA5qMYAOCkDMPQvmMV2nCwSOsOFmrdwSLtP1ZxwnlRoQEa1rjWPzVagzpHKjjA34TEAID2yFZn1968cucF/46cUu3MLTvpTDOpfneZ3gnh6hYRpfltGxUAvArFAACSJLvD0MZDRVpzoFAbDtav9y+qrD3hvO6dwpwd/oemRqlHpzBZLEz5BwCcXlFFjTKyirUjt1Q7c8q0M7dU+49VqO4n28lKksUipUaHqk9ChHonhKtvYrj6JESoS3So/PwsKi0tpRgAAK1AMQDwYYZhaNuRUr2/MVsfbD6io6VN78IEWf00uHPHhrv+9Xf/o8MCTUoLAGhvqmvtWnegSKv25uvbvfnaeqTkhKaykhQRbFWfxAj1TQhXn8QI9UkIV6/4cIXRXBYA3IYRFvBBhwoqtSQjW+9nZGvfj6b+RwRbNbpHrIZ3rV/r3z8pUoFWPxOTAgDaE7vD0LYjJc6L/7UHilTzk94yPTqFqX9SpPokhqtvQoT6JIYrISKYWWYA0MYoBgA+oqDcpo+25Oj9jdnacKjYeTzI6qeJfeN1aXqSxvXupCAr6/0BAM1jGIYOFVY6L/5X7ytQ8U+WmCVEBGtMz1iNTYvRmB6xNJUFAA9BMQDwYpU1dfps21G9n5Gtb/bky96wJtPPIo3uEatL05N0wYAEhQcHmJwUANBeFJTbtHpfgb7dm69Ve/N1uKiqyePhQVb9okeMxvaM1ZiesfSWAQAPRTEA8DK1dodW7cnX+xnZ+mzbUVXV2p2PDUyO1KXpSZo6OIk7MwCAZqmqsWvNgcL6i/89+dqeU9rk8QB/i4Z2iaq/+E+L1aDkSFn9WWIGAJ6OYgDgBQzD0IZDxVqSka2PNueooKLG+VhqTKguHZykS4ckq0enDiamBAC0B3aHoS3ZJVq155hW7c3XhoPFqrE3XfffJyHcefF/VtdoGv0BQDvEyA20Y3vzyrUkI1tLMo7oUGGl83hMWKAuGZykS9OTlJ7SkemZAIBTMgxDmfkVzmn/q/cVqKy6rsk5SZHBGptWP+1/dI9YdQoPMiktAMBVKAYA7czR0motzTiiJZuytTX7+FTN0EB/Te6foEvTkzS2ZyxTNAEAp3SszKbV++qn/X+7N19HSqqbPN64u8yYtFiN7RmrrjGhFJYBwMtQDADagdLqWi3bkqv3M7L13f4C5x7NVj+LzunVSZemJ+n8fvEKDeSfNADgRBW2Oq3JLHR2/d+ZW9bk8UB/Pw1LjXLe/R+YHCl/Py7+AcCbceUAeChbnV1f7jymJRnZ+nxnXpN9moelRmlaepIuHpSk6LBAE1MCADxRnd2hTYdLnE3/NhwqUl3DjjKN+idFODv+j+garZBAtpYFAF9CMQDwIA6HoR8yC7UkI1sfb8lR6Y/WbKbFddC0IcmaOjhJKdGhJqYEAHgawzC071i5Vu3J16q9Bfp+f4HKbU3X/XeOCtHZDXf+R3WPUUwH1v0DgC+jGACYzDAM7cgp05KMbC3ddEQ5P1q3mRARrKnp9Y0A+yVGsF4TAOB0tLTa2fTv2735Olpqa/J4x9AAje4RozE969f9d4lm3T8A4DiKAYBJsgortXTTEb2/MVt78sqdx8ODrbpoQKIuHZKkkd1iWLMJAJAklVXX6of9x9f9//h3hyQFWv10Vtdo58V/v6QIfocAAE6JYgDQhgoravTRlhwt2ZitdQeLnMcD/f10Xp84TRuSpPG94xQcwLpNAPB1tXaHMrKKnR3/N2YVy/6jdf8WizQwOdJ58T8sNYrfHwAAFVfWNOs8igGAm1XV2LV8x1Et2ZitlbuPORs4WSzSL7rF6JdDkjV5QIIiQwJMTgoAMJNhGNp9tNx55/+H/QWqqLE3OSc1JtR58T+qe4yiaCILAD6rps6h/fnl2plTpp25ZdqZW6qdOWU6cqywWV9PMQBwgzq7Q9/uK9CSjdn6dFtukzdz/ZMiNC09WZcMTlJCZLCJKQEAZsspqXLe+f92X4GOlTVd9x8dFqjRPWKcXf9pIAsAvscwDOWV2bQjp7T+or/hv/uOlavWbpz+G5wCxQDARQzDUEZWsZZkHNGHm48ov/z49JyU6BBdOjhZ04YkqWdcuIkpAQBmKq2u1ff7CvTt3nx9szdf+49VNHk8OMBPI7pGO7v+902IkB/r/gHAZ1TV2LX7aP1d/h05DXf7c8tUXFl70vPDg63qkxCuPgkR6pNY/9/EUEPJ80//XBQDgFbaf6xc72cc0dKMbB0oqHQejw4L1MUDEzVtSJKGdomigzMA+CBbnV0bDxU7u/5vyirWj5b9y88iDezcUWN71nf9H9qFdf8A4AscDkNZRZXakVOmXbnHL/oPFFTIOMnNfn8/i7rHhql3Qrj6JkbUFwASI5QUGXzCdUZpaWmzMlAMAM5AXlm1PtiUoyUZ2dp8uMR5PCTAX5P6x+vS9CSdndZJAf5+JqYEALQ1h8PQztwy58X/msxCVdU2XfffPTZMYxqm/Y/qHqPIUHrGAIA3K6msdV7sN67t35Vbpsqf9IVpFNshSH0Tw9U7vv6Cv09CuHrGdXB5sZhiANBMZdW1+nTbUS3JyNa3e/Odd3b8/Sw6Oy1W09KTdX6/eIUF8c8KAHxJdnGVvt1TP+1/9d58FVQ07eIc2yHQefE/pmeskjuGmJQUAOBOtXaHMvMrmqzt35VbpiMl1Sc9P9Dqp17xHeqn+DdM9e+dEK5O4UFtkperFuBn1NQ5tHL3Mb2fka0V24/KVudwPjakS0dNS0/WxYMSFduhbf7BAgDMV1JVq+/25Td0/S9QZn7Tdf8hAf4a2T3a2fSvT0I4S8UAwMvkl9u0/Uips4P/jtwy7csrV43dcdLzkzuGqG/i8Qv+vonh6hoTJquJM4kpBgCnkFtSrVn/WqNdR8ucx7p3CtO09GRdmp6k1JgwE9MBANpaVmGlXv56v95Zl6WaHxWH/f0sGtw50nnxP6RLlAKtLBMDAG9TVFGjj7bULxVee6DopOd0CLKqd0K4c01/34Rw9UoIV0Sw5y0JoxgAnMTBggpd+c8fdLioSlGhAbpsaGdNS0/WgOQI7u4AgI/ZfbRML321T0s2HZG9YY1Y905hOietk8b0jNXI7tEe+SYPANB6lTV1WrEjT0s2Zmvl7mOqa/g9YLFI3WLD1DfheDO/Pgnh6hwV0m6uFygGAD+xM7dUMxes0bEym1JjQvXm9SPZ1xkAfFBGVrFe+HKvPtt+1Hns7LRY3Ty+p37RPbrdvNkDALRMnd2hb/bma2nGEX26LbdJo7/+SRG6ND1JlwxOUmJk++4BQzEA+JENh4p07atrVVJVqz4J4Xr9+rMUFx5sdiwAQBsxDEOr9xXoha/26tu9BZLq7/5M7pegm8/toUGdO5obEADgFoZhaMOhYi3NyNaHm3OaNINNiQ7RpYOTNW1IknrGhZuY0rUoBgANvt2br9++vk6VNXYN6dJRC685i+2eAMBHOByGlu84qhe+2qdNWcWSJKufRZemJ+um8d296s0fAOC4vXllWpJxREsyjuhQYaXzeExYoKYMStTU9GQN7dLRK2eDUQwAJC3bmqvb/71RNXaHxvaM1T9mDmOLQADwAbV2hz7YdEQvfrVPe/LKJUlBVj9dPiJFvz2nuzpHsUwMALxNbkm1lm7K1pKMI9p2pNR5PDTQX5P7J+jS9CSN6RmrABM7/bcFrnbg895df1j3vbtZdoehC/on6G9XpCvI6m92LACAG1XX2vWfdVn6x9f7dbioSpIUHmTVzFGpunZMtzbb4xkA0DZKqmr1yZYcLck4ou8zC2TU9wGU1c+icb066dIhyZrYN06hgb5ziew7rxQ4iYXfZmrOB9slSf8zrLMev2ygqXt9AgDcq6y6Vm9+f0gLVmUqv9wmqX4q6HVju2nmqFR2BQAAL1Jda9cXO/O0JCNbX+48phr78W1hR3SN0qXpybpoYKKiwwJNTGkeigHwSYZh6O+f79UzK3ZLkq4d01V/urif/Py8by0QAEAqKLfp1W8P6LXvDqisuk6SlNwxRL87p7umD09RSCAzwgDAG9gdhr7bV6AlGdlatjVXZbY652O948N16ZAkXTIoid3CRDEAPsgwDD360Q4tWJUpSZo9MU13TEjzyqYgAODrjhRX6eWv92vR2kOqrq2/I9SjU5huGt9Tl6Ynef16UADwBYZhaEt2iZZkHNEHm44or8zmfCwpMlhT0+t3AuiTEGFiSs9DMQA+pc7u0APvbdF/1h+WJP15Sj9dN7abyakAAK6271i5XvpqnxZvzFado35h6MDkSN1ybg9N6pfATDAA8AKZ+RVakpGtpRlHtD+/wnm8Y2iALhqYqGnpyRqeGsWYfwoUA+AzbHV23fHvDC3blis/i/Tk/wzW/wzrbHYsAIALbc0u0Qtf7dUnW3OdzaFGdY/Rzef20NiescwCA4B2Lq+sWh9uytGSjGxtOlziPB4c4KeJfeM1LT1Z5/TqpEArM79Oh2IAfEJlTZ1ueGO9vtmTr0B/P/39iiG6YECC2bEAAC5gGIbWZBbq+a/26evdx5zHJ/aN183n9tDQLlEmpgMAtFZZda0+3XZUSzKy9e3efDVM+JK/n0VjesZqWnqSJvVPUAe2Bm8R/rbg9Uoqa3XtwjXacKhYoYH+ennmcI1NizU7FgCglQzD0Bc78/TCV/u0/mCRJMnPIl0yOEk3je/B2lAAaMdq6hz6aleelmQc0YodR2WrO74TQHpKR01LT9LFg5LYCrYVKAbAqx0rs2nmgh+0M7dMEcFWLbzuLO4QAUA7V2d36KMtOXrxq33amVsmSQr099P/DO+sG87prtSYMJMTAgDOhMNhaM2BQi3JyNbHW3JVUlXrfKx7pzBNS0/WpelJjPMuQjEAXutwUaWu+ucPOlBQqU7hQXrj+rO4SwQA7Zitzq5312frH1/v08GCSklSWKC/rvpFqq4f201xEcEmJwQAtJRhGNqRU1bfCHDTEeWUVDsfiwsP0tTBSZo2JFn9kyLo++JiFAPglfbmlWvmgh+UU1Kt5I4heus3I9U1lgoiALRHFbY6vf3DIf1z1X4dLa3fLqpjaICuHd1Ns0anqmNooMkJAQAtlVVYqaWbjuj9jdnak1fuPB4ebNWFAxI0LT1ZI7vHyJ+dANyGYgC8ztbsEl39rzUqrKhRz7gOevP6kUqI5G4RALQ3RRU1Wrj6gF777oCKK+uniiZEBOs3Z3fTFWd1URiNogCgXSmsqNFHm4/o/Ywjzl4vUv1Sr/P6xGnakCSN7x2n4AB/E1P6Dn6Lwqv8sL9Av3ltncpsdRqYHKnXrjtL0WHcMQKA9iS3pFr//Ga/3l5zSJU1dklS15hQ3TS+h6YNSVaQlTeJANBeVNbUafn2o3p/Y7a+2ZOvuoatACwWaXSPGF06OFmTByQoMiTA5KS+h2IAvMaXO/N045vrZatzaGS3aP1z1nCFBzOoAEB7cSC/Qv/4ep/eXZ+tGnt91+i+iRG6eXwPXTQwkamiANBO1NodWrUnX+9nZOuzbUdVVWt3PjYwOVKXpifpksFJiqfXi6koBsArfLDpiO58J0N1DkMT+sTp+SuHMr0IANqJHTmleuGrffpo8xHn3tEjukbp5nN7anyvTjSMAoB2wDAMbThUpPc3HtFHW3JUWFHjfCw1JlSXpidr6uAk9YzrYGJK/BjFALR7X+7K0+2LNsowpEvTk/S/vxqsAH8/s2MBAE7D4TD0xLKd+sfX+53HxvfupJvH99RZ3aJNTAYAaImMrGI9uHiLth0pdR6L7RCoKYOSdGl6ktJTOlLY9UAUA9Cu1dkdeuyjHTIM6X+GddaT/2+Q/JhGCgAer6bOoXv/u0lLMo5Iki4emKibxvfQgORIk5MBAJqrtLpWf122S2/+cFCGUb/d6+QBCbo0PVljesTIyg06j0YxAO3aexuztTevXB1DA/TnS/pRCACAdqCsulY3vblBq/bmy+pn0ZP/M0iXDe1sdiwAQDMZhqEPN+fokQ+361hZ/Zavlw1J1h8u7qvYDkEmp0NzUQxAu1Vda9f85bslSTeP76EImgUCgMfLK6vWta+u1bYjpQoN9NeLVw3TuF6dzI4FAGimQwWV+uOSrfp69zFJUvfYMD06bYBG94w1ORlaimIA2q03vz+oIyXVSowM1tWjupodBwBwGvuPlWvWq2uUVVilmLBAvXrtCA3q3NHsWACAZqipc+iVb/br75/vka3OoUCrn24Z31M3ju/Olq/tFMUAtEtl1bV6/su9kqTZE9PYOQAAPNzGQ0W6/rV1KqyoUWpMqF679ix1jQ0zOxYAoBl+2F+gB9/fqr155ZKkMT1j9Oi0gerGON6uUQxAu/TKN5kqqqxV905h+n+sMwUAj/blzjzd/NYGVdXaNTA5Uq9eO4I1pQDQDhRW1Gjexzv0n/WHJdXvEPDHi/vp0vQkdgfwAhQD0O7kl9v0z2/qt6G6d1JvupQCgAf7v3VZeuC9LbI7DJ3Tq5NevHKowoJ4+wEAnswwDP13/WHN/XiHiiprJUlXnNVFv7+gjyJD6dPlLfhtjHbnuS/2qrLGrkGdI3XBgASz4wAATsIwDD3/5V7972f1jV4vG5KsJ/5nkAIo4AKAR9ubV6YHF2/VD5mFkqQ+CeF67JcDNCw12uRkcDWKAWhXsgor9dYPByVJ91/Qh+lJAOCB7A5Dc5Zu0xvf14/XN47rofsv6M2YDQAerLrWrue/3KuXVu5Trd1QSIC/Zk9M03Vju1HI9VIUA9CuPLN8t2rthsb2jNUYti8BAI9TXWvX7EUZWrYtVxaL9NCUfrpmTDezYwEAfsbXu4/pT0u26mBBpSTpvD5xenhqf6VEh5qcDO5EMQDtxs7cUi3OyJYk3XdBb5PTAAB+qqSyVr99fZ3WHChUoL+fnvl1ui4elGh2LADAKeSVVesvH+7QB5uOSJISIoI1Z2o/Te6fwGwuH0AxAO3G/366S4YhXTwwkX2pAcDDHCmu0jWvrtHuo+UKD7Lq5auHa1SPGLNjAQBOwuEw9NaaQ3py2U6VVdfJzyLNGt1Vd0/qrQ40efUZ/J9Gu7DuQKFW7MiTv59Fd03qZXYcAMCP7D5apln/WqOckmrFRwRp4bVnqW9ihNmxAAAnsf1Iqf6weIsysoolSYM6R+qxaQM1sHOkucHQ5igGwOMZhqEnlu2UJE0f3lk9OnUwOREAoNGazEL95rW1Kq2uU49OYXr9+pFK7hhidiwAwE9U2Oo0f8Vu/evbA7I7DHUIsuqeSb00c1RX+fuxJMAXUQyAx/tq1zGtPVCkIKufbp+QZnYcAECDZVtzdPuiDNXUOTQsNUr/vHq4osICzY4FAPiJ5duP6qElW3WkpFpS/bLbP03pp4TIYJOTwUwUA+DRHI7jswKuGd1ViZHcbQIAT/DG9wf15yVbZRjS+f3i9ewVQxQc4G92LADAjxwprtJDS7dp+fajkqTOUSH6y6UDdG6fOJOTwRNQDIBHW7rpiHbmlik82KqbxvcwOw4A+DzDMPTUZ7v13Jd7JUlXnNVFf7m0v6zsQQ0AHqPO7tDC1Qf09PLdqqyxy+pn0W/P6a7bz0tTSCCFW9SjGACPVVPn0FPLd0mSbhzXQx1DmXoKAGaqtTv04OIt+r91hyVJd07spdsn9GT7KQDwIBlZxfrDe1u0PadUkjQ8NUqP/XKgeieEm5wMnoZiADzWorWHlFVYpU7hQbp2TFez4wCAT6usqdMtb23Ql7uOyc8izf3lQF1+VhezYwEAGpRW1+qvy3bpzR8OyjCkyJAAPXBhH00fniI/GgTiJCgGwCNV2Or098/rp6DePiFNoYH8qAKAWQrKbbrutXXalFWs4AA/PXfFUE3sF292LACA6pdvfbg5R498uF3HymySpMuGJOsPF/dVbIcgk9PBk3GFBY/0xvcHlV9uU2pMqC4fkWJ2HADwWZU1dbrile+1+2i5OoYGaMGsERqWGmV2LACA6pdv3f/uZr23IVuS1D02TI9OG6DRPWNNTob2gGIAPI5hGPrv+vr1qDeP76EAmlIBgGke/WiHdh8tV1x4kN7+7S/UM66D2ZEAAJKqa+269e0NWrEjT1Y/i249r6duGt9DQVYaBKJ5KAbA4+w6Wqa9eeUK9PfThQMTzY4DAD7r0225evuHQ7JYpPm/TqcQAAAeotxWp9+8tlbf7y9UkNVPL141VOf1YfkWWoZiADzOB5uOSJLG9+6kiOAAk9MAgG86Wlqt37+7WZL0u3O6M+UUADxEYUWNrnl1jTYfLlGHIKv+OWu4ftE9xuxYaIcoBsCjGIahDzblSJIuGZxkchoA8E0Oh6G7/2+TiiprNSA5Qnef39vsSAAASbkl1Zq54AftyStXdFigXrv2LA3sHGl2LLRTFAPgUTYfLtGhwkqFBPhrQt84s+MAgE/617eZWrU3X8EBfpr/6yEKtNK7BQDMdiC/Qlct+EGHi6qUGBmsN64fyfIttArFAHiUDzfXLxGY0DeO7QQBwATbjpToyWW7JEl/ntKfN5oA4AF25JRq5oI1yi+3qWtMqN78zUh1jgo1OxbaOa624DEcjvo9UiWWCACAGapq7LpjUYZq7A6d3y9eV5zF1q4AYLb1B4t07atrVFpdp76JEXr9urPUKTzI7FjwAhQD4DHWHypSTkm1woOsGterk9lxAMDnzP14h/bm1W8j+MT/GySLxWJ2JADwad/sOabfvb5eVbV2DUuN0r+uGaHIEBpswzUoBsBjNO4icH7/eAUHsD8qALSlFduP6o3vD0qSnpo+WNFhgSYnAgDftmxrjm7/d/1srbPTYvWPmcNYRguX8sqOQPPmzdOIESMUHh6uuLg4TZs2Tbt27WpyjmEYmjNnjpKSkhQSEqLx48dr27ZtTc6x2Wy67bbbFBsbq7CwME2dOlWHDx9uy5fiM+rsDn28hSUCAGCGvLJq3dewjeBvz+6ms9OYnQUAZvrPuizd/NYG1dgdunhgov45aziFALicVxYDVq5cqVtuuUXff/+9li9frrq6Ok2aNEkVFRXOc5588kk9/fTTeu6557R27VolJCTo/PPPV1lZmfOc2bNna/HixVq0aJFWrVql8vJyTZkyRXa73YyX5dV+yCxUfnmNOoYGaCx7WQNAm3E4DN3zn80qrKhR38QI3TOZbQQBwEwLVmXq3v9ulsOQfj08RX+/YoiCrMyahet5ZXlp2bJlTT5/9dVXFRcXp/Xr1+ucc86RYRiaP3++HnzwQV122WWSpNdee03x8fF6++23dcMNN6ikpEQLFizQG2+8oYkTJ0qS3nzzTaWkpGjFihWaPHlym78ub9a4RODCAYkK8PfKGhUAeKSFqw/o693HFGT1098vT+cNJwCYxDAMPbNij/7++R5J0u/O6a4HLuxD/xa4jU9cdZWUlEiSoqOjJUmZmZnKzc3VpEmTnOcEBQVp3LhxWr16tSRp/fr1qq2tbXJOUlKSBgwY4Dznp2w2m0pLS5t84PRq6hz6ZGuuJOmSQYkmpwHgDoyPnmlHTqke/2SnJOmPU/opLT7c5ESA72F8hFQ/S+vhD7Y7CwH3Tu5NIQBu5/XFAMMwdNddd2ns2LEaMGCAJCk3t/7CMz4+vsm58fHxzsdyc3MVGBioqKioU57zU/PmzVNkZKTzIyWFLZmaY9XeYyqpqlVshyCN7B5jdhwAbsD46Hmqa+26Y9FG1dgdmtg3TleN7GJ2JMAnMT6izu7QPf/ZpIWrD0iS/nJpf91ybk8KAXA7ry8G3Hrrrdq8ebP+/e9/n/DYT/+BGYZx2n90P3fOAw88oJKSEudHVlbWmQf3IR9uqm8cOGVQovz9GPQAb8T46HnmfbxDu4+WK7YD2wgCZmJ89G3VtXbd9NYGvbcxW/5+Fs3/dbpmjupqdiz4CK/sGdDotttu09KlS/X111+rc+fOzuMJCQmS6u/+JyYen5ael5fnnC2QkJCgmpoaFRUVNZkdkJeXp9GjR5/0+YKCghQUFOSOl+K1qmvt+mz7UUnSJYNZIgB4K8ZHz/Llzjy99t3xbQRjOvD/BjAL46PvKrfV6Xevr9PqfQUKsvrp+RlDNbFf/Om/EHARr5wZYBiGbr31Vr333nv64osv1K1btyaPd+vWTQkJCVq+fLnzWE1NjVauXOm80B82bJgCAgKanJOTk6OtW7eeshiAlvtqV57KbXVKigzWkJSo038BAKBVjpXZdO9/N0mSrhvTTeN6sY0gALS1oooaXfnPH7R6X4E6BFn12nVnUQhAm/PKmQG33HKL3n77bS1ZskTh4eHONf6RkZEKCQmRxWLR7NmzNXfuXKWlpSktLU1z585VaGioZsyY4Tz3+uuv1913362YmBhFR0frnnvu0cCBA527C6D1PmhcIjA4SX4sEQAAtzIMQ/f9d5Pyy2vUJyFc913ANoIA0NaOllZr5oIftPtouaJCA/TadWdpUOeOZseCD/LKYsCLL74oSRo/fnyT46+++qquueYaSdJ9992nqqoq3XzzzSoqKtLIkSP12WefKTz8eCflZ555RlarVdOnT1dVVZUmTJighQsXyt+fbZdcocJWp893NiwRGJRkchoA8H6vf3dQX+46pkCrn/52+RAFB/D7DADa0qGCSl254HtlFVYpISJYb1x/Fju5wDReWQwwDOO051gsFs2ZM0dz5sw55TnBwcF69tln9eyzz7owHRqt2HFU1bUOpcaEakByhNlxAMCr7cot02Mf75AkPXhRX/VO4M0nALSlXbllmrngB+WV2ZQaE6o3rx+plOhQs2PBh3llMQDtQ2PjwCmDEuliDQBu9siH21RT59C5vTvp6lGpZscBAJ9SXWvXNa+uUV6ZTX0SwvX69WcpLjzY7FjwcRQDYJrsoipJYo0UALhZWXWtvt9fKEmaM7U/BVgAaGOvf3dAOSXVSu4Yond+N0qRoQFmRwK8czcBtA9FlTWSpJiwQJOTAIB3+25fgewOQ91iw5QaE2Z2HADwKWXVtXrhq32SpNkT0ygEwGNQDIBpCsvriwFRFAMAwK1W7c2XJI3tGWtyEgDwPQtWZaq4slY9OoXpl0OSzY4DOFEMgClq6hwqs9VJYmYAALjbN3vqiwFnp1EMAIC2VFhRo39+kylJuntSb1n9ufyC5+CnEaZoXCLg72dRRDBTpQDAXbIKK5WZXyF/P4tG9YgxOw4A+JSXVu5Tua1OA5IjdEH/BLPjAE1QDIApCisalgiEBsjPj0ZWAOAujbMChnbpqHCKrwDQZnJLqvXa6gOSpHsm9eY9LzwOxQCY4ngxgCUCAOBOq/YekySN7dnJ5CQA4Fue/WKPbHUOjegapXG9GIPheSgGwBSNxYBo+gUAgNvYHYZWNfYL6EW/AABoKwcLKvTO2ixJ0r2T+7ClKzyStTknDR06tEXf1GKxaOnSpUpOplsmTo5iAAC43+bDxSqtrlNEsFWDkiPNjgMAPmP+ij2qcxga16uTzuoWbXYc4KSaVQzIyMjQ3XffrQ4dOpz2XMMw9Pjjj8tms7U6HLwXxQAAcL/GfgGje8TSwRoA2sjuo2V6PyNbUn2vAMBTNasYIEn33nuv4uLimnXuU089dcaB4BsoBgCA+7FEAADa3lOf7ZJhSBcNTNDAzszKgudqVjEgMzNTnTo1v+nF9u3blZSUdMah4P0KKykGAIA7lVXXasOhIknSOWk0rgKAtrApq1ifbjsqP4t01/m9zI4D/KxmFQNSU1Nb9E1TUlLOKAx8R2E5xQAAcKfv9xeqzmGoa0yoUqJDzY4DAD7hfz/bJUn65ZDO6hkXbnIa4Oc1e5nAT1VWVurQoUOqqalpcnzQoEGtDgXvxzIBAHCvb/Y0bCmYxhIBAGgLq/fl65s9+Qrwt2j2xDSz4wCn1eJiwLFjx3Tttdfqk08+Oenjdru91aHg/RqXCUSFUgwAAHdobB54NksEAMDtDMPQ/35aPyvgirO6MCML7UKLWwvPnj1bRUVF+v777xUSEqJly5bptddeU1pampYuXeqOjPAyhmGoqGFmQEwHigEA4GpZhZXKzK+Qv59Fo3rEmB0HALzel7vytOFQsYID/HTruT3NjgM0S4tnBnzxxRdasmSJRowYIT8/P6Wmpur8889XRESE5s2bp4svvtgdOeFFSqvrVOcwJDEzAADcYdXe+lkBQ1I6KiI4wOQ0AODdHA5Df/10tyRp1uiuiosINjkR0DwtnhlQUVHh3GIwOjpax47Vr0kcOHCgNmzY4Np08EqN/QLCAv0VHOBvchoA8D70CwCAtvPRlhztyClVeJBVN57Tw+w4QLO1uBjQu3dv7dpVvx4mPT1d//jHP5Sdna2XXnpJiYmJLg8I79NYDIiieSAAuJzdYejbvQWS6BcAAO5WZ3fo6eX1swJ+e0533t+iXWnxMoHZs2fryJEjkqSHHnpIkydP1ltvvaXAwEAtXLjQ1fnghRqLATEMlgDgcluyS1RSVavwYKsGd440Ow4AeLV3NxxWZn6FosMCdd3YbmbHAVqkxcWAK6+80vnnIUOG6MCBA9q5c6e6dOmi2FimI+L0ipgZAABu821Dv4DRPWJk9W/xBEAAQDPV2R16/st9kqSbx/dQh6Az3rUdMEWz3yVUVlbqlltuUXJysuLi4jRjxgzl5+crNDRUQ4cOpRCAZmvcVjCaYgAAuNzqfY3FAH4vA4A7fbQlR4cKKxUdFqgZI7uYHQdosWYXAx566CEtXLhQF198sS6//HItX75cN910kzuzwUs1LhOIZicBAHApW51d6w4USaqfGQAAcA+Hw9ALDbMCrhvTVaGBzApA+9Psn9r33ntPCxYs0OWXXy5JuuqqqzRmzBjZ7Xb5+9MRHs1HA0EAcI+Nh4plq3MotkOQesZ1MDsOAHitz3fmadfRMnUIsmrmqK5mxwHOSLNnBmRlZenss892fn7WWWfJarU6mwkCzVVEA0EAcIvV++p3ERjVI0YWi8XkNADgnQzD0HNf7pUkzRyVqsiQAJMTAWem2cUAu92uwMCmF29Wq1V1dXUuDwXvVsDMAABwi+8bigEsEQAA9/luX4E2ZRUryOqn68awgwDar2YvEzAMQ9dcc42CgoKcx6qrq3XjjTcqLCzMeey9995zbUJ4nSIaCAKAy1XV2LUxq75fwKjuFAMAwF2e/6p+VsDlI1LUKTzoNGcDnqvZxYBZs2adcOyqq65yaRj4BmcDQYoBAOAy6w4WqtZuKCkyWKkxoWbHAQCvtPFQkb7dWyCrn0W/Pae72XGAVml2MeDVV191Zw74iJo6h8qq65eWsJsAALhOY7+AX9AvAADc5oWv6ncQmDYkWZ2jKLyifWt2zwDAFYoblgj4WUSzFQBwodXOfgGxJicBAO+0K7dMy7cflcUi3Tiuh9lxgFZr8YaYFRUVevzxx/X5558rLy9PDoejyeP79+93WTh4n8KGYkBUaKD8/LhzBQCuUFpdqy2HiyXV7yQAAHC9Fxt6BVw4IIHtW+EVWlwM+M1vfqOVK1dq5syZSkxMZCoiWqSwnJ0EAMDV1mYWymFIqTGhSu4YYnYcAPA6hwoqtXRT/ZbqN4/vaXIawDVaXAz45JNP9NFHH2nMmDHuyAMv1zgzgH4BAOA637GlIAC41Utf75PDkMb16qQByZFmxwFcosU9A6KiohQdHe2OLPABRewkAAAu52weyJaCAOByR0ur9d91hyVJt5zLrAB4jxYXA/7yl7/oz3/+syorK92RB16uoIJlAgDgSkUVNdqRWyqJfgEA4A7//Ga/auwOjegapbO6cVMU3qNZywSGDBnSpDfA3r17FR8fr65duyogoGlH+A0bNrg2IbxK48yAGIoBAOASP2QWyDCktLgOigsPNjsOAHiVoooavfXDIUnSzcwKgJdpVjFg2rRpbo4BX1FYWSuJmQEA4CqNSwSYFQAArrdw9QFV1tjVLzFC43t1MjsO4FLNKgY89NBD7s4BH1FYYZMkRYcFnOZMAEBz0DwQANyj3FanhasPSKrvFcAuavA2Le4ZALRGYUX9zIDosCCTkwBA+5dXVq09eeWyWKSR3SgGAIArvf3DQZVU1ap7bJguGJBgdhzA5ZpVDIiOjlZ+fn6zv2mXLl108ODBMw4F7+XcTYCtBQGg1b7fXyhJ6psQwfIrAHCh6lq7XvkmU5J04/ge8vdjVgC8T7OWCRQXF+uTTz5RZGTz9tQsKCiQ3W5vVTBPk5WVpZkzZyovL09Wq1V/+tOf9Ktf/crsWO1OUWV9MaBjKMsEAKC1NmcVSxLdrQHAxVbvy9exMpsSIoI1LT3Z7DiAWzSrGCBJs2bNcmcOj2e1WjV//nylp6crLy9PQ4cO1UUXXaSwsDCzo7Ubtjq7bHUOSVJECMUAAGitwobZVgmR7CIAAK60+XCJJGl0zxgFWllZDe/UrGKAw+Fwdw6Pl5iYqMTERElSXFycoqOjVVhYSDGgBcqq65x/7hDU7DoUAOAUGmdbsfQKAFxrS0MxYFBy82ZGA+2R6WWuF198UYMGDVJERIQiIiI0atQoffLJJy59jq+//lqXXHKJkpKSZLFY9P7775/0vBdeeEHdunVTcHCwhg0bpm+++eak561bt04Oh0MpKSkuzentGosBHYKsrLsCABcoatiulaVXAOBaW7LriwEDO1MMgPcyvRjQuXNnPf7441q3bp3WrVun8847T5deeqm2bdt20vO//fZb1dbWnnB8586dys3NPenXVFRUaPDgwXruuedOmeOdd97R7Nmz9eCDD2rjxo06++yzdeGFF+rQoUNNzisoKNDVV1+tl19+uQWvEpJUWlX//y0imFkBAOAKjTMDaB4IAK5ztLRaeWU2+VmkfokUA+C9TC8GXHLJJbrooovUq1cv9erVS4899pg6dOig77///oRzHQ6HbrnlFs2YMaNJg8Ldu3fr3HPP1euvv37S57jwwgv16KOP6rLLLjtljqefflrXX3+9fvOb36hv376aP3++UlJS9OKLLzrPsdls+uUvf6kHHnhAo0ePbsWr9k2NMwPCg7mDBQCu0LhDSxQzAwDAZRqXCKTFhSsk0N/kNID7mF4M+DG73a5FixapoqJCo0aNOuFxPz8/ffzxx9q4caOuvvpqORwO7du3T+edd56mTp2q++6774yet6amRuvXr9ekSZOaHJ80aZJWr14tSTIMQ9dcc43OO+88zZw582e/3/PPP69+/fppxIgRZ5THW5VV188MCGdmAOCzGB9dp87uUGlDkTWKngFAu8f46Dk2s0QAPsIjigFbtmxRhw4dFBQUpBtvvFGLFy9Wv379TnpuUlKSvvjiC3377beaMWOGzjvvPE2YMEEvvfTSGT9/fn6+7Ha74uPjmxyPj493Lj349ttv9c477+j9999Xenq60tPTtWXLlpN+v1tuuUXbt2/X2rVrzziTNzo+M4BiAOCrGB9dp6Tq+JK5SHZoAdo9xkfPsbWxGEDzQHi5M7oq27dvn1599VXt27dPf/vb3xQXF6dly5YpJSVF/fv3b/H36927tzIyMlRcXKx3331Xs2bN0sqVK09ZEOjSpYtef/11jRs3Tt27d9eCBQtksbS+Id1Pv4dhGM5jY8eOZVeFVip1zgzgTSsAtFZj88CIYKus/h5R2weAds8wDOe2gswMgLdr8buHlStXauDAgfrhhx/03nvvqby8XJK0efNmPfTQQ2cUIjAwUD179tTw4cM1b948DR48WH/7299Oef7Ro0f1u9/9TpdccokqKyt15513ntHzNoqNjZW/v/8JDQjz8vJOmC2AM8fMAABwHZoHAoDrHS21Kb/cJn8/i/olRpgdB3CrFhcDfv/73+vRRx/V8uXLFRh4/A3Iueeeq++++84loQzDkM1mO+lj+fn5mjBhgvr27av33ntPX3zxhf7v//5P99xzzxk/X2BgoIYNG6bly5c3Ob58+XIaBbpQYzEggumsANBqjc0DO9IvAABcZvPhYklSWlwHBQfQPBDercW3aLds2aK33377hOOdOnVSQUFBiwP84Q9/0IUXXqiUlBSVlZVp0aJF+uqrr7Rs2bITznU4HLrggguUmpqqd955R1arVX379tWKFSt07rnnKjk5+aSzBMrLy7V3717n55mZmcrIyFB0dLS6dOkiSbrrrrs0c+ZMDR8+XKNGjdLLL7+sQ4cO6cYbb2zxa8LJldJAEABcprhhmUA0OwkAgMvQLwC+pMVXZR07dlROTo66devW5PjGjRuVnJzc4gBHjx7VzJkzlZOTo8jISA0aNEjLli3T+eeff8K5fn5+mjdvns4+++wmsxIGDhyoFStWKCYm5qTPsW7dOp177rnOz++66y5J0qxZs7Rw4UJJ0q9//WsVFBTokUceUU5OjgYMGKCPP/5YqampLX5NOLkyegYAgMs4lwkwMwAAXKZxJ4FB9AuAD2hxMWDGjBm6//779Z///EcWi0UOh0Pffvut7rnnHl199dUtDrBgwYIWnX+yIoEkpaenn/Jrxo8fL8MwTvu9b775Zt18880tyoPmcy4TYGYAALRaYwNBlgkAgGsYhqEtDc0DBzAzAD6gxT0DHnvsMXXp0kXJyckqLy9Xv379dM4552j06NH64x//6I6M8BI0EAQA12nsGRDFMgEAcImckmoVVNTI6mdRX5oHwge0+KosICBAb731lh555BFt3LhRDodDQ4YMUVpamjvywYuwTAAAXIfdBADAtRq3FEyLD6d5IHzCGd+i7dGjh3r06OHKLPByx5cJUAwAgNZqbCBIzwAAcI3G5oGDWCIAH9GsYkBjw73mePrpp884DLwbywQAwHWONxCkwAoA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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# c.f. Saiz-Lopez et al. 2012, ACP -- Fig. 3\n", + "\n", + "gala = ozone['o3vmr'].interp(lat=1. ).mean('month')\n", + "fiji = ozone['o3vmr'].interp(lat=18.).mean('month')\n", + "naha = ozone['o3vmr'].interp(lat=26.).mean('month')\n", + "\n", + "fig,axs = plt.subplots(ncols=3,sharex=True,sharey=True,figsize=(12,4))\n", + "axs[0].semilogy(gala/1e-9, ozone.plev)\n", + "axs[1].semilogy(fiji/1e-9, ozone.plev)\n", + "axs[2].semilogy(naha/1e-9, ozone.plev)\n", + "\n", + "axs[0].set_ylabel('Altitude [hPa]')\n", + "for ax in axs:\n", + " ax.set_xlabel\n", + "axs[0].set_ylim((100,1000))\n", + "axs[0].set_xlim((0,150))\n", + "axs[0].set_xticks(np.arange(0,150,20))\n", + "ylabels = [100,200,400,600,1000]\n", + "axs[0].set_yticks(ylabels)\n", + "axs[0].set_yticklabels(ylabels)\n", + "axs[0].invert_yaxis()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "600aac0c-1006-4655-9248-e46ee8277318", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Pressure [hPa]')" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# c.f. Montornes et al. 2015, ACP -- Fig. 1\n", + "midlat_summer = ozone['o3vmr'].sel(lat=slice(30,60),month=[6,7,8]).mean(['lat','month'])\n", + "midlat_winter = ozone['o3vmr'].sel(lat=slice(30,60),month=[12,1,2]).mean(['lat','month'])\n", + "arctic_summer = ozone['o3vmr'].sel(lat=slice(60,90),month=[6,7,8]).mean(['lat','month'])\n", + "arctic_winter = ozone['o3vmr'].sel(lat=slice(60,90),month=[12,1,2]).mean(['lat','month'])\n", + "\n", + "fig,ax = plt.subplots()\n", + "ax.semilogy(midlat_summer, ozone.plev, 'tab:purple', label='mid lat summer')\n", + "ax.semilogy(midlat_winter, ozone.plev, 'tab:red', label='mid lat winter')\n", + "ax.semilogy(arctic_summer, ozone.plev, 'tab:green', label='arctic summer')\n", + "ax.semilogy(arctic_winter, ozone.plev, 'tab:orange', label='arctic winter')\n", + "ax.invert_yaxis()\n", + "ax.set_yticks(10.**np.arange(-4,4))\n", + "ax.grid(alpha=0.25)\n", + "ax.legend(loc='upper left',bbox_to_anchor=(1,1))\n", + "ax.set_xlabel('Ozone volume mixing ratio')\n", + "ax.set_ylabel('Pressure [hPa]')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "37453d55-d86b-40e6-ad5d-481ebc8fe747", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "forge", + "language": "python", + "name": "forge" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/pyproject.toml b/pyproject.toml index 88e9f02..6f821ef 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,6 +30,7 @@ dependencies = [ "pandas>=2.3.2", "xarray>=2024.7.0", "netcdf4>=1.7.2", + "h5netcdf>=1.6.4", "pydantic", "f90nml", "click", From f5b18d9e57ce0bc7f0fe61ccb3a55369cfb11444 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Thu, 18 Sep 2025 23:21:02 -0600 Subject: [PATCH 41/49] Add function to calculate interp weights for monthly data Following `ozn_time_int` in WRF/phys/module_radiation_driver.F Verified that the python version of ozn_time_int matches the original fortran to machine double precision. Interpolating using the new `monthly_interp_weights_from_date` is identical to the python port --- erftools/wrf/rad.py | 113 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 erftools/wrf/rad.py diff --git a/erftools/wrf/rad.py b/erftools/wrf/rad.py new file mode 100644 index 0000000..57a4c2e --- /dev/null +++ b/erftools/wrf/rad.py @@ -0,0 +1,113 @@ +from datetime import datetime +import numpy as np +import xarray as xr + +# wrap Jan/Dec for a 365 day year +my_date_oz = np.array( + [-15, + 16, 45, 75, 105, 136, 166, 197, 228, 258, 289, 319, 350, + 381] +) + +def monthly_interp_weights_from_date(dt): + """Get interpolation weights to be applied to monthly data centered + on specific days of the year (hardcoded). + """ + # get decimal day of year (1-based) + jan1 = datetime(dt.year, 1, 1) + decimal_day = (dt - jan1).total_seconds() / 86400. + 1.0 + + # find months to interpolate between + idx_r = np.where(my_date_oz > decimal_day)[0][0] + idx_l = idx_r - 1 + + # calculate interpolation weights + tdelta = my_date_oz[idx_r] - my_date_oz[idx_l] + fac_l = (my_date_oz[idx_r] - decimal_day) / tdelta + fac_r = (decimal_day - my_date_oz[idx_l]) / tdelta + + # fill full array of monthly weights + weights = np.zeros(12) + if idx_l == 0 or idx_r == 13: + weights[-1] = fac_l + weights[0] = fac_r + else: + weights[idx_l-1] = fac_l + weights[idx_r-1] = fac_r + + return xr.DataArray(weights, dims='month') + +''' +For verifying interpolator behavior + +date_oz = [16, 45, 75, 105, 136, 166, 197, 228, 258, 289, 319, 350] +daysperyear = 365 + +def ozn_time_int(julday, julian, ozmixm=None): + """Interpolate ozone concentration profile + + Port of ozn_time_int subroutine from WRF + phys/module_radiation_driver.F + + Parameters + ---------- + julday: int + Day of year + julian: float + Day of year, 0.0 at 0Z on 1 Jan + ozmixm: np.array + Ozone concentration (nlon, nlev, nlat, nmonth) + """ + ozncyc = True + intjulian = julian + 1.0 + # Jan 1st 00Z is julian=1.0 here + ijul = int(intjulian) + intjulian = intjulian - ijul + ijul = ijul % 365 + if ijul==0: + ijul = 365 + intjulian = intjulian + ijul + + np1 = 0 + datefound = False + for m in range(12): + if (date_oz[m] > intjulian) and not datefound: + np1 = m + datefound = True + cdayozp = date_oz[np1] + + if np1 > 0: + cdayozm = date_oz[np1-1] + np = np1 + nm = np - 1 + else: + cdayozm = date_oz[11] + np = np1 # ==0, jan + nm = 11 # dec + + if ozncyc and np1 == 0: + # Dec-Jan interpolation + deltat = cdayozp + daysperyear - cdayozm + if intjulian > cdayozp: + print('interp in dec',cdayozm,cdayozp) + # We are in December + fact1 = (cdayozp + daysperyear - intjulian) / deltat + fact2 = (intjulian - cdayozm) / deltat + else: + print('interp in jan',cdayozm,cdayozp) + # We are in January + fact1 = (cdayozp - intjulian) / deltat + fact2 = (intjulian + daysperyear - cdayozm) / deltat + else: + print('interp in general',cdayozm,cdayozp) + deltat = cdayozp - cdayozm + fact1 = (cdayozp - intjulian) / deltat + fact2 = (intjulian - cdayozm) / deltat + + if ozmixm is not None: + # WRF source has indices nm+1, np+1, which should be to account for + # module_ra_cam_suopport:oznini filling ozmixm starting from m=2... + return ozmixm[:,:,:,nm]*fact1 + ozmixm[:,:,:,np]*fact2 + else: + return fact1, fact2 +''' From b241569c9bb41c60ad18e60ad29b31386734cae9 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Fri, 19 Sep 2025 11:12:21 -0600 Subject: [PATCH 42/49] Add utils for getting zcc from an inputfile; estimating p(z) --- erftools/utils.py | 40 ++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 1 + 2 files changed, 41 insertions(+) diff --git a/erftools/utils.py b/erftools/utils.py index 655edcd..9114d1a 100644 --- a/erftools/utils.py +++ b/erftools/utils.py @@ -1,7 +1,10 @@ import numpy as np import xarray as xr +import ussa1976 from .constants import CONST_GRAV +from .inputs import ERFInputs +from .input_sounding import InputSounding def get_stag_dims(ds_cc): stag_dims = {dim if dim != 'bottom_top' else 'bottom_top_stag': size @@ -40,3 +43,40 @@ def get_w_from_omega(omega_cc, rho_cc, stag_dims=None): da.loc[dict(bottom_top_stag=-1)] = w_top return da + + +def get_zcc(inputfile) -> np.array: + """Automatically get modeled heights at cell centers, which is exact + for const dz or stretched grids and approximate for general, + variable dz grids over terrain. + """ + inp = ERFInputs(inputfile) + if len(inp.erf.terrain_z_levels) > 0: + zstag = np.array(inp.erf.terrain_z_levels) + zcc = 0.5 * (zstag[1:] + zstag[:-1]) + elif inp.erf.grid_stretching_ratio > 1: + s = inp.erf.grid_stretching_ratio + dz0 = inp.erf.initial_dz + nz = inp.amr.n_cell[2] + zstag = dz0 * (s**np.arange(nz+1) - 1) / (s - 1) # partial sum + zcc = 0.5 * (zstag[1:] + zstag[:-1]) + else: + nz = inp.amr.n_cell[2] + const_dz = (inp.geometry.prob_hi[2] - inp.geometry.prob_lo[2]) / nz + zcc = inp.geometry.prob_lo[2] + np.arange(0.5, nz) * const_dz + return zcc + +def est_p(z, soundingfile=None) -> np.array: + """Estimate air pressure [Pa] at a set of heights, using either the + US Standard Atmosphere (1976) or a WRF-style input_sounding. + """ + z = np.array(z) + if soundingfile is not None: + sound = InputSounding(soundingfile) + sound.interp_levels(z) + sound.integrate_column() + p = sound.pm + else: + ds = ussa1976.compute(z,'p') + p = ds['p'].values + return p diff --git a/pyproject.toml b/pyproject.toml index 6f821ef..bf429d8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,6 +34,7 @@ dependencies = [ "pydantic", "f90nml", "click", + "ussa1976", ] [project.optional-dependencies] From 30d3a86c8c2dec7f9233127585aa250eb8a56875 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Fri, 19 Sep 2025 11:13:39 -0600 Subject: [PATCH 43/49] Add new radiation interp functions --- erftools/wrf/rad.py | 37 +++++++++++++++++++++++++++++++++++++ pyproject.toml | 1 + 2 files changed, 38 insertions(+) diff --git a/erftools/wrf/rad.py b/erftools/wrf/rad.py index 57a4c2e..e2a128f 100644 --- a/erftools/wrf/rad.py +++ b/erftools/wrf/rad.py @@ -2,6 +2,9 @@ import numpy as np import xarray as xr +from erftools.utils import get_zcc, est_p + + # wrap Jan/Dec for a 365 day year my_date_oz = np.array( [-15, @@ -37,6 +40,40 @@ def monthly_interp_weights_from_date(dt): return xr.DataArray(weights, dims='month') +def interp_from_monthly_to_date(xdata,dt): + """Interpolate from monthly data `xdata` (an xarray Dataset or + DataArray) to a specific datetime `dt` + + The data should have the dimension 'month' + """ + weightedvals = monthly_interp_weights_from_date(dt) * xdata + return weightedvals.sum('month') + +def interp_from_monthly_to_date_heights(xdata,dt,heights,**kwargs): + """Interpolate from monthly data `xdata` (an xarray Dataset or + DataArray) to a specific datetime `dt` and an array of model heights + + The data should have the dimensions 'month' and 'plev' and the + pressure levels are in hPa. + """ + # get pressure levels from a standard atmosphere + plev = est_p(heights,**kwargs) / 100 # hPa + + # interpolate to pressure levels + plev_data = interp_from_monthly_to_date(xdata, dt) + interp_data = plev_data.interp(plev=plev) + + # create new dimension coordinate + interp_data = interp_data.rename(plev='height') + interp_data = interp_data.assign_coords(height=heights, + plev=('height',plev)) + + # fill in near-surface values + interp_data = interp_data.bfill('height') + + return interp_data + + ''' For verifying interpolator behavior diff --git a/pyproject.toml b/pyproject.toml index bf429d8..a90e6bc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,6 +31,7 @@ dependencies = [ "xarray>=2024.7.0", "netcdf4>=1.7.2", "h5netcdf>=1.6.4", + "bottleneck>=1.5.0", "pydantic", "f90nml", "click", From 9e2dc701c5c7d539925ee7b109d1aebe0edf84b2 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Fri, 19 Sep 2025 11:44:32 -0600 Subject: [PATCH 44/49] Make ERFParms start/stop datetime parms consistent with ERF --- erftools/inputs.py | 10 +++++----- erftools/wrf/inputdeck.py | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/erftools/inputs.py b/erftools/inputs.py index dced48c..abdc0fe 100644 --- a/erftools/inputs.py +++ b/erftools/inputs.py @@ -52,8 +52,8 @@ def __init__(self,inpfile=None,**ppdata): self.max_step = int(ppdata.get('max_step',-1)) self.start_time = float(ppdata.get('start_time',0.)) self.stop_time = float(ppdata.get('stop_time',1e34)) - self.start_date = ppdata.get('start_date',None) - self.stop_date = ppdata.get('stop_date',None) + self.start_datetime = ppdata.get('start_datetime',None) + self.stop_datetime = ppdata.get('stop_datetime',None) # read amr, geometry, and erf inputs amrparms = parmparse('amr',ppdata) @@ -191,11 +191,11 @@ def write(self,fpath=None): with open_file_or_stdout(fpath) as f: f.write('# ------------------------------- INPUTS TO ERF -------------------------------\n') f.write('# written by erftools.inputs (https://github.com/erf-model/erftools)\n') - if self.start_date and self.stop_date: + if self.start_datetime and self.stop_datetime: f.write(f""" max_step = {self.max_step} -start_datetime = {self.start_date} # epoch time: {self.start_time} s -stop_datetime = {self.stop_date} # epoch time: {self.stop_time} s +start_datetime = {self.start_datetime} # epoch time: {self.start_time} s +stop_datetime = {self.stop_datetime} # epoch time: {self.stop_time} s """) else: f.write(f""" diff --git a/erftools/wrf/inputdeck.py b/erftools/wrf/inputdeck.py index 4488347..a808a22 100644 --- a/erftools/wrf/inputdeck.py +++ b/erftools/wrf/inputdeck.py @@ -120,9 +120,9 @@ def generate_inputs(self): startdate = self.time_control.start_datetimes[0] enddate = self.time_control.end_datetimes[0] tsim = (enddate - startdate).total_seconds() - inp['start_date'] = startdate - inp['stop_date'] = enddate - inp['start_time'] = calendar.timegm(startdate.timetuple()) + inp['start_datetime'] = startdate + inp['stop_datetime'] = enddate + inp['start_time'] = calendar.timegm(startdate.timetuple()) # epoch time inp['stop_time'] = calendar.timegm(enddate.timetuple()) self.log.info(f'Total simulation time: {tsim}') self.log.info(f"Start from {startdate.strftime('%Y-%m-%d %H:%M:%S')}" From ea2b6e204cec7a50dadbc9f084598b8fb95f5c03 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Fri, 19 Sep 2025 12:19:23 -0600 Subject: [PATCH 45/49] More robust datetime input handling --- erftools/inputs.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/erftools/inputs.py b/erftools/inputs.py index abdc0fe..2e6b44b 100644 --- a/erftools/inputs.py +++ b/erftools/inputs.py @@ -1,5 +1,7 @@ import sys import warnings +from datetime import datetime +from dateutil import parser import click import contextlib @@ -39,6 +41,14 @@ def list_to_str(mylist,dtype=None): def strs_to_str(mylist): return ' '.join([s.strip('"').strip("'") for s in mylist]) +def to_datetime(dt): + # ensure that we have a datetime object, parse if needed + if isinstance(dt, datetime): + return dt + elif isinstance(dt, list): + assert len(dt) == 2, 'expected date string + time string' + dt = ' '.join(dt) + return parser.parse(dt) class ERFInputs(object): """Input data container with validation and output""" @@ -52,8 +62,13 @@ def __init__(self,inpfile=None,**ppdata): self.max_step = int(ppdata.get('max_step',-1)) self.start_time = float(ppdata.get('start_time',0.)) self.stop_time = float(ppdata.get('stop_time',1e34)) + self.start_datetime = ppdata.get('start_datetime',None) + if self.start_datetime is not None: + self.start_datetime = to_datetime(self.start_datetime) self.stop_datetime = ppdata.get('stop_datetime',None) + if self.stop_datetime is not None: + self.stop_datetime = to_datetime(self.stop_datetime) # read amr, geometry, and erf inputs amrparms = parmparse('amr',ppdata) @@ -166,7 +181,9 @@ def read_refinement(self,ppdata): self.refine[box][test] = thresh def validate(self): - # additional validation that depends on different parmparse types + """Additional validation (outside of what is performed in + erfparms.*) that depends on different parmparse tables + """ if self.erf.terrain_type.lower() != 'none': if self.erf.terrain_z_levels: nz = self.amr.n_cell[2] From c5353d19da91a4320b62fba83f785acdf002ae18 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Fri, 19 Sep 2025 12:19:55 -0600 Subject: [PATCH 46/49] Create generate_ozone_profile script --- erftools/utils.py | 7 +++++-- erftools/wrf/rad.py | 39 +++++++++++++++++++++++++++++++++++++++ pyproject.toml | 1 + 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/erftools/utils.py b/erftools/utils.py index 9114d1a..c69ed54 100644 --- a/erftools/utils.py +++ b/erftools/utils.py @@ -45,12 +45,15 @@ def get_w_from_omega(omega_cc, rho_cc, stag_dims=None): return da -def get_zcc(inputfile) -> np.array: +def get_zcc(inp) -> np.array: """Automatically get modeled heights at cell centers, which is exact for const dz or stretched grids and approximate for general, variable dz grids over terrain. + + `inp` may be an ERF input file path or an instance of ERFInputs. """ - inp = ERFInputs(inputfile) + if not isinstance(inp, ERFInputs): + inp = ERFInputs(inp) if len(inp.erf.terrain_z_levels) > 0: zstag = np.array(inp.erf.terrain_z_levels) zcc = 0.5 * (zstag[1:] + zstag[:-1]) diff --git a/erftools/wrf/rad.py b/erftools/wrf/rad.py index e2a128f..64a0294 100644 --- a/erftools/wrf/rad.py +++ b/erftools/wrf/rad.py @@ -1,8 +1,12 @@ from datetime import datetime +from importlib import resources + import numpy as np import xarray as xr +import click from erftools.utils import get_zcc, est_p +from erftools.inputs import ERFInputs # wrap Jan/Dec for a 365 day year @@ -74,6 +78,41 @@ def interp_from_monthly_to_date_heights(xdata,dt,heights,**kwargs): return interp_data +@click.command() +@click.argument('inputfile', type=click.Path(writable=True)) +@click.option('--latitude', type=click.FloatRange(-90,90), + required=True) +@click.option('--dataset', default='CAM', + help='Name of O3 dataset [default=CAM]') +def generate_ozone_profile(inputfile, latitude, dataset): + """Interpolate from climatological O3 data to the starting datetime + and height levels from the ERF inputfile. + + Ozone datasets are stored in erftools/data/ozone_*.nc + """ + dataname = f'ozone_{dataset}.nc' + with resources.files('erftools.data').joinpath(dataname) as fpath: + ds = xr.load_dataset(fpath) + + inp = ERFInputs(inputfile) + date = inp.start_datetime + if date is None: + raise ValueError(f'start_date not found in {inputfile}') + print('Interpolating to',date) + + heights = get_zcc(inp) + print('Model heights:',heights) + + plevels = est_p(heights) + print('Standard pressure levels:',plevels) + + ds = ds.interp(lat=latitude) + interpdata = interp_from_monthly_to_date_heights(ds, date, heights) + print('O3 [ppbv]: ', interpdata['o3vmr'].values / 1e-9) + + erfstr = str(interpdata['o3vmr'].values).lstrip('[').rstrip(']') + print('erf.o3vmr = ', erfstr) + ''' For verifying interpolator behavior diff --git a/pyproject.toml b/pyproject.toml index a90e6bc..991739a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,6 +65,7 @@ packages = ["erftools"] [project.scripts] check_erf_input = "erftools.inputs:check_erf_input" wrf_namelist_to_erf = "erftools.wrf.inputdeck:wrf_namelist_to_erf" +generate_ozone_profile = "erftools.wrf.rad:generate_ozone_profile" [project.urls] Homepage = "https://erf.readthedocs.io/en/latest/" From d9b86efcf2aa781ce414d21ae778c1fe9673603c Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Fri, 19 Sep 2025 13:33:06 -0600 Subject: [PATCH 47/49] Add option to read in wrfinput WRFInputDeck.__init__; scrape map attrs --- erftools/wrf/inputdeck.py | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/erftools/wrf/inputdeck.py b/erftools/wrf/inputdeck.py index a808a22..1dac19d 100644 --- a/erftools/wrf/inputdeck.py +++ b/erftools/wrf/inputdeck.py @@ -39,7 +39,7 @@ class WRFInputDeck(object): 'pressure','theta','KE', 'Kmh','Kmv','Khh','Khv','qv','qc'] - def __init__(self,nmlpath,tslist=None,verbosity=logging.DEBUG): + def __init__(self,nmlpath,wrfinput=None,tslist=None,verbosity=logging.DEBUG): # setup logger self.log = logging.getLogger(__name__) if not self.log.hasHandlers(): @@ -62,6 +62,9 @@ def __init__(self,nmlpath,tslist=None,verbosity=logging.DEBUG): self.set_defaults() self.generate_inputs() + self.wrfinput = wrfinput + self.get_map_info() + if tslist is not None: self.tslist = TSList(tslist) else: @@ -394,12 +397,36 @@ def generate_inputs(self): self.input_dict = inp - def process_initial_conditions(self,init_input='wrfinput_d01', + def get_map_info(self,init_input=None): + if init_input is None: + init_input = self.wrfinput + if init_input is None: + self.cen_lat = None + self.cen_lon = None + self.truelat1 = None + self.truelat2 = None + self.moad_cen_lat = None + self.stand_lon = None + self.map_proj = None + return + + inp = xr.open_dataset(init_input) + self.cen_lat = inp.attrs['CEN_LAT'] + self.cen_lon = inp.attrs['CEN_LON'] + self.truelat1 = inp.attrs['TRUELAT1'] # standard parallels + self.truelat2 = inp.attrs['TRUELAT2'] + self.moad_cen_lat = inp.attrs['MOAD_CEN_LAT'] # "mother of all domains" + self.stand_lon = inp.attrs['STAND_LON'] + self.map_proj = inp.attrs['MAP_PROJ_CHAR'] + + def process_initial_conditions(self,init_input=None, calc_geopotential_heights=False, landuse_table_path=None, write_hgt=None, write_z0=None, write_albedo=None): + if init_input is None: + init_input = self.wrfinput wrfinp = xr.open_dataset(init_input) idx = init_input.index('_d') From c194e4e178d0bcc8a374ca841d621a1888d36b63 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Fri, 19 Sep 2025 13:33:51 -0600 Subject: [PATCH 48/49] Split console script into separate interp_ozone function; call to update erf.o3vmr --- erftools/inputs.py | 2 +- erftools/wrf/inputdeck.py | 13 +++++++++--- erftools/wrf/rad.py | 42 +++++++++++++++++++++++++++------------ 3 files changed, 40 insertions(+), 17 deletions(-) diff --git a/erftools/inputs.py b/erftools/inputs.py index 2e6b44b..0fcc895 100644 --- a/erftools/inputs.py +++ b/erftools/inputs.py @@ -475,7 +475,7 @@ def write(self,fpath=None): erf.rad_write_fluxes = {bool_to_str(self.erf.rad_write_fluxes)} erf.co2vmr = {self.erf.co2vmr} """) - if isinstance(self.erf.o3vmr, list): + if isinstance(self.erf.o3vmr, (list,np.ndarray)): f.write(f'erf.o3vmr = {list_to_str(self.erf.o3vmr)}') else: f.write(f'erf.o3vmr = {self.erf.o3vmr}') diff --git a/erftools/wrf/inputdeck.py b/erftools/wrf/inputdeck.py index 1dac19d..166915a 100644 --- a/erftools/wrf/inputdeck.py +++ b/erftools/wrf/inputdeck.py @@ -17,6 +17,7 @@ from .namelist.tslist import TSList from .landuse import LandUseTable from .real import RealInit, get_zlevels_auto +from .rad import interp_ozone from ..constants import CONST_GRAV, p_0 from ..inputs import ERFInputs @@ -582,16 +583,22 @@ def alfun(idx): os.path.split(write_albedo)[1] def to_erf(self): + inp = ERFInputs(**self.input_dict) + + if self.cen_lat: + inp.erf.o3vmr = interp_ozone(inp, self.cen_lat) + if self.tslist: if self.tslist.have_ij: nz = self.input_dict['amr.n_cell'][2] lo_ijk, hi_ijk = self.tslist.get_ijk_lists(nz) - self.input_dict['erf.sample_line_lo'] = lo_ijk - self.input_dict['erf.sample_line_hi'] = hi_ijk + inp.erf.sample_line_lo = lo_ijk + inp.erf.sample_line_hi = hi_ijk else: self.log.info('A tslist was provided but lat,lon were not ' 'converted to i,j') - return ERFInputs(**self.input_dict) + + return inp def write_inputfile(self,fpath): inp = self.to_erf() diff --git a/erftools/wrf/rad.py b/erftools/wrf/rad.py index 64a0294..be94ffa 100644 --- a/erftools/wrf/rad.py +++ b/erftools/wrf/rad.py @@ -78,39 +78,55 @@ def interp_from_monthly_to_date_heights(xdata,dt,heights,**kwargs): return interp_data -@click.command() -@click.argument('inputfile', type=click.Path(writable=True)) -@click.option('--latitude', type=click.FloatRange(-90,90), - required=True) -@click.option('--dataset', default='CAM', - help='Name of O3 dataset [default=CAM]') -def generate_ozone_profile(inputfile, latitude, dataset): +def interp_ozone(inp, latitude, dataset='CAM', verbose=False): """Interpolate from climatological O3 data to the starting datetime and height levels from the ERF inputfile. + `inp` may be an input file or an ERFInputs object + Ozone datasets are stored in erftools/data/ozone_*.nc """ dataname = f'ozone_{dataset}.nc' with resources.files('erftools.data').joinpath(dataname) as fpath: ds = xr.load_dataset(fpath) - inp = ERFInputs(inputfile) date = inp.start_datetime if date is None: raise ValueError(f'start_date not found in {inputfile}') - print('Interpolating to',date) + if verbose: + print('Interpolating to',date) heights = get_zcc(inp) - print('Model heights:',heights) + if verbose: + print('Model heights:',heights) plevels = est_p(heights) - print('Standard pressure levels:',plevels) + if verbose: + print('Standard pressure levels:',plevels) ds = ds.interp(lat=latitude) interpdata = interp_from_monthly_to_date_heights(ds, date, heights) - print('O3 [ppbv]: ', interpdata['o3vmr'].values / 1e-9) + if verbose: + print('O3 [ppbv]: ', interpdata['o3vmr'].values / 1e-9) + + return interpdata['o3vmr'].values + + +@click.command() +@click.argument('inputfile', type=click.Path(writable=True)) +@click.option('--latitude', type=click.FloatRange(-90,90), + required=True) +@click.option('--dataset', default='CAM', + help='Name of O3 dataset [default=CAM]') +def generate_ozone_profile(inputfile, latitude, dataset): + """Interpolate from climatological O3 data to the starting datetime + and height levels from the ERF inputfile. - erfstr = str(interpdata['o3vmr'].values).lstrip('[').rstrip(']') + Ozone datasets are stored in erftools/data/ozone_*.nc + """ + inp = ERFInputs(inputfile) + o3vmr = interp_ozone(inp, latitude, dataset, verbose=True) + erfstr = str(o3vmr).lstrip('[').rstrip(']') print('erf.o3vmr = ', erfstr) ''' From 4ab6ab41bb731846d5af3358a06c76269ffff0d7 Mon Sep 17 00:00:00 2001 From: Eliot Quon Date: Fri, 19 Sep 2025 13:45:34 -0600 Subject: [PATCH 49/49] Automatically calculate O3 profile --- erftools/wrf/inputdeck.py | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/erftools/wrf/inputdeck.py b/erftools/wrf/inputdeck.py index 166915a..ac60739 100644 --- a/erftools/wrf/inputdeck.py +++ b/erftools/wrf/inputdeck.py @@ -585,8 +585,13 @@ def alfun(idx): def to_erf(self): inp = ERFInputs(**self.input_dict) - if self.cen_lat: - inp.erf.o3vmr = interp_ozone(inp, self.cen_lat) + if inp.erf.radiation_model != 'None': + if self.cen_lat: + inp.erf.o3vmr = interp_ozone(inp, self.cen_lat) + else: + self.log.warning('Using a radiation model with a constant for ' + 'the entire column; need to set `cen_lat`, ' + 'e.g. by providing a wrfinput file') if self.tslist: if self.tslist.have_ij: @@ -625,12 +630,18 @@ def write_ascii_table(fpath, xyz, names=None): @click.command() @click.argument('namelist_input', type=click.Path(exists=True, readable=True)) @click.argument('erf_input', type=click.Path(writable=True), required=False, - default='input') + default='inputs') +@click.option('--init', + type=click.Path(exists=True, readable=True), + help='Path to a wrfinput_d01 file to provide additional ' + 'information about the simulation setup (optional)', + required=False) @click.option('--tslist', type=click.Path(exists=True, readable=True), - help='tslist file to convert to line sampling inputs for ERF (optional)', + help='Path to a tslist file to convert into line sampling ' + 'inputs for ERF (optional)', required=False) -def wrf_namelist_to_erf(namelist_input, erf_input, tslist=None): - """Convert a WRF namelist.input to an ERF input file""" - wrf = WRFInputDeck(namelist_input, tslist=tslist) +def wrf_namelist_to_erf(namelist_input, erf_input, init=None, tslist=None): + """Convert a WRF namelist.input into an ERF input file""" + wrf = WRFInputDeck(namelist_input, wrfinput=init, tslist=tslist) wrf.write_inputfile(erf_input)