From 9bc025a2a0faf6c81ae400d7be58174731ac7a3a Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Fri, 22 Sep 2023 16:58:58 -0500 Subject: [PATCH 01/23] Migrate sphere_transport test to tasks --- .../ocean/tasks/sphere_transport/__init__.py | 204 ++++++++++++++++++ .../ocean/tasks/sphere_transport/forward.py | 115 ++++++++++ .../ocean/tasks/sphere_transport/forward.yaml | 65 ++++++ polaris/ocean/tasks/sphere_transport/init.py | 132 ++++++++++++ .../sphere_transport/resources/__init__.py | 0 .../sphere_transport/resources/flow_types.py | 45 ++++ .../resources/tracer_distributions.py | 68 ++++++ .../tasks/sphere_transport/resources/utils.py | 49 +++++ .../resources/wh-bl-gr-ye-re.rgb | 202 +++++++++++++++++ .../sphere_transport/sphere_transport.cfg | 44 ++++ polaris/ocean/tasks/sphere_transport/viz.py | 138 ++++++++++++ 11 files changed, 1062 insertions(+) create mode 100644 polaris/ocean/tasks/sphere_transport/__init__.py create mode 100644 polaris/ocean/tasks/sphere_transport/forward.py create mode 100644 polaris/ocean/tasks/sphere_transport/forward.yaml create mode 100644 polaris/ocean/tasks/sphere_transport/init.py create mode 100644 polaris/ocean/tasks/sphere_transport/resources/__init__.py create mode 100644 polaris/ocean/tasks/sphere_transport/resources/flow_types.py create mode 100644 polaris/ocean/tasks/sphere_transport/resources/tracer_distributions.py create mode 100644 polaris/ocean/tasks/sphere_transport/resources/utils.py create mode 100644 polaris/ocean/tasks/sphere_transport/resources/wh-bl-gr-ye-re.rgb create mode 100644 polaris/ocean/tasks/sphere_transport/sphere_transport.cfg create mode 100644 polaris/ocean/tasks/sphere_transport/viz.py diff --git a/polaris/ocean/tasks/sphere_transport/__init__.py b/polaris/ocean/tasks/sphere_transport/__init__.py new file mode 100644 index 000000000..6df294c32 --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/__init__.py @@ -0,0 +1,204 @@ +from polaris import Task +from polaris.config import PolarisConfigParser +from polaris.ocean.mesh.spherical import add_spherical_base_mesh_step +from polaris.ocean.tasks.sphere_transport.convergence import ( + Convergence, + ConvergenceViz, +) +from polaris.ocean.tasks.sphere_transport.forward import Forward +from polaris.ocean.tasks.sphere_transport.init import Init +from polaris.ocean.tasks.sphere_transport.viz import Viz, VizMap +from polaris.ocean.tests.sphere_transport.sphere_transport_test_case import ( + SphereTransportTestCase, +) + + +def add_sphere_transport_tasks(component): + """ + Add tasks that define variants of the cosine bell test case + + component : polaris.ocean.Ocean + the ocean component that the tasks will be added to + """ + + for case_name in ['rotation_2d', 'nondivergent_2d', 'divergent_2d', + 'correlated_tracers_2d']: + for include_viz in [False, True]: + component.add_task(SphereTransport( + component=component, case_name=case_name, icosahedral=True, + include_viz=include_viz)) + + +class SphereTransport(Task): + """ + A test case for testing properties of tracer advection + + Attributes + ---------- + resolutions : list of int + A list of mesh resolutions + + icosahedral : bool + Whether to use icosahedral, as opposed to less regular, JIGSAW meshes + + include_viz : bool + Include VizMap and Viz steps for each resolution + """ + def __init__(self, component, case_name, icosahedral, include_viz): + """ + Create test case for creating a global MPAS-Ocean mesh + + Parameters + ---------- + component : polaris.ocean.Ocean + The ocean component that this task belongs to + + case_name: string + The name of the case which determines what variant of the + configuration to use + + icosahedral : bool + Whether to use icosahedral, as opposed to less regular, JIGSAW + meshes + + include_viz : bool + Include VizMap and Viz steps for each resolution + """ + if icosahedral: + subdir = 'spherical/icos/sphere_transport' + else: + subdir = 'spherical/qu/sphere_transport' + if include_viz: + subdir = f'{subdir}/with_viz' + super().__init__(component=component, name='sphere_transport', + subdir=subdir) + self.resolutions = list() + self.icosahedral = icosahedral + self.case_name = case_name + self.include_viz = include_viz + + # add the steps with default resolutions so they can be listed + config = PolarisConfigParser() + package = 'polaris.ocean.tasks.sphere_transport' + config.add_from_package(package, f'{case_name}.cfg') + self._setup_steps(config) + + def configure(self): + """ + Set config options for the test case + """ + super().configure() + config = self.config + config.add_from_package('polaris.mesh', 'mesh.cfg') + + # set up the steps again in case a user has provided new resolutions + self._setup_steps(config) + + def _setup_steps(self, config): + """ setup steps given resolutions """ + if self.icosahedral: + default_resolutions = '60, 120, 240, 480' + else: + default_resolutions = '60, 90, 120, 150, 180, 210, 240' + + # set the default values that a user may change before setup + config.set('sphere_transport', 'resolutions', default_resolutions, + comment='a list of resolutions (km) to test') + + # get the resolutions back, perhaps with values set in the user's + # config file, which takes priority over what we just set above + resolutions = config.getlist('sphere_transport', 'resolutions', + dtype=int) + + if self.resolutions == resolutions: + return + + # start fresh with no steps + for step in list(self.steps.values()): + self.remove_step(step) + + self.resolutions = resolutions + + component = self.component + icosahedral = self.icosahedral + case_name = self.case_name + if icosahedral: + prefix = 'icos' + else: + prefix = 'qu' + + for resolution in resolutions: + base_mesh, mesh_name = add_spherical_base_mesh_step( + component, resolution, icosahedral) + self.add_step(base_mesh, symlink=f'base_mesh/{mesh_name}') + + sph_trans_dir = f'spherical/{prefix}/sphere_transport/{case_name}' + + name = f'{prefix}_init_{mesh_name}' + subdir = f'{sph_trans_dir}/init/{mesh_name}' + if self.include_viz: + symlink = f'init/{mesh_name}' + else: + symlink = None + if subdir in component.steps: + step = component.steps[subdir] + else: + step = Init(component=component, name=name, subdir=subdir, + mesh_name=mesh_name, case_name=case_name) + self.add_step(step, symlink=symlink) + + name = f'{prefix}_forward_{mesh_name}' + subdir = f'{sph_trans_dir}/forward/{mesh_name}' + if self.include_viz: + symlink = f'forward/{mesh_name}' + else: + symlink = None + if subdir in component.steps: + step = component.steps[subdir] + else: + step = Forward(component=component, name=name, + subdir=subdir, resolution=resolution, + mesh_name=mesh_name, case_name=case_name) + self.add_step(step, symlink=symlink) + + if self.include_viz: + with_viz_dir = f'spherical/{prefix}/sphere_transport/with_viz' + + name = f'{prefix}_map_{mesh_name}' + subdir = f'{with_viz_dir}/map/{mesh_name}' + viz_map = VizMap(component=component, name=name, + subdir=subdir, mesh_name=mesh_name) + self.add_step(viz_map) + + name = f'{prefix}_viz_{mesh_name}' + subdir = f'{with_viz_dir}/viz/{mesh_name}' + step = Viz(component=component, name=name, + subdir=subdir, viz_map=viz_map, + mesh_name=mesh_name) + self.add_step(step) + + subdir = f'spherical/{prefix}/sphere_transport/convergence' + if self.include_viz: + symlink = 'convergence' + else: + symlink = None + if subdir in component.steps: + step = component.steps[subdir] + else: + convergence = Convergence(component=component, test_case=self, + resolutions=resolutions) + self.add_step(convergence, symlink=symlink) + + subdir = f'spherical/{prefix}/sphere_transport/convergence' + if self.include_viz: + symlink = 'convergence' + else: + symlink = None + if subdir in component.steps: + step = component.steps[subdir] + else: + step = ConvergenceViz(component=component, + test_case=self, + resolutions=resolutions, + convergence=convergence) + self.add_step(step, symlink=symlink) diff --git a/polaris/ocean/tasks/sphere_transport/forward.py b/polaris/ocean/tasks/sphere_transport/forward.py new file mode 100644 index 000000000..35144a198 --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/forward.py @@ -0,0 +1,115 @@ +import time + +from polaris.ocean.model import OceanModelStep + + +class Forward(OceanModelStep): + """ + A step for performing forward ocean component runs as part of the sphere + transport test case + + Attributes + ---------- + resolution : int + The resolution of the (uniform) mesh in km + + mesh_name : str + The name of the mesh + """ + + def __init__(self, component, name, subdir, resolution, mesh_name, + case_name): + """ + Create a new step + + Parameters + ---------- + component : polaris.Component + The component the step belongs to + + name : str + The name of the step + + subdir : str + The subdirectory for the step + + resolution : int + The resolution of the (uniform) mesh in km + + mesh_name : str + The name of the mesh + """ + super().__init__(component=component, name=name, subdir=subdir, + openmp_threads=1) + + self.resolution = resolution + self.mesh_name = mesh_name + self.case_name = case_name + + # make sure output is double precision + self.add_yaml_file('polaris.ocean.config', 'output.yaml') + self.add_yaml_file( + 'polaris.ocean.tasks.cosine_bell', + 'forward.yaml') + flow_id = {'rotation_2d': 1, + 'nondivergent_2d': 2, + 'divergent_2d': 3, + 'correlated_tracers_2d': 4} + self.add_model_config_options( + options=dict( + config_transport_tests_flow_id=flow_id[case_name])) + + self.add_input_file( + filename='init.nc', + target=f'../../init/{mesh_name}/initial_state.nc') + self.add_input_file( + filename='graph.info', + target=f'../../../base_mesh/{mesh_name}/graph.info') + + self.add_output_file(filename='output.nc', + validate_vars=['normalVelocity', 'tracer1']) + + def compute_cell_count(self): + """ + Compute the approximate number of cells in the mesh, used to constrain + resources + + Returns + ------- + cell_count : int or None + The approximate number of cells in the mesh + """ + # use a heuristic based on QU30 (65275 cells) and QU240 (10383 cells) + cell_count = 6e8 / self.resolution**2 + return cell_count + + def dynamic_model_config(self, at_setup): + """ + Set the model time step from config options at setup and runtime + + Parameters + ---------- + at_setup : bool + Whether this method is being run during setup of the step, as + opposed to at runtime + """ + super().dynamic_model_config(at_setup=at_setup) + + config = self.config + + vert_levels = config.getfloat('vertical_grid', 'vert_levels') + if not at_setup and vert_levels == 1: + self.add_yaml_file('polaris.ocean.config', 'single_layer.yaml') + self.add_yaml_file( + 'polaris.ocean.tasks.cosine_bell', + 'forward.yaml') + + # dt is proportional to resolution: default 30 seconds per km + dt_per_km = config.getfloat('cosine_bell', 'dt_per_km') + + dt = dt_per_km * self.resolution + # https://stackoverflow.com/a/1384565/7728169 + dt_str = time.strftime('%H:%M:%S', time.gmtime(dt)) + + options = dict(config_dt=dt_str) + self.add_model_config_options(options) diff --git a/polaris/ocean/tasks/sphere_transport/forward.yaml b/polaris/ocean/tasks/sphere_transport/forward.yaml new file mode 100644 index 000000000..f72c034c7 --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/forward.yaml @@ -0,0 +1,65 @@ +omega: + run_modes: + config_ocean_run_mode: forward + time_management: + config_run_duration: 0024_00:00:00 + decomposition: + config_block_decomp_file_prefix: graph.info.part. + time_integration: + config_time_integrator: RK4 + debug: + config_disable_thick_all_tend: true + config_disable_thick_hadv: true + config_disable_thick_vadv: true + config_disable_thick_sflux: true + config_disable_vel_all_tend: true + config_disable_vel_coriolis: true + config_disable_vel_pgrad: true + config_disable_vel_hmix: true + config_disable_vel_surface_stress: true + config_disable_vel_explicit_bottom_drag: true + config_disable_vel_vmix: true + config_disable_vel_vadv: true + config_disable_tr_hmix: true + config_disable_tr_vmix: true + config_disable_tr_sflux: true + config_disable_tr_nonlocalflux: true + config_check_ssh_consistency: false + config_disable_tr_all_tend: false + eos: + config_eos_type: linear + forcing: + config_use_bulk_wind_stress: false + config_use_bulk_thickness_flux: false + tracer_forcing_activeTracers: + config_use_activeTracers_surface_restoring: false + config_use_activeTracers_interior_restoring: false + config_use_activeTracers: true + config_use_activeTracers_surface_bulk_forcing: false + tracer_forcing_debugTracers: + config_use_debugTracers: true + AM_mixedLayerDepths: + config_AM_mixedLayerDepths_enable: false + streams: + mesh: + filename_template: init.nc + input: + filename_template: init.nc + restart: + output_interval: 0030_00:00:00 + output: + type: output + filename_template: output.nc + output_interval: 0024_00:00:00 + clobber_mode: truncate + reference_time: 0001-01-01_00:00:00 + contents: + - tracers + - mesh + - xtime + - normalVelocity + - layerThickness + - refZMid + - refLayerThickness + - kineticEnergyCell + - relativeVorticityCell diff --git a/polaris/ocean/tasks/sphere_transport/init.py b/polaris/ocean/tasks/sphere_transport/init.py new file mode 100644 index 000000000..91c0ec86a --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/init.py @@ -0,0 +1,132 @@ +import numpy as np +import xarray as xr +from mpas_tools.io import write_netcdf + +from polaris import Step +from polaris.ocean.tasks.sphere_transport.resources.flow_types import ( + flow_divergent, + flow_nondivergent, + flow_rotation, +) +from polaris.ocean.tasks.sphere_transport.resources.tracer_distributions import ( # noqa: E501 + cosine_bells, + slotted_cylinders, +) +from polaris.ocean.tasks.sphere_transport.resources.utils import ( + correlation_fn, + xyztrig, +) +from polaris.ocean.vertical import init_vertical_coord + + +class Init(Step): + """ + A step for an initial condition for for the cosine bell test case + """ + def __init__(self, component, name, subdir, mesh_name, case_name): + """ + Create the step + + Parameters + ---------- + component : polaris.Component + The component the step belongs to + + name : str + The name of the step + + subdir : str + The subdirectory for the step + + mesh_name : str + The name of the mesh + """ + super().__init__(component=component, name=name, subdir=subdir) + + self.case_name = case_name + self.add_input_file( + filename='mesh.nc', + target=f'../../../base_mesh/{mesh_name}/base_mesh.nc') + + self.add_input_file( + filename='graph.info', + target=f'../../../base_mesh/{mesh_name}/graph.info') + + self.add_output_file(filename='initial_state.nc') + + def run(self): + """ + Run this step of the task + """ + config = self.config + case_name = self.case_name + + section = config['sphere_transport'] + temperature = section.getfloat('temperature') + salinity = section.getfloat('salinity') + + section = config['vertical_grid'] + bottom_depth = section.getfloat('bottom_depth') + + ds_mesh = xr.open_dataset('mesh.nc') + angleEdge = ds_mesh.angleEdge + latCell = ds_mesh.latCell + latEdge = ds_mesh.latEdge + lonCell = ds_mesh.lonCell + lonEdge = ds_mesh.lonEdge + sphere_radius = ds_mesh.sphere_radius + + ds = ds_mesh.copy() + + ds['bottomDepth'] = bottom_depth * xr.ones_like(latCell) + ds['ssh'] = xr.zeros_like(latCell) + + init_vertical_coord(config, ds) + + temperature_array = temperature * xr.ones_like(latCell) + temperature_array, _ = xr.broadcast(temperature_array, ds.refZMid) + ds['temperature'] = temperature_array.expand_dims(dim='Time', axis=0) + ds['salinity'] = salinity * xr.ones_like(ds.temperature) + + tracer1 = xyztrig(lonCell, latCell) + tracer2 = cosine_bells(lonCell, latCell) + if case_name == 'correlated_tracers_2d': + tracer3 = correlation_fn(tracer2) + else: + tracer3 = slotted_cylinders(lonCell, latCell) + _, tracer1_array = np.meshgrid(ds.refZMid.values, tracer1) + _, tracer2_array = np.meshgrid(ds.refZMid.values, tracer2) + _, tracer3_array = np.meshgrid(ds.refZMid.values, tracer3) + + ds['tracer1'] = (('nCells', 'nVertLevels',), tracer1_array) + ds['tracer1'] = ds.tracer1.expand_dims(dim='Time', axis=0) + ds['tracer2'] = (('nCells', 'nVertLevels',), tracer2_array) + ds['tracer2'] = ds.tracer2.expand_dims(dim='Time', axis=0) + ds['tracer3'] = (('nCells', 'nVertLevels',), tracer3_array) + ds['tracer3'] = ds.tracer3.expand_dims(dim='Time', axis=0) + + # Initialize velocity + if case_name == 'rotation_2d': + u, v = flow_rotation(lonEdge, latEdge) + elif case_name == 'divergent_2d': + u, v = flow_divergent(0., lonEdge, latEdge) + elif (case_name == 'nondivergent_2d' or + case_name == 'correlated_tracers_2d'): + u, v = flow_nondivergent(0., lonEdge, latEdge) + else: + raise ValueError(f'Unexpected test case name {case_name}') + + normalVelocity = sphere_radius * (u * np.cos(angleEdge) + + v * np.sin(angleEdge)) + normalVelocity, _ = xr.broadcast(normalVelocity, ds.refZMid) + ds['normalVelocity'] = normalVelocity.expand_dims(dim='Time', axis=0) + + ds['fCell'] = xr.zeros_like(ds_mesh.xCell) + ds['fEdge'] = xr.zeros_like(ds_mesh.xEdge) + ds['fVertex'] = xr.zeros_like(ds_mesh.xVertex) + + write_netcdf(ds, 'initial_state.nc') + + +def cosine_bell(max_value, ri, r): + return max_value / 2.0 * (1.0 + np.cos(np.pi * np.divide(ri, r))) diff --git a/polaris/ocean/tasks/sphere_transport/resources/__init__.py b/polaris/ocean/tasks/sphere_transport/resources/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/polaris/ocean/tasks/sphere_transport/resources/flow_types.py b/polaris/ocean/tasks/sphere_transport/resources/flow_types.py new file mode 100644 index 000000000..fd196c0de --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/resources/flow_types.py @@ -0,0 +1,45 @@ +import numpy as np +from numpy import cos, pi, sin + +from polaris.ocean.tasks.sphere_transport.resources.utils import ( + calc_local_east_north, + lonlat2xyz, +) + + +def flow_nondivergent(t, lon, lat): + s_day = 3600. * 24. + twelve_days = s_day * 12. + lon_p = lon - 2. * pi * t / twelve_days + coslat = cos(lat) + cost = cos(pi * t / twelve_days) + u = (1 / twelve_days) * (10 * (sin(lon_p)**2) * sin(2 * lat) * cost + + 2. * pi * coslat) + v = (10 / twelve_days) * sin(2 * lon_p) * coslat * cost + return u, v + + +def flow_divergent(t, lon, lat): + s_day = 3600. * 24. + twelve_days = 12. * s_day + lon_p = lon - 2. * pi * t / twelve_days + coslat = cos(lat) + cost = cos(pi * t / twelve_days) + u = (1 / twelve_days) * (-5 * (sin(lon_p / 2)**2) * sin(2 * lat) * + (coslat**2) * cost + 2. * pi * coslat) + v = (2.5 / twelve_days) * sin(lon_p) * (coslat**3) * cost + return u, v + + +def flow_rotation(lon, lat): + s_day = 3600. * 24. + twelve_days = 12. * s_day + Omega = np.array([0.2, 0.7, 1.0]) # Constant rotation vector + Omega = (2. * pi / twelve_days) * (Omega / np.linalg.norm(Omega)) + x, y, z = lonlat2xyz(lon, lat) + xyz = np.stack((x, y, z), axis=1) + vel = np.cross(Omega, np.transpose(xyz), axis=0) + east, north = calc_local_east_north(x, y, z) + u = np.sum(vel * east, axis=0) + v = np.sum(vel * north, axis=0) + return u, v diff --git a/polaris/ocean/tasks/sphere_transport/resources/tracer_distributions.py b/polaris/ocean/tasks/sphere_transport/resources/tracer_distributions.py new file mode 100644 index 000000000..2c2a632b9 --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/resources/tracer_distributions.py @@ -0,0 +1,68 @@ +import numpy as np + +from polaris.ocean.tasks.sphere_transport.resources.utils import ( + cosine_bell, + great_circle_dist_xyz, + lonlat2xyz, +) + + +# Lauritzen et al. 2012 eqn. (12) +def slotted_cylinders(lon, lat): + b = 0.1 + c = 1. + R = 1. + Rh = R / 2 + lon_thr = Rh / (6 * R) + lat_thr = 5 * (Rh / (12 * R)) + lon1 = 5 * (np.pi / 6) + lat1 = 0 + lon2 = -5 * (np.pi / 6) + lat2 = 0 + x, y, z = lonlat2xyz(lon, lat) + lon0 = np.where(lon > np.pi, + lon - 2 * np.pi, + lon) + x1, y1, z1 = lonlat2xyz(lon1, lat1) + x2, y2, z2 = lonlat2xyz(lon2, lat2) + r1 = great_circle_dist_xyz(x, y, z, x1, y1, z1) + r2 = great_circle_dist_xyz(x, y, z, x2, y2, z2) + scs = np.where(r1 <= Rh, + np.where(np.logical_or((abs(lon0 - lon1) >= lon_thr), + np.logical_and( + abs(lon0 - lon1) < lon_thr, + lat - lat1 < -lat_thr)), + c, + b), + np.where(np.logical_and(r2 <= Rh, + np.logical_or( + (abs(lon0 - lon2) >= lon_thr), + np.logical_and( + abs(lon0 - lon2) < lon_thr, + lat - lat2 > lat_thr))), + c, + b)) + return scs + + +# Lauritzen et al. 2012 eqn. (11) +def cosine_bells(lon, lat): + r = 0.5 + b = 0.1 + c = 0.9 + lon1 = 5 * (np.pi / 6) + lat1 = 0 + lon2 = -5 * (np.pi / 6) + lat2 = 0 + x, y, z = lonlat2xyz(lon, lat) + x1, y1, z1 = lonlat2xyz(lon1, lat1) + x2, y2, z2 = lonlat2xyz(lon2, lat2) + # TODO compare with distance_from_center + r1 = great_circle_dist_xyz(x, y, z, x1, y1, z1) + r2 = great_circle_dist_xyz(x, y, z, x2, y2, z2) + cbs = np.where(r1 < r, + cosine_bell(r1, r), + np.where(r2 < r, + cosine_bell(r2, r), + 0.)) + return b + c * cbs diff --git a/polaris/ocean/tasks/sphere_transport/resources/utils.py b/polaris/ocean/tasks/sphere_transport/resources/utils.py new file mode 100644 index 000000000..579bd5060 --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/resources/utils.py @@ -0,0 +1,49 @@ +import numpy as np +from numpy import arctan2, cos, pi, sin, sqrt + + +def calc_local_east_north(x, y, z): + axis = [0, 0, 1] + xyz = np.stack((x, y, z), axis=1) + east = np.cross(axis, np.transpose(xyz), axis=0) + north = np.cross(np.transpose(xyz), east, axis=0) + east = east / np.linalg.norm(east, axis=0) + north = north / np.linalg.norm(north, axis=0) + return east, north + + +# Lauritzen et al. 2012 does not have a global C-infty tracer; we add this one. +def xyztrig(lon, lat): + x, y, z = lonlat2xyz(lon, lat) + f = 0.5 * (1 + sin(pi * x) * sin(pi * y) * sin(pi * z)) + return f + + +# Lauritzen et al. 2012 eqn. (10) +# TODO edit so that it is flexible with cosine_bell task +def cosine_bell(ri, r): + return 0.5 * (1 + cos(pi * ri / r)) + + +# Lauritzen et al. 2012 eqns. (14) and (15) +def correlation_fn(q1): + q2 = -0.8 * q1**2. + 0.9 + return q2 + + +def lonlat2xyz(lon, lat): + x = cos(lon) * cos(lat) + y = sin(lon) * cos(lat) + z = sin(lat) + return x, y, z + + +# TODO: Does this fn need radius, or is it always just used for arc length? +def great_circle_dist_xyz(xA, yA, zA, xB, yB, zB): + cp1 = yA * zB - yB * zA + cp2 = xB * zA - xA * zB + cp3 = xA * yB - xB * yA + cpnorm = sqrt(cp1 * cp1 + cp2 * cp2 + cp3 * cp3) + dotprod = xA * xB + yA * yB + zA * zB + dist = arctan2(cpnorm, dotprod) + return dist diff --git a/polaris/ocean/tasks/sphere_transport/resources/wh-bl-gr-ye-re.rgb b/polaris/ocean/tasks/sphere_transport/resources/wh-bl-gr-ye-re.rgb new file mode 100644 index 000000000..d3d0950a1 --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/resources/wh-bl-gr-ye-re.rgb @@ -0,0 +1,202 @@ +ncolors= 199 + +# r g b + 255 255 255 + 250 250 255 + 245 245 255 + 240 240 255 + 235 235 255 + 230 230 255 + 224 224 255 + 219 219 255 + 214 214 255 + 209 209 255 + 204 204 255 + 199 199 255 + 194 194 255 + 189 189 255 + 184 184 255 + 179 179 255 + 173 173 255 + 168 168 255 + 163 163 255 + 158 158 255 + 153 153 255 + 148 148 255 + 143 143 255 + 138 138 255 + 133 133 255 + 128 128 255 + 122 122 255 + 117 117 255 + 112 112 255 + 107 107 255 + 102 102 255 + 97 97 255 + 92 92 255 + 87 87 255 + 82 82 255 + 77 77 255 + 71 71 255 + 66 66 255 + 61 61 255 + 56 56 255 + 51 51 255 + 46 46 255 + 41 41 255 + 36 36 255 + 31 31 255 + 26 26 255 + 20 20 255 + 15 15 255 + 10 10 255 + 5 5 255 + 0 0 255 + 0 4 250 + 0 7 245 + 0 11 240 + 1 15 235 + 1 18 231 + 1 22 226 + 1 26 221 + 1 29 216 + 1 33 211 + 2 37 206 + 2 40 201 + 2 44 196 + 2 47 191 + 2 51 186 + 2 55 182 + 3 58 177 + 3 62 172 + 3 66 167 + 3 69 162 + 3 73 157 + 3 77 152 + 4 80 147 + 4 84 142 + 4 88 137 + 4 91 133 + 4 95 128 + 4 99 123 + 5 102 118 + 5 106 113 + 5 110 108 + 5 113 103 + 5 117 98 + 5 121 93 + 6 124 88 + 6 128 84 + 6 132 79 + 6 135 74 + 6 139 69 + 6 142 64 + 7 146 59 + 7 150 54 + 7 153 49 + 7 157 44 + 7 161 39 + 7 164 35 + 8 168 30 + 8 172 25 + 8 175 20 + 8 179 15 + 13 181 15 + 18 182 14 + 23 184 14 + 28 185 14 + 33 187 14 + 38 188 13 + 43 190 13 + 48 191 13 + 52 193 12 + 57 194 12 + 62 196 12 + 67 197 11 + 72 199 11 + 77 200 11 + 82 202 11 + 87 203 10 + 92 205 10 + 97 206 10 + 102 208 9 + 107 209 9 + 112 211 9 + 117 212 8 + 122 214 8 + 127 215 8 + 132 217 8 + 136 219 7 + 141 220 7 + 146 222 7 + 151 223 6 + 156 225 6 + 161 226 6 + 166 228 5 + 171 229 5 + 176 231 5 + 181 232 5 + 186 234 4 + 191 235 4 + 196 237 4 + 201 238 3 + 206 240 3 + 211 241 3 + 215 243 2 + 220 244 2 + 225 246 2 + 230 247 2 + 235 249 1 + 240 250 1 + 245 252 1 + 250 253 0 + 255 255 0 + 255 250 0 + 255 245 0 + 255 239 0 + 255 234 0 + 255 229 0 + 255 224 0 + 255 219 0 + 255 213 0 + 255 208 0 + 255 203 0 + 255 198 0 + 255 193 0 + 255 187 0 + 255 182 0 + 255 177 0 + 255 172 0 + 255 167 0 + 255 161 0 + 255 156 0 + 255 151 0 + 255 146 0 + 255 141 0 + 255 135 0 + 255 130 0 + 255 125 0 + 255 120 0 + 255 114 0 + 255 109 0 + 255 104 0 + 255 99 0 + 255 94 0 + 255 88 0 + 255 83 0 + 255 78 0 + 255 73 0 + 255 68 0 + 255 62 0 + 255 57 0 + 255 52 0 + 255 47 0 + 255 42 0 + 255 36 0 + 255 31 0 + 255 26 0 + 255 21 0 + 255 16 0 + 255 10 0 + 255 5 0 + 255 0 0 diff --git a/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg b/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg new file mode 100644 index 000000000..e448138b8 --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg @@ -0,0 +1,44 @@ +# Options related to the vertical grid +[vertical_grid] + +# the type of vertical grid +grid_type = uniform + +# Number of vertical levels +vert_levels = 1 + +# Depth of the bottom of the ocean +bottom_depth = 300.0 + +# The type of vertical coordinate (e.g. z-level, z-star) +coord_type = z-level + +# Whether to use "partial" or "full", or "None" to not alter the topography +partial_cell_type = None + +# The minimum fraction of a layer for partial cells +min_pc_fraction = 0.1 + + +# options for visualization for the cosine bell convergence test case +[sphere_transport_viz] + +# visualization latitude and longitude resolution +dlon = 0.5 +dlat = 0.5 + +# remapping method ('bilinear', 'neareststod', 'conserve') +remap_method = conserve + +# colormap options +# colormap +colormap_name = viridis + +# the type of norm used in the colormap +norm_type = linear + +# A dictionary with keywords for the norm +norm_args = {'vmin': 0., 'vmax': 1.} + +# We could provide colorbar tick marks but we'll leave the defaults +# colorbar_ticks = np.linspace(0., 1., 9) diff --git a/polaris/ocean/tasks/sphere_transport/viz.py b/polaris/ocean/tasks/sphere_transport/viz.py new file mode 100644 index 000000000..2c17b6a37 --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/viz.py @@ -0,0 +1,138 @@ +import cmocean # noqa: F401 +import xarray as xr + +from polaris import Step +from polaris.remap import MappingFileStep +from polaris.viz.globe import plot_global + + +class VizMap(MappingFileStep): + """ + A step for making a mapping file for cosine bell viz + + Attributes + ---------- + mesh_name : str + The name of the mesh + """ + def __init__(self, component, name, subdir, mesh_name): + """ + Create the step + + Parameters + ---------- + component : polaris.Component + The component the step belongs to + + name : str + The name of the step + + subdir : str + The subdirectory for the step + + mesh_name : str + The name of the mesh + """ + super().__init__(component=component, name=name, subdir=subdir, + ntasks=128, min_tasks=1) + self.mesh_name = mesh_name + self.add_input_file( + filename='mesh.nc', + target=f'../../../../base_mesh/{mesh_name}/base_mesh.nc') + + def runtime_setup(self): + """ + Set up the source and destination grids for this step + """ + config = self.config + section = config['sphere_transport_viz'] + dlon = section.getfloat('dlon') + dlat = section.getfloat('dlat') + method = section.get('remap_method') + self.src_from_mpas(filename='mesh.nc', mesh_name=self.mesh_name) + self.dst_global_lon_lat(dlon=dlon, dlat=dlat, lon_min=0.) + self.method = method + + super().runtime_setup() + + +class Viz(Step): + """ + A step for plotting fields from sphere transport test cases + + Attributes + ---------- + mesh_name : str + The name of the mesh + """ + def __init__(self, component, name, subdir, viz_map, mesh_name): + """ + Create the step + + Parameters + ---------- + component : polaris.Component + The component the step belongs to + + name : str + The name of the step + + subdir : str + The subdirectory in the test case's work directory for the step + + viz_map : polaris.ocean.tasks.cosine_bell.viz.VizMap + The step for creating a mapping files, also used to remap data + from the MPAS mesh to a lon-lat grid + + mesh_name : str + The name of the mesh + """ + super().__init__(component=component, name=name, subdir=subdir) + self.add_input_file( + filename='mesh.nc', + target=f'../../../../base_mesh/{mesh_name}/base_mesh.nc') + self.add_input_file( + filename='initial_state.nc', + target=f'../../../init/{mesh_name}/initial_state.nc') + self.add_input_file( + filename='output.nc', + target=f'../../../forward/{mesh_name}/output.nc') + self.add_dependency(viz_map, name='viz_map') + self.mesh_name = mesh_name + self.add_output_file('init.png') + self.add_output_file('final.png') + + def run(self): + """ + Run this step of the test case + """ + config = self.config + mesh_name = self.mesh_name + period = config.getfloat('cosine_bell', 'vel_pd') + + viz_map = self.dependencies['viz_map'] + + remapper = viz_map.get_remapper() + + ds_init = xr.open_dataset('initial_state.nc') + ds_init = ds_init[['tracer1', ]].isel(Time=0, nVertLevels=0) + ds_init = remapper.remap(ds_init) + ds_init.to_netcdf('remapped_init.nc') + + plot_global(ds_init.lon.values, ds_init.lat.values, + ds_init.tracer1.values, + out_filename='init.png', config=config, + colormap_section='cosine_bell_viz', + title=f'{mesh_name} tracer at init', plot_land=False) + + ds_out = xr.open_dataset('output.nc') + ds_out = ds_out[['tracer1', ]].isel(Time=-1, nVertLevels=0) + ds_out = remapper.remap(ds_out) + ds_out.to_netcdf('remapped_final.nc') + + plot_global(ds_init.lon.values, ds_init.lat.values, + ds_out.tracer1.values, + out_filename='final.png', config=config, + colormap_section='cosine_bell_viz', + title=f'{mesh_name} tracer after {period} days', + plot_land=False) From c16db6cb0cc7b9b01730e646684f259b2243ff17 Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Mon, 25 Sep 2023 13:14:40 -0500 Subject: [PATCH 02/23] Update sphere transport yaml file --- .../ocean/tasks/sphere_transport/forward.yaml | 25 ++++++------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/polaris/ocean/tasks/sphere_transport/forward.yaml b/polaris/ocean/tasks/sphere_transport/forward.yaml index f72c034c7..c870f49aa 100644 --- a/polaris/ocean/tasks/sphere_transport/forward.yaml +++ b/polaris/ocean/tasks/sphere_transport/forward.yaml @@ -2,15 +2,15 @@ omega: run_modes: config_ocean_run_mode: forward time_management: - config_run_duration: 0024_00:00:00 + config_run_duration: {{ run_duration }} decomposition: config_block_decomp_file_prefix: graph.info.part. + advection: + config_vert_coord_movement: impermeable_interfaces time_integration: - config_time_integrator: RK4 + config_dt: {{ dt }} + config_time_integrator: {{ time_integrator }} debug: - config_disable_thick_all_tend: true - config_disable_thick_hadv: true - config_disable_thick_vadv: true config_disable_thick_sflux: true config_disable_vel_all_tend: true config_disable_vel_coriolis: true @@ -25,21 +25,12 @@ omega: config_disable_tr_sflux: true config_disable_tr_nonlocalflux: true config_check_ssh_consistency: false - config_disable_tr_all_tend: false + cvmix: + config_use_cvmix: false eos: config_eos_type: linear - forcing: - config_use_bulk_wind_stress: false - config_use_bulk_thickness_flux: false - tracer_forcing_activeTracers: - config_use_activeTracers_surface_restoring: false - config_use_activeTracers_interior_restoring: false - config_use_activeTracers: true - config_use_activeTracers_surface_bulk_forcing: false tracer_forcing_debugTracers: config_use_debugTracers: true - AM_mixedLayerDepths: - config_AM_mixedLayerDepths_enable: false streams: mesh: filename_template: init.nc @@ -50,7 +41,7 @@ omega: output: type: output filename_template: output.nc - output_interval: 0024_00:00:00 + output_interval: {{ output_interval }} clobber_mode: truncate reference_time: 0001-01-01_00:00:00 contents: From b7f693fd7ffd6cd218be43b1a3da7df676b0f25c Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Mon, 25 Sep 2023 18:45:22 -0500 Subject: [PATCH 03/23] Align sphere_tranport cases with spherical convergence --- .../ocean/tasks/sphere_transport/__init__.py | 119 ++-- .../ocean/tasks/sphere_transport/analysis.py | 530 ++++++++++++++++++ .../ocean/tasks/sphere_transport/forward.py | 107 +--- polaris/ocean/tasks/sphere_transport/init.py | 13 +- .../sphere_transport/sphere_transport.cfg | 42 +- polaris/ocean/tasks/sphere_transport/viz.py | 38 +- 6 files changed, 680 insertions(+), 169 deletions(-) create mode 100644 polaris/ocean/tasks/sphere_transport/analysis.py diff --git a/polaris/ocean/tasks/sphere_transport/__init__.py b/polaris/ocean/tasks/sphere_transport/__init__.py index 6df294c32..89486c351 100644 --- a/polaris/ocean/tasks/sphere_transport/__init__.py +++ b/polaris/ocean/tasks/sphere_transport/__init__.py @@ -1,16 +1,12 @@ -from polaris import Task +from typing import Dict + +from polaris import Step, Task from polaris.config import PolarisConfigParser from polaris.ocean.mesh.spherical import add_spherical_base_mesh_step -from polaris.ocean.tasks.sphere_transport.convergence import ( - Convergence, - ConvergenceViz, -) +from polaris.ocean.tasks.sphere_transport.analysis import Analysis from polaris.ocean.tasks.sphere_transport.forward import Forward from polaris.ocean.tasks.sphere_transport.init import Init from polaris.ocean.tasks.sphere_transport.viz import Viz, VizMap -from polaris.ocean.tests.sphere_transport.sphere_transport_test_case import ( - SphereTransportTestCase, -) def add_sphere_transport_tasks(component): @@ -35,7 +31,7 @@ class SphereTransport(Task): Attributes ---------- - resolutions : list of int + resolutions : list of float A list of mesh resolutions icosahedral : bool @@ -65,12 +61,12 @@ def __init__(self, component, case_name, icosahedral, include_viz): Include VizMap and Viz steps for each resolution """ if icosahedral: - subdir = 'spherical/icos/sphere_transport' + subdir = f'spherical/icos/{case_name}' else: - subdir = 'spherical/qu/sphere_transport' + subdir = f'spherical/qu/{case_name}' if include_viz: subdir = f'{subdir}/with_viz' - super().__init__(component=component, name='sphere_transport', + super().__init__(component=component, name=case_name, subdir=subdir) self.resolutions = list() self.icosahedral = icosahedral @@ -79,8 +75,8 @@ def __init__(self, component, case_name, icosahedral, include_viz): # add the steps with default resolutions so they can be listed config = PolarisConfigParser() - package = 'polaris.ocean.tasks.sphere_transport' - config.add_from_package(package, f'{case_name}.cfg') + config.add_from_package('polaris.ocean.convergence.spherical', + 'spherical.cfg') self._setup_steps(config) def configure(self): @@ -88,27 +84,29 @@ def configure(self): Set config options for the test case """ super().configure() + case_name = self.case_name config = self.config config.add_from_package('polaris.mesh', 'mesh.cfg') + config.add_from_package('polaris.ocean.convergence.spherical', + 'spherical.cfg') + package = 'polaris.ocean.tasks.sphere_transport' + config.add_from_package(package, 'sphere_transport.cfg') + config.add_from_package(package, f'{case_name}.cfg') # set up the steps again in case a user has provided new resolutions self._setup_steps(config) def _setup_steps(self, config): """ setup steps given resolutions """ - if self.icosahedral: - default_resolutions = '60, 120, 240, 480' + case_name = self.case_name + icosahedral = self.icosahedral + if icosahedral: + prefix = 'icos' else: - default_resolutions = '60, 90, 120, 150, 180, 210, 240' - - # set the default values that a user may change before setup - config.set('sphere_transport', 'resolutions', default_resolutions, - comment='a list of resolutions (km) to test') + prefix = 'qu' - # get the resolutions back, perhaps with values set in the user's - # config file, which takes priority over what we just set above - resolutions = config.getlist('sphere_transport', 'resolutions', - dtype=int) + resolutions = config.getlist('spherical_convergence', + f'{prefix}_resolutions', dtype=float) if self.resolutions == resolutions: return @@ -120,19 +118,16 @@ def _setup_steps(self, config): self.resolutions = resolutions component = self.component - icosahedral = self.icosahedral - case_name = self.case_name - if icosahedral: - prefix = 'icos' - else: - prefix = 'qu' + analysis_dependencies: Dict[str, Dict[str, Step]] = ( + dict(mesh=dict(), init=dict(), forward=dict())) for resolution in resolutions: - base_mesh, mesh_name = add_spherical_base_mesh_step( + base_mesh_step, mesh_name = add_spherical_base_mesh_step( component, resolution, icosahedral) - self.add_step(base_mesh, symlink=f'base_mesh/{mesh_name}') + self.add_step(base_mesh_step, symlink=f'base_mesh/{mesh_name}') + analysis_dependencies['mesh'][resolution] = base_mesh_step - sph_trans_dir = f'spherical/{prefix}/sphere_transport/{case_name}' + sph_trans_dir = f'spherical/{prefix}/{case_name}' name = f'{prefix}_init_{mesh_name}' subdir = f'{sph_trans_dir}/init/{mesh_name}' @@ -141,11 +136,12 @@ def _setup_steps(self, config): else: symlink = None if subdir in component.steps: - step = component.steps[subdir] + init_step = component.steps[subdir] else: - step = Init(component=component, name=name, subdir=subdir, - mesh_name=mesh_name, case_name=case_name) - self.add_step(step, symlink=symlink) + init_step = Init(component=component, name=name, subdir=subdir, + base_mesh=base_mesh_step, case_name=case_name) + self.add_step(init_step, symlink=symlink) + analysis_dependencies['init'][resolution] = init_step name = f'{prefix}_forward_{mesh_name}' subdir = f'{sph_trans_dir}/forward/{mesh_name}' @@ -154,51 +150,44 @@ def _setup_steps(self, config): else: symlink = None if subdir in component.steps: - step = component.steps[subdir] + forward_step = component.steps[subdir] else: - step = Forward(component=component, name=name, - subdir=subdir, resolution=resolution, - mesh_name=mesh_name, case_name=case_name) - self.add_step(step, symlink=symlink) + forward_step = Forward(component=component, name=name, + subdir=subdir, resolution=resolution, + base_mesh=base_mesh_step, + init=init_step, + case_name=case_name) + self.add_step(forward_step, symlink=symlink) + analysis_dependencies['forward'][resolution] = forward_step if self.include_viz: - with_viz_dir = f'spherical/{prefix}/sphere_transport/with_viz' + with_viz_dir = f'{sph_trans_dir}/with_viz' name = f'{prefix}_map_{mesh_name}' subdir = f'{with_viz_dir}/map/{mesh_name}' viz_map = VizMap(component=component, name=name, - subdir=subdir, mesh_name=mesh_name) + subdir=subdir, base_mesh=base_mesh_step, + mesh_name=mesh_name) self.add_step(viz_map) name = f'{prefix}_viz_{mesh_name}' subdir = f'{with_viz_dir}/viz/{mesh_name}' step = Viz(component=component, name=name, - subdir=subdir, viz_map=viz_map, - mesh_name=mesh_name) + subdir=subdir, base_mesh=base_mesh_step, + init=init_step, forward=forward_step, + viz_map=viz_map, mesh_name=mesh_name) self.add_step(step) - subdir = f'spherical/{prefix}/sphere_transport/convergence' - if self.include_viz: - symlink = 'convergence' - else: - symlink = None - if subdir in component.steps: - step = component.steps[subdir] - else: - convergence = Convergence(component=component, test_case=self, - resolutions=resolutions) - self.add_step(convergence, symlink=symlink) - - subdir = f'spherical/{prefix}/sphere_transport/convergence' + subdir = f'{sph_trans_dir}/analysis' if self.include_viz: - symlink = 'convergence' + symlink = 'analysis' else: symlink = None if subdir in component.steps: step = component.steps[subdir] else: - step = ConvergenceViz(component=component, - test_case=self, - resolutions=resolutions, - convergence=convergence) + step = Analysis(component=component, resolutions=resolutions, + icosahedral=icosahedral, subdir=subdir, + case_name=case_name, + dependencies=analysis_dependencies) self.add_step(step, symlink=symlink) diff --git a/polaris/ocean/tasks/sphere_transport/analysis.py b/polaris/ocean/tasks/sphere_transport/analysis.py new file mode 100644 index 000000000..87c61a04b --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/analysis.py @@ -0,0 +1,530 @@ +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +import xarray as xr + +from polaris import Step +from polaris.ocean.resolution import resolution_to_subdir + + +class Analysis(Step): + """ + A step for analyzing the output from sphere transport test cases + + Attributes + ---------- + resolutions : list of float + The resolutions of the meshes that have been run + + icosahedral : bool + Whether to use icosahedral, as opposed to less regular, JIGSAW + meshes + + case_name : str + The name of the test case + + tcdata : dict + Attributes of the convergence analysis + """ + def __init__(self, component, resolutions, icosahedral, subdir, + case_name, dependencies): + """ + Create the step + + Parameters + ---------- + component : polaris.Component + The component the step belongs to + + resolutions : list of float + The resolutions of the meshes that have been run + + icosahedral : bool + Whether to use icosahedral, as opposed to less regular, JIGSAW + meshes + + subdir : str + The subdirectory that the step resides in + + case_name: str + The name of the test case + + dependencies : dict of dict of polaris.Steps + The dependencies of this step + """ + super().__init__(component=component, name='analysis', subdir=subdir) + self.resolutions = resolutions + self.icosahedral = icosahedral + self.case_name = case_name + self.tcdata = dict() + + for resolution in resolutions: + mesh_name = resolution_to_subdir(resolution) + base_mesh = dependencies['mesh'][resolution] + init = dependencies['init'][resolution] + forward = dependencies['forward'][resolution] + self.add_input_file( + filename=f'{mesh_name}_mesh.nc', + work_dir_target=f'{base_mesh.path}/base_mesh.nc') + self.add_input_file( + filename=f'{mesh_name}_init.nc', + work_dir_target=f'{init.path}/initial_state.nc') + self.add_input_file( + filename=f'{mesh_name}_output.nc', + work_dir_target=f'{forward.path}/output.nc') + + self.add_output_file('convergence.csv') + self.add_output_file('convergence.png') + + def run(self): + """ + Run this step of the test case + """ + plt.switch_backend('Agg') + resolutions = self.resolutions + case_name = self.case_name + + # Collect data + ncells = [] + for resolution in resolutions: + mesh_name = resolution_to_subdir(resolution) + ncd = xr.open_dataset(f'{mesh_name}_output.nc') + self.tcdata[resolution] = {'dataset': ncd} + self.tcdata[resolution]['appx_mesh_size'] = _appx_mesh_size(ncd) + self.tcdata[resolution]['err'] = _compute_error_from_output_ncfile( + ncd) + ncells.append(ncd.dims['nCells']) + _print_data_as_csv(self.tcdata) + + # convergence analysis + data = pd.read_csv('convergence.csv') + + section = self.config[case_name] + + all_above_thres = True + error_message = '' + l2_err = np.stack((data.l21, data.l22, data.l23), axis=1) + + for num_tracer in np.arange(1, 4): + tracer = f'tracer{num_tracer}' + conv_thresh = section.getfloat(f'{tracer}_conv_thresh') + p = np.polyfit(np.log10(ncells), + np.log10(l2_err[:, num_tracer - 1]), 1) + # factor of 2 because nCells is like an inverse area, and we + # want the convergence rate vs. cell size + conv = abs(p[0]) * 2.0 + + if conv < conv_thresh: + all_above_thres = False + error_message = \ + f'{error_message}\n' \ + f' {tracer}: {conv:.2f} < {conv_thresh}' + + fig, ax = plt.subplots() + _plot_convergence( + ax, + case_name, + data.dlambda, + data.res, + data.linf1, + data.l21, + data.linf2, + data.l22, + data.linf3, + data.l23) + fig.savefig('convergence.png', bbox_inches='tight') + + if not all_above_thres: + raise ValueError('The following tracers have order of convergence ' + '< min tolerance:' + error_message) + + +def _appx_mesh_size(dataset): + ncells = dataset.sizes["nCells"] + return np.sqrt(4 * np.pi / ncells) + + +def _compute_error_from_output_ncfile(dataset, lev=1): + """ + Given an xarray dataset associated with the output.nc file from a test + case in the sphere_transport test group, this function computes the + linf and l2 relative error values by comparing the final time step to + the initial condition. + + Parameters + ---------- + dataset : xarray.Dataset + a dataset initialized with an MPAS output.nc file. + + lev: int, optional + vertical level to plot. + + Returns + ------- + result : dict + a dictionary containing the linf and l2 relative errors for each of the + 3 debug tracers. + """ + tracer1 = dataset["tracer1"].values + tracer2 = dataset["tracer2"].values + tracer3 = dataset["tracer3"].values + tracer1_exact = tracer1[0, :, lev] + tracer2_exact = tracer2[0, :, lev] + tracer3_exact = tracer3[0, :, lev] + tracer1_error = np.abs(tracer1[12, :, lev] - tracer1_exact) + tracer2_error = np.abs(tracer2[12, :, lev] - tracer2_exact) + tracer3_error = np.abs(tracer3[12, :, lev] - tracer3_exact) + tracer1_max = np.amax(tracer1_exact) + tracer2_max = np.amax(tracer2_exact) + tracer3_max = np.amax(tracer3_exact) + tracer1_min = np.amin(tracer1_exact) + tracer2_min = np.amin(tracer2_exact) + tracer3_min = np.amin(tracer3_exact) + cell_area = dataset["areaCell"].values + tracer1_linf = np.amax(tracer1_error) / np.amax(np.abs(tracer1_exact)) + tracer2_linf = np.amax(tracer2_error) / np.amax(np.abs(tracer2_exact)) + tracer3_linf = np.amax(tracer3_error) / np.amax(np.abs(tracer3_exact)) + tracer1_l2 = np.sqrt( + np.sum( + np.square(tracer1_error) * + cell_area) / + np.sum( + np.square(tracer1_exact) * + cell_area)) + tracer2_l2 = np.sqrt( + np.sum( + np.square(tracer2_error) * + cell_area) / + np.sum( + np.square(tracer2_exact) * + cell_area)) + tracer3_l2 = np.sqrt( + np.sum( + np.square(tracer3_error) * + cell_area) / + np.sum( + np.square(tracer3_exact) * + cell_area)) + tracer1_mass0 = np.sum(cell_area * tracer1_exact) + tracer2_mass0 = np.sum(cell_area * tracer2_exact) + tracer3_mass0 = np.sum(cell_area * tracer3_exact) + over1 = [] + under1 = [] + over2 = [] + under2 = [] + over3 = [] + under3 = [] + if dataset.sizes["Time"] == 13: + for i in range(13): + dmax1 = tracer1[i, :, lev] - tracer1_max + dmax2 = tracer2[i, :, lev] - tracer2_max + dmax3 = tracer3[i, :, lev] - tracer3_max + dmin1 = tracer1[i, :, lev] - tracer1_min + dmin2 = tracer2[i, :, lev] - tracer2_min + dmin3 = tracer3[i, :, lev] - tracer3_min + isover1 = dmax1 > 0 + isunder1 = dmin1 < 0 + isover2 = dmax2 > 0 + isunder2 = dmin2 < 0 + isover3 = dmax3 > 0 + isunder3 = dmin3 < 0 + over1.append(np.amax(dmax1 * isover1) / + (tracer1_max - tracer1_min)) + under1.append(np.amax(-dmin1 * isunder1) / + (tracer1_max - tracer1_min)) + over2.append(np.amax(dmax2 * isover2) / + (tracer2_max - tracer2_min)) + under2.append(np.amax(-dmin2 * isunder2) / + (tracer2_max - tracer2_min)) + over3.append(np.amax(dmax3 * isover3) / + (tracer3_max - tracer3_min)) + under3.append(np.amax(-dmin3 * isunder3) / + (tracer3_max - tracer3_min)) + else: + over1 = [0] + over2 = [0] + over3 = [0] + under1 = [0] + under2 = [0] + under3 = [0] + tracer1_mass12 = np.sum(cell_area * tracer1[12, :, lev]) + tracer2_mass12 = np.sum(cell_area * tracer2[12, :, lev]) + tracer3_mass12 = np.sum(cell_area * tracer3[12, :, lev]) + tracer1_masserr = np.abs(tracer1_mass0 - tracer1_mass12) / tracer1_mass0 + tracer2_masserr = np.abs(tracer2_mass0 - tracer2_mass12) / tracer2_mass0 + tracer3_masserr = np.abs(tracer3_mass0 - tracer3_mass12) / tracer3_mass0 + filament_tau = np.linspace(0, 1, 21) + filament_area = np.zeros(21) + filament_area0 = np.ones(21) + for i, tau in enumerate(filament_tau): + cells_above_tau = tracer2[6, :, lev] >= tau + cells_above_tau0 = tracer2[0, :, lev] >= tau + filament_area[i] = np.sum(cell_area * cells_above_tau) + filament_area0[i] = np.sum(cells_above_tau0 * cell_area) + filament_norm = filament_area / filament_area0 + + result = dict() + result["tracer1"] = { + "linf": tracer1_linf, + "l2": tracer1_l2, + "over": over1, + "under": under1, + "mass": tracer1_masserr} + result["tracer2"] = { + "linf": tracer2_linf, + "l2": tracer2_l2, + "over": over2, + "under": under2, + "filament": filament_norm, + "mass": tracer2_masserr} + result["tracer3"] = { + "linf": tracer3_linf, + "l2": tracer3_l2, + "over": over3, + "under": under3, + "mass": tracer3_masserr} + return result + + +def _make_convergence_arrays(tcdata): + """ + Collects data from a set of test case runs at different resolutions + to use for convergence data analysis and plotting. + + Parameters + ---------- + tcdata : dict + a dictionary whose keys are the resolution values for a + ``sphere_transport`` test case + + Returns + ------- + dlambda : list + an array of increasing appx. mesh sizes + + linf1 : list + the linf error of tracer1 for each resolution/mesh size pair + + linf2 : list + the linf error of tracer2 for each resolution/mesh size pair + + linf3 : list + the linf error of tracer3 for each resolution/mesh size pair + + l21 : list + the l2 error of tracer1 for each resolution/mesh size pair + + l22 : list + the l2 error of tracer2 for each resolution/mesh size pair + + l23 : list + the l2 error of tracer3 for each resolution/mesh size pair + + """ + rvals = sorted(tcdata.keys()) + rvals.reverse() + dlambda = [] + linf1 = [] + linf2 = [] + linf3 = [] + l21 = [] + l22 = [] + l23 = [] + u1 = [] + o1 = [] + u2 = [] + o2 = [] + u3 = [] + o3 = [] + mass1 = [] + mass2 = [] + mass3 = [] + for r in rvals: + dlambda.append(tcdata[r]['appx_mesh_size']) + linf1.append(tcdata[r]['err']['tracer1']['linf']) + linf2.append(tcdata[r]['err']['tracer2']['linf']) + linf3.append(tcdata[r]['err']['tracer3']['linf']) + l21.append(tcdata[r]['err']['tracer1']['l2']) + l22.append(tcdata[r]['err']['tracer2']['l2']) + l23.append(tcdata[r]['err']['tracer3']['l2']) + u1.append(np.array(tcdata[r]['err']['tracer1']['under'])) + o1.append(np.array(tcdata[r]['err']['tracer1']['over'])) + u2.append(np.array(tcdata[r]['err']['tracer2']['under'])) + o2.append(np.array(tcdata[r]['err']['tracer2']['over'])) + u3.append(np.array(tcdata[r]['err']['tracer3']['under'])) + o3.append(np.array(tcdata[r]['err']['tracer3']['over'])) + mass1.append(tcdata[r]['err']['tracer1']['mass']) + mass2.append(tcdata[r]['err']['tracer2']['mass']) + mass3.append(tcdata[r]['err']['tracer3']['mass']) + return dlambda, linf1, linf2, linf3, l21, l22, l23, u1, o1, \ + u2, o2, u3, o3, mass1, mass2, mass3 + + +def _print_data_as_csv(tcdata): + """ + Print test case data in csv format + + Parameters + ---------- + tcdata : dict + a dictionary whose keys are the resolution values for a + ``sphere_transport`` test case + """ + rvals = sorted(tcdata.keys()) + rvals.reverse() + dlambda, linf1, linf2, linf3, l21, l22, l23, u1, o1, u2, o2, u3, o3, \ + mass1, mass2, mass3 = _make_convergence_arrays(tcdata) + headers = [ + "res", + "dlambda", + "linf1", + "linf2", + "linf3", + "l21", + "l22", + "l23", + "under1", + "over1", + "under2", + "over2", + "under3", + "over3", + "mass1", + "mass2", + "mass3"] + data = np.stack((rvals, + dlambda, + linf1, + linf2, + linf3, + l21, + l22, + l23, + np.amax(np.abs(u1), axis=1), + np.amax(np.abs(o1), axis=1), + np.amax(np.abs(u2), axis=1), + np.amax(np.abs(o2), axis=1), + np.amax(np.abs(u3), axis=1), + np.amax(np.abs(o3), axis=1), + mass1, + mass2, + mass3), axis=1) + df = pd.DataFrame(data, columns=headers) + df.to_csv('convergence.csv', index=False) + + +def _plot_convergence( + ax, + tcname, + dlambda, + resvals, + linf1, + l21, + linf2, + l22, + linf3, + l23): + """ + Creates a convergence plot for a test case from the ``sphere_transport`` + test group. + + Parameters + ---------- + ax : matplotlib.Axes + A matplotlib Axes instance + + tcname : str + The name of the test case + + dlambda : numpy.ndarray + An array of mesh size values + + resvals : numpy.ndarray + An integer array of resolution values, e.g., [120, 240] + for ``QU120`` and ``QU240`` + + linf1 : numpy.ndarray + the linf error for tracer1 + + l21 : numpy.ndarray + the l2 error for tracer1 + + linf2 : numpy.ndarray + the linf error for tracer2 + + l22 : numpy.ndarray + the l2 error for tracer2 + + linf3 : numpy.ndarray + the linf error for tracer3 + + l23 : numpy.ndarray + the l2 error for tracer3 + """ + mSize = 8.0 + mWidth = mSize / 4 + prop_cycle = plt.rcParams['axes.prop_cycle'] + colors = prop_cycle.by_key()['color'] + o1ref = 5 * np.array(dlambda) + o2ref = 50 * np.square(dlambda) + ax.loglog( + dlambda, + linf1, + '+:', + color=colors[0], + markersize=mSize, + markerfacecolor='none', + markeredgewidth=mWidth, + label="tracer1_linf") + ax.loglog( + dlambda, + l21, + '+-', + color=colors[0], + markersize=mSize, + markerfacecolor='none', + markeredgewidth=mWidth, + label="tracer1_l2") + ax.loglog( + dlambda, + linf2, + 's:', + color=colors[1], + markersize=mSize, + markerfacecolor='none', + markeredgewidth=mWidth, + label="tracer2_linf") + ax.loglog( + dlambda, + l22, + 's-', + color=colors[1], + markersize=mSize, + markerfacecolor='none', + markeredgewidth=mWidth, + label="tracer2_l2") + ax.loglog( + dlambda, + linf3, + 'v:', + color=colors[2], + markersize=mSize, + markerfacecolor='none', + markeredgewidth=mWidth, + label="tracer3_linf") + ax.loglog( + dlambda, + l23, + 'v-', + color=colors[2], + markersize=mSize, + markerfacecolor='none', + markeredgewidth=mWidth, + label="tracer3_l2") + ax.loglog(dlambda, o1ref, 'k--', label="1st ord.") + ax.loglog(dlambda, o2ref, 'k-.', label="2nd ord.") + ax.set_xticks(dlambda) + ax.set_xticklabels(resvals) + ax.tick_params(which='minor', labelbottom=False) + ax.set(title=tcname, xlabel='QU res. val.', ylabel='rel. err.') + ax.legend(bbox_to_anchor=(1.05, 0.5), loc='center left') diff --git a/polaris/ocean/tasks/sphere_transport/forward.py b/polaris/ocean/tasks/sphere_transport/forward.py index 35144a198..e016d31cb 100644 --- a/polaris/ocean/tasks/sphere_transport/forward.py +++ b/polaris/ocean/tasks/sphere_transport/forward.py @@ -1,23 +1,13 @@ -import time +from polaris.ocean.convergence.spherical import SphericalConvergenceForward -from polaris.ocean.model import OceanModelStep - -class Forward(OceanModelStep): +class Forward(SphericalConvergenceForward): """ A step for performing forward ocean component runs as part of the sphere transport test case - - Attributes - ---------- - resolution : int - The resolution of the (uniform) mesh in km - - mesh_name : str - The name of the mesh """ - def __init__(self, component, name, subdir, resolution, mesh_name, + def __init__(self, component, name, subdir, resolution, base_mesh, init, case_name): """ Create a new step @@ -33,83 +23,30 @@ def __init__(self, component, name, subdir, resolution, mesh_name, subdir : str The subdirectory for the step - resolution : int + resolution : float The resolution of the (uniform) mesh in km - mesh_name : str - The name of the mesh - """ - super().__init__(component=component, name=name, subdir=subdir, - openmp_threads=1) + base_mesh : polaris.Step + The base mesh step - self.resolution = resolution - self.mesh_name = mesh_name - self.case_name = case_name + init : polaris.Step + The init step - # make sure output is double precision - self.add_yaml_file('polaris.ocean.config', 'output.yaml') - self.add_yaml_file( - 'polaris.ocean.tasks.cosine_bell', - 'forward.yaml') + case_name: str + The name of the test case + """ + package = 'polaris.ocean.tasks.sphere_transport' flow_id = {'rotation_2d': 1, 'nondivergent_2d': 2, 'divergent_2d': 3, 'correlated_tracers_2d': 4} - self.add_model_config_options( - options=dict( - config_transport_tests_flow_id=flow_id[case_name])) - - self.add_input_file( - filename='init.nc', - target=f'../../init/{mesh_name}/initial_state.nc') - self.add_input_file( - filename='graph.info', - target=f'../../../base_mesh/{mesh_name}/graph.info') - - self.add_output_file(filename='output.nc', - validate_vars=['normalVelocity', 'tracer1']) - - def compute_cell_count(self): - """ - Compute the approximate number of cells in the mesh, used to constrain - resources - - Returns - ------- - cell_count : int or None - The approximate number of cells in the mesh - """ - # use a heuristic based on QU30 (65275 cells) and QU240 (10383 cells) - cell_count = 6e8 / self.resolution**2 - return cell_count - - def dynamic_model_config(self, at_setup): - """ - Set the model time step from config options at setup and runtime - - Parameters - ---------- - at_setup : bool - Whether this method is being run during setup of the step, as - opposed to at runtime - """ - super().dynamic_model_config(at_setup=at_setup) - - config = self.config - - vert_levels = config.getfloat('vertical_grid', 'vert_levels') - if not at_setup and vert_levels == 1: - self.add_yaml_file('polaris.ocean.config', 'single_layer.yaml') - self.add_yaml_file( - 'polaris.ocean.tasks.cosine_bell', - 'forward.yaml') - - # dt is proportional to resolution: default 30 seconds per km - dt_per_km = config.getfloat('cosine_bell', 'dt_per_km') - - dt = dt_per_km * self.resolution - # https://stackoverflow.com/a/1384565/7728169 - dt_str = time.strftime('%H:%M:%S', time.gmtime(dt)) - - options = dict(config_dt=dt_str) - self.add_model_config_options(options) + namelist_options = dict( + config_transport_tests_flow_id=flow_id[case_name]) + validate_vars = ['normalVelocity', 'tracer1', 'tracer2', 'tracer3'] + super().__init__(component=component, name=name, subdir=subdir, + resolution=resolution, base_mesh=base_mesh, + init=init, package=package, + yaml_filename='forward.yaml', + output_filename='output.nc', + validate_vars=validate_vars, + options=namelist_options) diff --git a/polaris/ocean/tasks/sphere_transport/init.py b/polaris/ocean/tasks/sphere_transport/init.py index 91c0ec86a..570c77fd2 100644 --- a/polaris/ocean/tasks/sphere_transport/init.py +++ b/polaris/ocean/tasks/sphere_transport/init.py @@ -23,7 +23,7 @@ class Init(Step): """ A step for an initial condition for for the cosine bell test case """ - def __init__(self, component, name, subdir, mesh_name, case_name): + def __init__(self, component, name, subdir, base_mesh, case_name): """ Create the step @@ -38,19 +38,22 @@ def __init__(self, component, name, subdir, mesh_name, case_name): subdir : str The subdirectory for the step - mesh_name : str - The name of the mesh + base_mesh : polaris.Step + The base mesh step + + case_name: str + The name of the test case """ super().__init__(component=component, name=name, subdir=subdir) self.case_name = case_name self.add_input_file( filename='mesh.nc', - target=f'../../../base_mesh/{mesh_name}/base_mesh.nc') + work_dir_target=f'{base_mesh.path}/base_mesh.nc') self.add_input_file( filename='graph.info', - target=f'../../../base_mesh/{mesh_name}/graph.info') + work_dir_target=f'{base_mesh.path}/graph.info') self.add_output_file(filename='initial_state.nc') diff --git a/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg b/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg index e448138b8..4fa7f3499 100644 --- a/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg +++ b/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg @@ -5,10 +5,12 @@ grid_type = uniform # Number of vertical levels -vert_levels = 1 +vert_levels = 3 +#vert_levels = 1 # Depth of the bottom of the ocean bottom_depth = 300.0 +#bottom_depth = 100.0 # The type of vertical coordinate (e.g. z-level, z-star) coord_type = z-level @@ -20,7 +22,43 @@ partial_cell_type = None min_pc_fraction = 0.1 -# options for visualization for the cosine bell convergence test case +# config options for spherical convergence tests +[spherical_convergence] + +# Evaluation time for convergence analysis (in days) +convergence_eval_time = ${sphere_transport:vel_pd} + + +# config options for spherical convergence tests +[spherical_convergence_forward] + +# time integrator: {'split_explicit', 'RK4'} +time_integrator = RK4 + +# RK4 time step per resolution (s/km), since dt is proportional to resolution +rk4_dt_per_km = 8.0 + +# Run duration in days +run_duration = ${sphere_transport:vel_pd} + +# Output interval in days +output_interval = ${sphere_transport:vel_pd} + + +# options for all sphere transport test cases +[sphere_transport] + +# temperature +temperature = 15. + +# salinity +salinity = 35. + +# time (days) for bell to transit equator once +vel_pd = 12.0 + + +# options for visualization for the sphere transport test case [sphere_transport_viz] # visualization latitude and longitude resolution diff --git a/polaris/ocean/tasks/sphere_transport/viz.py b/polaris/ocean/tasks/sphere_transport/viz.py index 2c17b6a37..02d63b3ad 100644 --- a/polaris/ocean/tasks/sphere_transport/viz.py +++ b/polaris/ocean/tasks/sphere_transport/viz.py @@ -15,7 +15,7 @@ class VizMap(MappingFileStep): mesh_name : str The name of the mesh """ - def __init__(self, component, name, subdir, mesh_name): + def __init__(self, component, name, subdir, base_mesh, mesh_name): """ Create the step @@ -30,6 +30,9 @@ def __init__(self, component, name, subdir, mesh_name): subdir : str The subdirectory for the step + base_mesh : polaris.Step + The base mesh step + mesh_name : str The name of the mesh """ @@ -38,7 +41,7 @@ def __init__(self, component, name, subdir, mesh_name): self.mesh_name = mesh_name self.add_input_file( filename='mesh.nc', - target=f'../../../../base_mesh/{mesh_name}/base_mesh.nc') + work_dir_target=f'{base_mesh.path}/base_mesh.nc') def runtime_setup(self): """ @@ -58,14 +61,15 @@ def runtime_setup(self): class Viz(Step): """ - A step for plotting fields from sphere transport test cases + A step for plotting fields from the cosine bell output Attributes ---------- mesh_name : str The name of the mesh """ - def __init__(self, component, name, subdir, viz_map, mesh_name): + def __init__(self, component, name, subdir, base_mesh, init, forward, + viz_map, mesh_name): """ Create the step @@ -80,7 +84,16 @@ def __init__(self, component, name, subdir, viz_map, mesh_name): subdir : str The subdirectory in the test case's work directory for the step - viz_map : polaris.ocean.tasks.cosine_bell.viz.VizMap + base_mesh : polaris.Step + The base mesh step + + init : polaris.Step + The init step + + forward : polaris.Step + The init step + + viz_map : polaris.ocean.tasks.sphere_transport.viz.VizMap The step for creating a mapping files, also used to remap data from the MPAS mesh to a lon-lat grid @@ -90,13 +103,13 @@ def __init__(self, component, name, subdir, viz_map, mesh_name): super().__init__(component=component, name=name, subdir=subdir) self.add_input_file( filename='mesh.nc', - target=f'../../../../base_mesh/{mesh_name}/base_mesh.nc') + work_dir_target=f'{base_mesh.path}/base_mesh.nc') self.add_input_file( filename='initial_state.nc', - target=f'../../../init/{mesh_name}/initial_state.nc') + work_dir_target=f'{init.path}/initial_state.nc') self.add_input_file( filename='output.nc', - target=f'../../../forward/{mesh_name}/output.nc') + work_dir_target=f'{forward.path}/output.nc') self.add_dependency(viz_map, name='viz_map') self.mesh_name = mesh_name self.add_output_file('init.png') @@ -108,7 +121,8 @@ def run(self): """ config = self.config mesh_name = self.mesh_name - period = config.getfloat('cosine_bell', 'vel_pd') + run_duration = config.getfloat('spherical_convergence_forward', + 'run_duration') viz_map = self.dependencies['viz_map'] @@ -122,7 +136,7 @@ def run(self): plot_global(ds_init.lon.values, ds_init.lat.values, ds_init.tracer1.values, out_filename='init.png', config=config, - colormap_section='cosine_bell_viz', + colormap_section='sphere_transport_viz', title=f'{mesh_name} tracer at init', plot_land=False) ds_out = xr.open_dataset('output.nc') @@ -133,6 +147,6 @@ def run(self): plot_global(ds_init.lon.values, ds_init.lat.values, ds_out.tracer1.values, out_filename='final.png', config=config, - colormap_section='cosine_bell_viz', - title=f'{mesh_name} tracer after {period} days', + colormap_section='sphere_transport_viz', + title=f'{mesh_name} tracer after {run_duration:g} days', plot_land=False) From 4eb8a75e3d84a987bf7a78d225760db921f382a8 Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Tue, 26 Sep 2023 14:14:00 -0500 Subject: [PATCH 04/23] Add sphere transport tasks --- polaris/ocean/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/polaris/ocean/__init__.py b/polaris/ocean/__init__.py index 6de0e5811..90d5f07e5 100644 --- a/polaris/ocean/__init__.py +++ b/polaris/ocean/__init__.py @@ -9,6 +9,7 @@ add_manufactured_solution_tasks, ) from polaris.ocean.tasks.single_column import add_single_column_tasks +from polaris.ocean.tasks.sphere_transport import add_sphere_transport_tasks class Ocean(Component): @@ -29,6 +30,7 @@ def __init__(self): # single column add_single_column_tasks(component=self) + add_sphere_transport_tasks(component=self) # spherical: please keep these in alphabetical order add_cosine_bell_tasks(component=self) From 430c12959e623bbf7287c1932ad245afcfba0fc6 Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Tue, 26 Sep 2023 14:15:34 -0500 Subject: [PATCH 05/23] Add cfg files for each task --- .../ocean/tasks/sphere_transport/correlated_tracers_2d.cfg | 7 +++++++ polaris/ocean/tasks/sphere_transport/divergent_2d.cfg | 7 +++++++ polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg | 7 +++++++ polaris/ocean/tasks/sphere_transport/rotation_2d.cfg | 7 +++++++ 4 files changed, 28 insertions(+) create mode 100644 polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg create mode 100644 polaris/ocean/tasks/sphere_transport/divergent_2d.cfg create mode 100644 polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg create mode 100644 polaris/ocean/tasks/sphere_transport/rotation_2d.cfg diff --git a/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg b/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg new file mode 100644 index 000000000..79f4fa16e --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg @@ -0,0 +1,7 @@ +# options for rotation2D convergence test case +[correlated_tracers_2d] + +# convergence threshold below which the test fails +tracer1_conv_thresh = 1.7 +tracer2_conv_thresh = 1.66 +tracer3_conv_thresh = 1.28 diff --git a/polaris/ocean/tasks/sphere_transport/divergent_2d.cfg b/polaris/ocean/tasks/sphere_transport/divergent_2d.cfg new file mode 100644 index 000000000..cb5fcf3be --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/divergent_2d.cfg @@ -0,0 +1,7 @@ +# options for rotation2D convergence test case +[divergent_2d] + +# convergence threshold below which the test fails +tracer1_conv_thresh = 1.48 +tracer2_conv_thresh = 1.86 +tracer3_conv_thresh = 0.4 diff --git a/polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg b/polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg new file mode 100644 index 000000000..d79b20ed0 --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg @@ -0,0 +1,7 @@ +# options for rotation2D convergence test case +[nondivergent_2d] + +# convergence threshold below which the test fails +tracer1_conv_thresh = 1.7 +tracer2_conv_thresh = 1.66 +tracer3_conv_thresh = 0.4 diff --git a/polaris/ocean/tasks/sphere_transport/rotation_2d.cfg b/polaris/ocean/tasks/sphere_transport/rotation_2d.cfg new file mode 100644 index 000000000..a52d1d02d --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/rotation_2d.cfg @@ -0,0 +1,7 @@ +# options for rotation2D convergence test case +[rotation_2d] + +# convergence threshold below which the test fails +tracer1_conv_thresh = 1.4 +tracer2_conv_thresh = 1.8 +tracer3_conv_thresh = 0.4 From 73bd0f80a762c2a1ede61a365b8e849d28341988 Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Tue, 26 Sep 2023 14:14:52 -0500 Subject: [PATCH 06/23] Add sphere transport suites --- polaris/ocean/suites/sphere_transport.txt | 4 ++++ polaris/ocean/suites/sphere_transport_with_viz.txt | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 polaris/ocean/suites/sphere_transport.txt create mode 100644 polaris/ocean/suites/sphere_transport_with_viz.txt diff --git a/polaris/ocean/suites/sphere_transport.txt b/polaris/ocean/suites/sphere_transport.txt new file mode 100644 index 000000000..a93d53fb8 --- /dev/null +++ b/polaris/ocean/suites/sphere_transport.txt @@ -0,0 +1,4 @@ +ocean/spherical/icos/rotation_2d +ocean/spherical/icos/nondivergent_2d +ocean/spherical/icos/divergent_2d +ocean/spherical/icos/correlated_tracers_2d diff --git a/polaris/ocean/suites/sphere_transport_with_viz.txt b/polaris/ocean/suites/sphere_transport_with_viz.txt new file mode 100644 index 000000000..b120cc1f5 --- /dev/null +++ b/polaris/ocean/suites/sphere_transport_with_viz.txt @@ -0,0 +1,4 @@ +ocean/spherical/icos/rotation_2d/with_viz +ocean/spherical/icos/nondivergent_2d/with_viz +ocean/spherical/icos/divergent_2d/with_viz +ocean/spherical/icos/correlated_tracers_2d/with_viz From 119fdc1bcaab48288915e1dc251cf6c3d884e1d5 Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Tue, 26 Sep 2023 14:27:03 -0500 Subject: [PATCH 07/23] Change output interval to be consistent with analysis --- .../ocean/tasks/sphere_transport/analysis.py | 77 +++++++++---------- .../sphere_transport/sphere_transport.cfg | 2 +- 2 files changed, 36 insertions(+), 43 deletions(-) diff --git a/polaris/ocean/tasks/sphere_transport/analysis.py b/polaris/ocean/tasks/sphere_transport/analysis.py index 87c61a04b..edb089cd9 100644 --- a/polaris/ocean/tasks/sphere_transport/analysis.py +++ b/polaris/ocean/tasks/sphere_transport/analysis.py @@ -165,15 +165,17 @@ def _compute_error_from_output_ncfile(dataset, lev=1): a dictionary containing the linf and l2 relative errors for each of the 3 debug tracers. """ + tidx = 12 # this should correspond to 12 days + tidx_filament = 6 # this should correspond to 6 days tracer1 = dataset["tracer1"].values tracer2 = dataset["tracer2"].values tracer3 = dataset["tracer3"].values tracer1_exact = tracer1[0, :, lev] tracer2_exact = tracer2[0, :, lev] tracer3_exact = tracer3[0, :, lev] - tracer1_error = np.abs(tracer1[12, :, lev] - tracer1_exact) - tracer2_error = np.abs(tracer2[12, :, lev] - tracer2_exact) - tracer3_error = np.abs(tracer3[12, :, lev] - tracer3_exact) + tracer1_error = np.abs(tracer1[tidx, :, lev] - tracer1_exact) + tracer2_error = np.abs(tracer2[tidx, :, lev] - tracer2_exact) + tracer3_error = np.abs(tracer3[tidx, :, lev] - tracer3_exact) tracer1_max = np.amax(tracer1_exact) tracer2_max = np.amax(tracer2_exact) tracer3_max = np.amax(tracer3_exact) @@ -214,42 +216,34 @@ def _compute_error_from_output_ncfile(dataset, lev=1): under2 = [] over3 = [] under3 = [] - if dataset.sizes["Time"] == 13: - for i in range(13): - dmax1 = tracer1[i, :, lev] - tracer1_max - dmax2 = tracer2[i, :, lev] - tracer2_max - dmax3 = tracer3[i, :, lev] - tracer3_max - dmin1 = tracer1[i, :, lev] - tracer1_min - dmin2 = tracer2[i, :, lev] - tracer2_min - dmin3 = tracer3[i, :, lev] - tracer3_min - isover1 = dmax1 > 0 - isunder1 = dmin1 < 0 - isover2 = dmax2 > 0 - isunder2 = dmin2 < 0 - isover3 = dmax3 > 0 - isunder3 = dmin3 < 0 - over1.append(np.amax(dmax1 * isover1) / - (tracer1_max - tracer1_min)) - under1.append(np.amax(-dmin1 * isunder1) / - (tracer1_max - tracer1_min)) - over2.append(np.amax(dmax2 * isover2) / - (tracer2_max - tracer2_min)) - under2.append(np.amax(-dmin2 * isunder2) / - (tracer2_max - tracer2_min)) - over3.append(np.amax(dmax3 * isover3) / - (tracer3_max - tracer3_min)) - under3.append(np.amax(-dmin3 * isunder3) / - (tracer3_max - tracer3_min)) - else: - over1 = [0] - over2 = [0] - over3 = [0] - under1 = [0] - under2 = [0] - under3 = [0] - tracer1_mass12 = np.sum(cell_area * tracer1[12, :, lev]) - tracer2_mass12 = np.sum(cell_area * tracer2[12, :, lev]) - tracer3_mass12 = np.sum(cell_area * tracer3[12, :, lev]) + for i in range(dataset.sizes["Time"]): + dmax1 = tracer1[i, :, lev] - tracer1_max + dmax2 = tracer2[i, :, lev] - tracer2_max + dmax3 = tracer3[i, :, lev] - tracer3_max + dmin1 = tracer1[i, :, lev] - tracer1_min + dmin2 = tracer2[i, :, lev] - tracer2_min + dmin3 = tracer3[i, :, lev] - tracer3_min + isover1 = dmax1 > 0 + isunder1 = dmin1 < 0 + isover2 = dmax2 > 0 + isunder2 = dmin2 < 0 + isover3 = dmax3 > 0 + isunder3 = dmin3 < 0 + over1.append(np.amax(dmax1 * isover1) / + (tracer1_max - tracer1_min)) + under1.append(np.amax(-dmin1 * isunder1) / + (tracer1_max - tracer1_min)) + over2.append(np.amax(dmax2 * isover2) / + (tracer2_max - tracer2_min)) + under2.append(np.amax(-dmin2 * isunder2) / + (tracer2_max - tracer2_min)) + over3.append(np.amax(dmax3 * isover3) / + (tracer3_max - tracer3_min)) + under3.append(np.amax(-dmin3 * isunder3) / + (tracer3_max - tracer3_min)) + tracer1_mass12 = np.sum(cell_area * tracer1[tidx, :, lev]) + tracer2_mass12 = np.sum(cell_area * tracer2[tidx, :, lev]) + tracer3_mass12 = np.sum(cell_area * tracer3[tidx, :, lev]) tracer1_masserr = np.abs(tracer1_mass0 - tracer1_mass12) / tracer1_mass0 tracer2_masserr = np.abs(tracer2_mass0 - tracer2_mass12) / tracer2_mass0 tracer3_masserr = np.abs(tracer3_mass0 - tracer3_mass12) / tracer3_mass0 @@ -257,7 +251,7 @@ def _compute_error_from_output_ncfile(dataset, lev=1): filament_area = np.zeros(21) filament_area0 = np.ones(21) for i, tau in enumerate(filament_tau): - cells_above_tau = tracer2[6, :, lev] >= tau + cells_above_tau = tracer2[tidx_filament, :, lev] >= tau cells_above_tau0 = tracer2[0, :, lev] >= tau filament_area[i] = np.sum(cell_area * cells_above_tau) filament_area0[i] = np.sum(cells_above_tau0 * cell_area) @@ -441,7 +435,6 @@ def _plot_convergence( resvals : numpy.ndarray An integer array of resolution values, e.g., [120, 240] - for ``QU120`` and ``QU240`` linf1 : numpy.ndarray the linf error for tracer1 @@ -526,5 +519,5 @@ def _plot_convergence( ax.set_xticks(dlambda) ax.set_xticklabels(resvals) ax.tick_params(which='minor', labelbottom=False) - ax.set(title=tcname, xlabel='QU res. val.', ylabel='rel. err.') + ax.set(title=tcname, xlabel='Resolution (km)', ylabel='Relative error') ax.legend(bbox_to_anchor=(1.05, 0.5), loc='center left') diff --git a/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg b/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg index 4fa7f3499..2ecb62137 100644 --- a/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg +++ b/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg @@ -42,7 +42,7 @@ rk4_dt_per_km = 8.0 run_duration = ${sphere_transport:vel_pd} # Output interval in days -output_interval = ${sphere_transport:vel_pd} +output_interval = 1.0 # options for all sphere transport test cases From 61fe84fe3f26cff88b4597624ed28ad656a2cc9a Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Mon, 2 Oct 2023 14:38:34 -0500 Subject: [PATCH 08/23] Add all plot types to viz for sphere transport --- .../sphere_transport/sphere_transport.cfg | 51 +++++++++++++++++-- polaris/ocean/tasks/sphere_transport/viz.py | 48 +++++++++++------ 2 files changed, 80 insertions(+), 19 deletions(-) diff --git a/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg b/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg index 2ecb62137..ea9cc0841 100644 --- a/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg +++ b/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg @@ -6,11 +6,9 @@ grid_type = uniform # Number of vertical levels vert_levels = 3 -#vert_levels = 1 # Depth of the bottom of the ocean bottom_depth = 300.0 -#bottom_depth = 100.0 # The type of vertical coordinate (e.g. z-level, z-star) coord_type = z-level @@ -58,7 +56,7 @@ salinity = 35. vel_pd = 12.0 -# options for visualization for the sphere transport test case +# options for tracer visualization for the sphere transport test case [sphere_transport_viz] # visualization latitude and longitude resolution @@ -68,6 +66,10 @@ dlat = 0.5 # remapping method ('bilinear', 'neareststod', 'conserve') remap_method = conserve + +# options for tracer visualization for the sphere transport test case +[sphere_transport_viz_tracer] + # colormap options # colormap colormap_name = viridis @@ -80,3 +82,46 @@ norm_args = {'vmin': 0., 'vmax': 1.} # We could provide colorbar tick marks but we'll leave the defaults # colorbar_ticks = np.linspace(0., 1., 9) + +# options for plotting tracer differences from sphere transport tests +[sphere_transport_viz_tracer_diff] + +# colormap options +# colormap +colormap_name = cmo.balance + +# the type of norm used in the colormap +norm_type = linear + +# A dictionary with keywords for the norm +norm_args = {'vmin': -0.25, 'vmax': 0.25} + + +# options for thickness visualization for the sphere transport test case +[sphere_transport_viz_h] + +# colormap options +# colormap +colormap_name = viridis + +# the type of norm used in the colormap +norm_type = linear + +# A dictionary with keywords for the norm +norm_args = {'vmin': 99., 'vmax': 101.} + +# We could provide colorbar tick marks but we'll leave the defaults +# colorbar_ticks = np.linspace(0., 1., 9) + +# options for plotting tracer differences from sphere transport tests +[sphere_transport_viz_h_diff] + +# colormap options +# colormap +colormap_name = cmo.balance + +# the type of norm used in the colormap +norm_type = linear + +# A dictionary with keywords for the norm +norm_args = {'vmin': -0.25, 'vmax': 0.25} diff --git a/polaris/ocean/tasks/sphere_transport/viz.py b/polaris/ocean/tasks/sphere_transport/viz.py index 02d63b3ad..b20a70082 100644 --- a/polaris/ocean/tasks/sphere_transport/viz.py +++ b/polaris/ocean/tasks/sphere_transport/viz.py @@ -112,8 +112,15 @@ def __init__(self, component, name, subdir, base_mesh, init, forward, work_dir_target=f'{forward.path}/output.nc') self.add_dependency(viz_map, name='viz_map') self.mesh_name = mesh_name - self.add_output_file('init.png') - self.add_output_file('final.png') + variables_to_plot = dict({'tracer1': 'tracer', + 'tracer2': 'tracer', + 'tracer3': 'tracer', + 'layerThickness': 'h'}) + self.variables_to_plot = variables_to_plot + for var in variables_to_plot.keys(): + self.add_output_file(f'{var}_init.png') + self.add_output_file(f'{var}_final.png') + self.add_output_file(f'{var}_diff.png') def run(self): """ @@ -128,25 +135,34 @@ def run(self): remapper = viz_map.get_remapper() + variables_to_plot = self.variables_to_plot ds_init = xr.open_dataset('initial_state.nc') - ds_init = ds_init[['tracer1', ]].isel(Time=0, nVertLevels=0) + ds_init = ds_init[variables_to_plot.keys()].isel(Time=0, nVertLevels=0) ds_init = remapper.remap(ds_init) ds_init.to_netcdf('remapped_init.nc') - plot_global(ds_init.lon.values, ds_init.lat.values, - ds_init.tracer1.values, - out_filename='init.png', config=config, - colormap_section='sphere_transport_viz', - title=f'{mesh_name} tracer at init', plot_land=False) - ds_out = xr.open_dataset('output.nc') - ds_out = ds_out[['tracer1', ]].isel(Time=-1, nVertLevels=0) + ds_out = ds_out[variables_to_plot.keys()].isel(Time=-1, nVertLevels=0) ds_out = remapper.remap(ds_out) ds_out.to_netcdf('remapped_final.nc') - plot_global(ds_init.lon.values, ds_init.lat.values, - ds_out.tracer1.values, - out_filename='final.png', config=config, - colormap_section='sphere_transport_viz', - title=f'{mesh_name} tracer after {run_duration:g} days', - plot_land=False) + for var, section_name in variables_to_plot.items(): + colormap_section = f'sphere_transport_viz_{section_name}' + plot_global(ds_init.lon.values, ds_init.lat.values, + ds_init[var].values, + out_filename=f'{var}_init.png', config=config, + colormap_section=colormap_section, + title=f'{mesh_name} {var} at init', plot_land=False) + plot_global(ds_init.lon.values, ds_init.lat.values, + ds_out[var].values, + out_filename=f'{var}_final.png', config=config, + colormap_section=colormap_section, + title=f'{mesh_name} {var} after {run_duration:g} days', + plot_land=False) + plot_global(ds_init.lon.values, ds_init.lat.values, + ds_out[var].values - ds_init[var].values, + out_filename=f'{var}_diff.png', config=config, + colormap_section=f'{colormap_section}_diff', + title=f'Difference in {mesh_name} {var} from initial ' + f'condition after {run_duration:g} days', + plot_land=False) From 509343aa0c72ed827ee9405665ff0b0136bff9c8 Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Sun, 1 Oct 2023 11:35:21 -0500 Subject: [PATCH 09/23] Use conv analysis step in sphere transport --- .../ocean/tasks/sphere_transport/analysis.py | 518 ++---------------- .../correlated_tracers_2d.cfg | 6 +- .../tasks/sphere_transport/divergent_2d.cfg | 6 +- .../sphere_transport/nondivergent_2d.cfg | 6 +- .../tasks/sphere_transport/rotation_2d.cfg | 6 +- .../sphere_transport/sphere_transport.cfg | 3 + 6 files changed, 58 insertions(+), 487 deletions(-) diff --git a/polaris/ocean/tasks/sphere_transport/analysis.py b/polaris/ocean/tasks/sphere_transport/analysis.py index edb089cd9..0ab0740c2 100644 --- a/polaris/ocean/tasks/sphere_transport/analysis.py +++ b/polaris/ocean/tasks/sphere_transport/analysis.py @@ -1,13 +1,7 @@ -import matplotlib.pyplot as plt -import numpy as np -import pandas as pd -import xarray as xr +from polaris.ocean.convergence.spherical import SphericalConvergenceAnalysis -from polaris import Step -from polaris.ocean.resolution import resolution_to_subdir - -class Analysis(Step): +class Analysis(SphericalConvergenceAnalysis): """ A step for analyzing the output from sphere transport test cases @@ -22,9 +16,6 @@ class Analysis(Step): case_name : str The name of the test case - - tcdata : dict - Attributes of the convergence analysis """ def __init__(self, component, resolutions, icosahedral, subdir, case_name, dependencies): @@ -52,472 +43,49 @@ def __init__(self, component, resolutions, icosahedral, subdir, dependencies : dict of dict of polaris.Steps The dependencies of this step """ - super().__init__(component=component, name='analysis', subdir=subdir) - self.resolutions = resolutions - self.icosahedral = icosahedral self.case_name = case_name - self.tcdata = dict() - - for resolution in resolutions: - mesh_name = resolution_to_subdir(resolution) - base_mesh = dependencies['mesh'][resolution] - init = dependencies['init'][resolution] - forward = dependencies['forward'][resolution] - self.add_input_file( - filename=f'{mesh_name}_mesh.nc', - work_dir_target=f'{base_mesh.path}/base_mesh.nc') - self.add_input_file( - filename=f'{mesh_name}_init.nc', - work_dir_target=f'{init.path}/initial_state.nc') - self.add_input_file( - filename=f'{mesh_name}_output.nc', - work_dir_target=f'{forward.path}/output.nc') - - self.add_output_file('convergence.csv') - self.add_output_file('convergence.png') - - def run(self): - """ - Run this step of the test case + convergence_vars = [{'name': 'tracer1', + 'title': 'tracer1', + 'units': '', + 'zidx': 1}, + {'name': 'tracer2', + 'title': 'tracer2', + 'units': '', + 'zidx': 1}, + {'name': 'tracer3', + 'title': 'tracer3', + 'units': '', + 'zidx': 1}] + super().__init__(component=component, subdir=subdir, + resolutions=resolutions, + icosahedral=icosahedral, + dependencies=dependencies, + convergence_vars=convergence_vars) + # Note: there is no need to overwrite the default method exact_solution + # which uses the initial condition + + def convergence_parameters(self, field_name=None): """ - plt.switch_backend('Agg') - resolutions = self.resolutions - case_name = self.case_name - - # Collect data - ncells = [] - for resolution in resolutions: - mesh_name = resolution_to_subdir(resolution) - ncd = xr.open_dataset(f'{mesh_name}_output.nc') - self.tcdata[resolution] = {'dataset': ncd} - self.tcdata[resolution]['appx_mesh_size'] = _appx_mesh_size(ncd) - self.tcdata[resolution]['err'] = _compute_error_from_output_ncfile( - ncd) - ncells.append(ncd.dims['nCells']) - _print_data_as_csv(self.tcdata) - - # convergence analysis - data = pd.read_csv('convergence.csv') - - section = self.config[case_name] - - all_above_thres = True - error_message = '' - l2_err = np.stack((data.l21, data.l22, data.l23), axis=1) - - for num_tracer in np.arange(1, 4): - tracer = f'tracer{num_tracer}' - conv_thresh = section.getfloat(f'{tracer}_conv_thresh') - p = np.polyfit(np.log10(ncells), - np.log10(l2_err[:, num_tracer - 1]), 1) - # factor of 2 because nCells is like an inverse area, and we - # want the convergence rate vs. cell size - conv = abs(p[0]) * 2.0 - - if conv < conv_thresh: - all_above_thres = False - error_message = \ - f'{error_message}\n' \ - f' {tracer}: {conv:.2f} < {conv_thresh}' - - fig, ax = plt.subplots() - _plot_convergence( - ax, - case_name, - data.dlambda, - data.res, - data.linf1, - data.l21, - data.linf2, - data.l22, - data.linf3, - data.l23) - fig.savefig('convergence.png', bbox_inches='tight') - - if not all_above_thres: - raise ValueError('The following tracers have order of convergence ' - '< min tolerance:' + error_message) - - -def _appx_mesh_size(dataset): - ncells = dataset.sizes["nCells"] - return np.sqrt(4 * np.pi / ncells) - - -def _compute_error_from_output_ncfile(dataset, lev=1): - """ - Given an xarray dataset associated with the output.nc file from a test - case in the sphere_transport test group, this function computes the - linf and l2 relative error values by comparing the final time step to - the initial condition. - - Parameters - ---------- - dataset : xarray.Dataset - a dataset initialized with an MPAS output.nc file. - - lev: int, optional - vertical level to plot. - - Returns - ------- - result : dict - a dictionary containing the linf and l2 relative errors for each of the - 3 debug tracers. - """ - tidx = 12 # this should correspond to 12 days - tidx_filament = 6 # this should correspond to 6 days - tracer1 = dataset["tracer1"].values - tracer2 = dataset["tracer2"].values - tracer3 = dataset["tracer3"].values - tracer1_exact = tracer1[0, :, lev] - tracer2_exact = tracer2[0, :, lev] - tracer3_exact = tracer3[0, :, lev] - tracer1_error = np.abs(tracer1[tidx, :, lev] - tracer1_exact) - tracer2_error = np.abs(tracer2[tidx, :, lev] - tracer2_exact) - tracer3_error = np.abs(tracer3[tidx, :, lev] - tracer3_exact) - tracer1_max = np.amax(tracer1_exact) - tracer2_max = np.amax(tracer2_exact) - tracer3_max = np.amax(tracer3_exact) - tracer1_min = np.amin(tracer1_exact) - tracer2_min = np.amin(tracer2_exact) - tracer3_min = np.amin(tracer3_exact) - cell_area = dataset["areaCell"].values - tracer1_linf = np.amax(tracer1_error) / np.amax(np.abs(tracer1_exact)) - tracer2_linf = np.amax(tracer2_error) / np.amax(np.abs(tracer2_exact)) - tracer3_linf = np.amax(tracer3_error) / np.amax(np.abs(tracer3_exact)) - tracer1_l2 = np.sqrt( - np.sum( - np.square(tracer1_error) * - cell_area) / - np.sum( - np.square(tracer1_exact) * - cell_area)) - tracer2_l2 = np.sqrt( - np.sum( - np.square(tracer2_error) * - cell_area) / - np.sum( - np.square(tracer2_exact) * - cell_area)) - tracer3_l2 = np.sqrt( - np.sum( - np.square(tracer3_error) * - cell_area) / - np.sum( - np.square(tracer3_exact) * - cell_area)) - tracer1_mass0 = np.sum(cell_area * tracer1_exact) - tracer2_mass0 = np.sum(cell_area * tracer2_exact) - tracer3_mass0 = np.sum(cell_area * tracer3_exact) - over1 = [] - under1 = [] - over2 = [] - under2 = [] - over3 = [] - under3 = [] - for i in range(dataset.sizes["Time"]): - dmax1 = tracer1[i, :, lev] - tracer1_max - dmax2 = tracer2[i, :, lev] - tracer2_max - dmax3 = tracer3[i, :, lev] - tracer3_max - dmin1 = tracer1[i, :, lev] - tracer1_min - dmin2 = tracer2[i, :, lev] - tracer2_min - dmin3 = tracer3[i, :, lev] - tracer3_min - isover1 = dmax1 > 0 - isunder1 = dmin1 < 0 - isover2 = dmax2 > 0 - isunder2 = dmin2 < 0 - isover3 = dmax3 > 0 - isunder3 = dmin3 < 0 - over1.append(np.amax(dmax1 * isover1) / - (tracer1_max - tracer1_min)) - under1.append(np.amax(-dmin1 * isunder1) / - (tracer1_max - tracer1_min)) - over2.append(np.amax(dmax2 * isover2) / - (tracer2_max - tracer2_min)) - under2.append(np.amax(-dmin2 * isunder2) / - (tracer2_max - tracer2_min)) - over3.append(np.amax(dmax3 * isover3) / - (tracer3_max - tracer3_min)) - under3.append(np.amax(-dmin3 * isunder3) / - (tracer3_max - tracer3_min)) - tracer1_mass12 = np.sum(cell_area * tracer1[tidx, :, lev]) - tracer2_mass12 = np.sum(cell_area * tracer2[tidx, :, lev]) - tracer3_mass12 = np.sum(cell_area * tracer3[tidx, :, lev]) - tracer1_masserr = np.abs(tracer1_mass0 - tracer1_mass12) / tracer1_mass0 - tracer2_masserr = np.abs(tracer2_mass0 - tracer2_mass12) / tracer2_mass0 - tracer3_masserr = np.abs(tracer3_mass0 - tracer3_mass12) / tracer3_mass0 - filament_tau = np.linspace(0, 1, 21) - filament_area = np.zeros(21) - filament_area0 = np.ones(21) - for i, tau in enumerate(filament_tau): - cells_above_tau = tracer2[tidx_filament, :, lev] >= tau - cells_above_tau0 = tracer2[0, :, lev] >= tau - filament_area[i] = np.sum(cell_area * cells_above_tau) - filament_area0[i] = np.sum(cells_above_tau0 * cell_area) - filament_norm = filament_area / filament_area0 - - result = dict() - result["tracer1"] = { - "linf": tracer1_linf, - "l2": tracer1_l2, - "over": over1, - "under": under1, - "mass": tracer1_masserr} - result["tracer2"] = { - "linf": tracer2_linf, - "l2": tracer2_l2, - "over": over2, - "under": under2, - "filament": filament_norm, - "mass": tracer2_masserr} - result["tracer3"] = { - "linf": tracer3_linf, - "l2": tracer3_l2, - "over": over3, - "under": under3, - "mass": tracer3_masserr} - return result - - -def _make_convergence_arrays(tcdata): - """ - Collects data from a set of test case runs at different resolutions - to use for convergence data analysis and plotting. - - Parameters - ---------- - tcdata : dict - a dictionary whose keys are the resolution values for a - ``sphere_transport`` test case - - Returns - ------- - dlambda : list - an array of increasing appx. mesh sizes + Get convergence parameters - linf1 : list - the linf error of tracer1 for each resolution/mesh size pair - - linf2 : list - the linf error of tracer2 for each resolution/mesh size pair - - linf3 : list - the linf error of tracer3 for each resolution/mesh size pair - - l21 : list - the l2 error of tracer1 for each resolution/mesh size pair - - l22 : list - the l2 error of tracer2 for each resolution/mesh size pair - - l23 : list - the l2 error of tracer3 for each resolution/mesh size pair - - """ - rvals = sorted(tcdata.keys()) - rvals.reverse() - dlambda = [] - linf1 = [] - linf2 = [] - linf3 = [] - l21 = [] - l22 = [] - l23 = [] - u1 = [] - o1 = [] - u2 = [] - o2 = [] - u3 = [] - o3 = [] - mass1 = [] - mass2 = [] - mass3 = [] - for r in rvals: - dlambda.append(tcdata[r]['appx_mesh_size']) - linf1.append(tcdata[r]['err']['tracer1']['linf']) - linf2.append(tcdata[r]['err']['tracer2']['linf']) - linf3.append(tcdata[r]['err']['tracer3']['linf']) - l21.append(tcdata[r]['err']['tracer1']['l2']) - l22.append(tcdata[r]['err']['tracer2']['l2']) - l23.append(tcdata[r]['err']['tracer3']['l2']) - u1.append(np.array(tcdata[r]['err']['tracer1']['under'])) - o1.append(np.array(tcdata[r]['err']['tracer1']['over'])) - u2.append(np.array(tcdata[r]['err']['tracer2']['under'])) - o2.append(np.array(tcdata[r]['err']['tracer2']['over'])) - u3.append(np.array(tcdata[r]['err']['tracer3']['under'])) - o3.append(np.array(tcdata[r]['err']['tracer3']['over'])) - mass1.append(tcdata[r]['err']['tracer1']['mass']) - mass2.append(tcdata[r]['err']['tracer2']['mass']) - mass3.append(tcdata[r]['err']['tracer3']['mass']) - return dlambda, linf1, linf2, linf3, l21, l22, l23, u1, o1, \ - u2, o2, u3, o3, mass1, mass2, mass3 - - -def _print_data_as_csv(tcdata): - """ - Print test case data in csv format - - Parameters - ---------- - tcdata : dict - a dictionary whose keys are the resolution values for a - ``sphere_transport`` test case - """ - rvals = sorted(tcdata.keys()) - rvals.reverse() - dlambda, linf1, linf2, linf3, l21, l22, l23, u1, o1, u2, o2, u3, o3, \ - mass1, mass2, mass3 = _make_convergence_arrays(tcdata) - headers = [ - "res", - "dlambda", - "linf1", - "linf2", - "linf3", - "l21", - "l22", - "l23", - "under1", - "over1", - "under2", - "over2", - "under3", - "over3", - "mass1", - "mass2", - "mass3"] - data = np.stack((rvals, - dlambda, - linf1, - linf2, - linf3, - l21, - l22, - l23, - np.amax(np.abs(u1), axis=1), - np.amax(np.abs(o1), axis=1), - np.amax(np.abs(u2), axis=1), - np.amax(np.abs(o2), axis=1), - np.amax(np.abs(u3), axis=1), - np.amax(np.abs(o3), axis=1), - mass1, - mass2, - mass3), axis=1) - df = pd.DataFrame(data, columns=headers) - df.to_csv('convergence.csv', index=False) - - -def _plot_convergence( - ax, - tcname, - dlambda, - resvals, - linf1, - l21, - linf2, - l22, - linf3, - l23): - """ - Creates a convergence plot for a test case from the ``sphere_transport`` - test group. - - Parameters - ---------- - ax : matplotlib.Axes - A matplotlib Axes instance - - tcname : str - The name of the test case - - dlambda : numpy.ndarray - An array of mesh size values - - resvals : numpy.ndarray - An integer array of resolution values, e.g., [120, 240] - - linf1 : numpy.ndarray - the linf error for tracer1 - - l21 : numpy.ndarray - the l2 error for tracer1 - - linf2 : numpy.ndarray - the linf error for tracer2 - - l22 : numpy.ndarray - the l2 error for tracer2 + Parameters + ---------- + field_name : str + The name of the variable of which we evaluate convergence + For cosine_bell, we use the same convergence rate for all fields + Returns + ------- + conv_thresh: float + The minimum convergence rate + + conv_thresh: float + The maximum convergence rate + """ + config = self.config + section = config[self.case_name] + conv_thresh = section.getfloat(f'convergence_thresh_{field_name}') - linf3 : numpy.ndarray - the linf error for tracer3 + section = config['spherical_convergence'] + error_type = section.get('error_type') - l23 : numpy.ndarray - the l2 error for tracer3 - """ - mSize = 8.0 - mWidth = mSize / 4 - prop_cycle = plt.rcParams['axes.prop_cycle'] - colors = prop_cycle.by_key()['color'] - o1ref = 5 * np.array(dlambda) - o2ref = 50 * np.square(dlambda) - ax.loglog( - dlambda, - linf1, - '+:', - color=colors[0], - markersize=mSize, - markerfacecolor='none', - markeredgewidth=mWidth, - label="tracer1_linf") - ax.loglog( - dlambda, - l21, - '+-', - color=colors[0], - markersize=mSize, - markerfacecolor='none', - markeredgewidth=mWidth, - label="tracer1_l2") - ax.loglog( - dlambda, - linf2, - 's:', - color=colors[1], - markersize=mSize, - markerfacecolor='none', - markeredgewidth=mWidth, - label="tracer2_linf") - ax.loglog( - dlambda, - l22, - 's-', - color=colors[1], - markersize=mSize, - markerfacecolor='none', - markeredgewidth=mWidth, - label="tracer2_l2") - ax.loglog( - dlambda, - linf3, - 'v:', - color=colors[2], - markersize=mSize, - markerfacecolor='none', - markeredgewidth=mWidth, - label="tracer3_linf") - ax.loglog( - dlambda, - l23, - 'v-', - color=colors[2], - markersize=mSize, - markerfacecolor='none', - markeredgewidth=mWidth, - label="tracer3_l2") - ax.loglog(dlambda, o1ref, 'k--', label="1st ord.") - ax.loglog(dlambda, o2ref, 'k-.', label="2nd ord.") - ax.set_xticks(dlambda) - ax.set_xticklabels(resvals) - ax.tick_params(which='minor', labelbottom=False) - ax.set(title=tcname, xlabel='Resolution (km)', ylabel='Relative error') - ax.legend(bbox_to_anchor=(1.05, 0.5), loc='center left') + return conv_thresh, error_type diff --git a/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg b/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg index 79f4fa16e..08c8ce935 100644 --- a/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg +++ b/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg @@ -2,6 +2,6 @@ [correlated_tracers_2d] # convergence threshold below which the test fails -tracer1_conv_thresh = 1.7 -tracer2_conv_thresh = 1.66 -tracer3_conv_thresh = 1.28 +convergence_thresh_tracer1 = 1.5 +convergence_thresh_tracer2 = 1.3 +convergence_thresh_tracer3 = 1.0 diff --git a/polaris/ocean/tasks/sphere_transport/divergent_2d.cfg b/polaris/ocean/tasks/sphere_transport/divergent_2d.cfg index cb5fcf3be..d3849ff76 100644 --- a/polaris/ocean/tasks/sphere_transport/divergent_2d.cfg +++ b/polaris/ocean/tasks/sphere_transport/divergent_2d.cfg @@ -2,6 +2,6 @@ [divergent_2d] # convergence threshold below which the test fails -tracer1_conv_thresh = 1.48 -tracer2_conv_thresh = 1.86 -tracer3_conv_thresh = 0.4 +convergence_thresh_tracer1 = 1.48 +convergence_thresh_tracer2 = 1.5 +convergence_thresh_tracer3 = 0.3 diff --git a/polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg b/polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg index d79b20ed0..235d836ad 100644 --- a/polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg +++ b/polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg @@ -2,6 +2,6 @@ [nondivergent_2d] # convergence threshold below which the test fails -tracer1_conv_thresh = 1.7 -tracer2_conv_thresh = 1.66 -tracer3_conv_thresh = 0.4 +convergence_thresh_tracer1 = 1.7 +convergence_thresh_tracer2 = 1.66 +convergence_thresh_tracer3 = 0.4 diff --git a/polaris/ocean/tasks/sphere_transport/rotation_2d.cfg b/polaris/ocean/tasks/sphere_transport/rotation_2d.cfg index a52d1d02d..a84a13a2c 100644 --- a/polaris/ocean/tasks/sphere_transport/rotation_2d.cfg +++ b/polaris/ocean/tasks/sphere_transport/rotation_2d.cfg @@ -2,6 +2,6 @@ [rotation_2d] # convergence threshold below which the test fails -tracer1_conv_thresh = 1.4 -tracer2_conv_thresh = 1.8 -tracer3_conv_thresh = 0.4 +convergence_thresh_tracer1 = 1.4 +convergence_thresh_tracer2 = 1.8 +convergence_thresh_tracer3 = 0.4 diff --git a/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg b/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg index ea9cc0841..18ca72646 100644 --- a/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg +++ b/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg @@ -26,6 +26,9 @@ min_pc_fraction = 0.1 # Evaluation time for convergence analysis (in days) convergence_eval_time = ${sphere_transport:vel_pd} +# Error type +error_type = l2 + # config options for spherical convergence tests [spherical_convergence_forward] From e089a20aa10a3820f8b9a272d65a3a68ca45f4ea Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Sun, 1 Oct 2023 13:59:22 -0500 Subject: [PATCH 10/23] Add filament analysis step to sphere transport --- .../ocean/tasks/sphere_transport/__init__.py | 19 +++ .../sphere_transport/filament_analysis.py | 148 ++++++++++++++++++ .../sphere_transport/nondivergent_2d.cfg | 9 +- 3 files changed, 173 insertions(+), 3 deletions(-) create mode 100644 polaris/ocean/tasks/sphere_transport/filament_analysis.py diff --git a/polaris/ocean/tasks/sphere_transport/__init__.py b/polaris/ocean/tasks/sphere_transport/__init__.py index 89486c351..6725b4db1 100644 --- a/polaris/ocean/tasks/sphere_transport/__init__.py +++ b/polaris/ocean/tasks/sphere_transport/__init__.py @@ -4,6 +4,9 @@ from polaris.config import PolarisConfigParser from polaris.ocean.mesh.spherical import add_spherical_base_mesh_step from polaris.ocean.tasks.sphere_transport.analysis import Analysis +from polaris.ocean.tasks.sphere_transport.filament_analysis import ( + FilamentAnalysis, +) from polaris.ocean.tasks.sphere_transport.forward import Forward from polaris.ocean.tasks.sphere_transport.init import Init from polaris.ocean.tasks.sphere_transport.viz import Viz, VizMap @@ -191,3 +194,19 @@ def _setup_steps(self, config): case_name=case_name, dependencies=analysis_dependencies) self.add_step(step, symlink=symlink) + + if case_name == 'nondivergent_2d': + subdir = f'{sph_trans_dir}/filament_analysis' + if self.include_viz: + symlink = 'filament_analysis' + else: + symlink = None + if subdir in component.steps: + step = component.steps[subdir] + else: + step = FilamentAnalysis(component=component, + resolutions=resolutions, + icosahedral=icosahedral, subdir=subdir, + case_name=case_name, + dependencies=analysis_dependencies) + self.add_step(step, symlink=symlink) diff --git a/polaris/ocean/tasks/sphere_transport/filament_analysis.py b/polaris/ocean/tasks/sphere_transport/filament_analysis.py new file mode 100644 index 000000000..598277e24 --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/filament_analysis.py @@ -0,0 +1,148 @@ +import datetime + +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +import xarray as xr + +from polaris import Step +from polaris.ocean.resolution import resolution_to_subdir + + +class FilamentAnalysis(Step): + """ + A step for analyzing the output from sphere transport test cases + + Attributes + ---------- + resolutions : list of float + The resolutions of the meshes that have been run + + icosahedral : bool + Whether to use icosahedral, as opposed to less regular, JIGSAW + meshes + + case_name : str + The name of the test case + """ + def __init__(self, component, resolutions, icosahedral, subdir, + case_name, dependencies): + """ + Create the step + + Parameters + ---------- + component : polaris.Component + The component the step belongs to + + resolutions : list of float + The resolutions of the meshes that have been run + + icosahedral : bool + Whether to use icosahedral, as opposed to less regular, JIGSAW + meshes + + subdir : str + The subdirectory that the step resides in + + case_name: str + The name of the test case + + dependencies : dict of dict of polaris.Steps + The dependencies of this step + """ + super().__init__(component=component, name='filament_analysis', + subdir=subdir) + self.resolutions = resolutions + self.case_name = case_name + + for resolution in resolutions: + mesh_name = resolution_to_subdir(resolution) + base_mesh = dependencies['mesh'][resolution] + init = dependencies['init'][resolution] + forward = dependencies['forward'][resolution] + self.add_input_file( + filename=f'{mesh_name}_mesh.nc', + work_dir_target=f'{base_mesh.path}/base_mesh.nc') + self.add_input_file( + filename=f'{mesh_name}_init.nc', + work_dir_target=f'{init.path}/initial_state.nc') + self.add_input_file( + filename=f'{mesh_name}_output.nc', + work_dir_target=f'{forward.path}/output.nc') + self.add_output_file('filament.png') + + def run(self): + """ + Run this step of the test case + """ + plt.switch_backend('Agg') + resolutions = self.resolutions + config = self.config + section = config[self.case_name] + eval_time = section.getfloat('filament_evaluation_time') + s_per_day = 86400.0 + zidx = 1 + variable_name = 'tracer2' + num_tau = 21 + filament_tau = np.linspace(0, 1, num_tau) + filament_norm = np.zeros((len(resolutions), num_tau)) + fig, ax = plt.subplots() + for i, resolution in enumerate(resolutions): + mesh_name = resolution_to_subdir(resolution) + ds = xr.open_dataset(f'{mesh_name}_output.nc') + tidx = _time_index_from_xtime(ds.xtime.values, + eval_time * s_per_day) + tracer = ds[variable_name] + area_cell = ds["areaCell"] + for j, tau in enumerate(filament_tau): + cells_above_tau = tracer[tidx, :, zidx] >= tau + cells_above_tau0 = tracer[0, :, zidx] >= tau + if np.sum(cells_above_tau0 * area_cell) == 0.: + filament_norm[i, j] = np.nan + else: + filament_norm[i, j] = np.divide( + np.sum(area_cell * cells_above_tau), + np.sum(cells_above_tau0 * area_cell)) + plt.plot(filament_tau, filament_norm[i, :], '.-', label=mesh_name) + plt.plot([filament_tau[0], filament_tau[-1]], [1., 1.], 'k--') + ax.set_xlim([filament_tau[0], filament_tau[-1]]) + ax.set_xlabel(r'$\tau$') + ax.set_ylabel(r'$l_f$') + plt.title(f'Filament preservation diagnostic for {variable_name}') + plt.legend() + fig.savefig('filament.png', bbox_inches='tight') + + res_array = np.array(resolutions, dtype=float) + data = np.column_stack((res_array, filament_norm)) + col_headers = ['resolution'] + for tau in filament_tau: + col_headers.append(f'{tau:g}') + df = pd.DataFrame(data, columns=col_headers) + df.to_csv('filament.csv', index=False) + + +def _time_index_from_xtime(xtime, dt_target): + """ + Determine the time index at which to evaluate convergence + + Parameters + ---------- + xtime: list of str + Times in the dataset + dt_target: float + Time in seconds at which to evaluate convergence + + Returns + ------- + tidx: int + Index in xtime that is closest to dt_target + """ + t0 = datetime.datetime.strptime(xtime[0].decode(), + '%Y-%m-%d_%H:%M:%S') + dt = np.zeros((len(xtime))) + for idx, xt in enumerate(xtime): + t = datetime.datetime.strptime(xt.decode(), + '%Y-%m-%d_%H:%M:%S') + dt[idx] = (t - t0).total_seconds() + return np.argmin(np.abs(np.subtract(dt, dt_target))) diff --git a/polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg b/polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg index 235d836ad..47aa47082 100644 --- a/polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg +++ b/polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg @@ -2,6 +2,9 @@ [nondivergent_2d] # convergence threshold below which the test fails -convergence_thresh_tracer1 = 1.7 -convergence_thresh_tracer2 = 1.66 -convergence_thresh_tracer3 = 0.4 +convergence_thresh_tracer1 = 1.5 +convergence_thresh_tracer2 = 1.3 +convergence_thresh_tracer3 = 0.3 + +# time in days at which to evaluate filament preservation +filament_evaluation_time = 6.0 From dc54d20f37638995da43a11d3829cdde8b2d12f5 Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Mon, 2 Oct 2023 10:21:46 -0500 Subject: [PATCH 11/23] Fixup sphere_transport convergence rebase shared config --- .../ocean/tasks/sphere_transport/__init__.py | 68 ++++++++++++------- 1 file changed, 43 insertions(+), 25 deletions(-) diff --git a/polaris/ocean/tasks/sphere_transport/__init__.py b/polaris/ocean/tasks/sphere_transport/__init__.py index 6725b4db1..8c2b6686e 100644 --- a/polaris/ocean/tasks/sphere_transport/__init__.py +++ b/polaris/ocean/tasks/sphere_transport/__init__.py @@ -20,12 +20,21 @@ def add_sphere_transport_tasks(component): the ocean component that the tasks will be added to """ - for case_name in ['rotation_2d', 'nondivergent_2d', 'divergent_2d', - 'correlated_tracers_2d']: - for include_viz in [False, True]: - component.add_task(SphereTransport( - component=component, case_name=case_name, icosahedral=True, - include_viz=include_viz)) + for icosahedral, prefix in [(True, 'icos'), (False, 'qu')]: + for case_name in ['rotation_2d', 'nondivergent_2d', 'divergent_2d', + 'correlated_tracers_2d']: + filepath = f'spherical/{prefix}/{case_name}/{case_name}.cfg' + config = PolarisConfigParser(filepath=filepath) + config.add_from_package('polaris.ocean.convergence.spherical', + 'spherical.cfg') + package = 'polaris.ocean.tasks.sphere_transport' + config.add_from_package(package, 'sphere_transport.cfg') + config.add_from_package(package, f'{case_name}.cfg') + for include_viz in [False, True]: + component.add_task(SphereTransport( + component=component, case_name=case_name, + icosahedral=icosahedral, config=config, + include_viz=include_viz)) class SphereTransport(Task): @@ -43,7 +52,7 @@ class SphereTransport(Task): include_viz : bool Include VizMap and Viz steps for each resolution """ - def __init__(self, component, case_name, icosahedral, include_viz): + def __init__(self, component, config, case_name, icosahedral, include_viz): """ Create test case for creating a global MPAS-Ocean mesh @@ -64,45 +73,46 @@ def __init__(self, component, case_name, icosahedral, include_viz): Include VizMap and Viz steps for each resolution """ if icosahedral: - subdir = f'spherical/icos/{case_name}' + prefix = 'icos' else: - subdir = f'spherical/qu/{case_name}' + prefix = 'qu' + + subdir = f'spherical/{prefix}/{case_name}' + name = f'{prefix}_{case_name}' if include_viz: subdir = f'{subdir}/with_viz' - super().__init__(component=component, name=case_name, - subdir=subdir) + name = f'{name}_with_viz' + link = '{case_name}.cfg' + else: + # config options live in the task already so no need for a symlink + link = None + super().__init__(component=component, name=name, subdir=subdir) self.resolutions = list() self.icosahedral = icosahedral self.case_name = case_name self.include_viz = include_viz + self.set_shared_config(config, link=link) + # add the steps with default resolutions so they can be listed - config = PolarisConfigParser() - config.add_from_package('polaris.ocean.convergence.spherical', - 'spherical.cfg') - self._setup_steps(config) + self._setup_steps() def configure(self): """ Set config options for the test case """ super().configure() - case_name = self.case_name - config = self.config - config.add_from_package('polaris.mesh', 'mesh.cfg') - config.add_from_package('polaris.ocean.convergence.spherical', - 'spherical.cfg') - package = 'polaris.ocean.tasks.sphere_transport' - config.add_from_package(package, 'sphere_transport.cfg') - config.add_from_package(package, f'{case_name}.cfg') # set up the steps again in case a user has provided new resolutions - self._setup_steps(config) + self._setup_steps() - def _setup_steps(self, config): + def _setup_steps(self): """ setup steps given resolutions """ case_name = self.case_name icosahedral = self.icosahedral + config = self.config + config_filename = self.config_filename + if icosahedral: prefix = 'icos' else: @@ -143,6 +153,7 @@ def _setup_steps(self, config): else: init_step = Init(component=component, name=name, subdir=subdir, base_mesh=base_mesh_step, case_name=case_name) + init_step.set_shared_config(config, link=config_filename) self.add_step(init_step, symlink=symlink) analysis_dependencies['init'][resolution] = init_step @@ -160,6 +171,7 @@ def _setup_steps(self, config): base_mesh=base_mesh_step, init=init_step, case_name=case_name) + forward_step.set_shared_config(config, link=config_filename) self.add_step(forward_step, symlink=symlink) analysis_dependencies['forward'][resolution] = forward_step @@ -171,6 +183,7 @@ def _setup_steps(self, config): viz_map = VizMap(component=component, name=name, subdir=subdir, base_mesh=base_mesh_step, mesh_name=mesh_name) + viz_map.set_shared_config(config, link=config_filename) self.add_step(viz_map) name = f'{prefix}_viz_{mesh_name}' @@ -179,6 +192,7 @@ def _setup_steps(self, config): subdir=subdir, base_mesh=base_mesh_step, init=init_step, forward=forward_step, viz_map=viz_map, mesh_name=mesh_name) + step.set_shared_config(config, link=config_filename) self.add_step(step) subdir = f'{sph_trans_dir}/analysis' @@ -188,11 +202,14 @@ def _setup_steps(self, config): symlink = None if subdir in component.steps: step = component.steps[subdir] + step.resolutions = resolutions + step.dependencies_dict = analysis_dependencies else: step = Analysis(component=component, resolutions=resolutions, icosahedral=icosahedral, subdir=subdir, case_name=case_name, dependencies=analysis_dependencies) + step.set_shared_config(config, link=config_filename) self.add_step(step, symlink=symlink) if case_name == 'nondivergent_2d': @@ -209,4 +226,5 @@ def _setup_steps(self, config): icosahedral=icosahedral, subdir=subdir, case_name=case_name, dependencies=analysis_dependencies) + step.set_shared_config(config, link=config_filename) self.add_step(step, symlink=symlink) From 01ff9e62dc110c07c6ecccd7f4470335cc0baac3 Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Mon, 2 Oct 2023 12:38:50 -0500 Subject: [PATCH 12/23] Add mixing analysis to correlated tracers --- .../ocean/tasks/sphere_transport/__init__.py | 23 ++- .../correlated_tracers_2d.cfg | 3 + .../tasks/sphere_transport/mixing_analysis.py | 170 ++++++++++++++++++ 3 files changed, 195 insertions(+), 1 deletion(-) create mode 100644 polaris/ocean/tasks/sphere_transport/mixing_analysis.py diff --git a/polaris/ocean/tasks/sphere_transport/__init__.py b/polaris/ocean/tasks/sphere_transport/__init__.py index 8c2b6686e..7780e4452 100644 --- a/polaris/ocean/tasks/sphere_transport/__init__.py +++ b/polaris/ocean/tasks/sphere_transport/__init__.py @@ -9,6 +9,7 @@ ) from polaris.ocean.tasks.sphere_transport.forward import Forward from polaris.ocean.tasks.sphere_transport.init import Init +from polaris.ocean.tasks.sphere_transport.mixing_analysis import MixingAnalysis from polaris.ocean.tasks.sphere_transport.viz import Viz, VizMap @@ -61,6 +62,9 @@ def __init__(self, component, config, case_name, icosahedral, include_viz): component : polaris.ocean.Ocean The ocean component that this task belongs to + config : polaris.config.PolarisConfigParser + A shared config parser + case_name: string The name of the case which determines what variant of the configuration to use @@ -82,7 +86,7 @@ def __init__(self, component, config, case_name, icosahedral, include_viz): if include_viz: subdir = f'{subdir}/with_viz' name = f'{name}_with_viz' - link = '{case_name}.cfg' + link = f'{case_name}.cfg' else: # config options live in the task already so no need for a symlink link = None @@ -212,6 +216,23 @@ def _setup_steps(self): step.set_shared_config(config, link=config_filename) self.add_step(step, symlink=symlink) + if case_name == 'correlated_tracers_2d': + subdir = f'{sph_trans_dir}/mixing_analysis' + if self.include_viz: + symlink = 'mixing_analysis' + else: + symlink = None + if subdir in component.steps: + step = component.steps[subdir] + else: + step = MixingAnalysis(component=component, + resolutions=resolutions, + icosahedral=icosahedral, subdir=subdir, + case_name=case_name, + dependencies=analysis_dependencies) + step.set_shared_config(config, link=config_filename) + self.add_step(step, symlink=symlink) + if case_name == 'nondivergent_2d': subdir = f'{sph_trans_dir}/filament_analysis' if self.include_viz: diff --git a/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg b/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg index 08c8ce935..1325b498c 100644 --- a/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg +++ b/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg @@ -5,3 +5,6 @@ convergence_thresh_tracer1 = 1.5 convergence_thresh_tracer2 = 1.3 convergence_thresh_tracer3 = 1.0 + +# time in days at which to evaluate mixing +mixing_evaluation_time = 6.0 diff --git a/polaris/ocean/tasks/sphere_transport/mixing_analysis.py b/polaris/ocean/tasks/sphere_transport/mixing_analysis.py new file mode 100644 index 000000000..98d77d943 --- /dev/null +++ b/polaris/ocean/tasks/sphere_transport/mixing_analysis.py @@ -0,0 +1,170 @@ +import datetime +from math import ceil + +import matplotlib.pyplot as plt +import numpy as np +import xarray as xr +from matplotlib.lines import Line2D + +from polaris import Step +from polaris.ocean.resolution import resolution_to_subdir + + +class MixingAnalysis(Step): + """ + A step for analyzing the output from sphere transport test cases + + Attributes + ---------- + resolutions : list of float + The resolutions of the meshes that have been run + + icosahedral : bool + Whether to use icosahedral, as opposed to less regular, JIGSAW + meshes + + case_name : str + The name of the test case + """ + def __init__(self, component, resolutions, icosahedral, subdir, + case_name, dependencies): + """ + Create the step + + Parameters + ---------- + component : polaris.Component + The component the step belongs to + + resolutions : list of float + The resolutions of the meshes that have been run + + icosahedral : bool + Whether to use icosahedral, as opposed to less regular, JIGSAW + meshes + + subdir : str + The subdirectory that the step resides in + + case_name: str + The name of the test case + + dependencies : dict of dict of polaris.Steps + The dependencies of this step + """ + super().__init__(component=component, name='mixing_analysis', + subdir=subdir) + self.resolutions = resolutions + self.case_name = case_name + + for resolution in resolutions: + mesh_name = resolution_to_subdir(resolution) + base_mesh = dependencies['mesh'][resolution] + init = dependencies['init'][resolution] + forward = dependencies['forward'][resolution] + self.add_input_file( + filename=f'{mesh_name}_mesh.nc', + work_dir_target=f'{base_mesh.path}/base_mesh.nc') + self.add_input_file( + filename=f'{mesh_name}_init.nc', + work_dir_target=f'{init.path}/initial_state.nc') + self.add_input_file( + filename=f'{mesh_name}_output.nc', + work_dir_target=f'{forward.path}/output.nc') + self.add_output_file('triplots.png') + + def run(self): + """ + Run this step of the test case + """ + plt.switch_backend('Agg') + resolutions = self.resolutions + config = self.config + section = config[self.case_name] + eval_time = section.getfloat('mixing_evaluation_time') + s_per_day = 86400.0 + zidx = 1 + nrows = int(ceil(len(resolutions) / 2)) + fig, axes = plt.subplots(nrows=nrows, ncols=2, sharex=True, + sharey=True, figsize=(5.5, 7)) + plt.subplots_adjust(wspace=0.1) + for i, resolution in enumerate(resolutions): + ax = axes[int(i / 2), i % 2] + _init_triplot_axes(ax) + mesh_name = resolution_to_subdir(resolution) + ax.set(title=mesh_name) + ds = xr.open_dataset(f'{mesh_name}_output.nc') + if i % 2 == 0: + ax.set_ylabel("tracer3") + if int(i / 2) == 2: + ax.set_xlabel("tracer2") + tidx = _time_index_from_xtime(ds.xtime.values, + eval_time * s_per_day) + ds = ds.isel(Time=tidx) + ds = ds.isel(nVertLevels=zidx) + tracer2 = ds["tracer2"].values + tracer3 = ds["tracer3"].values + ax.plot(tracer2, tracer3, '.', markersize=1) + ax.set_aspect('equal') + if i % 2 < 1: + ax = axes[int(i / 2), 1] + ax.set_axis_off() + fig.suptitle('Correlated tracers 2-d') + fig.savefig('triplots.png', bbox_inches='tight') + + +def _init_triplot_axes(ax): + lw = 0.4 + topline = Line2D([0.1, 1.0], [0.9, 0.9], color='k', + linestyle='-', linewidth=lw) + botline = Line2D([0.1, 1.0], [0.9, 0.1], color='k', + linestyle='-', linewidth=lw) + rightline = Line2D([1, 1], [0.1, 0.9], color='k', + linestyle='-', linewidth=lw) + leftline = Line2D([0.1, 0.1], [0.1, 0.9], color='k', + linestyle='-', linewidth=lw) + crvx = np.linspace(0.1, 1) + crvy = -0.8 * np.square(crvx) + 0.9 + ticks = np.array(range(6)) / 5 + ax.plot(crvx, crvy, 'k-', linewidth=1.25 * lw) + ax.set_xticks(ticks) + ax.set_yticks(ticks) + ax.add_artist(topline) + ax.add_artist(botline) + ax.add_artist(rightline) + ax.add_artist(leftline) + ax.set_xlim([0, 1.1]) + ax.set_ylim([0, 1.0]) + ax.text(0.98, 0.87, 'Range-preserving\n unmixing', fontsize=8, + horizontalalignment='right', verticalalignment='top') + ax.text(0.12, 0.12, 'Range-preserving\n unmixing', fontsize=8, + horizontalalignment='left', verticalalignment='bottom') + ax.text(0.5, 0.27, 'Real mixing', rotation=-40., fontsize=8) + ax.text(0.05, 0.05, 'Overshooting', rotation=-90., fontsize=8) + ax.grid(color='lightgray') + + +def _time_index_from_xtime(xtime, dt_target): + """ + Determine the time index at which to evaluate convergence + + Parameters + ---------- + xtime: list of str + Times in the dataset + dt_target: float + Time in seconds at which to evaluate convergence + + Returns + ------- + tidx: int + Index in xtime that is closest to dt_target + """ + t0 = datetime.datetime.strptime(xtime[0].decode(), + '%Y-%m-%d_%H:%M:%S') + dt = np.zeros((len(xtime))) + for idx, xt in enumerate(xtime): + t = datetime.datetime.strptime(xt.decode(), + '%Y-%m-%d_%H:%M:%S') + dt[idx] = (t - t0).total_seconds() + return np.argmin(np.abs(np.subtract(dt, dt_target))) From 5ae0b589d44cf3d891922fc5f5c3e5cf23214acf Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Wed, 4 Oct 2023 11:14:13 -0500 Subject: [PATCH 13/23] Add viz at midway through simulation --- polaris/ocean/tasks/sphere_transport/viz.py | 62 +++++++++++++++++++-- 1 file changed, 57 insertions(+), 5 deletions(-) diff --git a/polaris/ocean/tasks/sphere_transport/viz.py b/polaris/ocean/tasks/sphere_transport/viz.py index b20a70082..3968d64fb 100644 --- a/polaris/ocean/tasks/sphere_transport/viz.py +++ b/polaris/ocean/tasks/sphere_transport/viz.py @@ -1,4 +1,7 @@ +import datetime + import cmocean # noqa: F401 +import numpy as np import xarray as xr from polaris import Step @@ -142,9 +145,24 @@ def run(self): ds_init.to_netcdf('remapped_init.nc') ds_out = xr.open_dataset('output.nc') - ds_out = ds_out[variables_to_plot.keys()].isel(Time=-1, nVertLevels=0) - ds_out = remapper.remap(ds_out) - ds_out.to_netcdf('remapped_final.nc') + seconds_per_day = 86400.0 + + # Visualization at halfway around the globe (provided run duration is + # set to the time needed to circumnavigate the globe) + tidx = _time_index_from_xtime(ds_out.xtime.values, + run_duration * seconds_per_day / 2.) + ds_mid = ds_out[variables_to_plot.keys()].isel(Time=tidx, + nVertLevels=0) + ds_mid = remapper.remap(ds_mid) + ds_mid.to_netcdf('remapped_mid.nc') + + # Visualization at all the way around the globe + tidx = _time_index_from_xtime(ds_out.xtime.values, + run_duration * seconds_per_day) + ds_final = ds_out[variables_to_plot.keys()].isel(Time=tidx, + nVertLevels=0) + ds_final = remapper.remap(ds_final) + ds_final.to_netcdf('remapped_final.nc') for var, section_name in variables_to_plot.items(): colormap_section = f'sphere_transport_viz_{section_name}' @@ -154,15 +172,49 @@ def run(self): colormap_section=colormap_section, title=f'{mesh_name} {var} at init', plot_land=False) plot_global(ds_init.lon.values, ds_init.lat.values, - ds_out[var].values, + ds_mid[var].values, + out_filename=f'{var}_mid.png', config=config, + colormap_section=colormap_section, + title=f'{mesh_name} {var} after {run_duration / 2.:g} ' + 'days', + plot_land=False) + plot_global(ds_init.lon.values, ds_init.lat.values, + ds_final[var].values, out_filename=f'{var}_final.png', config=config, colormap_section=colormap_section, title=f'{mesh_name} {var} after {run_duration:g} days', plot_land=False) plot_global(ds_init.lon.values, ds_init.lat.values, - ds_out[var].values - ds_init[var].values, + ds_final[var].values - ds_init[var].values, out_filename=f'{var}_diff.png', config=config, colormap_section=f'{colormap_section}_diff', title=f'Difference in {mesh_name} {var} from initial ' f'condition after {run_duration:g} days', plot_land=False) + + +def _time_index_from_xtime(xtime, dt_target): + """ + Determine the time index at which to evaluate convergence + + Parameters + ---------- + xtime : list of str + Times in the dataset + + dt_target : float + Time in seconds at which to evaluate convergence + + Returns + ------- + tidx : int + Index in xtime that is closest to dt_target + """ + t0 = datetime.datetime.strptime(xtime[0].decode(), + '%Y-%m-%d_%H:%M:%S') + dt = np.zeros((len(xtime))) + for idx, xt in enumerate(xtime): + t = datetime.datetime.strptime(xt.decode(), + '%Y-%m-%d_%H:%M:%S') + dt[idx] = (t - t0).total_seconds() + return np.argmin(np.abs(np.subtract(dt, dt_target))) From 04d957571268f9aba4b5e240b2ed006a7a72fde5 Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Wed, 4 Oct 2023 12:30:33 -0500 Subject: [PATCH 14/23] Move a few initial state parameters to cfg options --- .../correlated_tracers_2d.cfg | 5 +- .../tasks/sphere_transport/divergent_2d.cfg | 5 +- polaris/ocean/tasks/sphere_transport/init.py | 18 ++- .../sphere_transport/nondivergent_2d.cfg | 5 +- .../sphere_transport/resources/flow_types.py | 119 ++++++++++++++---- .../tasks/sphere_transport/rotation_2d.cfg | 5 +- 6 files changed, 128 insertions(+), 29 deletions(-) diff --git a/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg b/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg index 1325b498c..c1f30c08a 100644 --- a/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg +++ b/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg @@ -1,6 +1,9 @@ -# options for rotation2D convergence test case +# options for correlated_tracers_2d test case [correlated_tracers_2d] +# velocity amplitude in meters per second +vel_amp = 10. + # convergence threshold below which the test fails convergence_thresh_tracer1 = 1.5 convergence_thresh_tracer2 = 1.3 diff --git a/polaris/ocean/tasks/sphere_transport/divergent_2d.cfg b/polaris/ocean/tasks/sphere_transport/divergent_2d.cfg index d3849ff76..230132959 100644 --- a/polaris/ocean/tasks/sphere_transport/divergent_2d.cfg +++ b/polaris/ocean/tasks/sphere_transport/divergent_2d.cfg @@ -1,6 +1,9 @@ -# options for rotation2D convergence test case +# options for divergent_2d test case [divergent_2d] +# velocity amplitude in meters per second +vel_amp = 5. + # convergence threshold below which the test fails convergence_thresh_tracer1 = 1.48 convergence_thresh_tracer2 = 1.5 diff --git a/polaris/ocean/tasks/sphere_transport/init.py b/polaris/ocean/tasks/sphere_transport/init.py index 570c77fd2..c531a438b 100644 --- a/polaris/ocean/tasks/sphere_transport/init.py +++ b/polaris/ocean/tasks/sphere_transport/init.py @@ -67,6 +67,7 @@ def run(self): section = config['sphere_transport'] temperature = section.getfloat('temperature') salinity = section.getfloat('salinity') + vel_pd = section.getfloat('vel_pd') section = config['vertical_grid'] bottom_depth = section.getfloat('bottom_depth') @@ -109,13 +110,24 @@ def run(self): ds['tracer3'] = ds.tracer3.expand_dims(dim='Time', axis=0) # Initialize velocity + seconds_per_day = 86400. if case_name == 'rotation_2d': - u, v = flow_rotation(lonEdge, latEdge) + rotation_vector = config.getlist(case_name, 'rotation_vector', + dtype=float) + vector = np.array(rotation_vector) + u, v = flow_rotation(lonEdge, latEdge, vector, + vel_pd * seconds_per_day) elif case_name == 'divergent_2d': - u, v = flow_divergent(0., lonEdge, latEdge) + section = config[case_name] + vel_amp = section.getfloat('vel_amp') + u, v = flow_divergent(0., lonEdge, latEdge, + vel_amp, vel_pd * seconds_per_day) elif (case_name == 'nondivergent_2d' or case_name == 'correlated_tracers_2d'): - u, v = flow_nondivergent(0., lonEdge, latEdge) + section = config[case_name] + vel_amp = section.getfloat('vel_amp') + u, v = flow_nondivergent(0., lonEdge, latEdge, + vel_amp, vel_pd * seconds_per_day) else: raise ValueError(f'Unexpected test case name {case_name}') diff --git a/polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg b/polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg index 47aa47082..a34d2d793 100644 --- a/polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg +++ b/polaris/ocean/tasks/sphere_transport/nondivergent_2d.cfg @@ -1,6 +1,9 @@ -# options for rotation2D convergence test case +# options for nondivergent_2d test case [nondivergent_2d] +# velocity amplitude in meters per second +vel_amp = 10. + # convergence threshold below which the test fails convergence_thresh_tracer1 = 1.5 convergence_thresh_tracer2 = 1.3 diff --git a/polaris/ocean/tasks/sphere_transport/resources/flow_types.py b/polaris/ocean/tasks/sphere_transport/resources/flow_types.py index fd196c0de..dc77ab4cd 100644 --- a/polaris/ocean/tasks/sphere_transport/resources/flow_types.py +++ b/polaris/ocean/tasks/sphere_transport/resources/flow_types.py @@ -7,38 +7,113 @@ ) -def flow_nondivergent(t, lon, lat): - s_day = 3600. * 24. - twelve_days = s_day * 12. - lon_p = lon - 2. * pi * t / twelve_days +def flow_nondivergent(t, lon, lat, u_0, tau): + """ + Compute a nondivergent velocity field + + Parameters + ---------- + t : np.ndarray of type float + times in seconds at which to compute the velocity field + + lon : np.ndarray of type float + longitude + + lat : np.ndarray of type float + latitude + + u_0 : float + velocity amplitude in meters per second + + tau : float + time in seconds for the flow to circumnavigate the sphere + + Returns + ------- + u : np.ndarray of type float + zonal velocity + + v : np.ndarray of type float + meridional velocity + """ + lon_p = lon - 2. * pi * t / tau coslat = cos(lat) - cost = cos(pi * t / twelve_days) - u = (1 / twelve_days) * (10 * (sin(lon_p)**2) * sin(2 * lat) * cost + - 2. * pi * coslat) - v = (10 / twelve_days) * sin(2 * lon_p) * coslat * cost + cost = cos(pi * t / tau) + u = (1 / tau) * (u_0 * (sin(lon_p)**2) * sin(2 * lat) * cost + + 2. * pi * coslat) + v = (u_0 / tau) * sin(2 * lon_p) * coslat * cost return u, v -def flow_divergent(t, lon, lat): - s_day = 3600. * 24. - twelve_days = 12. * s_day - lon_p = lon - 2. * pi * t / twelve_days +def flow_divergent(t, lon, lat, u_0, tau): + """ + Compute a nondivergent velocity field + + Parameters + ---------- + t : np.ndarray of type float + times in seconds at which to compute the velocity field + + lon : np.ndarray of type float + longitude + + lat : np.ndarray of type float + latitude + + u_0 : float + velocity amplitude in meters per second + + tau : float + time in seconds for the flow to circumnavigate the sphere + + Returns + ------- + u : np.ndarray of type float + zonal velocity + + v : np.ndarray of type float + meridional velocity + """ + lon_p = lon - 2. * pi * t / tau coslat = cos(lat) - cost = cos(pi * t / twelve_days) - u = (1 / twelve_days) * (-5 * (sin(lon_p / 2)**2) * sin(2 * lat) * - (coslat**2) * cost + 2. * pi * coslat) - v = (2.5 / twelve_days) * sin(lon_p) * (coslat**3) * cost + cost = cos(pi * t / tau) + u = (1 / tau) * (-u_0 * (sin(lon_p / 2)**2) * sin(2 * lat) * + (coslat**2) * cost + 2. * pi * coslat) + v = (u_0 / (2 * tau)) * sin(lon_p) * (coslat**3) * cost return u, v -def flow_rotation(lon, lat): - s_day = 3600. * 24. - twelve_days = 12. * s_day - Omega = np.array([0.2, 0.7, 1.0]) # Constant rotation vector - Omega = (2. * pi / twelve_days) * (Omega / np.linalg.norm(Omega)) +def flow_rotation(lon, lat, omega, tau): + """ + Compute a nondivergent velocity field + + Parameters + ---------- + lon : np.ndarray of type float + longitude + + lat : np.ndarray of type float + latitude + + omega : np.ndarray of type float + vector defining the axis of rotation of the flow in cartesian + coordinates + + tau : float + time in seconds for the flow to circumnavigate the sphere + + Returns + ------- + u : np.ndarray of type float + zonal velocity + + v : np.ndarray of type float + meridional velocity + """ + omega = (2. * pi / tau) * (omega / np.linalg.norm(omega)) x, y, z = lonlat2xyz(lon, lat) xyz = np.stack((x, y, z), axis=1) - vel = np.cross(Omega, np.transpose(xyz), axis=0) + vel = np.cross(omega, np.transpose(xyz), axis=0) east, north = calc_local_east_north(x, y, z) u = np.sum(vel * east, axis=0) v = np.sum(vel * north, axis=0) diff --git a/polaris/ocean/tasks/sphere_transport/rotation_2d.cfg b/polaris/ocean/tasks/sphere_transport/rotation_2d.cfg index a84a13a2c..e6e9da775 100644 --- a/polaris/ocean/tasks/sphere_transport/rotation_2d.cfg +++ b/polaris/ocean/tasks/sphere_transport/rotation_2d.cfg @@ -1,6 +1,9 @@ -# options for rotation2D convergence test case +# options for rotation_2d test case [rotation_2d] +# rotation vector in cartesian coordinates +rotation_vector = 0.2, 0.7, 1.0 + # convergence threshold below which the test fails convergence_thresh_tracer1 = 1.4 convergence_thresh_tracer2 = 1.8 From 855bbbbea1d422372142d84e68727139f4aa25a4 Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Thu, 5 Oct 2023 12:06:39 -0500 Subject: [PATCH 15/23] Cleanup initial state routines and add more cfg options --- polaris/ocean/tasks/cosine_bell/init.py | 5 + .../correlated_tracers_2d.cfg | 4 + polaris/ocean/tasks/sphere_transport/init.py | 36 ++- .../sphere_transport/resources/flow_types.py | 25 +- .../resources/tracer_distributions.py | 215 +++++++++++++++--- .../tasks/sphere_transport/resources/utils.py | 49 ---- .../sphere_transport/sphere_transport.cfg | 17 ++ 7 files changed, 247 insertions(+), 104 deletions(-) delete mode 100644 polaris/ocean/tasks/sphere_transport/resources/utils.py diff --git a/polaris/ocean/tasks/cosine_bell/init.py b/polaris/ocean/tasks/cosine_bell/init.py index 4c3b26ef9..788f0b6cf 100644 --- a/polaris/ocean/tasks/cosine_bell/init.py +++ b/polaris/ocean/tasks/cosine_bell/init.py @@ -124,5 +124,10 @@ def cosine_bell(max_value, ri, r): r : float Radius of the cosine bell in meters + + Returns + ------- + f : np.ndarray of type float + Cosine bell tracer values """ return max_value / 2.0 * (1.0 + np.cos(np.pi * np.divide(ri, r))) diff --git a/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg b/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg index c1f30c08a..35679737a 100644 --- a/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg +++ b/polaris/ocean/tasks/sphere_transport/correlated_tracers_2d.cfg @@ -4,6 +4,10 @@ # velocity amplitude in meters per second vel_amp = 10. +# Quadratic coefficients for the correlated tracer function in decreasing +# order of the terms +correlation_coefficients = -0.8, 0.0, 0.9 + # convergence threshold below which the test fails convergence_thresh_tracer1 = 1.5 convergence_thresh_tracer2 = 1.3 diff --git a/polaris/ocean/tasks/sphere_transport/init.py b/polaris/ocean/tasks/sphere_transport/init.py index c531a438b..9844d79c0 100644 --- a/polaris/ocean/tasks/sphere_transport/init.py +++ b/polaris/ocean/tasks/sphere_transport/init.py @@ -9,11 +9,9 @@ flow_rotation, ) from polaris.ocean.tasks.sphere_transport.resources.tracer_distributions import ( # noqa: E501 + correlation_fn, cosine_bells, slotted_cylinders, -) -from polaris.ocean.tasks.sphere_transport.resources.utils import ( - correlation_fn, xyztrig, ) from polaris.ocean.vertical import init_vertical_coord @@ -92,12 +90,30 @@ def run(self): ds['temperature'] = temperature_array.expand_dims(dim='Time', axis=0) ds['salinity'] = salinity * xr.ones_like(ds.temperature) - tracer1 = xyztrig(lonCell, latCell) - tracer2 = cosine_bells(lonCell, latCell) + # tracer1 + tracer1 = xyztrig(lonCell, latCell, sphere_radius) + + # tracer2 + section = config['sphere_transport'] + radius = section.getfloat('cosine_bells_radius') + background_value = section.getfloat('cosine_bells_background') + amplitude = section.getfloat('cosine_bells_amplitude') + tracer2 = cosine_bells(lonCell, latCell, radius, background_value, + amplitude, sphere_radius) + + # tracer3 if case_name == 'correlated_tracers_2d': - tracer3 = correlation_fn(tracer2) + coeff = config.getlist(case_name, 'correlation_coefficients', + dtype=float) + tracer3 = correlation_fn(tracer2, coeff[0], coeff[1], coeff[2]) else: - tracer3 = slotted_cylinders(lonCell, latCell) + section = config['sphere_transport'] + radius = section.getfloat('slotted_cylinders_radius') + background_value = section.getfloat('slotted_cylinders_background') + amplitude = section.getfloat('slotted_cylinders_amplitude') + tracer3 = slotted_cylinders(lonCell, latCell, radius, + background_value, amplitude, + sphere_radius) _, tracer1_array = np.meshgrid(ds.refZMid.values, tracer1) _, tracer2_array = np.meshgrid(ds.refZMid.values, tracer2) _, tracer3_array = np.meshgrid(ds.refZMid.values, tracer3) @@ -116,7 +132,7 @@ def run(self): dtype=float) vector = np.array(rotation_vector) u, v = flow_rotation(lonEdge, latEdge, vector, - vel_pd * seconds_per_day) + vel_pd * seconds_per_day, sphere_radius) elif case_name == 'divergent_2d': section = config[case_name] vel_amp = section.getfloat('vel_amp') @@ -141,7 +157,3 @@ def run(self): ds['fVertex'] = xr.zeros_like(ds_mesh.xVertex) write_netcdf(ds, 'initial_state.nc') - - -def cosine_bell(max_value, ri, r): - return max_value / 2.0 * (1.0 + np.cos(np.pi * np.divide(ri, r))) diff --git a/polaris/ocean/tasks/sphere_transport/resources/flow_types.py b/polaris/ocean/tasks/sphere_transport/resources/flow_types.py index dc77ab4cd..78a9adf95 100644 --- a/polaris/ocean/tasks/sphere_transport/resources/flow_types.py +++ b/polaris/ocean/tasks/sphere_transport/resources/flow_types.py @@ -1,11 +1,7 @@ import numpy as np +from mpas_tools.transects import lon_lat_to_cartesian from numpy import cos, pi, sin -from polaris.ocean.tasks.sphere_transport.resources.utils import ( - calc_local_east_north, - lonlat2xyz, -) - def flow_nondivergent(t, lon, lat, u_0, tau): """ @@ -83,7 +79,7 @@ def flow_divergent(t, lon, lat, u_0, tau): return u, v -def flow_rotation(lon, lat, omega, tau): +def flow_rotation(lon, lat, omega, tau, sphere_radius): """ Compute a nondivergent velocity field @@ -102,6 +98,9 @@ def flow_rotation(lon, lat, omega, tau): tau : float time in seconds for the flow to circumnavigate the sphere + sphere_radius : float + radius of the sphere + Returns ------- u : np.ndarray of type float @@ -111,10 +110,20 @@ def flow_rotation(lon, lat, omega, tau): meridional velocity """ omega = (2. * pi / tau) * (omega / np.linalg.norm(omega)) - x, y, z = lonlat2xyz(lon, lat) + x, y, z = lon_lat_to_cartesian(lon, lat, sphere_radius, degrees=False) xyz = np.stack((x, y, z), axis=1) - vel = np.cross(omega, np.transpose(xyz), axis=0) + vel = np.cross(omega, np.divide(np.transpose(xyz), sphere_radius), axis=0) east, north = calc_local_east_north(x, y, z) u = np.sum(vel * east, axis=0) v = np.sum(vel * north, axis=0) return u, v + + +def calc_local_east_north(x, y, z): + axis = [0, 0, 1] + xyz = np.stack((x, y, z), axis=1) + east = np.cross(axis, np.transpose(xyz), axis=0) + north = np.cross(np.transpose(xyz), east, axis=0) + east = east / np.linalg.norm(east, axis=0) + north = north / np.linalg.norm(north, axis=0) + return east, north diff --git a/polaris/ocean/tasks/sphere_transport/resources/tracer_distributions.py b/polaris/ocean/tasks/sphere_transport/resources/tracer_distributions.py index 2c2a632b9..6eef52e71 100644 --- a/polaris/ocean/tasks/sphere_transport/resources/tracer_distributions.py +++ b/polaris/ocean/tasks/sphere_transport/resources/tracer_distributions.py @@ -1,40 +1,63 @@ import numpy as np +from mpas_tools.transects import lon_lat_to_cartesian +from mpas_tools.vector import Vector -from polaris.ocean.tasks.sphere_transport.resources.utils import ( - cosine_bell, - great_circle_dist_xyz, - lonlat2xyz, -) - - -# Lauritzen et al. 2012 eqn. (12) -def slotted_cylinders(lon, lat): - b = 0.1 - c = 1. - R = 1. - Rh = R / 2 - lon_thr = Rh / (6 * R) - lat_thr = 5 * (Rh / (12 * R)) + +def slotted_cylinders(lon, lat, r, b, c, sphere_radius): + """ + Compute two slotted cylinders on the sphere + Lauritzen et al. 2012 eqn. (12) + + Parameters + ---------- + lon : np.ndarray of type float + longitude of cells on the sphere + + lat : np.ndarray of type float + latitude of cells on the sphere + + r : float + radius of each slotted cylinder + + b : float + background value of the tracer + + c : float + value of each slotted cylinder + + sphere_radius : float + radius of the sphere + + Returns + ------- + scs : np.ndarray + slotted cylinder tracer values + """ + lon_thr = 1 / (6 * 2) + lat_thr = 5 / (12 * 2) lon1 = 5 * (np.pi / 6) lat1 = 0 lon2 = -5 * (np.pi / 6) lat2 = 0 - x, y, z = lonlat2xyz(lon, lat) lon0 = np.where(lon > np.pi, lon - 2 * np.pi, lon) - x1, y1, z1 = lonlat2xyz(lon1, lat1) - x2, y2, z2 = lonlat2xyz(lon2, lat2) - r1 = great_circle_dist_xyz(x, y, z, x1, y1, z1) - r2 = great_circle_dist_xyz(x, y, z, x2, y2, z2) - scs = np.where(r1 <= Rh, + x, y, z = lon_lat_to_cartesian(lon, lat, sphere_radius, degrees=False) + x1, y1, z1 = lon_lat_to_cartesian(lon1, lat1, sphere_radius, degrees=False) + x2, y2, z2 = lon_lat_to_cartesian(lon2, lat2, sphere_radius, degrees=False) + xyz = Vector(x, y, z) + xyz1 = Vector(x1, y1, z1) + xyz2 = Vector(x2, y2, z2) + r1 = xyz.angular_distance(xyz1) + r2 = xyz.angular_distance(xyz2) + scs = np.where(r1 <= r, np.where(np.logical_or((abs(lon0 - lon1) >= lon_thr), np.logical_and( abs(lon0 - lon1) < lon_thr, lat - lat1 < -lat_thr)), c, b), - np.where(np.logical_and(r2 <= Rh, + np.where(np.logical_and(r2 <= r, np.logical_or( (abs(lon0 - lon2) >= lon_thr), np.logical_and( @@ -45,24 +68,146 @@ def slotted_cylinders(lon, lat): return scs -# Lauritzen et al. 2012 eqn. (11) -def cosine_bells(lon, lat): - r = 0.5 - b = 0.1 - c = 0.9 +def cosine_bells(lon, lat, r, b, c, sphere_radius): + """ + Compute two cosine bells on the sphere + Lauritzen et al. 2012 eqn. (11) + + Parameters + ---------- + lon : np.ndarray of type float + longitude of cells on the sphere + + lat : np.ndarray of type float + latitude of cells on the sphere + + r : float + radius of each cosine bell + + b : float + background value of the tracer + + c : float + maximum value of each cosine bell + + sphere_radius : float + radius of the sphere + + Returns + ------- + cbs : np.ndarray + cosine bell tracer values + """ + # Location of the center of the first cosine bell lon1 = 5 * (np.pi / 6) lat1 = 0 + + # Location of the center of the second cosine bell lon2 = -5 * (np.pi / 6) lat2 = 0 - x, y, z = lonlat2xyz(lon, lat) - x1, y1, z1 = lonlat2xyz(lon1, lat1) - x2, y2, z2 = lonlat2xyz(lon2, lat2) - # TODO compare with distance_from_center - r1 = great_circle_dist_xyz(x, y, z, x1, y1, z1) - r2 = great_circle_dist_xyz(x, y, z, x2, y2, z2) + + x, y, z = lon_lat_to_cartesian(lon, lat, sphere_radius, degrees=False) + x1, y1, z1 = lon_lat_to_cartesian(lon1, lat1, sphere_radius, degrees=False) + x2, y2, z2 = lon_lat_to_cartesian(lon2, lat2, sphere_radius, degrees=False) + xyz = Vector(x, y, z) + xyz1 = Vector(x1, y1, z1) + xyz2 = Vector(x2, y2, z2) + # Distance of each cell from the center of the first cosine bell + r1 = xyz.angular_distance(xyz1) + # Distance of each cell from the center of the second cosine bell + r2 = xyz.angular_distance(xyz2) + cbs = np.where(r1 < r, - cosine_bell(r1, r), + cosine_bell(1.0, r1, r), np.where(r2 < r, - cosine_bell(r2, r), + cosine_bell(1.0, r2, r), 0.)) return b + c * cbs + + +def xyztrig(lon, lat, sphere_radius): + """ + Compute C-infinity tracer (not included in Lauritzen et al. 2012) + + Parameters + ---------- + lon : np.ndarray of type float + longitude of cells on the sphere + + lat : np.ndarray of type float + latitude of cells on the sphere + + r : float + radius of each cosine bell + + b : float + background value of the tracer + + c : float + maximum value of each cosine bell + + sphere_radius : float + radius of the sphere + + Returns + ------- + f : np.ndarray + C-infinity tracer values + """ + x, y, z = lon_lat_to_cartesian(lon, lat, sphere_radius, degrees=False) + x = np.divide(x, sphere_radius) + y = np.divide(y, sphere_radius) + z = np.divide(z, sphere_radius) + f = 0.5 * (1 + np.sin(np.pi * x) * np.sin(np.pi * y) * np.sin(np.pi * z)) + return f + + +def cosine_bell(max_value, ri, r): + """ + Compute values according to cosine bell function + Lauritzen et al. 2012 eqn. (10) + + Parameters + ---------- + max_value : float + Maximum value of the cosine bell function + + ri : np.ndarray of type float + Distance from the center of the cosine bell in meters + + r : float + Radius of the cosine bell in meters + + Returns + ------- + f : np.ndarray of type float + Cosine bell tracer values + """ + return max_value / 2.0 * (1.0 + np.cos(np.pi * np.divide(ri, r))) + + +def correlation_fn(q1, a, b, c): + """ + Compute a quadratic function for nonlinear tracer correlation following + Lauritzen et al. 2012 eqns. (14) and (15) + + Parameters + ---------- + q1 : np.ndarray + tracer values + + a : float + quadratic coefficient + + b : float + linear coefficient + + c : float + offset + + Returns + ------- + q2 : np.ndarray + correlated tracer values + """ + return a * q1**2. + b * q1 + c diff --git a/polaris/ocean/tasks/sphere_transport/resources/utils.py b/polaris/ocean/tasks/sphere_transport/resources/utils.py deleted file mode 100644 index 579bd5060..000000000 --- a/polaris/ocean/tasks/sphere_transport/resources/utils.py +++ /dev/null @@ -1,49 +0,0 @@ -import numpy as np -from numpy import arctan2, cos, pi, sin, sqrt - - -def calc_local_east_north(x, y, z): - axis = [0, 0, 1] - xyz = np.stack((x, y, z), axis=1) - east = np.cross(axis, np.transpose(xyz), axis=0) - north = np.cross(np.transpose(xyz), east, axis=0) - east = east / np.linalg.norm(east, axis=0) - north = north / np.linalg.norm(north, axis=0) - return east, north - - -# Lauritzen et al. 2012 does not have a global C-infty tracer; we add this one. -def xyztrig(lon, lat): - x, y, z = lonlat2xyz(lon, lat) - f = 0.5 * (1 + sin(pi * x) * sin(pi * y) * sin(pi * z)) - return f - - -# Lauritzen et al. 2012 eqn. (10) -# TODO edit so that it is flexible with cosine_bell task -def cosine_bell(ri, r): - return 0.5 * (1 + cos(pi * ri / r)) - - -# Lauritzen et al. 2012 eqns. (14) and (15) -def correlation_fn(q1): - q2 = -0.8 * q1**2. + 0.9 - return q2 - - -def lonlat2xyz(lon, lat): - x = cos(lon) * cos(lat) - y = sin(lon) * cos(lat) - z = sin(lat) - return x, y, z - - -# TODO: Does this fn need radius, or is it always just used for arc length? -def great_circle_dist_xyz(xA, yA, zA, xB, yB, zB): - cp1 = yA * zB - yB * zA - cp2 = xB * zA - xA * zB - cp3 = xA * yB - xB * yA - cpnorm = sqrt(cp1 * cp1 + cp2 * cp2 + cp3 * cp3) - dotprod = xA * xB + yA * yB + zA * zB - dist = arctan2(cpnorm, dotprod) - return dist diff --git a/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg b/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg index 18ca72646..a2cc1c112 100644 --- a/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg +++ b/polaris/ocean/tasks/sphere_transport/sphere_transport.cfg @@ -58,6 +58,23 @@ salinity = 35. # time (days) for bell to transit equator once vel_pd = 12.0 +# radius of cosine bells tracer distributions +cosine_bells_radius = 0.5 + +# background value of cosine bells tracer distribution +cosine_bells_background = 0.1 + +# amplitude of cosine bells tracer distribution +cosine_bells_amplitude = 0.9 + +# radius of slotted cylinders tracer distributions +slotted_cylinders_radius = 0.5 + +# background value of slotted cylinders tracer distribution +slotted_cylinders_background = 0.1 + +# amplitude of slotted cylinders tracer distribution +slotted_cylinders_amplitude = 1.0 # options for tracer visualization for the sphere transport test case [sphere_transport_viz] From f384999b9e1e1f3f715b2cd96fda913270eab19a Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Thu, 5 Oct 2023 15:53:01 -0500 Subject: [PATCH 16/23] fixup viz --- .../sphere_transport/filament_analysis.py | 2 + .../tasks/sphere_transport/mixing_analysis.py | 13 +++-- polaris/ocean/tasks/sphere_transport/viz.py | 53 ++++++++++--------- 3 files changed, 38 insertions(+), 30 deletions(-) diff --git a/polaris/ocean/tasks/sphere_transport/filament_analysis.py b/polaris/ocean/tasks/sphere_transport/filament_analysis.py index 598277e24..bb7ff8404 100644 --- a/polaris/ocean/tasks/sphere_transport/filament_analysis.py +++ b/polaris/ocean/tasks/sphere_transport/filament_analysis.py @@ -7,6 +7,7 @@ from polaris import Step from polaris.ocean.resolution import resolution_to_subdir +from polaris.viz import use_mplstyle class FilamentAnalysis(Step): @@ -87,6 +88,7 @@ def run(self): num_tau = 21 filament_tau = np.linspace(0, 1, num_tau) filament_norm = np.zeros((len(resolutions), num_tau)) + use_mplstyle() fig, ax = plt.subplots() for i, resolution in enumerate(resolutions): mesh_name = resolution_to_subdir(resolution) diff --git a/polaris/ocean/tasks/sphere_transport/mixing_analysis.py b/polaris/ocean/tasks/sphere_transport/mixing_analysis.py index 98d77d943..60b6de0ec 100644 --- a/polaris/ocean/tasks/sphere_transport/mixing_analysis.py +++ b/polaris/ocean/tasks/sphere_transport/mixing_analysis.py @@ -8,6 +8,7 @@ from polaris import Step from polaris.ocean.resolution import resolution_to_subdir +from polaris.viz import use_mplstyle class MixingAnalysis(Step): @@ -85,9 +86,9 @@ def run(self): s_per_day = 86400.0 zidx = 1 nrows = int(ceil(len(resolutions) / 2)) + use_mplstyle() fig, axes = plt.subplots(nrows=nrows, ncols=2, sharex=True, sharey=True, figsize=(5.5, 7)) - plt.subplots_adjust(wspace=0.1) for i, resolution in enumerate(resolutions): ax = axes[int(i / 2), i % 2] _init_triplot_axes(ax) @@ -96,7 +97,7 @@ def run(self): ds = xr.open_dataset(f'{mesh_name}_output.nc') if i % 2 == 0: ax.set_ylabel("tracer3") - if int(i / 2) == 2: + if int(i / 2) == nrows - 1: ax.set_xlabel("tracer2") tidx = _time_index_from_xtime(ds.xtime.values, eval_time * s_per_day) @@ -109,6 +110,7 @@ def run(self): if i % 2 < 1: ax = axes[int(i / 2), 1] ax.set_axis_off() + plt.subplots_adjust(wspace=0.1, hspace=0.1) fig.suptitle('Correlated tracers 2-d') fig.savefig('triplots.png', bbox_inches='tight') @@ -117,12 +119,14 @@ def _init_triplot_axes(ax): lw = 0.4 topline = Line2D([0.1, 1.0], [0.9, 0.9], color='k', linestyle='-', linewidth=lw) - botline = Line2D([0.1, 1.0], [0.9, 0.1], color='k', + midline = Line2D([0.1, 1.0], [0.9, 0.1], color='k', linestyle='-', linewidth=lw) rightline = Line2D([1, 1], [0.1, 0.9], color='k', linestyle='-', linewidth=lw) leftline = Line2D([0.1, 0.1], [0.1, 0.9], color='k', linestyle='-', linewidth=lw) + botline = Line2D([0.1, 1.0], [0.1, 0.1], color='k', + linestyle='-', linewidth=lw) crvx = np.linspace(0.1, 1) crvy = -0.8 * np.square(crvx) + 0.9 ticks = np.array(range(6)) / 5 @@ -130,6 +134,7 @@ def _init_triplot_axes(ax): ax.set_xticks(ticks) ax.set_yticks(ticks) ax.add_artist(topline) + ax.add_artist(midline) ax.add_artist(botline) ax.add_artist(rightline) ax.add_artist(leftline) @@ -140,7 +145,7 @@ def _init_triplot_axes(ax): ax.text(0.12, 0.12, 'Range-preserving\n unmixing', fontsize=8, horizontalalignment='left', verticalalignment='bottom') ax.text(0.5, 0.27, 'Real mixing', rotation=-40., fontsize=8) - ax.text(0.05, 0.05, 'Overshooting', rotation=-90., fontsize=8) + ax.text(0.02, 0.1, 'Overshooting', rotation=90., fontsize=8) ax.grid(color='lightgray') diff --git a/polaris/ocean/tasks/sphere_transport/viz.py b/polaris/ocean/tasks/sphere_transport/viz.py index 3968d64fb..0ca988a1e 100644 --- a/polaris/ocean/tasks/sphere_transport/viz.py +++ b/polaris/ocean/tasks/sphere_transport/viz.py @@ -6,7 +6,7 @@ from polaris import Step from polaris.remap import MappingFileStep -from polaris.viz.globe import plot_global +from polaris.viz import plot_global_field class VizMap(MappingFileStep): @@ -166,31 +166,32 @@ def run(self): for var, section_name in variables_to_plot.items(): colormap_section = f'sphere_transport_viz_{section_name}' - plot_global(ds_init.lon.values, ds_init.lat.values, - ds_init[var].values, - out_filename=f'{var}_init.png', config=config, - colormap_section=colormap_section, - title=f'{mesh_name} {var} at init', plot_land=False) - plot_global(ds_init.lon.values, ds_init.lat.values, - ds_mid[var].values, - out_filename=f'{var}_mid.png', config=config, - colormap_section=colormap_section, - title=f'{mesh_name} {var} after {run_duration / 2.:g} ' - 'days', - plot_land=False) - plot_global(ds_init.lon.values, ds_init.lat.values, - ds_final[var].values, - out_filename=f'{var}_final.png', config=config, - colormap_section=colormap_section, - title=f'{mesh_name} {var} after {run_duration:g} days', - plot_land=False) - plot_global(ds_init.lon.values, ds_init.lat.values, - ds_final[var].values - ds_init[var].values, - out_filename=f'{var}_diff.png', config=config, - colormap_section=f'{colormap_section}_diff', - title=f'Difference in {mesh_name} {var} from initial ' - f'condition after {run_duration:g} days', - plot_land=False) + plot_global_field(ds_init.lon.values, ds_init.lat.values, + ds_init[var].values, + out_filename=f'{var}_init.png', config=config, + colormap_section=colormap_section, + title=f'{mesh_name} {var} at init', + plot_land=False) + plot_global_field(ds_init.lon.values, ds_init.lat.values, + ds_mid[var].values, + out_filename=f'{var}_mid.png', config=config, + colormap_section=colormap_section, + title=f'{mesh_name} {var} after ' + '{run_duration / 2.:g} days', + plot_land=False) + plot_global_field(ds_init.lon.values, ds_init.lat.values, + ds_final[var].values, + out_filename=f'{var}_final.png', config=config, + colormap_section=colormap_section, + title=f'{mesh_name} {var} after {run_duration:g}' + ' days', plot_land=False) + plot_global_field(ds_init.lon.values, ds_init.lat.values, + ds_final[var].values - ds_init[var].values, + out_filename=f'{var}_diff.png', config=config, + colormap_section=f'{colormap_section}_diff', + title=f'Difference in {mesh_name} {var} from ' + f'initial condition after {run_duration:g} days', + plot_land=False) def _time_index_from_xtime(xtime, dt_target): From 8c2381b904596c7c2f879ab609e331baa262f181 Mon Sep 17 00:00:00 2001 From: Carolyn Begeman Date: Wed, 4 Oct 2023 12:20:00 -0500 Subject: [PATCH 17/23] Update user's guide --- .../ocean/tasks/correlated_tracers_2d.md | 336 +++++++++++++++++ docs/users_guide/ocean/tasks/divergent_2d.md | 321 ++++++++++++++++ .../correlated_tracers_2d_convergence.png | Bin 0 -> 45095 bytes .../correlated_tracers_2d_init_tracer1.png | Bin 0 -> 232049 bytes .../correlated_tracers_2d_init_tracer2.png | Bin 0 -> 107085 bytes .../correlated_tracers_2d_init_tracer3.png | Bin 0 -> 104598 bytes .../images/correlated_tracers_2d_mixing.png | Bin 0 -> 72952 bytes .../tasks/images/divergent_2d_convergence.png | Bin 0 -> 39304 bytes .../images/divergent_2d_init_tracer1.png | Bin 0 -> 232049 bytes .../images/divergent_2d_init_tracer2.png | Bin 0 -> 107085 bytes .../images/divergent_2d_init_tracer3.png | Bin 0 -> 90159 bytes .../images/nondivergent_2d_convergence.png | Bin 0 -> 45095 bytes .../tasks/images/nondivergent_2d_filament.png | Bin 0 -> 49395 bytes .../images/nondivergent_2d_init_tracer1.png | Bin 0 -> 232049 bytes .../images/nondivergent_2d_init_tracer2.png | Bin 0 -> 107085 bytes .../images/nondivergent_2d_init_tracer3.png | Bin 0 -> 90159 bytes .../tasks/images/rotation_2d_convergence.png | Bin 0 -> 47182 bytes .../tasks/images/rotation_2d_init_tracer1.png | Bin 0 -> 232049 bytes .../tasks/images/rotation_2d_init_tracer2.png | Bin 0 -> 107085 bytes .../tasks/images/rotation_2d_init_tracer3.png | Bin 0 -> 90159 bytes docs/users_guide/ocean/tasks/index.md | 4 + .../ocean/tasks/nondivergent_2d.md | 344 ++++++++++++++++++ docs/users_guide/ocean/tasks/rotation_2d.md | 310 ++++++++++++++++ 23 files changed, 1315 insertions(+) create mode 100644 docs/users_guide/ocean/tasks/correlated_tracers_2d.md create mode 100644 docs/users_guide/ocean/tasks/divergent_2d.md create mode 100644 docs/users_guide/ocean/tasks/images/correlated_tracers_2d_convergence.png create mode 100644 docs/users_guide/ocean/tasks/images/correlated_tracers_2d_init_tracer1.png create mode 100644 docs/users_guide/ocean/tasks/images/correlated_tracers_2d_init_tracer2.png create mode 100644 docs/users_guide/ocean/tasks/images/correlated_tracers_2d_init_tracer3.png create mode 100644 docs/users_guide/ocean/tasks/images/correlated_tracers_2d_mixing.png create mode 100644 docs/users_guide/ocean/tasks/images/divergent_2d_convergence.png create mode 100644 docs/users_guide/ocean/tasks/images/divergent_2d_init_tracer1.png create mode 100644 docs/users_guide/ocean/tasks/images/divergent_2d_init_tracer2.png create mode 100644 docs/users_guide/ocean/tasks/images/divergent_2d_init_tracer3.png create mode 100644 docs/users_guide/ocean/tasks/images/nondivergent_2d_convergence.png create mode 100644 docs/users_guide/ocean/tasks/images/nondivergent_2d_filament.png create mode 100644 docs/users_guide/ocean/tasks/images/nondivergent_2d_init_tracer1.png create mode 100644 docs/users_guide/ocean/tasks/images/nondivergent_2d_init_tracer2.png create mode 100644 docs/users_guide/ocean/tasks/images/nondivergent_2d_init_tracer3.png create mode 100644 docs/users_guide/ocean/tasks/images/rotation_2d_convergence.png create mode 100644 docs/users_guide/ocean/tasks/images/rotation_2d_init_tracer1.png create mode 100644 docs/users_guide/ocean/tasks/images/rotation_2d_init_tracer2.png create mode 100644 docs/users_guide/ocean/tasks/images/rotation_2d_init_tracer3.png create mode 100644 docs/users_guide/ocean/tasks/nondivergent_2d.md create mode 100644 docs/users_guide/ocean/tasks/rotation_2d.md diff --git a/docs/users_guide/ocean/tasks/correlated_tracers_2d.md b/docs/users_guide/ocean/tasks/correlated_tracers_2d.md new file mode 100644 index 000000000..aaadcab5d --- /dev/null +++ b/docs/users_guide/ocean/tasks/correlated_tracers_2d.md @@ -0,0 +1,336 @@ +(ocean-correlated-tracers-2d)= + +# correlated tracers 2-d + +## description + +The `correlated_tracers_2d` and `correlated_tracers_2d/with_viz` tasks implement the +non-divergent flow field test of (1) numerical order of convergence and (2) +mixing as described in +[Lauritzen et al. 2012](). + +The numerical order of convergence is analyzed in the `analysis` step and +produces a figure similar to the following showing L2 error norm as a function +of horizontal resolution: + +```{image} images/correlated_tracers_2d_convergence.png +:align: center +:width: 500 px +``` + +The ability of the horizontal advection scheme to maintain nonlinear +relationships between tracers is addressed in the `mixing_analysis` step. This +step produces a visualization of the relationship between two debug tracers at +the end of the simulation: + +```{image} images/correlated_tracers_2d_mixing.png +:align: center +:width: 500 px +``` + +## mesh + +Two global mesh variants are tested, quasi-uniform (QU) and icosohydral. Thus, +there are 4 variants of the task: +``` +ocean/spherical/icos/correlated_tracers_2d +ocean/spherical/icos/correlated_tracers_2d/with_viz +ocean/spherical/qu/correlated_tracers_2d +ocean/spherical/qu/correlated_tracers_2d/with_viz +``` +The default resolutions used in the task depends on the mesh type. + +For the `icos` mesh type, the defaults are: + +```cfg +# config options for spherical convergence tests +[spherical_convergence] + +# a list of icosahedral mesh resolutions (km) to test +icos_resolutions = 60, 120, 240, 480 +``` + +for the `qu` mesh type, they are: + +```cfg +# config options for spherical convergence tests +[spherical_convergence] + +# a list of quasi-uniform mesh resolutions (km) to test +qu_resolutions = 60, 90, 120, 150, 180, 210, 240 +``` + +To alter the resolutions used in this task, you will need to create your own +config file (or add a `spherical_convergence` section to a config file if +you're already using one). The resolutions are a comma-separated list of the +resolution of the mesh in km. If you specify a different list +before setting up `correlated_tracers_2d`, steps will be generated with the requested +resolutions. (If you alter `icos_resolutions` or `qu_resolutions`) in the +task's config file in the work directory, nothing will happen.) For `icos` +meshes, make sure you use a resolution close to those listed in +{ref}`dev-spherical-meshes`. Each resolution will be rounded to the nearest +allowed icosahedral resolution. + +The `base_mesh` steps are shared with other tasks so they are not housed in +the `correlated_tracers_2d` work directory. Instead, they are in work directories +like: + +``` +ocean/spherical/icos/base_mesh/60km +ocean/spherical/qu/base_mesh/60km +``` + +For convenience, there are symlinks inside of the `correlated_tracers_2d` and +`correlated_tracers_2d/with_viz` work directories, e.g.: +``` +ocean/spherical/icos/correlated_tracers_2d/base_mesh/60km +ocean/spherical/qu/correlated_tracers_2d/base_mesh/60km +ocean/spherical/icos/correlated_tracers_2d/with_viz/base_mesh/60km +ocean/spherical/qu/correlated_tracers_2d/with_viz/base_mesh/60km +``` + +## vertical grid + +This task only exercises the shallow water dynamics. As such, a single +vertical level may be used. The bottom depth is constant and the +results should be insensitive to the choice of `bottom_depth`. + +```cfg +# Options related to the vertical grid +[vertical_grid] + +# the type of vertical grid +grid_type = uniform + +# Number of vertical levels +vert_levels = 3 + +# Depth of the bottom of the ocean +bottom_depth = 300.0 + +# The type of vertical coordinate (e.g. z-level, z-star) +coord_type = z-level + +# Whether to use "partial" or "full", or "None" to not alter the topography +partial_cell_type = None + +# The minimum fraction of a layer for partial cells +min_pc_fraction = 0.1 +``` + +## initial conditions + +The initial condition is characterized by three separate tracer distributions +stored in three `debugTracers`: + +- `tracer1`: A c-infinity function used for convergence analysis +- `tracer2`: A pair of c-2 cosine bells +- `tracer3`: A second pair of cosine bells that are nonlinearly correlated with +tracer2. + +```{image} images/correlated_tracers_2d_init_tracer1.png +:align: center +:width: 500 px +``` + +```{image} images/correlated_tracers_2d_init_tracer2.png +:align: center +:width: 500 px +``` + +```{image} images/correlated_tracers_2d_init_tracer3.png +:align: center +:width: 500 px +``` + +The velocity is + +$$ +u(t) = \frac{10 R}{\tau} \sin^2(\lambda - \frac{2 \pi t}{\tau}) \sin(2\theta) \cos(\frac{\pi t}{\tau}) + \frac{2 \pi R}{\tau}\cos(\theta) +$$ + +$$ +v(t) = \frac{10 R}{\tau} \sin(2\lambda - \frac{4 \pi t}{\tau}) \cos(\theta) \cos(\frac{\pi t}{\tau}) +$$ + +Where $\lambda$ is longitude, $\theta$ is latitude and $R$ is the radius of the +sphere. $\tau$ is the time it takes to transit the equator. The default is 12 +days and is given by the cfg option `vel_pd`. + +Temperature and salinity are not evolved in this task and are given +constant values determined by config options `temperature` and `salinity`. + +The Coriolis parameters `fCell`, `fEdge`, and `fVertex` do not need to be +specified for a global mesh and are initialized as zeros. + +## forcing + +This case is forced to follow $u(t)$ and $v(t)$ given above. + +## time step and run duration + +This task uses the Runge-Kutta 4th-order (RK4) time integrator. The time step +for forward integration is determined by multiplying the resolution by a config +option, `rk4_dt_per_km`, so that coarser meshes have longer time steps. You can +alter this before setup (in a user config file) or before running the task (in +the config file in the work directory). + +```cfg +# config options for spherical convergence tests +[spherical_convergence_forward] + +# time integrator: {'split_explicit', 'RK4'} +time_integrator = RK4 + +# RK4 time step per resolution (s/km), since dt is proportional to resolution +rk4_dt_per_km = 3.0 +``` + +The `convergence_eval_time`, `run_duration` and `output_interval` are the +period for advection to make a full rotation around the globe, 12 days: + +```cfg +# config options for spherical convergence tests +[spherical_convergence_forward] + +# Run duration in days +run_duration = ${sphere_transport:vel_pd} + +# Output interval in days +output_interval = ${sphere_transport:vel_pd} +``` + +Here, `${sphere_transport:vel_pd}` means that the same value is used as in the +option `vel_pd` in section `[sphere_transport]`, see below. + +## config options + +The `correlated_tracer_2d` config options include: + +```cfg +# options for all sphere transport test cases +[sphere_transport] + +# temperature +temperature = 15. + +# salinity +salinity = 35. + +# time (days) for bell to transit equator once +vel_pd = 12.0 + + +# options for tracer visualization for the sphere transport test case +[sphere_transport_viz] + +# visualization latitude and longitude resolution +dlon = 0.5 +dlat = 0.5 + +# remapping method ('bilinear', 'neareststod', 'conserve') +remap_method = conserve + + +# options for tracer visualization for the sphere transport test case +[sphere_transport_viz_tracer] + +# colormap options +# colormap +colormap_name = viridis + +# the type of norm used in the colormap +norm_type = linear + +# A dictionary with keywords for the norm +norm_args = {'vmin': 0., 'vmax': 1.} + +# We could provide colorbar tick marks but we'll leave the defaults +# colorbar_ticks = np.linspace(0., 1., 9) + +# options for plotting tracer differences from sphere transport tests +[sphere_transport_viz_tracer_diff] + +# colormap options +# colormap +colormap_name = cmo.balance + +# the type of norm used in the colormap +norm_type = linear + +# A dictionary with keywords for the norm +norm_args = {'vmin': -0.25, 'vmax': 0.25} + + +# options for thickness visualization for the sphere transport test case +[sphere_transport_viz_h] + +# colormap options +# colormap +colormap_name = viridis + +# the type of norm used in the colormap +norm_type = linear + +# A dictionary with keywords for the norm +norm_args = {'vmin': 99., 'vmax': 101.} + +# We could provide colorbar tick marks but we'll leave the defaults +# colorbar_ticks = np.linspace(0., 1., 9) + +# options for plotting tracer differences from sphere transport tests +[sphere_transport_viz_h_diff] + +# colormap options +# colormap +colormap_name = cmo.balance + +# the type of norm used in the colormap +norm_type = linear + +# A dictionary with keywords for the norm +norm_args = {'vmin': -0.25, 'vmax': 0.25} + +# options for correlated tracers 2-d test case +[correlated_tracers_2d] + +# velocity amplitude in meters per second +vel_amp = 10. + +# convergence threshold below which the test fails +convergence_thresh_tracer1 = 1.7 +convergence_thresh_tracer2 = 1.66 +convergence_thresh_tracer3 = 1.28 + +# time in days at which to evaluate mixing +mixing_evaluation_time = 6.0 +``` + +The options in section `sphere_transport` are used by all 4 test cases based +on Lauritzen et al. (2012) and control the initial condition. The options in +section `correlated_tracers_2d` control the initial condition of that case +only, the convergence rate threshold, and the time at which to evaluate mixing +diagnostics. + +The options in sections `sphere_transport_viz*` control properties of the `viz` +step of the test case. + +The default options for the convergence analysis step can be changed here: + +```cfg +# config options for spherical convergence tests +[spherical_convergence] + +# Evaluation time for convergence analysis (in days) +convergence_eval_time = ${sphere_transport:vel_pd} + +# Type of error to compute +error_type = l2 +``` + +## cores + +The target and minimum number of cores are determined by `goal_cells_per_core` +and `max_cells_per_core` from the `ocean` section of the config file, +respectively. This ensures that the number of cells per core is roughly +constant across the different resolutions in the convergence study. diff --git a/docs/users_guide/ocean/tasks/divergent_2d.md b/docs/users_guide/ocean/tasks/divergent_2d.md new file mode 100644 index 000000000..024d8c0f3 --- /dev/null +++ b/docs/users_guide/ocean/tasks/divergent_2d.md @@ -0,0 +1,321 @@ +(ocean-divergent-2d)= + +# divergent 2-d + +## description + +The `divergent_2d` and `divergent_2d/with_viz` tasks implement the +divergent flow field test of numerical order of convergence as described in +[Lauritzen et al. 2012](). + +The numerical order of convergence is analyzed in the `analysis` step and +produces a figure similar to the following showing L2 error norm as a function +of horizontal resolution: + +```{image} images/divergent_2d_convergence.png +:align: center +:width: 500 px +``` + +## mesh + +Two global mesh variants are tested, quasi-uniform (QU) and icosohydral. Thus, +there are 4 variants of the task: +``` +ocean/spherical/icos/divergent_2d +ocean/spherical/icos/divergent_2d/with_viz +ocean/spherical/qu/divergent_2d +ocean/spherical/qu/divergent_2d/with_viz +``` +The default resolutions used in the task depends on the mesh type. + +For the `icos` mesh type, the defaults are: + +```cfg +# config options for spherical convergence tests +[spherical_convergence] + +# a list of icosahedral mesh resolutions (km) to test +icos_resolutions = 60, 120, 240, 480 +``` + +for the `qu` mesh type, they are: + +```cfg +# config options for spherical convergence tests +[spherical_convergence] + +# a list of quasi-uniform mesh resolutions (km) to test +qu_resolutions = 60, 90, 120, 150, 180, 210, 240 +``` + +To alter the resolutions used in this task, you will need to create your own +config file (or add a `spherical_convergence` section to a config file if +you're already using one). The resolutions are a comma-separated list of the +resolution of the mesh in km. If you specify a different list +before setting up `divergent_2d`, steps will be generated with the requested +resolutions. (If you alter `icos_resolutions` or `qu_resolutions`) in the +task's config file in the work directory, nothing will happen.) For `icos` +meshes, make sure you use a resolution close to those listed in +{ref}`dev-spherical-meshes`. Each resolution will be rounded to the nearest +allowed icosahedral resolution. + +The `base_mesh` steps are shared with other tasks so they are not housed in +the `divergent_2d` work directory. Instead, they are in work directories +like: + +``` +ocean/spherical/icos/base_mesh/60km +ocean/spherical/qu/base_mesh/60km +``` + +For convenience, there are symlinks inside of the `divergent_2d` and +`divergent_2d/with_viz` work directories, e.g.: +``` +ocean/spherical/icos/divergent_2d/base_mesh/60km +ocean/spherical/qu/divergent_2d/base_mesh/60km +ocean/spherical/icos/divergent_2d/with_viz/base_mesh/60km +ocean/spherical/qu/divergent_2d/with_viz/base_mesh/60km +``` + +## vertical grid + +This task only exercises the shallow water dynamics. As such, a single +vertical level may be used. The bottom depth is constant and the +results should be insensitive to the choice of `bottom_depth`. + +```cfg +# Options related to the vertical grid +[vertical_grid] + +# the type of vertical grid +grid_type = uniform + +# Number of vertical levels +vert_levels = 3 + +# Depth of the bottom of the ocean +bottom_depth = 300.0 + +# The type of vertical coordinate (e.g. z-level, z-star) +coord_type = z-level + +# Whether to use "partial" or "full", or "None" to not alter the topography +partial_cell_type = None + +# The minimum fraction of a layer for partial cells +min_pc_fraction = 0.1 +``` + +## initial conditions + +The initial condition is characterized by three separate tracer distributions +stored in three `debugTracers`: + +- `tracer1`: A c-infinity function used for convergence analysis +- `tracer2`: A pair of c-2 cosine bells +- `tracer3`: A discontinuous pair of slotted cylinders + +```{image} images/divergent_2d_init_tracer1.png +:align: center +:width: 500 px +``` + +```{image} images/divergent_2d_init_tracer2.png +:align: center +:width: 500 px +``` + +```{image} images/divergent_2d_init_tracer3.png +:align: center +:width: 500 px +``` + +The velocity is + +$$ +u(t) = \frac{u_0 R}{\tau} \sin^2(\frac{\lambda}{2} - \frac{\pi t}{\tau}) \sin(2\theta) \cos^2(\theta) \cos(\frac{\pi t}{\tau}) + \frac{2 \pi R}{\tau}\cos(\theta) +$$ + +$$ +v(t) = \frac{u_0 R}{2 \tau} \sin(\lambda - \frac{2 \pi t}{\tau}) \cos^3(\theta) \cos(\frac{\pi t}{\tau}) +$$ + +Where $\lambda$ is longitude, $\theta$ is latitude and $R$ is the radius of the +sphere. $\tau$ is the time it takes to transit the equator. The default is 12 +days and is given by the cfg option `vel_pd`. The default velocity amplitude, +$u_0$ is 10 m/s and is given by the cfg option `vel_amp`. + +Temperature and salinity are not evolved in this task and are given +constant values determined by config options `temperature` and `salinity`. + +The Coriolis parameters `fCell`, `fEdge`, and `fVertex` do not need to be +specified for a global mesh and are initialized as zeros. + +## forcing + +This case is forced to follow $u(t)$ and $v(t)$ given above. + +## time step and run duration + +This task uses the Runge-Kutta 4th-order (RK4) time integrator. The time step +for forward integration is determined by multiplying the resolution by a config +option, `rk4_dt_per_km`, so that coarser meshes have longer time steps. You can +alter this before setup (in a user config file) or before running the task (in +the config file in the work directory). + +```cfg +# config options for spherical convergence tests +[spherical_convergence_forward] + +# time integrator: {'split_explicit', 'RK4'} +time_integrator = RK4 + +# RK4 time step per resolution (s/km), since dt is proportional to resolution +rk4_dt_per_km = 3.0 +``` + +The `convergence_eval_time`, `run_duration` and `output_interval` are the +period for advection to make a full rotation around the globe, 12 days: + +```cfg +# config options for spherical convergence tests +[spherical_convergence_forward] + +# Run duration in days +run_duration = ${sphere_transport:vel_pd} + +# Output interval in days +output_interval = ${sphere_transport:vel_pd} +``` + +Here, `${sphere_transport:vel_pd}` means that the same value is used as in the +option `vel_pd` in section `[sphere_transport]`, see below. + +## config options + +The `divergent_2d` config options include: + +```cfg +# options for all sphere transport test cases +[sphere_transport] + +# temperature +temperature = 15. + +# salinity +salinity = 35. + +# time (days) for bell to transit equator once +vel_pd = 12.0 + + +# options for tracer visualization for the sphere transport test case +[sphere_transport_viz] + +# visualization latitude and longitude resolution +dlon = 0.5 +dlat = 0.5 + +# remapping method ('bilinear', 'neareststod', 'conserve') +remap_method = conserve + + +# options for tracer visualization for the sphere transport test case +[sphere_transport_viz_tracer] + +# colormap options +# colormap +colormap_name = viridis + +# the type of norm used in the colormap +norm_type = linear + +# A dictionary with keywords for the norm +norm_args = {'vmin': 0., 'vmax': 1.} + +# We could provide colorbar tick marks but we'll leave the defaults +# colorbar_ticks = np.linspace(0., 1., 9) + +# options for plotting tracer differences from sphere transport tests +[sphere_transport_viz_tracer_diff] + +# colormap options +# colormap +colormap_name = cmo.balance + +# the type of norm used in the colormap +norm_type = linear + +# A dictionary with keywords for the norm +norm_args = {'vmin': -0.25, 'vmax': 0.25} + + +# options for thickness visualization for the sphere transport test case +[sphere_transport_viz_h] + +# colormap options +# colormap +colormap_name = viridis + +# the type of norm used in the colormap +norm_type = linear + +# A dictionary with keywords for the norm +norm_args = {'vmin': 99., 'vmax': 101.} + +# We could provide colorbar tick marks but we'll leave the defaults +# colorbar_ticks = np.linspace(0., 1., 9) + +# options for plotting tracer differences from sphere transport tests +[sphere_transport_viz_h_diff] + +# colormap options +# colormap +colormap_name = cmo.balance + +# the type of norm used in the colormap +norm_type = linear + +# A dictionary with keywords for the norm +norm_args = {'vmin': -0.25, 'vmax': 0.25} + +# options for divergent 2-d test case +[divergent_2d] + +# velocity amplitude in meters per second +vel_amp = 5. + +# convergence threshold below which the test fails +convergence_thresh_tracer1 = 1.48 +convergence_thresh_tracer2 = 1.86 +convergence_thresh_tracer3 = 0.4 +``` + +The options in section `sphere_transport` are used by all 4 test cases based +on Lauritzen et al. (2012) and control the initial condition. The options in +section `divergent_2d` control the initial condition of that case +only and the convergence rate threshold. + +The options in sections `sphere_transport_viz*` control properties of the `viz` +step of the test case. + +The default options for the convergence analysis step can be changed here: + +```cfg +# config options for spherical convergence tests +[spherical_convergence] + +# Evaluation time for convergence analysis (in days) +convergence_eval_time = ${sphere_transport:vel_pd} + +# Type of error to compute +error_type = l2 +``` + +## cores + +The target and minimum number of cores are determined by `goal_cells_per_core` +and `max_cells_per_core` from the `ocean` section of the config file, +respectively. This ensures that the number of cells per core is roughly +constant across the different resolutions in the convergence study. diff --git a/docs/users_guide/ocean/tasks/images/correlated_tracers_2d_convergence.png b/docs/users_guide/ocean/tasks/images/correlated_tracers_2d_convergence.png new file mode 100644 index 0000000000000000000000000000000000000000..e410687f2b365253f2a798f994ec607040cbfde1 GIT binary patch literal 45095 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

Zr<*G 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 literal 0 HcmV?d00001 diff --git a/docs/users_guide/ocean/tasks/images/correlated_tracers_2d_init_tracer1.png b/docs/users_guide/ocean/tasks/images/correlated_tracers_2d_init_tracer1.png new file mode 100644 index 0000000000000000000000000000000000000000..acfece6edcf00eb6d49d2fa76564df84089f4bd8 GIT binary patch literal 232049 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

l9hDrZbPwBoUU-&MWsyWg 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 b`TO@3xi8i&|R=`%Iaok8^r;u2UE6*hm( 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

ndVCN_nV@Nk|pm~Eo9TH}@{h=29r<;oDE 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 literal 0 HcmV?d00001 diff --git a/docs/users_guide/ocean/tasks/images/correlated_tracers_2d_init_tracer2.png b/docs/users_guide/ocean/tasks/images/correlated_tracers_2d_init_tracer2.png new file mode 100644 index 0000000000000000000000000000000000000000..e1e8b157c70b96a027746b574d3d211e59ea764c GIT binary patch literal 107085 zcmeFZby${L_brSfvPHm_2Hg?@5|Yv=N=Sort4M>A(kP0G5|UCP-Q6vsAl+ReJRmLI zaOT3;?)UwjbA9KZ@2|sk?JWw=^W68k=bCfOF~(dkoELF;mOc)_=Cs#hN`uq#XV~~JxhHoX+7)vrWV$wMz_z|>RVbFS(vjkUtwmw zbk5M)`o0w}3yazBUtqSdG+^P(%1ePaIdWfI%?b;P@&o$sfO(6JAl3maEQ#w^Z#@j3 z8MJ?M`qNI$f^4%u&YEQv^QC9uo{t}&`}>^y1<&UNmlvMng+|hna*D=0enBfbdP2J6 zAr7Y}F}C)@>+;v5--&-e6!Ul8-=7KUhuGUIgznk(^yZZG>f3s(P1}#_#U~V(V?MB!?pbQBGasG`t?1QxBv(1@4xgL>i+&dzxDm^?@ePK!8QN*>Ji1p{`GyP z*I~3=`(L_b1o*$cf6qk(5V0PQGbxZ$H(M zyN|b`aMP=)z(um?2=M4S1c*Zzwm_1e4ytpZ*YCw&f2h!Kdp2di_5}Mo7uk3E*Gix zj#RarR}t`je~)cuMkU-2x7=ONQjw~nV#vh)3!P;P047a8|dZo7=+L%+PsBllIUCYm~znuRikcUKFF$3smn z&10t-Y^}}~Pp6lBjkL0|vgy?ireP8iFE?tBH(H(P?aMO>#@KXa=wt|Oj~qk4wp=5$ zD<74RXJ7l#GcdF7j#qa+zD^0yC@8Lo?%>`$!V?@qOxwe%DeFK zlz$KvTzxJf+IZsZ`uh63m;lA)#d;R*%`!dWy2eH&d;6le>SyDoL#1kH?dt*=$($xE zivnK1j`H*KdxC+>@78uq%Qx$fhv#DBvwCbR-(vVJ>%c8|YKFQ!H3ECvOO0I256iUS z?Tz5BJVj%U3Aq>EA7Q>T%VyoDzr01LIyeB;Iq4%V4RXBd^K!yTJ= zCdl{mLK~JpKQ@-HXmU!54cru$q2{;t1RwJv%-J;cyqkf6fqlg`DRuSrc{bC^WvhKA z#Z$>Cw{G3KYoZfxG?kjuWZY87YQK1wNxM`PgTeF_StaC~_D17UJ`^r$@CM%^ZKNH%%T0?I2ir4zvaoJJZ5>Cr8@j=J= zGWF7jS;f|qewkkIgz{R4q%t!S6UF0=s&!_~9veug7v9&qMj7&j1Pe=d_&Q3{Mz=qC zo+;j0?LQTy$Wplx&CZc@cFfvKQAm?o_{eqK`swrDS*~z1D`; zZZ6f}t-WZJ+{JR!(Q2>at+^770V=nAcB3}xowbU+&Tt+p>yIbIRMibWK0o0w@|0-I zwq&&a!${^X?8ZDLE>tjbMNsbdrHz*ki@$$`e9sA9@C~-RxxX_CrX#WpWFAqDb43ZC zRyJ2>Q*?G0gOAjkSM01lal-B?p|l@6f$~#+H`(RePnvkAQ=jOwlzzYFZchsDjTOtX zAM4mJiCDU}<}0Z7Oo>IqR`K6(TWEincyWp@8PZo!SJ{`xN5?E@%MbNt>%Saw*_u^u zq;e}89rKr!SuZter*&Q%w3DbKfcJANYxJLi66Pkb)*^C@#)*>8HZ_LMFYWpDze9yw zT|Q((o*P`;gb-^>l#f|%;+y{%EU-3U70Rl2Ed`U6_9i|F;@l7xysz*s1nM*g<5eQ~c|;lplBvKTHWg~zq+vZq}u=}6=yy0W`9KON&E*alH> z`maMBNs4q{#FwwZg-O}2!n*q=OTquz;4T{EF5bQASwRWUoU4C0TfhF~DoyP+q&ZWw z(K^NqDOK0Koiz)tomV96C)=9eT&`LyKg*(RYWuAvs&cm+V*9XBjTc$4?;Ip;4(WD| z3$LHs&zG%*!Xq>OUeI0cedX(4RvU{LukonZ*pH>Kx5>t0Rx!3EjqJ_*?V1JV5txd4 z?~IDw;#wySd(La1wMuNwtTmR#8%;9PpxlKV6WY$SZw)aX(DJ1|O%LQ(EfeQ%7_1#T%>fhRbk82AfXh_ttu|?uacx_F~g<-LYXO^->?I zfn1`meZLat-b7PG*g(D>@%Z^?}8Ykc$(51BP(Tne%He0n@+S(Z(tMzY$xan`ppAJrn z2##1%kesS9g>boT*Q?qC&B=(d?>hV`GzJB;DQtL1;adlwds5lNHKmm(FWDW4K|FloA_z z9kSy+cWqHK4CH;|%v9JlX89F5dz;;xqf~o_JkI+1aoP_@aLORrZ%)d(CPVtRi=1lx z4zXznn|t$n)v+*XNTfTm2H_7pv>_&TW-VMLiK_`=y$uOfydlFC7F)51D?o5`!U8vtWniDH6`Sxe!U6^FpEFcU{d<%S48?h&i*bgeLo zgC??O!{ueQ^N_OwBO`~$=2t&o@IkA*)j-`b-Idl}_+XTjgZZw$KK+FYF|9U~4&TlX zJ{mk`6j8H5PA-hee#dicP_5 z-2!!uj-D%N)uvmEXpdP)s6uI#)2xpJ6$w8Mr}g_jl~6PE6fj- zk!cB?#+$?yT7N_<9U7}wA7qG6k7FR8wx+FP$#STTXZc9lr;{v&Vx#m`UZzH>uiL$!saVmo`hDI#TMx|_Si zxt(JrhH6JVqjd4+hsCO6LYhQ6PFdAHR8$oQsJuk;ZhyiEkRHk8PcEB@A!PE!W1XpZMr4(a= zG^}Uyy19x6Q8FH?nraoJ>V$XyIvnA=+Dj_nVC`?uJLW60y4-B6ln`MXTD~z(Cea4J zl_tqjb_>#qqOx*OY|lKmd=2(eCM4j3XC8U zM}WyzEv|9FlvG8m)Q1Y^+LT~yZQ#y>xtPSux=1Oy|f`+nf zwFMQct{Zd7O!mW!*G!tY=EkPRv3eVa@FQTSD%y^Ur^GuKnJQsRXn zJC(RphEPVO;{jE^gzO*nL?5Eb=A}Pp|AS%YwWQcs>Ro%N7X)8Zd7e=^B%)?xePX_R zONOO`)2Q2Df( ziUo8fiXabEpx_o^-OzYwHu#~@<}Rw(99AP)E5GbgQPDfAzB2E+r}2!+<>80e!YU7f z_O>|5Jjj-OefQEveS`${_;<%&5nqn3%s$Fo_Xe{K zO!&LSL|-y>lT1FTMn++rWp}kUmJGKfV)x!7DOUux??^| z*Y2-ib=c62=G~s~c*LPjJaBrfFTo2rZ3U7Foz(G}juT?!dOT)#{Iz^2__`K0SDuv{ z&rcmYk(YpyGT_<0c5e#4TwrKKeR49&HyK8j5HucJJ&g_xWvBJ;PnsbR(lIuW+DuFo3`>AP;INtMcv7M0xk7klW6Zzbw1O!K@D!l1 zT-#aoz<>Zlz$FB<3qb*LT#zypIY{$3!&Q>A9Jf~{+r^;Md$4Vl9N~^4f_%S2{z_W% zniB6R;(l7&HYXxo%b^vnpvGrehTX^A`(Dn~^~{+wUF;fSJCsLlNe=<-mDjDEf*STC z^$E~jR{#=7v-QtY$e+({_Q_HID)G#r$&}A5#wPkKY84l7;HG_yw zUBf8II|*0G=Lj?k%sZj4OXjf}|K@&7P~7lt?gtL(*`6#Bpa9JRs>T=@7_tKe85tQz za{P%8VPU;5e}>3C1 zOG-RfG(icC7SnDoEB-#j0aA?|6Gv}Dr)~bCf7U#+q3L?bO1H(#k(pIfSqJP?%_0S~ zd}#?QWbK+U4bXD}FrMwV^I26I1~32}3iObO^;vsZvhwV2V;Pgx&xsb$!#a$I7@Q13 zC;~Ng7`=z;^-xfwQ__p;lzTbiAw#5*5zmBI#C8bbqMXOmRv-)H#@6#{b6*OV^^yGi z%l8`IJZT1~8tJt7B5tR%BFp&Gcw?B7me$~mZJ1)ggR7ndEY`al6a7tMlB>(rlSAbT zp;9u>V%4*5KdttrD5>!}sxU*p72gpNcHL9@=0ND`@;y7n8ICV`)tS0pMF2jRp=+SK z#JBkQ0;fS!xF}gyUz;@dU@TCM6-sp_MWZwnGm;bg4cjrq#>W;Oz&^~Ode6@ARdri; z#d(bs*S*~%kzr(O<@Bgwc~H_w!e?vxVc^uT(~{Rdz4dvbK^|xIrny!rEBV62$(2hmL4ws;T*x;Q{9MT#hL9n7&nI1oivODfE z^UTyNJ^#@59yviiXt_9M-#@}WC77X>BN}hiSFE?S(yc@1w7TIm1-v0<#fN`Uyz$Lt z5oj6Zp;M=xg!Sl#GM%Sec~GPO+9E%oNcB8prR|*NiS|1_0`Z8+Y1=HZoy{)IAf(_m z94xk3XkKxwoJrcOIwc)`MIKrwhm^TH7A2$JeAdtd&|V_rwNBIqT+TJk)EW*nZTeO1 zx6mZi6X4o<6T!t}b+x!3z;ZjyefP8P;rf{&ag$5Vic7d17A|d(+gjK4$cs|BlRN7xHPl#Jb-D!zHfw@q-PBjp8Mp{mz@mY;Yeh~ z_M&9{G;i^PLB|JLgTQY!&9BoZM7x&S#hA!VQ1n*r9)Zcek_>*&b+ z!d{8@Xo0VYAWo3pydzPbz~K@H*CBZ;Qc0aX52G}9Lf*tmg6d-K-PFWLm#-gR zVHW?hNL?~>+fNkX!}Hx)HI!jcI|%kRxitXQ#)zhvZjOLV_bpj2WeEWBeCnmgfdbDqA%7wkL!%%(fis0Z+fnX%^%gx#t2&9fj1H zvuA0UbQ~>H#j`5v(^pS3PP#2Zb`zJ~PvwVY1UJT>G((-q?bEuRS@S z%+T-lm5*_twaBsnvuGY_F=eVknH(?vyydBFN-S!-~`BxdJ2KCdp#<)x;;h32<&jall$i0?)*OY*}s)4M1I<;WQL^f6eMv0BytLq z-Y*&41cVToIRik;bb)r}>!+7C0F`MkP50&`Gy%(dcFk@-4LELKf^Dh@xH*cNs=df; z>gW@INV!y=3VU?(6N^jhO!>?=z;ST7v9PBumZxTCE6_z)`@MCTN>c8ZWw0vJM6%SW zph3G~XNg+L9le(>OJT#`fZQ^&jQ~ul1VuVJCTz80voqu5_*vi+5Xd2u;u;LNeXA95_rL|yBTG_YZEhd=wF!Q$P8!wS=huH3`K7O00cJqTK+Y_cCbNO(eP1UK; z2GEmQo@<_c85E+Qk z+yo44X0hZeLTI$&am1%41`41KbSVZ-y{BaPqoCF*L#(7h#1hSi9@Hyp8?W>F{JFEHG3faFVfM8LEZH|9oDb^+4p=XuT3&!f_K31lX#qv9X{)7 z$9v@Iwa_aMqP0O)TF;j7r!`s}t0fh5DulM^6zREQyZQ7}GFQ%%sNq1jO#%FcI9Y$b z89Owk<~NPMTNY{FgY7-J;y|`DG;14njQ_h^+K$;kVJkVSuCV`BeN&V9GM~gai|dAD z{Z`23JE9+o+3z(NK8S!7u=?=i$dPFh54|DawxrY9%?ApfEL)Us#AEnF<9okYno zl2WxBD14CLRd5F?;y%5;ZI-%Cv9Av=fTt;gCrS!=JAZIrvj>NPJQ~ zbBPqhqE*;jN!c{)qPLE7JgBVkF(L`t8lW)OCeR%vq*CM4mPO0`!@J6$|67+fgHWP~ z)*3=)_}dyV?numnhKO{hd`_{;3!=gS;?bst!j2k$T2TcWft)Sh*hkp749EZCD9Lb^ zct%LU;kxUz0ykc1mp4&RY$YzPP+&f|3@R%p@!5uCgsmzEDDIoXV=e|@acUfSPlSz; z1;vfSAG(u?w~jKfuI+lyD7sAhK76=_upcTv$6VJ%#I~l};$A{emxww@kYtS6B5Fok zU(mfx)UOYkgxj;qWhpuM$PJKr0wf+Ly$uMX1Vpwt(j1%Z1n8OzO)?Tdx{VSd;?bpZ zbE{})*kz1YjV^pcygNY1Al3&Dotc9rksATQ+3Ac57oRmgrABk36&a7WFK@ z$FL>OL}Sm4DFz@}WB|)5UOau1 znDR)M*29sfh|6C=mIAm^1>in`rdNM;6(TEF*29SR&G}gvf5 zsL~^s5Roi;kl8iZq{)eiEoi-!Qk0D#p+F*;8Ys$vRg4xP_6eik;Cq2#izxJae0Tzi6S zH{ViMvN0~vakn!e8C>%f^y2k0yBOFohk zIa4AP^7`(?VR4F&gkN6O)9Kq;8coC}Ml01e5%`iOT45Q$RhN6-e{nXwNav&o^#P_R zToF>R{vh2yn&d0d;Y(~66gCL^G!B%Y`!fv8b=KnO?Zr~S`+aW>mA)Q80C@9GUEC1a zE_G8X_lprF*YKuXC3!Us&J0>^ zOUFWvMX~dk)i0LhnV!73_dR+JVCB;6iurqh-$ig|S@CH~bZrx!FWU#DwjhfScq%k} zbi&4P2L{P?v29H9N`dGfrr!O&Egs@Fe5+r+%cje?*t!$~#BILy7zOBy$1Lg4Z?g_4 zTznaC}s%3^NW}QSYBGvto@6`TF%X0GpeB)kIpcZgh;bJU>f;0xm39 z*TQqYUx5Hgz=Pv7-cxJv6fg#i%AhMc(Qw)N{e!DGR>a8%Gu?X*gxAiFw0&m3RySLT zxuSdKcff7?&?3WN8t_xEjYTUCrh49zwiDLab0ot zhRUCpaHWPE-^~W)0RR?Y(6PLH?WAtVh~IXI2Y!>M8`J*&yr6IMpcW%xE92I2_4oR8 zN|NF|y|xL)g>*T>y*oG%!o?gjAAKJeg`YjZhZd;xV1WnunOoWiWS?Lu%THi69p}Sx z%fCMB=K*vcFi@8Q=U-9tF$&iu_Kt+z9vh{BA-4{* zOqC(wY^#H@XK&-)r+ssQfOuYomG0mBdEk+Zh+w4bof_{zme0*cRWSsG9e17wd+@xc z-G9-nviY%s$GxzS|HO=+UMTJ8x7gSJ+vhKKqwxCC?g17F^%C1OJUl$V@C)yDqBr)f zW$1x`&shYmDlZt-CM}Qk9RJM4G4{soV6SL)&cWEz=z|l&BrnJuqfa0U9(7ateU}SD zp&X|{z6Ph&jSH__a8%EDiDUSpJw^Q@PMym`d-=6-QgXwsSl)l%B_zpvZ-7JG|GMwZ zLyR^34e};_mE661@%Rox2ZKmF#t2A166l^no6=IEl3#>5z4}1??_K@1g2U+Ig$p7o z+V*j5i~Rc;>9IXCg_EUtCI9b)AX`Al&m3F&wjl)PpXEB4C%KQUP`kKz^04Zm)Z|Mq zj61{5z#q^R2;W4>>?W6J?rID}py`+c!5?`LC7~qSTPpuZ z&vn?+w*n=m1(TJP)X-BVoFacuavK+`CCCusTsuSMg6J#X?q;l)Zc3CD9dQ+6l&-&n z!Ix%*Zy-Tf`M+Q1QlW$Fk=rD%CLtP*7IjSPMmnAUb%z&+(+JD>@i10phyS_3|1ln( z)qMT2+*m0LA86DI$6X}az>%v2eAF2Efmx!)?w>!#LTIT?j+M9r98YPwXSL=Iq#RW9 zI4q5S(f88;&5u-Ts}fAe!x=l1uIY{a&mQ}@XV~Uz6w1KFbjDrhKv#%-QgK@Vi8R{4 zDB-<1L9bv|2Yc`TOMTEIUfkL_Sw?kW8oze-%meJ68}JT=)E07@Uf8yBKX*0PM^~dZ zIZ;s$#4_lQ+xtbFIj8?*QIqt6gU2=dUkQOwV32ox4BzHkZMfPW!7E=98wCy&ft}^{ zpNk-%+nI{mf- z!TV(Kz}%Jo=YIo`_?e}X6(;*JoyiRQH~&xeBEUELJiUUf&3-jMA|bLP$w!P*=T{_D zN7AqGbkMop`yV3#5oQN}L_)oF(!8F_1{)94L0h!ZLMR5ON+VT5D2o0B6}7C={tv9% z#2-A!!aI5tV_9T@R|5YTL669fB%6QhiDd5m#vQ-d zJd^I^ckj+YA?afY&1k>HQMadjpuh0TVT4!=3N^83Vt$qRC#a&}AGU#Zn!)!*u;Y6M z*Z8R2(VayDHoGIbsI>Zb_Qs9S;Rbew)IWI7@Oy8pQz1j@{#T|KU=*oC6F28ynaJz=a41JWNJtWydEwQNjkgGEkwiHK zi$(-S$q6Rh`0+GFUTeg-1Vj#Tz2Ofb6^9nM zgi9=U;id6xU&9LNAN7!fH8u)-tZAxQ*G6u}cVngEsYrw=KRc6t^H!l{%?Q)gyG?1l$U&buAV)RG9XA_k)UDzPbdVRUm>3hWV!I~+=)I=_}n{0BtDX= zUdBmXG$`)ad+xR!@+;m`Wz21;W)zj_{#C=+q}uP2M{pt<0>xp`aM^gZd1CzYA@w`TNHleu8(G_4Y492^{p zrV}kLu;C8m3bu2A>!J23w(c|f8_E6=N6z7(n1apE-y4FZfd30Rh%Ea^iaZh)2C|(E zur=2@J3b^m7T3d8!C3nttQMh3YI|EwEuxSd_djqkc=KMrKJRXV`<|_e#(w7?kT4Q7 zpe=H^*&QqBccuSGj&BrSSf~n3i(l-*4I=t4dW1iFm-h@1RjDyM|E_#Mv34M0q`_(Y zJ3wMg5yxVK??35dTicw%L0NpGjQGNlKT3gdFvl%0dmtV=Fz)q!z$xj=J1<=gOs?BU z$O;IIWT%}l+n`O&PW!I}lANB7yxbX6KcnX6@E%L*ef?jFAU^u~rsab`hMTCA+Wbm* z`6%@)KIHEMo^x!KbieEkXww%w(=fOA^~!1@KL`AkI->mm{8#F^c>J$#;L25CeR2%glY9}(i0sB2DqIUI;s-uXH#(zPedhJI-SylSqBowF>P=bhv2;B(c>6L=5 zDhc+p{Ph@x4K7k5EWY2>9^o&Xg9jq+e>k#e@EuU`1{?kg3C5qry+{&kAM`bNGgDmQ zNo?@`*E;VPBaVglmBBw z2g`l0=fYVqhG?{cc|;!%=}gZ~je zN=k9SvTG<|TKB`J^Nf7jR<3&I8NfX#V=9)jM+3NE7$(_&=YKuQM3_FBFI^%eI_5^u zd8Tc%Ir%5xMhKjK_`Gv@rUHiVzhlR;WDwYXzy3S>2>8Bz> znHdcCW#Fz&abJ}2Z~lDKHpneNw~$)rvz$^0y?^T`ta{ihB*9{J-@YhJ1|>$1peCK* zM{?KI`5)1%yXJml4%0Kyz59)Mi~@%FcVn)~u<^Ep|Ic@A;QmR*cyOShBs2|D_gUY=;C-@gdX%1`JKi{3F7c0Dsq(EYN(hfW!}mYR zrZg$aAYhGG(gKKuI=J)zF6T4Kg>1hX6UD6hTeb0t47Qim>Hnx$^!@KM?U(K$7cLU5 zK;dDi7|sAGcp7FwIuYp#dR@UMvr?EM0*ku;EjhV!@C!g;Mp(B=IA8)*E@4K1m~1ba zc$*>sf22|%Z@`D z2v{(C@V0#Y>rrIn^Gde}jb|?Y_O}42jYsOc!LJQwKqD|DhH{yO&QbU+&2*}__z*y9nON0mBvUR9pLjdUmDGVPC5nbx+Z0@&_U&* z0R`6XxW!rd8y65&#EYWUN4AdXzKP?5>m$j3L@RXuahk_Gka&r_?#N;V#zK?oS0oPL zu3bjvJP?1;h>=Z)yjbn@3RjUA$N7AaFhk)v4qxK z5I+_-oCtzkK@ukAF!Ti~h>&OOIFov=c%?4ut~1QgfZ&z@szdGQf*}mbOo55|0~bs~ z1cHcx761%2b)P>!ceR6|z)5gz?KbJn)g&oc@h|V(G_#T15dj z{eAj?4rBYkXlqUW#w0Y$|EE%v5nxPSGpwgv`SB+ z4TN$3mcnxqQF7vt2z{u*V*t->&N$Nxy!446eS=CNWvJ;J3$p?@JqZdr!oks~0#YN~ z4rn%My-lZJJ_ziQ?JFlTD_@E0_ZNLRJo7hzt!SmTt~?HAtlwQtegGQ*eu{FMr|dhY zTAJWQAOrFXV5}J_R}yVt4+;yvYY)a2Qt;AJPePYwc7I6-#`7qB#K38(h=x||juJ5k zP{Z74UT^8$yLXWbKZx3Sd!c3%wv*A;ypbo^O~9CgIU3i{e3UwZ+c5F_xs1}Qd#*cP$9U%QfUNAfkza(=~UzIWhy}Au*))TX$>Op~TS^E5S5A@%1H(G6-YTpFFMs z+sc%F=PBq|Ft9ha@Z<7o=xn}WUMDOx$zp{HLm#+)O#w($r>K7;>bM4qZ#0rY;(nHv zmK@+O5rA1yn zB41Gq*h;lwRqnQG*H*wnpV@RUMuabxP$I^yA|W^x?p^ySG)GIOLcu)!&`hgiZUt-0c^w85dxryAFLMwZx4Z zH;N$$S74+@l?pb;wNOx3)zK(2xGYw{L&4co4QOd}UL!O-4hAt=SBzn_Ko+G78NOK# z%=kFyj)vf|cK}w;26QZq-4ZaBoNcbRaNW|l@i)HbUqAaS!##!gM|z;D``xy>ybWU& zO6KP2C{H3i3cQyNAm`hFVd179*n3VzfSrTDgPeh${zXMIm=SDUZRjk_lf|w_3OaKb zG?9a4Q5xJh4&a5lMBsHR7y`?}WeG+D5J>`gu%TEf7MftqXt{I)p8}j2#>YG! zg#70dbqPoPesr%z0-B`u_r!|?6vi#d#d&{shYI7a9C2}Rez7p74KhO+=!v0%&c$FH zriPM)bTA|em%bhW-LZ9`$m&$SyuADg*ZCz*q4jse^F9?UEG!mjLNW5lZ~(K-)Djh2 zgY&nvw93T#kqrcftIi}v*9+(>#j5uylPlkC{&1{k0=0XcXB2w#6O$R$WsaWn`15J~ zb?D&2TEbh0WKl2D&U0S%m^KKIvwQrGt249(@=8jbGrMRCY~H={-RySX$clpvjJHU7 z5-cslpw3L|D*SK-1_o%Q7Rehfj~)H=R+&{(;o>ljiZm{+g)kmwPKN9=*I0d`gvrOY z;@yi_YM`A=)uOE${rusY)Ro12hX&=qkj=SvWBY?81^ucdTo*0w*!4YOYp~dS zv(hbeZ^@P_C#a53HKTNpDY&3j)qX;q$)f4R$%*Ijb$kkD#!I2klNlQxlEjblL}x9I zlgn!igw1Jcz-tt~A7#=!Uu%n{H zFrR`~`1s$MyWh!s!gAN}TkJbFzK<@u-p-|@P91aA!R0YK3|Gztb)9-1*EmJaH*Nb3 z)4D4(5RtzoUV-=Qlkw>SF;ZUo#PIa2Tzec!f{4?vR7e4qCUu|Z%=0-R8K!bP<%Csn zF{ibH+*~ML_Wd`qWny!4H?sGRVNbO%uIejKsP^@dRpQ`2?6g~+%LP=PcqdYImz}SW z!&-q=yU3PoMyaC8Zo>7;6Sv|SqJDE$?jSBz#Vi|&FRgA1CGD$JL~`AavT`3as1|i- z|79~b-TMATN&B2#q0Zp5jsQE>Ag-ABQoiL?>Hxb)d6zTzUU4>Cw=sT$G|CU>91hM2ocX30p#FmZ)L2YJp= z=pC+{JE@wyXYGN@cEC8xHC~<`)Ee^O3wjpiZ);It_(ZnMqo$1%Uf+Eoe{f(f%kn{I zfL*iR3ykyoW7u``Y8j;_<;=uW(ii6|#c(>J?4(J$D04W81P7lz%o`qoiw!51n+RPb z>?F^56uLOa+Y+-oYP*+)U5(peBiy(UafUHixAAhne#J+K<4T?nlRVM+r6%>PTFoc? z0#rWpT>DDi8ana3Y0G|WF>Y-?a(%Ce&7@gfPY|RenR6b6u+@aH?ctkv?(NJET3y{t z!0yCz=SkkjR@eLAUcmF1q2#3yUcztZXuNCi!4uq6)nxc+G!5+B*|oVbVm@79vKU+2 zI^}T#l?60ND$xeH61iehYt05=u51&g{plrO?7Mun=nQEN%-11D!U&oTxnH#Aqx zqapE@nsK#y=8|Uez!{}jhSiU5EbVdGX<4~>bQ^VASt85<^9r5mi64}*JR2g_aCXvxzATDAG7YXP z5YrdEL&R>LajX175Z4=%i<&?|gjp8d36$FKPHYfQ#pxeS@y|CWDUQ>XiD1JgUEGYz zo*kcK!>0?fGb3@p_TyGfz|SEFc@0TUeTbx_p4C_XGlxlCrnY@eeP+=ja~iz}9Y!kw zU+Zl##w@Y;T5>w82J<|*$Vl?X#q^#NO1W{1=Jy*&7Z0Zf7Ifa}iX;xpD5p1a%Lo42Dt{&%O<}Qa#DA?G~yve&YlviVFX5USo(->&C{U%Lg z$R)|CByc~_q9+%dW@g%U#c)>^>M;z1C#CzXuE!?p*;}E^NH_7^99v+Dry+yotcu~p zT5GO=*bHO$iSP@nO+3*eECs8O(0sHRR65fQ)gv#g22TIgbi#3hd}Kk=-Sv0}-5#?F zM=E-aBzjHXF1fsNxnzcmZ3eXwpelxo7mvGD$4OyVL1-nY<=m6-LuW%wC&qXivzeLQ zxh^UydQJ8zNc1T%%Hty8X>B{DIyg%+G%6a$madb`w7=7Bo zMP*aZRM2Ctdy#&!msJq>ww zAoIzO>OGV4SFqtoXpgf9DY4slT*Gk*G4co3w|9WR>oo0y3zAfDN{m&9PDB|T)ie?o zWh=@#{iB4rUzsmI)0g^0Rv9pL%f}xrD^8(DZq`*`6m2vNaojOqTf) zc$6b5;$h{n4-RDhR<9Avy8>fBV=L8%4a4~C%>5^a9HyDfdb4l%aljznlX-Am2GA=~ zO91X~gFQ<+SdHva#+?ijZSe1RJDP@ah{A3AjL;w_wM4;yrQ`?A+sR^!X0q$Y7CzG26rrw2Tl?*IXE;%XxolZM!mno3$o8#AzAmw7DNz+PeWO*^ zdI98c!ce+BHa#fT5)&(uT8AHwtrUcxeQ%C*dDeD0Ta|*xAp$K|Lh0T~iV3Kr^^1kmd-}C2a&vD1<5qIBpmpy=X0mBX z5@wIVNA?xYdr}0_r~49v1m)w?Ok(zl)!+2vA~hejtu@%hV0_mT9l7HSeeh5K#$J#B&2QX{tsSi>B~UW+ZG(Pdx(MBO(m=Bt@LcBUCd-!q^x@Tzk|zqPqMiH9lF z;879Y#JfwztE(XV$kZbl>xcKFxP;^DD__gvgaOPIUyfhe3RB#zV;<_@x-SMoXjFuP zhZD|4kq+fZ3bgFZ23JK${0j36=!|S~Bf%g6ni0cE=99t4+&Eh^Z)MXbU%c@0z`m_x zYa4vUdjGWJ_@Qw#IFW;z zM@)F@M&t~~7@X$=^ZM>OM41iuC3f-M3lEs0c3P8?KE+=$Jzz!_pZXu4%qwxP50i!4zInvAm~inknfNbF>5x_I?&vn&_~YL-tU}xm{6R(k!|?y#Jc1?8A5RE|nSR05IO4jK`Afe`kizn(=VcPZGKd2i3$Hv`ih#nPa|PRPNsrQ1=f zRNoZ!VLZ=gf&>D6}bnk{ekL;H@wB`bXWN3#F<3LZV!=sTz6)HB{}X0yL*6L;oO9j zCjKQUC1vHgS<@JT7Vu{wpB{`AY_JozgF!2JL}C7f;0D{3pNcvO#lV#6n7kA5Hrx0m+F1l!DK}Ywp%@{4?7vjt>c( z^D0TvPrS9&PnK00N)J6NhOFu~UCq1#>;n+&s)CcY>xtBVo6b?$2Cyu6tp% zDLgce(4INMa@PUXU35&}GT6tzy~jRg8b_|t9w!-GmY)Gm4#ZTUF6UH`D^%f4IDBgv z4&E^ajIa=upn!v1hen~mZJ*vZr^KI5I{R~zzmcaWeX(=&m)8CM?dIlm2Isv7Vl=p- zoq?8YPJZ-ST1<_>w-p1tj?2So=!BT(SyixIEoSXKC?Iimz)={3_xgpvLpADk6o&Cz zkf8vEfMijfMrVE*awMbWMHA#XfhQ}_l`_OY?r2swc#m_Dh_1o$746>=Ex(DyFbwN0>8#VBU^tW-{ zPW_L$&M;?Z<=c4c2YVcpEm{*f;H(%laCP%pr5!rl3+L!raX;|yCek{73O=qKL(*#Fu1{9VWBkKJ@}2?cY)J4% zU~Bdijf0$@dtduevE86!OzffGIdev0w*n^ZdEriBc2p;+u(0rxiX$4>Sl@z45w5WO z)h#Ft=+Fr1rA~EX5jp~Ueo8du@D@+x=ImiX-HZoYv89yeW*Rk5x%aiq(fWYmW2;jo z&4zceeyMz_=sY9|Pp2_GMo30ikLYC6J){EUP6}=4JfCA0;->?1417+;hQ2N8mDDCmKKLj%n)Q} z&*{x2At|A29m-?me0x0_J`9~`>9STbY-Bp}6z}^{?4STMFXKu7IJU_Z?0tWMsoJU5 z{I3c(s*o>?_a}s~J+rd-8FTrJ(xM~w@-$gV5zoW#x@BM?kZAH^2l{}4qUmi6_ro#Ik)j013f6(N@$x9ApOoS{Q+BgRvt#2hK zkJlupMBuCYJ+9OZ!z6LGg7l5d6L4$`3|RGiY3AtI`>SF*faj%!+2gMQhV%WQTH z#4kAU)ui1i@9aMgjh4fruZT}X4s4_q3>mX&DJccQWO|!!#Hu$Sb7U6-CX0bRa_*>` z5;BYJToH+K`qd9S`?~=B1BEAX&Trp_uF5Tij~xA<7(+KHh|ydR68rq%K(iIvXAz(5@eTi+YFuMciA4Wtl~N--LitVi1A|NQs0r5+Z^$0#ef5>Cm7ch!RS7 zhm=USq##Ila}fs8Tp}Q$gwHzBalG&M%lmwK=9uG{vGC$N_g;JLwf_I#0+NR(^kUSt zD1XHYb;{9u@>ju2CR&SumG>ACYs{P-Y%6}HUi);F?_XV*?HB1iA}-(aK@3MX4I#)O0u)BsnwpwgKtQ5+`wN4lr-zlnR)mmBHzeuj z7r?r3>YiLuBO$Xel~@-d-@7W8HM*|B2tSm|_@&~TFq3;$5k<9cccXI)T){}H+;$WA zae_xjfRshxvuB6W0AU%r;{>-`gtIn)qy=!d)t9Dri3Y3>x6Ash9zu7tZ~ShKxYZ-G zbnI&+!5SC36Gb@fttbJn34S_FHTH0`85{Tkc#U!bqgGf-B*9>EB4rgP|VQpIcE7d6zsu?v2R009oe;P`7D6%w^R=Xs! z%k&h4*3i61m|)J(yhqY5xN{>%KfyuX3vaLUkCYvc--;>l-$}XLkoI=d zKuia?5@73)sf^aBBp(<%7QK8XkX1K((f&uFF`;pWWAH8Cu6*QgpAEyJ<@#%QuLuxh zwP)C`c5Y|d)IvJ)+mcE4kL^lf7x2?rgW0mPkC?KVMAoW<_YUl<=Q;FExT? z87o(PAJO~#s>d3}S;^fk_aeMwS{3y$-3kc~h}NCvQT@S%-@d8YfFGX;?*8-Z@4P^* zODQCn9!&g~!fy>MP7}9I`}4vvG+L-5P^e>bMLS__8Y8cHK7xBw&k+Qzwn(rO@$O9f z7}=iomn8*>7m2o3k>eZ>{co2h=3g7YCbbNZ%b;yO{Sfez# zp{KTfQ$2_JJ(t4Yi>Jci-y)th1=^C>-*ge<*f$1xmjOgg6)b`ZgOs(#pIDSJOWA(^ zrI@c8l8k&NuXSG1qMIjo6eRvvykF8C9Vxmij_x)M%yJEba?Z=zT5a$g6^WBdSlz;6 zdsP%ZR$QRrBKfb_Gv{G$9`!2yRg2g7P29io0Uy1)7oNqV=ZY>naaKG+&&k}%2l3Sq zM09oaKIA(aCCzC())`JO{VEi6xy5U5OJ#StLGAoMbH|_`9b)aE z(Z9S#9j;a#T(@w_{uQqa>dmZpy)+Qi`#WJKRo_qW^QDVK-30A-2D}`EQYpl_tM)zc zR#PO1u?pQA6=Ld^_z915J6qOJ%lXHSF}B7s^8c<$*cp?d3x=FEHIuVQP3^_tOGJ@n z8N2rs^Eq^xnr|oh*ddt)czQII=CBO^D;T0PS?~+H)^`!|LB!2g#EL_3Va26HsgZAO#5Ol=Uk#T(*6KKn6NsfR+1|dU;a{7;1*G9$ z`;?^^72@y{>>+H9oe0RmoU&|tC9$01oy^F@gkMZ&A`65ZE- zs|`Q=QXBgGSEV}+FZ0&q*A@&df4;^}@dv2IHe7Z)RRzPz7@A&y_icH#$S7~ z3{0jnEWZz}I%{SR`_oI!14or%^f-lG^Nx8y2XL%GVx!Azun@kNoW|fswC9)7Mlw3s z!>;{x=>gj*5*fjg3N0trXo+1M(6NTfOEBY*c6|JOJ^1YGX7i>6yKA{`=F(qFh*0v* zJz!mLG(>vI~G}ud78AC%VGa!ySc9)+sNDm&_B zHHXcH7!k*$&*vSNhY`P#+C5O&WxgspuA2W=PeXu3^^?d>&)DuFNeGgj!|fJXfEllP zMg(Zokc9X+KbEV$z1`Ve@t-bljoa+XkRonlhHu894UP0O9E1srB*1{C5{H%#LK=ek z5%fT0L==xuaY3*nl>p$EpLzhQStuni=cT8M!6^s+3FMZFl(96mfBs)4Qw| zU)LnoquHy#hU#ZtH?|D1sYf-YPQw`C1`Uw6m#bY6%7Alk# z0HpSUCxA>AfPIZP`4F@Qa-rb6|3M77mfo>%=e=_$O;iu53nC~9Fnc4zFF-&x3_}2% zp*3O+Z6)qI<(+m9K_!R4+P8sIZ4DQbt1ylNXfz1iX%$$O0oiX5a_X_zz_H{qG-RNB zseUEkXDJrgdG&;ro`8>&#Yy|bv1pE|xT)~gIlnH}4?!gVZbxv_sl0M!ft(w0ry=A^ z|7 zywV7L2Qtm0ES^E0uKWcFj5;t z_&1r{R&oFchem0>sANt(%N7B4Cn=FUV-h&OjuoqKNr!d~o<#kR)ZFX}N|DKf-^$Q( z7u6nN>^n8%xVr%s%ex4bp8=G@FPnGa)8)SXIPvH+pbk^rp`Z%U819qOk>`m65a}f- z9HE1YxN44-EacV*pDwZjfVt*d9`I*g!Hp|2>jIBCukgjFb5IV0Ud-!<&C%aIe6zN2 z30-JD#R!PK!#Pd|PB;+~i3}AR!V&o=xnkw-blP`^Kz=A+Cp=Ioa0t}Kv$07zc?f1D zlK1|HCMIUBOMKSR$j}Q}PoSGnO&|1kcSnI573k<{066|S15|QGSv@E~afN|&pps!3 zbfRO(Rg~aSf(y7jL39%<5bk>O+JJdIW*!Kb>V5w-FgT}_6$QY)dl2x)Nn{wu!eU*E zdS~OHxOo70kYh4R`Yk`i7I1Lz5NU!xg4Bs}8qakF3d+L(uYQF<6#xm0G<*SQ1N_}| zga8k{hQhM62A0AvV#R=lL|W%r?n?gJf2nh46w$kIE!8eJzw_1&WUPp@6hVek10NUJ zl(Qa-)Q2ng-VEuv&1A#N0oYMxJc7H@gt~te1C$_C2Q61!?y<46kAmtkXUNXE4zJ+q zl>LgIMVDGtgUf^Sn9GO{XtI|7Rkl*J)vC6C!JkrJy4luZ|2UxiU0}i6fJz)WN?``e zH)LwUtNfxNFuhlLZm--xwZnrb0x^j4qwn1Y-+)8&5-9Yeqoc@B6NGnz_$3e_L}Iee z>jt^+xc-nGB7l4(qVd9xlDu3Rv`PT6taQAKPIFmhzbxDm9Q;3!Sp6HNs`6506gu8L39NTa`u^#g>tj7V+~ z{3qi60nNfTz|<^(UWZV68D#;fUV}82Ko8SBD4Od1!wQi`fnyZjSS?6c`G5+<}+MUZ^h5~^Bu$&qhHz%g@Cy(jf z;k~T_LQn(ONi%qf$o>GJp#w5^1xVo)Kth)}4yngM3sJOCyG?(zq(QW|pVpyHlMn1n z34|xq5kZewMpxi{kI6EpFvw~Hh4m63MsNIV*@>+9LDPE+k2(uP-Ah$d_EAO*8p$s0 z#RwA3Rrpwito}+VO*9eUh{!0P%}vJ!;6KOuOTFrb#9iRc_Yj6yN}kq&y~iv}b}8_mP7L0dm7I6~ve~1Rr+7Fr_w1bRVW@RIl&u&#iZNck5i63%L$$ zC3Q7529~i%vt0~31!UyH!wpIGSfr4puAY!r9H)`@Di}Bc$G&A}c{Q2_<%}Wrzb?xI z6%g_HkB)$1Zo`Y{mf^5rmj%qJPW`R7kd43E+lL`mya`1h%-YzEiOJhyP?6*3{JgM$ zFb2nALH(T;&Jnn#n=L%})D0T&hZ&mB;aV>KoukIOaR)aGq{k9;;dUKyccaDv zvt1sTya)Qlm10E{o5WFK#j86y!`^cn??lHpEhslFzSz4E&ewg;lU*&kqq9|cvqhOU zUlAn|C&GsowRd2%vtuST@Q)Z6<%wR6tX^1j^{^fqGi@Q~KHoE$0&>59)z4$WZ1Y58 z@;cRoGuvI9mRF+dgzaeSj6B9;GX#{23CrE$j56m_42tV{sIECw$87G5%iHAEuSOdg zdr)oS657nC442gFX>`>!bJ;Z17hWp&XLS`Zb+&9Iq>8RC6}A(o^JA5!+@mf` zOMafZ;NI+)*zPIIf_kUISb@cpK~A?-=g}MQ{5|syb%wVuf+X4rl*%A(jy!a_ZO$B5 zCe+@=mC}D^zsu#e$$T#&BGp;H7%|wKZ5T?|5`zdr=RpwKsxKt{#CTqvN?_SDbRw>Z z{<`!?tlLxy{Xs@_y&1|H7IRh9Jsp7%WO_`bF+J)cbpP(;K;u{U;1G%fcIZqnNObl0 z$7Pu_KRW`)$fx!F-E{{Wn$BpAL1^|K+(uOIaE0cm`F!>mRII0=p#g1}sDGkkW82~I-dZQ&d987tna_E*I3(o?-fM!c1`+c9%P79s6Wd%kPzS-B{`nwNJQ^f0g1mu9T+ zXh@aYMN1DXT<=>gWf|5xqWLHCy#v=D9yeia`i8<$%i@wQ` zUW9F8g`H69nAbqEGCiK@d(JI)X8rz~+S7R~>xOK0=#W+7h8w5mXDp%(a3oBuW*RkX zOx=QFjJ%b?h+nGCO42`E(Ndk|xW{H^zYB`tGpuo_u8Q&dY0sqAz7+C+$lK#7d?Gja zYKa5^kNqC5@L0QDAO<5&sAOqH0=0>i4J-N*XuTbJK!Ky%8 z@g=_Yg6f6%-Zcu=xKPPUM1nc`9yDrBJ)UlHZeV%C4m%A7GPnOXYU#^wIx=rbXa@U_Luq;c^k2YE_8on$l()j0}f1Y2f z(o&nz#Re?!6xa$~X5mFu83Z^X+Q67{~;6YfJQ~NSxQ2MV}q2C47 zK^wEXH}naJI1!oh2bIYkP4Yvrstn89udec$QK)eCXMK9 z3u-I!k%~ZPz5zDG-kfz1y&w`ma8?>1snz`92qfA_X9!ExxF4ei5` zovNt3Wp5f5Yq-#C?79R9AUh60xWYH8_($>`!H_2%b}80=r5YDTaUymHBI1T~m*9kKYQzuBMzVqQ%gwq;jKdT%5K!|o|;*QdHyFD^udfrb`omxz1V&+j_3 zMlT+h>wlNd?q9a1L@zMDyY!Od$`#8EGilnA2VW2dCfV?KUy_b+K_oRY3KEEC#ejB| zfRA+y9!2c2P%Sd>+KxdMNA6--T}t7v=3^y2tlD)5Wg@o!}rlB2Fs4*g2#ii&HD zeaV=IaX6#KKTrY9tD%V|?~o}Sh@BV8g~;+nuE{CxpMsENX?#^3jF8T~eB(<`$@RmH zC=fvL-0n-&TV1@IJ#b;Z;rVR<4vlY+FE2xxAPk`#Ba>c^AHvOpuY0XMP{}}Koqh># zAmJ(oI=hNWfqYjymkHvpgy*LKLyrdGhZVMy+_FPRPYF^uhxMa~NaXTxY!rtQPW|{U z5KfQ(S>_-)iP(lCjki$z761?3!1YIccPIpbT<)h;1Y``&DNEiNZ~*iD^Xazi5G3@K zAi2`nmyL~1^h3O%h=3E3Eb%AgK+O`y4g`9C^`qhaaR{yT0z|0?#jio&03QzvBN|G6 zbo3pWo}kVC-j%{X0}ABTi6S0lb9N{EZXwE(AKo=O=33A%lriyTlkk%IUg;^DeO0bN z>EwyE)xZ=6tLJnV?G*g|Z^R9cW*>&0TzW1^3WYOfx!uIEQ0hLv(?#>xnLD7OM+qd836~e_4C?zAiBLgVfP)8*~7yAl*bhu$;nP zGWQJ%#3lv&6$514m_IS~D-ONdj=7C1JUptSsPyEONf~fDk(=Fh#?d zVn=^DF~CcP_wv(x1<4C^oq~1kwmKK9J7<52{&t%h#^vqs;7RBRJRc)2H2{k-ERpn1 zXCy`)9KvF-MQ7S)N?xBn2;YIqNJ!CmYPJ*y<2HKg9`gAi2J4tTK(5$O#L+g>(Kt^^ z+F7yj1eu#dy`KN#g*epGMnQLTUM9hSLZ+xoMb+Ri7x0?Dno6o5+$ZgitxhHpyZEPn z@BhMl-<@N|cJ5&^EdC!YG)J_uKlb1MoV5(|g@y*gJcvXfA25et0woO-*5=m1hGB<( z^YiFVjvf#fvL>zwfX%sTCyMR3EeXTknhnDPvM_{!@%0>3L%7E6LitL3!X8(rfJoGh z>R#R{Ji1ZR#`vB4-RNu52c8O5xf2;~Evdg1E9tV}x<^n2jIxNx63W0cxK_we)jdw> zH+%1{LD%D4V;Teo!WP(>iGoh%e%lC0`~u(j1B6cwv;D>`^^qZ*dk0ORty2MH^TnTf z56=C}mX$yp4^aM&iI7HmMaroF!0T4N684*xGn|pD)1uU)9FY3u7~b+%B&moRpQV^V zBa{PZd;%*0Ax#`26PCf!gUC~mayfD$G0MVZv^PbsKjBYJ(Okcu4#5w!!?iA}yugAu zJlcITKIQPH5Gf8oXc>T!G^8{&?QjyqC`GT;LtndKq(O|l%7vc0VIA(?hD|TJ09e4+9-R?YGGh&Abb0?i zcU?43MN+oRDe89N8R5?0B&kiqk(-UX46Z9bsrTL2eplBF?*J>u8S=FyC?b_q&LWf* zID5ubP{_VYWvFdHR3^Z(L1;+YI|t@Z-I#<0#H_!Xy&iFkHlVQ!xvDEWZq)S3i`#YQ zo4;iWZ^-P4!be-fUyjze6B~^tml}F3=>=4%8ho|O*|aUR(7S{0JMU$NRz(vcTr`V4rB$nZV9F0x-tnc9u=YMttwoGNp9#zlw<}V52;Z#h zE@yE7G;p9uua4JgLE%rUx~%Xn`*&%pf5k86piQkRfCS@TvXg5X zAI2@DGltyYn^tkaVO7!{fA9b9kXQIXeg-||E>qfE!lCjhYH)+Oi0XT7-#HXfmFn*D zX3nNbA|XyxXrhqf)MeL|Yc|I3+1nHk4=YF{*xT;R*o|tXk_hv8SXW7hkLnY(0&UI` zCuhVPn%T@ZSOzK}kxEy`@w;`nBz;qbvwOzT7$cGa*maoaKm?`oTYI9Vrz^A?ZAUN{?exU)$SrJVotlw8vBr4QFs^e9;@% z9q(9vv*oAGH6af^h4ST2`_(U*UsNZTA99(V3R&b zm0*zlpuIm6_mr&Y053vwl$3l5x5pNMt`f!6DI7Z7HACJ>az$`Tj(xCpLc!!)qCv8N z2UZ+~$$QcE805V|o~CZJ*BXILF)QX%a%LGS_k?`+M(DWXN6i zG@aBn+ltf$`_DQdDLIrwgqa&sPnd?*2Tu%WjM_cPXGL}VqbJ~M{l><&?Awo@wN(5Q zjBABQ@5$6#D7aQyZ75~Bh43Z_0;w@v-*LsmlA#J&bk+r3;l&G$DzO6djn4k8pjmf);^J3)Sw36EHDT{mb z-E&I%!Zs1*>|sbIlFoAxv$ja8AVZcJK(Pb0It#tUtU^xY-|1;k_695f7IQe9)tDKl7C5Ie<8P3_OeMJ!7|L0Op=t z%Q>v@6Tgq2eL~4Xk>(0=@D}X1A1?AjV-1mNSUnsx+C&7(w_j!T8aPGam9S=;|SfoHLrtz4H>yKiIa?TJTr9D#60YEzG}m z-R)+^jAbz{%Rg^XKel+|&Fcju9y-`(4l=))Tg}~@*i^5};#*e-p=qCHLQ_rlgcX}8 zDu^jka-S6JIa)Ev4Zq!zRSuL-PXbM>}fB5>i?sFqeXx#3Hhl9q8~ zI?%g)Laup2b{QVbWsvjhp{*k=paHXsl2$#h9Rp1Vs7YT73qyo8`^GKmuf6{0Y7BBl zR!NETS=-5!uoAr0+MZJ zDa=!H(=xYHpSa3~Y+Hvjv;;DJGnbiAI;UjT{p!nMxb?A_6@%!+%gwO-e7PB>_bF+SwsxaHc&`ix;> z-PVXg7%hy|E*@7?N|#!+cu6H(nY(m8G$lIU$;TB$#fJADBz{gnq*KV|hfyAg9yf&L zx`A(7tuwY|x~&c(8B&j4wQGuv4x*-Nq0>tBsZz`oKQznf9^E4vOzhvVF}>Gf$NzfS ziuVSu%JXql<$D3o^^)ZbJy(ItBeK+K@gBR2dtP0ZGavQOQc(w^lF~TFza*uRIVAE= z(hiQ8RyCAxM{PLgy#=6K77ja6z=)bIFCU?bU1Dv>Kb75|N>v;h+9=QI5>c^G zCc&_pIlsifq#xahH=ZO?C@NHjoZMC!4@#L?*Rga~W^;9|-hRiiLKK%kBH&W}-d#d3 zg;#?~*XY_t{uGXGr8{g68oV#(> zH8(6bf0^29WZ8uzEnU#M%b9WKF{e#hTj+?_uluR zHk`<^q;K#>d8}3J3*lMjA_2KFpDq#sd z3jSNlC#03Dr0)lvGHzvf{UK8}km*@-y!5AjigN~yyw7AlWrhvDZoRF`*=l+}NQy)k z?**;VncK0LIOcD5Q=PsD=H`1pa=y1+{c5$qX+7EL+WTFvnR~m-MPG`FzCdqJ{k`N# zU&or@n)(3#7EU`7tiWd!SyWT@#oV$JvPi&I*Q*6KCMr^TEt-)?(p%zgQ(P2tK%VLr(5QIxN6SfIpSY+_=E zj>Xn3#--@CQI%R++bdPbm;3aND&IC^joYYqRHD=NX?a*{PnU52nX0zgEt{u0Z*-|# z`8F%IbS>i?GW0f`KD|3P5}JFuU7jvI<-WM{BO2OOtW*N41j*45c9U3(R9-=}rKa9> z$}J}rW%QmsNokJYX)89T5X_faP9tRY1J0f!{>J}sH2`u`aWiR7)fm_LuFt|M0CyeY_H-Z zmu+O;mZe*4=taGXVU`G|D;Fc#X@(RzGI*$czUE+kp}mMA9C4vETzZkRlemG8^~EsR zF-~wE-9)8D-mJrv-f#;~TA0b)Gr(7fbx6}9Bkm!(;*_9yKU-GHnM>&=6#hmO=2n9k zYD)oaBp(DK1_M&c?$N?r9QQ@x_d%U}BHpc>4cv`VpDNx{weL}SvvDijEODhU=iJeu z`B?G1z4ZML%L#R(cr)xri<~`%@Js#|PGrB6Iaob&VaX8Ha$|rs{OMC1m|c9qWR-|tYr`DfulTj$oDe}6`h>)Ju+6z=TX_Jmo2D1b?A`KM-5xEl$(~)vD)Zx=$Nx- zqss~ubWY>S#$}rcX_^Rkha1GTobrn{i1T12d2VfzP&my}VUa+@@cqP)87j8Fpp4o9 z*VK&eHW^tPD22-TjG_YFu!D9ZFFAN#s5OwlG#(YL!Z_}xWKxMn~`O<3O}BYghjNz3-# z6GL*QLYGqscFNPlW-OU;pVVBsEgXtR^1<5TghWWl2y7WPdSuyrdp?#K?PoN>XIR_Z zGR_)qULFL_Jknkq4ceA(ayFRm2eV|_7Zan6emq7t-Q6@C?~MlBmGYLNQ!Q*Xd%^)m zxPI^pge`20Yt1ECfOWeL-QK$cm&>P3D01lUp3!tsesUx1U0_m65fS_eDJfwzTZu#} zftax`n%VJ7qyt@d@xaWc5X<^l`-b6HwxZ?Qhmni?Tnn8Rix-7y#TRalP$V+Fx-&lS z$ay7lU~oc&Tx4P(z3)v^w|M3J=Bbe&*9uvDv?cQv29^jq*pMSC;(H&g zvER|Bsl%N!SnfvrP6=KMewIq!2e(JNZg&$tW5^N?v(B>wW%j>H7kL*Z>A#FO1~IE` z#P`fts`A?r--E_B&W5+|1qpd53aI^!en{H%H8*`De!y8Ewy?Ok0o4GST$9*2%ZY*lmyD>m$CJcW3Vojv zTVwhc4M}RuCI#JsnA7N4*L3a;d)#Uub?gqraqY-&*4BNXD!ZVwJfeRU^CSFDq2xGB zAD<^}mo-g>`}gBhPQTk*e$$)Dbu+r<^ylrlMJC_qBKscEfi`(x%XSXd6R|iI=XR`p zbW%MJ3W+vqn;2W z{rqjuj~CIJ#nB^k%_Eo;ow`gCKanSjkHqt%GXt5Q1e?x$kiLWjbj!lKg&G0q<{r*& z{K94~*$d_v{y8c75_Pv{xly+$DK%l}XFC3kC(fswgRcq)(w1T3JQBM+!X+oH(Qqq3 zUxH!VZX${R{i!z>&zh!DGU|K593R1>=yhJc`QB`CZCv)0(X=OzxE5J-a`3gna^Gv= zCw{IO?^7|fG%|>Odw=uVH=!%!LyCsVeKeZss8dY0rC(4xJ<1?6(AtpDbw1&@peINX&gL&p|wFNZk%`m#VfrwhiLP#%TizYjzi1y8B@v;|2C}0 z%W}q1_?O~L;u|LxQKvjOFg^}&M2HPIVakZtomY6B_3(OD59L%e-KtmEiBB`>_|6xm z9Zg@^8ZSFvD6Q{uR{KF0shcn z;LYs@H#N-fo1xW@b!PR<`+^?s+_;qNwA;1&>ViZ^RC6?AM$2Q_q~7LWY4L(B6gOq0 z)*izv>T_pV2qI1h^L0N)1;`Xka?JyvKh)(73YV^+yA(T=YqO;#MaF ziTVkaGDl1_#rla?)JdNw`>ifN?d={YckLnj-MBt>v2EijMb5oHr-i~BOANW^5#KGO zsJ{5>`|?r}P2X=JiZ4hdJnHP?Y#1zHu|3qn?oC|Lk2j*|79Cflvaw}<5@moX!(NnK zOM3N5x89$ zIy}5&7;>kuFyKRt@)W7b;uuAx-bSNfdNDQa`Zm3psKKd0#lBVMNWsE^{sfLqRA~)) zpzEf-__EMSp;+ZGQ~#;shd$txac?Fo&2LuJJY{q2F4|q6NPD4DvXZ`sU8!Pj$$vzz zmGbODLOh#O#ax|+Y0^RkHv3w6v^BF$&PVsdultn0liS8YV`p&&F8b4_;Z&du!9`j! z9}2dWq+9RB8+pFa!t?gJm;d0FztP2=AXhBv%&c*?!{7p*VAsUNW`AW%a-Nb8F2PqR zQH)(ew<^b%^OBqK-1qwfZsEJeMwZB?j8ziMeVH#^@4@&S||cyVcj;GiAx0lgj=h$T`+}$VPq~M@YW>k|su1m~Z*FkNVbi zzG?4Ymt?gsWl>vTgj%=LyjN$&hYxUk9&PZ4rnU&Z=y z@+swN(12lbb;^ObW2r{t{zkEQaE8wvjZ@ga zY4l$qcBM9t*Vj@(KY2?hJ1#P=DJ2njz|FEnHl8uS!R_FC=LUI?YuhJnEdsjWXqurry+g#5&KQdtacX{8H8$FcHRbPI z`cZ#Km7XrLU`xz8hTYg`HF;9b;-kJ{Tm<(RNtCupUF;+lrj6}K{hMbN`Q_P4;wC5` zjNUp!{6OkL$g8#;JTgHAmAEHMofh0mm2(d`NZ_LeJryCxxK^OaMMKO&j>{s>ITD|+ z5PODtUgSa`MN^jt_4^|yqt zl!xIXNle^ZrK8GcQXy|@DROAw!ShfESGVn@IgD_=i4ykwU*Y29%hWj;4)%l3l*du~ zMf6)JH>c+|-zuTVk*>fZTljAC+~|i{nq`2t;c!-;a|#KA5qs%t`#8T0oi+FJzP6zL zPo2YNo#$)ZH=k+i2Cx-RxeHvsMCkg;X>3AqZBLhTuWy1Pr%_gg6JqCrK4;ofi{4}g zN7rs06VC*JoO}GP4_!merNTdt9jykNgrMEI-R;kfQ0ioFwK0es7T^dvcTheEQf4>Y z31YmYd(z`j8BO7(Os!Su{PhPNJVki;d#Pe-!a~(-gCPlSIp}W;SltR9*WL$YQva-W z45J)!X8K%Xn3LBgjwNosBR07VRu*t zxVJ5>g-Pg{}_B4qr3ftk%tJ(Wt?vxX;k_{+|cJe&- zBR02Q4063V6Yk`MOLO3hD|BV?iM;p&$5SblnN;N+-u41l$e$n3ibszJ)5eJnHv4~@ z)}0B*$9E&~NhPPwa;lsoYP*Y$_r-B)pracyph1 zjjtM;;5U^Qt$03HNb*&sgV{|nC(&JCNwHg;E>Zd=0;VwvNnF_2S58f zII>&@Faj6F9V2;fM+*MrZ7#SxOW4|l@_(>#_Uki^rhGb*ou{c`4jFcD8?zpFOQ@1V{XiBAb%uSyQS23|=~ib34|)JY+J64&+&jZn>xvgMt52dHr*r`i z@Ou9Z8A(5J9X}*$6lrAF7pC#Q9Jx}D>K&lpaW<5hqE5MUThe`az+tK}7OBY< zUwg{t7JG5S>-AURN@7&HQuU;eOn5zCEvR=DA&V4Bs61S1qGMy5;=waOvDYOP zv+GDn^4v+)>dslQ;V1oC4Y50QhP^^TnW^`h8{QY1w71AduO%#Kon*Kb&|4j@P;nkJ z?2^i?0Xf}LP549NYdlj{*ZReC>lv?Jo)wj%Y4vMf(4s|^z6ltH+Q8&oc7v+|mf2ze z-)Lyu=Sgena}G55DbD#~mmKNN&0w6gW=^9>Q5$zsly!cA-97YdQjL^ODP2vtP>tY> zqrTz*_i)Jg#}5qh2IA;H`3Qx-mK>5m583jUg3V2BMX9?+oQLpSP7Q{Ls}jMTKApFm zUXUlpH^1z)TKn!2jJoLdjq`t8PGrRyLIUxy7Y!*qj=z#6@7I}iZ*q&mo1speoC;yQ zHk4u0gBOp>b)}Z54U-P+gwCSF~wl8RH{MkbYcx(E;#;tk1XXZ>aYO zN?oqoOU0=oV;J``fQkvlHFqaTtOe+eNS9<@QThOPtl_4)1#q+Rru~$IF%-gy?&}%h4Bxh zvSx3F3n6i{@A5q7$3MriSElrpPM)c`V3Fy=dL*EMsqEy7x0WI&Da-|F37YmQZo9-i zwkATh$U{wM^oht}Av*o~CzZ{gD@+qt*@zf&vmx5Ps&B32wQ?#k8DWcZP7o+D6qYaN zl;JnxPVw|R70DLmi;27J5?r-<1!uZXMYz#0Y8d~DgU>Biv3EmS{_zz_TJsDZ{MZCJ zMOJ&{A6+98e@yk8r#DsbuzxtsWa)UvPP({Hd@nw#ydmF|vo$$snU;v5$mMNAg}iQE z-1)0bJt!43MRpyeAJ67mr!`#0J&BxeYC2(d9<7DT$E2-=jj{;C75_|aedzQ(OV(*s{) znDx)m0V(I%9VmRL<*PsZOi$B%Dqr9KtS}cRoEWaG(>v?n*C*p|`SwoVhWR{YXTTHp z(pf_4$l=G@_ZB0E%*iG)IAs=`I6g-ZKH!M&uVLuNu`4Vgm6fx}#p!ptb#;HzlOz28 zwIOXI=K0IkA$B5{JT2v{pPI52&yCdU+K6Ru$ytm|ltlW8Icdy{nN+8&RO@k zbDXF!`6f{z;ey>X7#ghRDOWTeMj~cf<@EMh25UlfFzpYnON0ro6?(B%vI;0(Idw63 zVfQmpciXT7N9f6odo(z=Fv_Z{=WssH4$Bd=vtH4P^{O&zed#*1YCBR8V6EKn@|F6suS8CLPtLr={>E1#$>$9=3At^jo-MGzu z++hG&T(ALn=RkFGeJS1VK8U|RfdTVfzW(-A1w};;)JE)Cq=0oL`)lhtC9yj`NH-!d z)E8y%{n0$$+X%Uiyu>Y8jljesr&y51|5LGErfP5y-VrV>7U#2rLNz$KxLns~?c&t) z)omxsa9}J>GqdQ%DP1tyT>lhEzq4{3oJg%U2K(9vQ*RD+>}O!w+kF76eS)d;?|_nc zA8g3z(b64KWc#zkb-T}QrQ&@LJVAL}oINc!hlNL@+El!5pK*6S&H=7XjKjp+8tJM@ z#7!ZY@A(A_7n{?AaH`Uh`QtxNGMN)2>uT&1L|J#TasKz>bUc*;8e?r(!q1|&b<=0@ z8yCeHf=BPqiq}!`o7a~%RR!5Rt!(2r(=P2{D<5_#wc65@NcgapgVw>ithcbJbKj)B zPGb_kbzjV)n{ZM{^-WJp(?Zq2W6k)Mgu#doh4RDJO77kkjHcdq>7DiWCMEY`cuLb+ zKlWe!7^g!S|GtqNn~3*ZiG%-pI)_ue&4wvrmyPcjbl9|8OPXt2C4El#Y}oN&@ADS> zYY+KN)ES)d5q+tyK_U!k;inzjD(U(+BQ{Q=2+;95w2D;0p4^}7DTnxc@>yr6Y(31iZwEJ4h<2gBO;HW*&#$L{`asH# zcMUv@aI(hw-XMT?9s&;M@2|mAhlzpw!iMmhEn#poV}H8d=66~&5QL&1z)-MhoH`rX zf}}j+89td|qLjNgBQ)E&2!~T%#xqPk{6wC-9c=W&Xs}|AIS(g!Kt@dH<%g$IWj8d% zCp-i?%e5Ai%3a|0nh`pD?N1vlH54GcUje3g_%T2w>k0zV-+41 znWkaGm)^;g@<>UOBRCmD#D-xN@X{?MrL{6bcBNoCrPJ2W>%y08P0Th6hG#L16CS6H z-q9|7@VVfeE}I&Ww19iABi(OP{E{HH3qwu07Wu{KE#A2&65QHce)vx(28qI#Gf7y4 zPcGUpM|RCVayHDMIkaTIIP+RHg38(QoouE|UZ$$ zAzy0b!|vZ(5O@=GCy9U3Wii=_7?}fJkG6AY0cdy#D0|PYKU@^X6Y5Jl=uGCL%4y%6fQ$txz00TpRw{~36kH8;nD;Ghj z$%gR(9Jk`-lWY6eK?%uow48Qy3gc_2TRpwNYq2xp>B^d--k9CFImg*_0h_p%dS12o z6&5>MUX@M3v}7_~+sIQl#NSr$k&Qpo)=x5P-9#zLQ4ykzb0mo(JXt2fIhHN7lmqcS zp4;%S!_|-LSs`DQ7IP4upM%Ft=h-Ar&Wehp0WB-v*wVLS3F@vqy_7a%l|xky?}nI0 zLv)rKv;50;Sc|9$3S-tg(`C!FC>J{XeYjEyvSec_1DRB9GE&&iwqDig=&`2q0S%8k z$J*TeYuJN#1S%B5jNVz6IS+GmrIA^RFIGJK+$X#$o>*GD(z}Xxn};cxVw89kStAth z657SZgmFHubfoRxP2El%x|~b%ih8bhK;Z^?FuA0>`K4PL!j}p7%-=pU8|QH#$f4Dp zA*qlORfxB8iWxr>;zetFcGp?YckQ{q+@?hEU9{!y5!@szi%Ir11dgBFxArUVWVAnd z>Vogs^{BGg%dR9i`fRcHcK&hU6baQt0@FUo&i0~STnDNfCI&P(UxP~+uW0?s+e^Q$ zF7?ZI9NzBnhS6{-6bBcQU0<$lbi9{ASx#xVcZf+;^KQy0mv`F>HNqGb2<$WQk%t0vs8SK3!M_nW?)F1$< zG3_PKB|2WpZUF$miWQ4#7m^(8b(k#(pRN3-}KTQB{E)TM2 zOzV%kD#R;P<+ftZ+s#HQ2uso9^!sIqIdUqazkO;JtCVn&=;l>3jZ65Usf0^Mry554 zDrG`H>YMxWyR*uZH)K~OoUuvzpJ1^p6%LQkLyxS7b&HUGYA~6vQ(Q@4xy%&r@paA< z74+!NY+-5zVWj(a+)^+nk$N{dFp@cGYYdeJz3yVYx~k&C_kc&h@B!JaGoie54_Eu= zs^yp|`#Pd+Pil-3V0Ih;D57oZ{gLa#WqE_Q5G^p$q4fxJrP_pNH;6?R1^bt6ezy1{ zWjOGO?;-B*@-dpH_y$J)%R%OM=02wF&`5+CrLG@a7%4>O*O z!8oJWy(}svwX!V)u4~-%{ifEQ9zrH2CeE8T!w@3Fq6voV%rch}z$qT+)*e7ALfNaPl)MCyfsLv%5*y!a$gnqD=Vx ze7jC_dHtBm0;nCjQ9bk-4fp(*#wNXc+$FpA^off2sw_OHBPKTT-c???(&4Q2`2p*B zW1FXX3hc@9Pc?oBR%uMOZPuQD*NQK^ZR%5%MsM2$6qZPO)?XR3%=tfTy>(QT-5T}1=~hBoq(eeFq$MP!r9+xciNvP6 zrMtVkTe^{w?oMITDfQiW-gBPkeaH8Y!=VEP>^s)F*8I&mPwz*nO&FfeupF!U5GUNw z!0x%HszGcP)Y}@yltX8XW|}L*NaZaWySoOMTe>xPb7>ocfgY9UnDV;uUi-dO5P|$m zmpVGDoU|{%qcQD|UOpMUWeN-x&YTKg5msf$hwL|98TNb*KE*QrtQ8f&2hASzJH1nY zs*hkoUxgz1o`R%>5@30=7g*29p?(~OnG0FXFl;1o_Lg-M(xl(RF7kd5iU(;HsRluk zyQbqWVSV5S#iDERn?~5&k+nqbnicZVEd>#aN$yI~%=-0cb0H2f!@1kkez(}jW(8%| z_c6a=+bdZA!$s^9hiSJJWL5d4zpAOJfvos3{q`gLl9-ZmaKOU{IjlVQyj1f98g&uw z`@Y^Iu3VNou7l-WiJo^Q78R{{PrFa|q=)l0NS=QRJikBhI+)$o(e8LhE7xEGa0hN~ zcpmp69+4Z|9Edet19XT3G~R@k#q*qs8#X@tAu8rmxyB#}fT=`Yh`N2DC|W+r!4mX^ z(qHmJm$T8Nwj}=I`diyUuy2-*8Ipt97Z}j@g%^xQ`cd}QU$RtW5wWBdLzOzA1f1l$ z^ok5Z9b{VdqP2St@gK(lB0@1xftmF->I<)!;lu}XUV)KjAG*vfhiI+|2efQ2x-@Q* z+S(cpN6P_iiR_rjnNhTsVRS~x_Q_ZpXF1V&+dO^;fSfvRBe<8i1~BBuZtxurJQdp`vt%!KeUz zC1$%}k~wPD^v0qDx0u9^nG05EWJCL;(vqiVDA=r@P=V}#N(%I;j`Gzn7;WfQMp4%^ z#+rG*pYBl^n>;5x)OL`hfKuHl}bZb9Z>Xv0UE>YHR$Gfp5bd0e!m&Y zZnN%>zX9xa*^U}FUn~K?(Q~`XAKn?3=lf0ab-xqfOsx9Wy2CKcB9Og7HBZyc@=&F= zux}LnVHTl_hR~3R_BD1=!%u!RZ9{L2-^*)SmPn=54!JcpQhmZ1>V_$md>SIVb5(7K zk~i@pp-QppYHIvwhtg9+8oCL_47*JVuQVo1*}n$)4f)F`^}G<0lW$CNp&}?b%n!Al znM1(MiE6f+Q(&jB`GZ&X=;4r<{JZuAjee;uHm|8vN||x}aVO?(cLSYy7*q?2)YYnv zW|?QVt{YthNw^(M-*1NTaIYiksJ}xZ&_>?>Sg#==8ir6C<4^E&$nOV{ml)ssk)TM` z>Y~%L(*{vL#!~fSLJfsZ8w0O{OVK(*0sK;r=$j1$!kpCKbh#v(P{UfB;6p-_TAYc{ ztRhMYZm)wu1%;}bVJ8mBtY4DL-*~}+E-=RWkrTYHYFjz2%&4+SVrt*#lKlP^lV0jh z6HqJq6UGZ~;TOi5zjXC=Mgd9j%j836(DFYgfi%NYQ?Y5s)Q3^0Vtdr7N-dkOffNrO zpmAX_UI56hI0ag!2tk#=EMv^t5lKp~A1{!ngkqZJfG2I}=1iEc_T3QHLY^_3hwD$d zDLT9K-*u?Z1U}r=1Hq6Tkl^=m9|0z$6OirDC%Ikx9up#^^Lzl)Cn=~B$fF83c05`F zBN4braed0#ZgJKhuZ|FUbkgf5#Isy&gMEt^;?&2U?(OQ|C#uhkim6c?V3q++`E;lYMA>VnS*!o=+Q z7IA6R1#y5J#7iv&4%-!ZKhmiXu35OnPrxRRXy|NJpooUB?(%M~$Z~sQ(6L)xgj>1h zED@0O=JuNnO2=gnsv=$31{%$-si9Rhuh9iH(-hjU$$rVro6!u-5Jn)d=jo#5yGio( z)-Gi(1e1@;%8%{^nHLby-f5AgqwVk@_2ml?1H)ppX&U~ z8BzEpr!b=hB@thG&+_#Tobg_w#d69f{OE^+RNQ)&Nl8=HIVy%;Y-8AtyskF9l(RnI zRT8&vXM?>hKS8Y;jZS7=ef;c6ZUxfMf&{d@yCk z8|^L^cJ-eYb|TS?+Q0Sq(oQa6wgkMXf=uOgN%w$LkZC!(uTleW$dV2l&Ua)(wUpV6 z*RYsZz&;mWL{})TFql+Q*JX$6Tz@b zUvKyuv^FG#>?Dpckp*2TYwT>|4s!{!iN~Es&g7irtaKD;dB)ihF4aO+a}sFB0^JmQit(~+rj#at=;{VVV$Ps(m$AQTn|~@0Ml^4UHWdMkb+qCwddFpY)Xk7oL4vBrInXhQghNfe6$a4K$@ z|MG-=avxYCH^_cw-s+FDC`opf4fAMb6mh-3$EXM;wK88JnZt}m^Glo=Iib%6n|2I0 zx1SsiU2-Lu5y`ce$G5Y_ynFVL_kGQ1Gq#f4u8^!L;E_nG-Shg-uyaJsqcH_0!+*(l z`bqz0q2tEmBv}S^BwAA4VSoGLm1Qh+H<(6E2rMSF_1CufB*X@cI`xq+hBzIJx=F>; zX(-L6c=smFKH?9bR>L5ckWgc#!2g7-1(@~w<)NC<7Eq@7Nx_1!Qtqf)R?ET%+(jHj zXM+_A-xZVSk+PxfPDT8ql>%hX*&8;u`1&_MUJQNu-O}zxeu{M$Q1K=8V~4Y%6F7rR zWh1>`L;40pzQKT2?svFz)a^0K1RwV0fzjEW3AD!ibjEyI?%2xUmz~k#UGRs156O{XR?FRy}F}ZJhz4cwFtzli?guMTX z(tUvf(1eIN8c61@uaYnSUwxJ=fCLXr>MsfF1=MeJ6A%-NmP~g64R(RgH|q^x-3)p@ zx4G#Sx)*&u&4B}1E;V8$02M&O{X9V2;pvfMJ2A)xD8twQ5+Qp{1)ac zNRbcA^buc{*@?TI8%6@OP{ z8rjOG)hA3)pye1c7UR}6UWrgET3Bw1VZ!(Xc)%?At*-DUAI{&X&Oxte^sOR>zpCBL zU;0M8+ly=vFX-88OJ6XfNkC7bu{z3SEy)p9ukwO~sun`N@4L;*`^aJQDnk{PL6y93 zf6~ww(JDytX_)28@-5rLHR|^Q3U6lY?>Lu-S9wyQ>FJJ0P|yIFHXgeQOp604#MJWj zJUA7uH9Y&gi=94sA_bt%HU{$?7x(DYQu0G)v{EkBFXp{}m|kTr{G)UEo^G9d0eJz9 zG=$Fw8z)0*ZP-9ZZzmAk6~$2VZS&(Z_N}a}3`e><_INl}Y1seb$FciyHxSnaMtVgD z*i^}YesA8_fcqPc)KsqLmb z$%Uw&n7;muMJy8dVh^k89r~AZbh5g=944J#Brk#{sCT7YdI0N`_M%G-(n%>rJ zUA7Wof-T&clo%{5!k9RN3BN{9)+=z$%ofqYecC#7eHW@FbC`dr&2o!JpDk5dIq9BE zHKs6QyFkWwgUK)v5XQ0U6U?wm_MTu^@H=n)d;HKkN7`7tnc`+#>N~5vFm)AJ`c_?f zjQeug7l?U>bz-vRgi<_cWQnQqE3~&iV5sDN)ZNJcj4>MP^s7S@N_XQHX(EChE)Dx< zt_te*|1&KI++!1bo&}$(xn2Tr&i0*by!DWOE#;(za;2^iD=H1E3;EC1NZFJm55T*y z>vMd`{tmws|AQo7UyPS|f!Z=C_?aZ&StxQHOc-g!L*RI&Jd&F(@O|qGi?cKvR1$f= zzF;~W*1nh&{s*q@SSQcgwD5U6{1JkF!$@>491RkjRP+m@Hy9y>Bp!N(|J{n-(E$+6 zw>ka5_2~0nh;;)w7)Y+nQAxCbOL^@;Y9v@IRuaaGutHA zN1sZw+5+_&3G+#>r1?h4e2Ckq)n0&+G`1k|6I(e=3M}53q;hOpymO$155-bQ=6Jjk zPWrl*K?#!ca!NQyd31(+m0x(J_Jw^>U<`RBN4|75T5gH7sEAEM!c|42($@p@P#g@1 z44AC?3-`S^2h&3+M0A>V6=&yD{HAUn7IGWF6%NWD751Bev7-*}O1+A^BQwrR)tZN- zN8={0bTis-e8?db5i#WO@&#>aop|e==(y`7y7hRtiqPpfsJ#vH#M=kg!1(35ViEma zEhTplSywYFC(im9FLo1)q-H?8@uVD_gU4=l{B5N{z9Bya;4WFyCa-TEsEz*g$qXQN z*(+JnX&m!`bB;F1_W|r2WvKn+vmismp~T9Gl)n&MOI#mn-oL7buHPMZy8xC7Hi@N) zk-NrXh}-W&?@Llpsj3`I@aJChu^5m; z=P(V$_^deL^cQ{1`}gv}7r?N3gfNEo5e1Bsstm22=mC>MIX?de$C}JpO95Bc>_;->+EoUXWj6qSFrXUy`8}1?fNSrhDfC%KR`}tq6<6SHcr%i zt4fvb;)d0WdH@(Iyr0c0to8I=7s`~OW#60eO$ZP{&oXN!aGe2TP?^N;|AFM$xVZzL zU(Npl!jAy_TjoFbH%Ul2i3L+yZ=7RkNvl|ExVQt$k>HZMA2uu!KVkJ*5&~Bk=}VB3 z3F{X42mwTg>@Pwz*&6xIj-TMi5*k+)doW3cGaE-~9^{vtvdmY7mxzu;6am7i$!I0D zorhPvM!h;d(g&L+(OmnOhP5>uI`Q;HJUU0!irR0=f>WHRtO&-H zJ4!m=#L))-%9{>7{h|;Q1Q>&Mn5uMz6d~;i0`i&P<~tf?WB6Qkg{ZN##{458 z(kB80_G-&ild^z!!-N#?NjJ(wh;0%7SNQ1{v;3c^V8K8ig{vfN;tE7+VC(5s-DFVf zZnBNNg!IG1Y~v_%R$f@bc`QqXltKoTWNP%^C>MH9q5WY5V4A77xn}bQ8p`{dKVSM(^tfSW1<#4!0Y>N@<`<~$NA@96BVxalNeR{_u z-x=fZ-Jhowb@!m2zTM9!=f^WucWSLEjt2_q{t&-f%Cmz)h+73>zsvG0`iL6Epo3_& zw$mLjru(Hd!6NAEm6?DzbF;kam1WcK<*00x6&HZc=zDywf!4yjiAauQN-Ea@BU5A%N|?$8 zuM9(V60pwjetH;xhx?04Uw1-I1A8IQj8AGZQer@~rNVGg<9n?eS&xhtkJTzFp^DjW z5lzxb*4L)H7G2^|Hq7~H6#ETXKGlQZL5GX-D6$M+sgy+>Wf)t}#>&nIjOP`)?KDEkuRMF50F7|O2So6IZ1J`zbX z5spG^ED|QJw8&zWZCpJbGwN~NHce%u)Nk=SFcfWx)a%8PL=wbLXm8ET^xMDKA;b@% z15R7dYtu{98x8NN0|&Ru620E8dkO?T<3w7RFz2v4&pBbk^!BFzV$*huudMH`iFWEw z0cHAM>K`Gp0L9br0I+!t83y9d{7Nd?h*G$}_C5a{aMc3a&NU#`yo-3{1Ti!sqG4Ip zBJ6npx|!=240sM%R&TH-d7fSFZ!@0WfA2LIbHEh&VqlP+)6d_{@=gTg|6RDGoYkve zu$v!DD9PvU@d3O_6#uT~&JyQ0$93K_DT=;f?D7Mlf@JhNs{-k8VSo0|;*JoJk zOd0KvalKR{Uh@miF`{PQwKfah95uORjaZixOYK)Z1gmpZi5a>iO_G-UFexRo^(oGP zA~mBJWmCMlZ;-a3n!fm{Bo2-(mhtqe3T|vFVJKTO`DPWFvqy=dtl18nH ztLid-4=juocCPE_vc{;xH$-ptO|J!=ngfV-ht5Y%oD)HY?86_p3^^7nuGc8 z#}K4A4Wsk82if$1Ya{}A6|>W#r=>-x#MG7}m1O|jo#rh9h}9ta)q>MIDu?hmv0qLU z9cH|I4Uv#sIv%K426w(dn$ei#iURtoHvv$n2TADW!xE5d1i%GzO?I?EeTk3IU5!vT zd-^H*5)evk)!_MXpcm2bW1FcF2#OpB0Ll=(d)TMdr|YNn29JXV%>LFpHaS_@wX(17 z3^XSHG3r=;+(=?3?w>;!!UMLRf606Hz>iLULi$o zT{Civ<8j~C78Sq^U9SQ0Pl9a#zOs4k`E(5fx?Zw-sSAwbhCuj9!^3Rb73ck?&?BXZ ziODlcwHYXMPyPtZ!&vgpL&_(>tdH@Gx{TZD09xWBaElSvX}qW$061Kh5}Rws-|C6m z3b^Q#FLmlBa~edV^*R}3VubI0hB{dN`6_@7Uo}L14k7$>WElZ{klDJ*P@kiH3chrR zb|l9}6*03&`}#=DfyyQ)K-m10F!6+pD&8~LuCS%IICt6y+d>8ZT_lsv=q%#R)2CZ| z*B0izL!OH{uzR#N<|nOL1I<-rdMCM^duscIH^JL=xmHQ_`c#~LxAL>^XA`uE&oh>B zkX@+956W6ydz<>8$jhE-Lsv}?hnuW#+FHHm`{9l)p!LuK!Q~;u1s|d!@UdOP!3T$g z$xkj;MUY`$J9z@2a`Hv%?r^Kw(THxHvNk-Fr+Gh{_(X34h#A$3m|Dv(IM?DEK-0Bo zo#r!M0_0$SvRtSgEawA&6dNGR?5}up)OKh6Oqo1esrN0PdYL`2Kqve1oj47{_Bsr_ z)6c;l$9cpT3zvN3usl*eR+3mX7$}z?M0}B%#iBLTFsY1CWD9fWXxupuWZAUd#$p5; zbmdB7zsrj)XXuoTTTVcMDp9RReh2pgmLn)s;?*l7BH}D?gcR||McYA+kIIq_<(l(j zJN&s)E3yl~))@xGHY0~^2{N05%xJVki}eEjeADXUfUXAk=+{U>u8Z5E)+lp&Y)!68 zFJCS67APXTX>#{M2cAtz)3&tq$d`7LGn>l{fgP8~UlaTjsspW+b&+Q>hr$G1eAMcY&z88jRtU?me zvxE4y7^)?_@O11fPxClcwBo%_%>+o;f!TP!V4K5+Uf4c6YMG>umv+U=+4zUXe73co6? zdQc#JtX6Qsr`?j^gU7b8jB5SW+_zzEhEIN^my@5NU3QK4t$~S|dSTQu} zUm|{%?em@+#(?t1frFyoicdjaiU2vI<-IrE{xp|hsT2K!3%jVQMzS>jQ)2=$5ms$k zN!5?=h147Y&&4;*hQvF}A*1EK7?aqV@j8q50+WJEGC^%!ji7l1nCg!QQKy_(SA3;j zr!am+YE@4Vvh>IxT0qd;@6pQDj7UyB6t4;D^E;;F+(EgjgaMT@c1hV*HY`O`6<| zZ+$^>k`Zi`o*^K>eU0@$0_2(aeS~PhTQ~31fTV1Es#ebJPtCWW7CNM z@&ek$r*8%%1bu+wkN%rsQ$b(+);)2MS3>*!w!o~Zwe<_nb8b)HCX%xB2K_`@zUeen zAs{AgI_-4=;N<^13{`D*5(xd-rHAkjkTd*WZmTCu89)7}2%k8(Nv!bkcI2i1@+X-J zW~;eCZG@~faraN%D>iN5XK6fYJ~-+3yzd`v27<~OcJI-iH}34!7hvx)Bo1Gj(z->G z=pO|pti5nEZANKnxF)~*KFaR^o979wuQSvKHT;OLf*C)y1b3&a3(+ERI^*q`;_&G% z7?TjmF{s}~*9y{GfvDkCTcq$S3{kphH@gZT>F`K6si&7Lk$) zGBA&iHfV+zpTzX)Cbm|9`}t90Qw0|ef40Zhx}_XgmY%>wx>Ee)#-wP;I9oVPAdK)f z609H*(hK(6`@k(VxCI}Z^SpJgHf&i44r(icP#pg#g6!FKm!6+@sE0}f*Dz`Upk~?; zOg~`K8_>gF)>qq^XL2FoV_(H!?HBq2$Q+4^S@@;{?tOnx7hG8msR2p{$l!znl>#h} z;e1jOp{%Sd2n5s|=$oct!s`8*NI2mJF4i-?tH6l&_b`d%*a->9^j!M3)@5pGiT(_X zv2yj2M*~-hUKzGOUF(Cf`BqC3fl2OPBO_pJ+=xwxFr4nZ=NfSaT1@D=%6agWW*sm|TH@BF+y-EepNiU10lxRu;uda7|KkMoS(;guXp za@gX*Tv6HK$2X$A!}3n$tiNOtHrf7qwWe-Je2fmASx!~9eH@Ap`EiBn%%mW5Xqg^+ zUam!3vR}T%*s`c)3J0gIe;pj|-B^_6I{&2P^aRiE-n^5smz&eU_LO{;ywWurK4`pA zJ{fKenmzCP3R|2OIV%qw@P$LPmq99gZ2?6PH)zUh^igNbih}VPYBhn0QIj@W`M5}0 zwHDiaS^Q;2&VM2Xo?R?+M&`^#vj>ni6?z9Iy>|&PpgK(}sRMf;<2YNepVb`@sPT3< zk6N5z(9ZceMp+&z$Lc0c$jIleXH1#xTej+l3i=Zj z3W&h*hO8GaA3KazN#Yw^q4;NLt92jZxH?xHio5$*RY~ew^I;75M^dr=F<>iRm@hGO zaJn*M%B7C8|ESvdPv(ZGkd1?N??^jF|1WVCa*LZA(9<7 zdO>ekf*`#)xY!=qaYKZXRQ^uY>vaE6wXhVM?o+O@xDppV%>k^d*w> z;9vt64I^@<6xAG#cP#b1418Qn3a@3D7P4zCi8P9NcH;7^2%N2WXjlZ(;>t>g8XCae z2E7*DpEZaP7hS_Co0z*EUlG zh4j6ZfTk-v4UGbf+1hr~pN|53G0Qaqb=QfrD~i`wcv)BJM|G{YgfJ)U*~+f+Bzr4? zx2EvmW5TGqYXX*!snEUxFN0>ix12Qj9J#U{$O+O!IGY;%n_}Ww+QSBk74-e}IW3I1 zs<<^DuA~SJL$^LAVzHtYU0P`{4EJcvf3E5>N{z+UG;BxkS0cjyF$HTe4LFzkT{RZ@T^UlUb%zs`Fm@fWLf(OVPN z*7E$${=6c;>$v!_pO0#EDQ{hM`Kihlqy_1|Kf<4WSxR zpT7qO8n{@C7gaUyHR#tvLxU8hTal%~cOe%GvVEu}ni}(*82-`>%U?@bl@W%^`|!Mi ziNFc-$o~Ep+FG#w%f@7KvuYt7>9X7-Iyh#ZV*>rm#RuIJS5_~76I>mpRv9}&Q#LmR(@MhEPod8rq?-P9X4lLPu^|;S@rj6tUc_mo0k|bMaP_F@G41f&cW@f@}#v+(o9p3U}Y6fh?UY z*0LWAE}Pnrjx#njXwo0RabtwmRZrUX}m1XzmFW%VdPyus9v2Y|5SIhJqyFe^}^BP2$)8q zH8!2Wv)KsgJB(SYRF>vBjJ;TtpaTApW;LkfW%%F!iP&|ZO|ZEsnvWfTfHQ{B}7cn4BLtAA(aV$8nQ>_EwFofRta6P>(@XM4-{5L?@tkz5;c%O-G0 zNL}iwy7So%_@!8C-W5F+`%YZR>AjvwSLwnU8(lcLIcJ#jbXS7dKIN9)PI&xA5x3+K zU~oNrBI<^bpfRR3iRR*9#twX~)uT9ex!`KJ5Kt0R9XBoI|8haSgVi*K%gq`g@O6qx zWorGk*dGe}jwpoJckR_5nlTCzPNy!?newj>w;rWh4%^$jHpi|P?s9>DGl2>SQhqy= zp^bKpuf5hElN|b9+iIGgeCYV+tyIfEZR<;cd8=a_U4_nM(bg+DwF-f%z1r( za9_Z6T+!O~oZTk_%U6){ith*TqY!r&`$m)OregtL-w`D)j4UgQmg?j&{}}Xss}Px3 z{^uD2NsZLn+U4N=9MwsvvSBFogRj$&vSF%?C0C?p*B^w}E?*eH$Ju>$GqaV&vG$>5 zDP{(fkDnKto=Ss>!kMVy?v2e-)l&N(C5Ot@KK;l{4<$mz;5TgxHyx(#e@nl{O$y$K zbeRaQhj80Gy4R!f{7ImGeJMO>?RpqbC~GN`PQFds$NH@sOG9FxL|%Ne{bj?V;Qi(9 zm&bKq5a>Jt8o0=v5z!cRcyN><2q)BZ+f;uz%l(9Rbk_?ETZZzly_g>l{1Yo^TJ41X z>`$H?KgGp80AIgRa7|@Qx+)kZ@3t*ImjnrTyfN)x`?<@G{y?@N^4PD z4|#GSha5?-ka&1pf4iCC);0RMV%z=RX)U|}286fM|Ltz)Tya?t1C;o%tqjDI(85WI zbOmX>@NK+X%he%5cx^Mu`>LK6%J!g6DDgF^{!ZX1LEO@ft|@^cuJ*WdumpQ%)Z%`| z5bX-7x2OgqRY|K-DoJlDxnDDF2@Wa8|NQ$o*VXQ+p+hRaZo|y@!I9 zP{-)4#d$pOP2ss32yn+syQoEc!OPRM6QfK-D*Wb*Yx$ zb3CcPZM4qUn0CwOSFKh=+c6)$-SkSC`JgfxIM#{;D>Q6hbKXL0Fgx}V4m9N`zi~CP zn^VuX-?ZX#&3e<>Fj`~$^`>HXb2K9j83aJjJ@`+TB9@D7q@cBMSFSa*l(7cm_CINp z-_GTu?_Aqd`)J$FC@kF%L77tN=r{YkEzp~= zz?`!Ku@)dtjtBA+9kpz0h4*ZoBD|g1qT9|BrgSxKn6xtUBqf4_HT}g@8p~==QVV|R zb>~y@Y~=^)>kjiCo(i6bV0+M2p#j`jx@>DHr_Jxj&#wiOmV|H+{C7($=0Et?-En_A zi$ddiclJ$!y9%Onrp=TPvwJPZo9^79xpu?OwruHS;#b#C)BHBp8)uB!(A*ORIqHW* z>guh)1|h!O7q^dRu05#E5l+?jGa#=d2mh>x8J?|1?DWg;D2EMg9qpVTkB`8ftiZHq zVUzYGx4*F^yi16E0=bOyZU9OR^h1CE|3CmBitpb52Tu$2OF*?pmB}XqjGMEB_Ser) z9)9aPpy9U{=z$0as?)G6awdPxCGnH>tD^OM%2b@jWV<~pK2}sHGlFkXk19Np_Fz#_ zMJXgO8@51(2_2DS9H#FX*^&?jYiBpJGx1Spe%`P}i3;Ul9)8;s)?<*#@m6s;Dwgx* zt$))Ln{}9&pK z6CcyBQU;ELL1c(=9FSz^%cJUJ4$dyNxb_s*ZnS^UBiAS^tZ&>*f~y5h1@F9r3oP6U*|+o#s*SGLktbCt@Xn5ETc&92mA@YP+r zEd==1a)U)RGNDZ4rEnw7M=L8O2$~oTtp_c*Dh*eo%QeBhX3Ws#0|7J;y9FiVFnCyS zr47RlYPDdaB#b-}Pz&s%>-nS98yC1zqs(TaUF!?3xUNgV#~10)sg))&8?uy?ZLpm$Jv?@~arqR^Y$aZW7Mnk$Z#@sbpy`xvkyO2sT1)(;UAOkj;{w=dK z>^3-ffgdvjIWPJn2Mx=jET3HghbF6nD2$R>=qLK&-^f*Xbg`U6QGM^k6!Lm}vlKB4 z!6>mD006oy9{f=;vlMp-!9PtAUS~obm!VdgsK&4e2~IPS0lCKz6^Eiv46aa)Rv_=L zPE*SCdJ2{X4I^{}Pa(BfB#uM12r-|?OH-%cDC@;=9Lqc6NM#4vLEi5zGIXJ{RW5FL z!2a8|Jm@q@Cy{>2yNNCKyA2Si2kN*F=S+N4q3`wsahcI@HvKb?nF%*)l!%oFuI32E zRmOanq$Gd6J5fv=Vm{4pGY+)5HVf3dvBM8ln1*9Z1m0a#kQi>w2&;-?SwOmZ<{NRdY3Vuk zcGTXa_bQ(WT_I(NxqX(@u&)#rt5C~MX?BdTE^kr4qhX~N=C%u7$7Uf^QqpHuDRkIl z%u!PlMG32fu_)rt>Au1oK~`o$_=TMqMrA}Y*Pg}t(pyy~8#(OrC;w$MY_ATLQnE}% zElECe`%n`SGrC}{pNYa5Y9sd3Sny{~&C4EG*B`kGX>jA?bf2Sn zZZDUE!~1AClQF_(+%~L~HK-L930ua3F6Q@zC{;g+SHEGQU< z&3meZ_4%u&N=9jj-c>}8ix^}fX40_;BB-Qbf0M~nz@n2w9v+b?%?&m{EA_Vw$ROA3EzPob{fSJd9At`gX0pQiu2N*>RBzC;Gph>7 zvSd&#h){vZAPasueuCJpBUFXbTI`nrg$S+mgpoX%Z*nx03T0=iP|<>RWC~@+V50iA zM9^y~WJeFXVoP(HEMQCeb`%KoIugxcT!#p>T9HbmKTnky(s5CgCeH_d4^mv@3^OS5 zexNA zBX9!Kn`J9l8^~K>kKD3yS5 z&>dG-$Bg9dyMZ5{E5q!Er7lunq*J*DiM&;zftgk^8_i#}D2X}FcKSfOYGG*8K0Dyr z12E~^Qr>A=hR7$bJW5^yKFU~>>XLe4) z_@00q~fC#+*m(K%i$}^HdG6ErsYNlxZ~pzO|k|`=yr& z*-C3-&l$PHm{}S+li|`SiSMyl@|_nF_i!i15KunL?oL8g6h&~OtvY%{{ zm=}w)vN%!QQ~u+Tz4Q!g+^GCO?tP>58`B@#rUMIsI50*(apmtBYb>odr5ppbGXWshqWs&8 z(({-U1z0Qbyn!~hj#1Cw${DEf03HE|B8;FfE-pks?dlcq?X}-+0tueN#uR@e4MD+o zhf!m1b2tW{vl0WNCc>Z2q;@{}RHk3!XqJlqiMSBDEropoVOn@6_Mm;%6afblOq8=f zp$>YM)<8nZF-3)8w)9+|hDQ5&Pv!P55=sje=}kTB%lAEHm5O^cDQ2Rl;_fNmGfO|- zFJFCIjIaNCwR(Q}`>b2k%c|qh>VF3E-nA>^1l{_?sQTu^fT!V5gNVPp|)2R)4?nCw)A> zA9&0(NmR^Zh8ET;Of52G?=MYzKhDbeB6LBBLfl$8lFS|TG?3CDKVbxD@sz=|1tK&0 z3o834k*gQ<516jX;=I2NapDnRziDD6%}Ai0YsBcDT!5P0D;oD-BLJKUZOyUzfu*2( zn0$EJG*f%KecF39lKF7m8re?!Sd+yR2NEPKv;IOy5_la6Opn_)d(LY`#Kr9-R-R;i zSAjdrx+m6mE3^wz5$pTi-lcZ-ICPtg6q@Hq$tnvl8N)3L;Gv);dFZidaoXXVQ45LW z?+Q@+U!T}U0MQ1OQU;vwzHcBdZ1YYol&X0);{+<%LMqSoNT$|+#*eCtpz240t0}s4;v4NUnwzd<0 z=C!yAH|ndyd0&R|MhZ0(poDGihckPAemvLd+1wn#b2s7P4@y{b85g<$4c1s%gcp2y zen?-zU-ZLQ+khi=Kru#jN3gIjEpfj;d9#Oo)Lj*R%~;8)W5NiP`Uch1uwWWLE4?yI z(|AM7U}BMXsD4{uJggG*V_V3J?twAB_e8Gch>)`%Nb2@tjmG>8NHcgLD+osD3F<2DSUf3pH zNi+?8u{RK@GUk-om`>MeOk$7q1Gqo=;JW_F56TbgKT#lvb78Ss2f2j|$mpJ7FL~TS zoqlSq_yF~525xSzCnqO)wqun~0E@y)A>b*h1e)OV)nfiSZT{o80shQq5*=&BWT7zp zhy%n389kexo@M{Wvmu5+)j%L{1gNPxe+C^>eF49Ok-psKE;l233lVzF;hY8ZMzumC z@=7>~F`yA6YlS+%X_Q{gc(E=_qFmf0OlAf=W)0z#AE3!}-Gj5#?4H znVsq)2eW@wm$mZ>MmRNOyqWh)SlWhmKV+6ec)X=^hTP@};drn!$z6NBy@I4;dMa@^ z|n{O_7WM~e{H5j^`WjJE&jW$^IJ_#-X=!S#wE^~H0y%mtwX0a z4M}>&sE26Aopbujy?=qHe?I24a-X&ZAQ66ibL63$B{?|y7H}w1O~7@txQ|QmX~JdS zg%s__PH}{WkS z;TBVxJaFP5i4rIOCCf*f!?AA(A3TtrTBHUM$v0F%Vec4kYsKY2iSoOc+ZTp|Pv+97 zsh!M+GBWWvV5A`ddC98~DuyI9AdsVKXhH4ZDlPAdsIH~n3Nby^MtF#6G2R0a3z5Vo z(#%dTW$63;*_(?kv;I{f67|!CY^_476#nE`td)8dJ`W@wD8aQTRb4FAwX`l@mg~q; z2-|~{p$N6OCb=}z0Spti{s6)&Y?PU1$%O&rgkN6`u3yPTY?EYqb0W``m0?y5u zvjtjR*1Q=0^4Vka;eSx}vMMm8mxs>&o1_8=TNI7>E(mPz-v>Lkou?&gcW+7n%P^o# zrMsWP_syOdM*UZ|Uj2hS_Sgy>G6)huJ_9`t|AH4pA_j!m&um^^pc?7x!vF>&lB)`< z4YXkvfr&)ro8D{u@kFg=u@v+gYyek-mewq;0c|Y}xNR-g9SiZJi?ua9ux*BP1lyXr zq9}ARm8wlM-Br;uLp&)T&4%OvUoT&VY|NNL9;Vc0QzmpuQ=iz*UYV&(vG#mks^LIT zVW8_r57^nIzn3^r=LZiI4&E!z{(izukuVaOkU*WB7 z&d{E8lh}M+A!n$4^HcT(MG{-N2|AcBq?CywI}Jh}y|>N10RGJw8g;5&cyRTnyd=BK z^@d-24566hX&#$le~%`~#LD^tXG*SvGD}D4*rqYBRK1>YQf`$s8tLTzUp5*R`rDV! zONy)0jmvY=-|1w=$S~O1d)0o@&ALB{4sgP zN_s0xzrbDNN&;9?Ul_5X8N$X98#)dZJq(}^RNl?98hD%n@!J~qPz4#=F?10#tFnqZ zfO{{(ZPv-xKDaXKw*1}ydh7?W-?C6CZl#x$tqDe55s;N#S)XUTLX@J;o}zx*S3R#T zFQJsR(pk(cS5~=sfz}3Zd{|x93!y!T0#Xrs+T`OoEhpv~!FD>dm*#uO4m#4a#LOYt zX@Bq*m`Jt-@Fi1jsy1<}bZ2YJyz6yQO^B-V$8?l=>#hS^UP#9n=R)n`mqYG;=5xTj zcC*K7Zz~AyyVpG$mQR(jhFu3((*6dKf}bL+x4ycR>9c_`?LA|ik>yG~sH;mj7`R!v zF)e_#dNn4${5v3Et3&Oj=U$6`=%jL%3*vQp0BO`H0oz`l%L(zRFjXLY_XlCnY=rgZ zWe&AeP&&AOkLFx1YwT?eW0IdOJ$yxxBZ*D~Zkk?xt(ssa$=#9;|3B8-XRY`-^IfS( z#pahdeiqx{Um<%a2AeoT?SpePX$Zj9{Y^J7f}`NyZp6-iu?EBh{@ZEI44d?=v+^nF z7r-Q{k^x+R)3NJn$R~McCi?r7I3RMmSy}%l{ti|{fDTT8hAu!}`_1$$%n!pG3|?2u z#mt>eWpgz!rqLVC)Xfad#E#VC7(MYa6>LmJ^VB7W*NL&qwb_KQRdrbRV4+etkI)wy zX|T!-;ftjL;iV?s6Fq*jLo*UXKZvudG66p=>Nk^K=qJ%0Od!uAi7Qe=UQ6b{eqr2y z*zm({K^y0lh<4@791!?{W%`~#mhUzlode=#qL|iuA~De7y)(%&nOXqXDm3x2a<-QH ztH1UrLRql*^;)}Az0fPevAT1!cNYz5@AFI2xNc?ln#bR3>KGZzrrfgL`_rTgPf-q7 z9+cro^ZbF=1}Gmd^Zq3U>ahb;@^_hJ+FwcE#+DGpKoKFG#W8Qvt6( zKW7VIpmIWmy?L)(S)8#)>J}mH_o(b9BN7}C0SS^`RE{|ycN-Z`MQ^g068svhK;+Df z99F-AOq3>o%fF0K{BO5W&*Zng=XQyDV4Oh}vj_tWgm^$nhcDvBP9+1792?m?6TW{F zolE)CUc_QSUsi-N2~0;7G>d|PtDbNWJG$e*c&H+=?pIf)o*fAZ;<7S};X%XL0y16| z5K>~fusuXf<8Bj@1(lODh!?^~IbuVxee9!~?@*)AS&a09y{OQ!K^$07EX>p`qsN#! zWWK2RqOo$HfFxfkPUyIbV*DI8*C4ots*WpEF4ZCE&uoNljlx`sf~~2tU~KJNES9c> z)5PiTx=n+?G!@~RdZ#;BrDtx#_My?fBU6-bJBGU(OxhB`H7m)WUy;`oC?0z#{1$u+ zQ=F#iqL<=YfSIE3apA?3B2;XpRUTlk;2IYc!9LE#X)A~XZ2y@;V~Ews7Bni)#n?YG zcvl+iB#G2*(mK||VN`il{`p`{gibiS^CxTM;TKmF?{c6}P-Wu3U4tDD-(@5I+qhuN z>`E9YX^<#LCy#8&lM{L-M$DiPpzi~WH6|?2jSIIvtg<8>6`TKmiH*qQEUc{F#cQ1( zfk%qm+dxCuM(Abtg}C0rX_*Ekc6Ik^dccNFe)%r!C%OZz+R4cGBr%hSKVBa`LfK%f zuuJ-ia3Q~cVKRWb6A2hLsl=jD{y)afI;yHJTKfkOkS+zJJET*j1r(4F6p@hb2I&-} z6_AoXgdnJNOLs{(9Hc=S1f=U*8{fM3{_~CDa4^(^hqL!ud#*X3=lO-k*4lPW1h@=_ z457$<2=qjPf%sHat4*QuZv~yL=L1?w^pA{*rmA%bXbm|shA7R5r@L0FIip)kQES+# ze==&m2=CSyaJRB1n+a4-X8577si|-EfpM@RL&uP8n=#R;q#f5?AfQ$g!PJCWTO@y} z^eFC3DNi^c!ookq_cIHPM=^Q^BD6MA=A!~!%<5J0W}=6)Q;F8jLjIg5I>tum$I@z# zuG9~Ni4VoAn0xA?ha+gHumN<&);zh>T09GGN=6q7t&HetGej|M>Kv1>-MW-GHsN5z zfhi3FBk&RLu!;z4|5V3d#7bgdWBGa<`*a+JyXcarU#A#}muU+;r#BCIxw`S6IvLGC zZIAkzxAJSe8#7Bi_xjjvS-M-43m!>9r+Muk`@gTJ_U$@(>*AlHMPQ=zv7=PnCq`mv9zgQPs ziyO6@#kcc4aD)1)3+A{vSf8<*}F@|5<$FYyW^lADX zLq7`9z%%V>bGSSEXKT%p@S982gJUQe&t|Y>Me4x~M`%+JUr5PHJM2ZECerN2yp)aE z_L~ZX8rI={c3E%&mn!JcG2Iv=Q^bH!_MTJIb>GK%>nB?VqIgDJMkHK~{y=D$Akw^p z0T}ljL|^+ViWGO&`gE3*?HN2tk8oE8B#XhfyW+pZn2>*`47ihe7(yQ`6ZY;)3gOJB zc-b6~i6k*4r4``4gVJ;xu=2(J1W@=K{bi-tO%a3VBh+34Zv*H<_cEfjT#9HZ_027&=Iw;#vA*McxJ5Tc$W800 zI6^{e-C@c@*=YWjecndr)|O~wU?j#)8k4&VI&V@EgF6!nwyCB7CrW2C?dSrbrA3ui zilPPB)JSd0O8kP@t4hfi9eyn*nPTjER~Ioj!4b2WhCSp) zxhFPkbRrP^5KPv2x9i-IM5wG6oe{S71=G9d-28-{fpT=TVVkfdaNhG1>~U2=pZY-^ z`>y0cIQxi3HYJf^m?iV$LV3Pv3+bc>)gMPyZ}Mq?%oa8SqWi&RMrCweFzLT4ZRs56 z=KzRMVs8j+30f%(DmjP@6en0wq-FNt-3fbOkpB9iB9jiqX;rXu%v42yyVJP)48>Lp zT`CN9EU=6SQ$P^*KlG+hGATPd`yBb~FQ-H!!yG>PF?)T`!wLkURBrr_uCWR)VP+l*-zlAJg;EE{PR-~Rp!l6ZEg03AyVb;~eu7EI zj3x8FoE!;=yFsFLwoSxoSYXVfNiB?Oi2|si7-7X=Wf@oz>02`{bVQ>{Mae*aLRC z2%R_%7K`m2W4$*1SPj)y7BW1Vk8oX4($6kokHVN+-YD%+n1rUFfW_#u?l5S{ltoFd z9JU&=&Sb&G+smQwHc0eMKwoMoI1;o(o}^+$bod{RC3>6K)KvcGLFNsboeAP|4E=v{ zKqG`PRg3*a#9Fv<n=AY>1L}1JG?FT z>1k6NiC&m?eRcSCoOf&vLj(}(IL+Tmz1R z@X@jp_CUJbC1SaUz4#8)%`50y zzcAL6gqoGU#D2hqS{mj?m%w}J9K%!9H#Q_r{bYvW%cmm)p)s%Igxxat50!=D3BugX z)kF%PcT^`XCEpuFo7)m*QU=yudCZ9_YEQH_YOU1brqnVbMkB%kHwKNqdulm|=gi-b}u}Ue}q(RFbAi`}#Bpo)cnHRlEgi5I~2z?tgE3v9#MH=T4m9uK@JHe-^(#&F|H7E`iEv7jn+(Rl3cY zI&z572j(;WJFl8Wax)R2|klnTW-aRHs`MSe2eP)+8T6b;T(CWwSBcXc?TXd zxkyWn9TeCW&H)U&OX2gb9u(6hf$2k)x<(1Jx1vDa@NpVzJFk{SXq@6*!yMIsH|5PP zIZ-MuGc*s+`cRCVag2$_9UA>JJ}8qcASbPzYQ02;@vFruV@0eW!$!0p0s`vBBXB5z zS!^DUU~1Zl+US+xyMT7E zX?2V)RNcbv9<+kiT0YC<3po*{Bjke{>o-7jsX1e8%MH0QqgO1)RMR}?%^z}`My^AB3`?~VYs!9W?vq&&#vwD?*TEP{*IK}M}t?BCh-|s z`5#qS=8|X6nLr=jcpUE7cVB4zbLOv#$~qj^S?_xVwR?|i_u)G~HjMgud*{RLyy#(b z&<>yrLa%oY#Dh^Gd+yy2m=MIC{agwe>#sa%B9QCFVz|+tWZokYTL18lDHjOZ@&hS< z+>?$u0p&v*?4!*twv#e_yiMtq%d`!4I9`Nq~Ye#%UfP3KYJiu z?MC^D&iWOrb1FiIjv})tNpEjW84t zIWH^X$j^V_x5#( zGLJI;JrnZXJZpALCyA@3f)+W*l7+$CrZ;p~usKON8_r*OfoW8;j_Y(_Zb3Ds-RrX{ zRrYNi!(`B~N5+#l=k60fv#wo#UZ^#Of=xkZ@mC}#Y^|f*6m*Vxk=xZ3I_+Q60P^bf z79jI5ou5-^o~h+G(mz!*u$W3+DRcsZh}nwX8Dbo*TaI-L)(EsbTfVL7=f@oq?Xu!~ z1hJ19y?$p>Pv?4vBSXvli+b+y60<~T>6qTzKQoi1s#Nv(FO6%1N1YB;|wA5(iZgO^IT@>*$J+M`H2oe~0=XJC4 zgNq9Ui6^k~k&~ES5*9at1QZV7P(Fw?m!~POt?05C{sJE9tz;|5nU^iQV!j8%&vl)mmiwrxYW*O2MV7sfE)}HM=H`p;QQfbmU&v8>+4d+pGq(} z|4KeJ)TQV0A*evgs_Ia8Z}3uK3=JwhUGDp9P#Rm^98gBoG!pE=?KFlX7BMt*U4TF0 z%Xhjn+9$PMC0TAXelNy3ar}v~7)c~2QL%lrFmt#5_`xmpFm}HFR^T-PA$}m~Px9AE z%KjzB{b20>q?WXlt$;)(WEila%>Az{;N9~TiP!0iwZ2`}ZKq zmRaoFw%I>}g+E^~8QgH>=1*3#o~|ypsw%e{KP;cU9^Zjs1lldkt(x!e@Bd8rfidoH z1A}E0$jdxX6ZHS(hvx-@9v2a!dvY%w+HRxlfbR_jg+jK{V(HO$Gu$2gjd#u7w6w3$MtR&*6WqL4i zw3e3HMnJrO6O(uLqp`JSA^gCSsCpL*4r`yliPlKwD$=k~N7{UAwrCc&RIK*(Z!|_$ z?i^iQFbN9|U{QX*<<47H<|Inu3u3J+oBP-cvCO~n58AM$#R~4fr0Gf)>qlk2pRaTr z=A;w%p4K>=BXk8>zo0VNGvk>L8a~!$&(maf?W~trTNvQK zf%6~O5iaJ@PBr+x#2_rbNfe8T#Q#=Bez;_rle4t?1B?>RbhzR@P2#mkTM+e#=vE?B zNbEL{DmSXV1ISQRlAalqnYWjrw^*jNTV9G!GEgG?y)35xg;W_)O%jsQ(vQ8I)=cJf zc+V8G&d--SwJvX{9@L}bk1BI@!AED-{v8)fb!HvaM} z4S4Gtnwp{!5fLS%rFFF6N&ML7VL6(8EirSk?TP{edE^%jpVjVy8)IaS0;E|z%JfUN zt;Pr^YY+mE7yb>*_vcTDdWHYV-cX$)G8(7nvGhDNwD&VeHU5`TS%1f+FVH*owSkLZ zX-{fO%BGeN5Ou(~@7=pMuzLwC!uVi>S?JcrWZWh6`a%6X~G|&%wAm{IgFhW z5$r735GhyF8y>m$K6etu?ea8b)Tc-vi-ECqj?!lIEaWKO#uF8-6E^ zswjhQqgN$zTdf`OQ}>r6Pk@S+#yjg}&49{S8HK92IS$7B4yj=clN|Lir4R0GDp;FB z;AL$QPx@;ZQHaMUN3>qXSpC#CQb@+5nfruKzw#+^n#i3CwVKn+T`8|vM9YL6?U&`} zEwt?_gN%l7U}=|ZoC-FVO?Xs{Aysk%6Z8{|5yeNfY47|B_{JYL4=Qh<53lFQxiJ0CQRsLBOIUb?B@u^Hyr!; zQ^9igGA}G$J@>#nuixje^cX-f0-xuqLkWH=vs3SR|KiMmIBRJ&^EA@;2BajKFs7rJ zgsFmbtv^WMLoJbvfbyTE_98iDPc`%Cxqc`_x00-ht~v1;gl$Utt+5aZ{)kqRQD~t} z#1%>o5!?_e-%hLe>bIlKVKZ$lgFm!lO8jt5`MI%FAxmqv<5Q*;tuR9wUFI)q*c_1& zgUXayXb%_ePqu!`8Xj>9YhNodrItYR34>6ibo`+R=tX!wB(^Na>*2z#3w3GS`&orsvXr<{Wyp8P$y*rXU%n}RKKQ4L_Wf??VyZ;Y z_q+cRw$-UA3@%tr^28HBzHs)xSkE4sn_|LO3T=O-!485ba^IO|R@KYjPp)o3|0R@^ zbgyRRJJ%U_0D%FeQZVp1`GDn|A=_J!$Da$q?h&rZ%FRSm`)LSsUI`$B-7fEP%7S5bU}Z z`^^RBVjI3Iai!UEeki_Z5G)l&FfB9+DDymMfcL~b^FZ@6!vlakej?JWBU^45cHSbN zI{hp%v^nOLjL6AYPjvbezP!vINmRnw*tjyo2c>oEvf*4)YcW7hz?qZ*i`iESq54Q0 zJQqYeq%hzpx)LslgD8W_a%?|K86q*0faYHW}CmH7C1dJOgG0lKEV!g zNugi@Su|5FV>Nzmd^tK z7Dm5gDj6(3H#T4XXVO~~n-O|y7`oxme#dMMitGf7*B0dFR#2XT)Xhw|#KrI7_=>09 z*ig4nMm6AIV|=km7WEdmI*LzZ9_j<^D4?z1zfKP^1bi7+#jd87x(O9|DamA90WP(7 z_><|r#JUSwv?WV@to%O|1dAfQ1>s@JbY{;U+RaH@!2u!8xogIWeN)&%SiwXv1fR_O zmx%0zJ-@gnwMV`Gh)W2u$CH`)%@y(a`if%yvMG2Pypa|NnB{WjQB{X6wgElEd7aCpJH0Q9Iu85CDF$0eq z4S%#nmP?AN-CF045}`xn4UT zzPD{3OD};6z{xO@{sx2s;IIjl#Xr=Cyziu@Zs4?b>U8snE-XJ_U~F%UROX$=N^^zA zhUEikx;1Nq5_Ix{HoRS_+(l1bq3*IGuI4ZEWjMh%P-!0L$3J^#wNi>PX`I*kse*WM zEcZdAv;Eqw?T0bOpb;#+7utm=_ZSE{ zxU^fzrt;{iu!kzY<1)Bs$BhF7jbR|AVQ4Mc=|_JTUieM$jCLwzpoq3AFL*d+3Q(38 z##$NG@-A%FQ7OzS!XG3#-$sluB)$S=63W-xda^PiZ&uOm#opwtAm8^XtmYXlO%-Lb z22-m+4>^&ssW+=KH{y`KjK7c1OSELXMaSB}36NPZW{NwZ8ay-KnwXzGx-bbvwn2nP`Lfmcj6@HBJXY(jbTH^LbBRjL_CmJ5Ol@NIw71Q(3Vg zgy2liQd#`O7+@LnpdeaMTL(j30FY7He19cn5u5X`Jk+!FN8MQ0NbY2%bCBwD4^Y!~ zZ-QGz&I-wGfrO)s_|L4Lz1qe6rQKqR)MaFz1rku+i~39JZ7W;U@V z`KRMcPVR&}4>H?SHtLvCIezPbmUYIvyHvi?3p3V5ic(grLZabSUq*~6xyz^0hVZ!K zVOW(DC%PhkY0%6O!$bSr^K`2H7a)p#hu>R?YV&zAp4k7jZdo9ll8eI1y5G^SH6BD` z2OGAFJbSo(yRkhwm@fQ*QRf+na}-D6h9g<&6PA$`VuJ=h3MR={Q$qI@Vaz1{*;JBp zg_-t856g|F;w{0N-o%nxs`aMWI##9++#JKR=-3<^1c;zHb6KKrSgK3dl04jV50DqT zMnAaeC73wqifHQMgN%Gn+H}fi;!9gG?sUd!j=B zir%`SkpFb%QF!h~1fPAT;&Sg&us_?XyuKYk)N)A3pnrG`(cmLr}Y~9?sZaSl0bNVrQ;A^&>G1#eAXtX9e$-r4Z$)soBj!O zIb|xHB@;dyI$AGk!EFHvrJ;aBRZ_SG<$Aq*)y3%Pys1n0;Qigd%5-!}CwybSX=-r) z7~cp}QW$YzW$An0$1PS0@SBTW!)`OGrb@G%skH-$_8YQ_`@9L$*=O9uyRCa#O|6!) z6`Z*m!i-}Rs_O78uSRkjx}dtpLgcGAC9Cm_#PY&JT^0M{f5vjhO-8dTeEmQft2R~H z?qb+E_1w1B)4U&(+*bv;nf+agrl8&a(Ww&o}4<9NGT_(+9lgLE@&_T}`VcGLt`FYd{s zFb>-yG#UPbM*vD32yeSJh>@U&y-^kt%qlC=0_J2k8a%p1T2|_xIa#0K>mZSav zay6xq=+@xBiN=wA6+IhbS)WK@p^7L;!$0|$XILu{lZ6I2sOq8{#}x@GAm`e2m}{Z3 zruPE+@(P1IdWn;Wi~z<;fQp3qP3=N<;}}iO+9rH+!l5?pl>oVqlpl4?DRYeY@rT-C zyM&cWafhty#x2OqC^ORiaXE$v9_PHp)?lr~jw%%j49CKveO&HL^~sbT%ty_{Q_hjuPd^bTRb)MZJi%HF|l0BFMf_P zvHOe8`FDU+7?LeJ(DleQo6(F$V0*!$FWXKD>+Bf|adQdJA9(qrjv#Yddf0Dl&!@!XXe+LbVhi6E4`2LveP0TRU3DLQ;@M;x|fp}u5w4Jz^j%QJ)+bRQPY@!ue z+o_~T_ag=NCkK5{ z|IiX93b0R*i>5q=s&R?ep)6+q^p2#+{r`no4 zY`6HJGR=>7IPFr=3}%#{`H`FuSj3*{3sNZA&u}NVaVpA&2iFcoEeQ|X-cJPR%f(wK zX`AA*$TNRYl40xgee+^wjkI@tyi1%1YfUP8C}|nNmMM3fIRKLe>_`@C!a3KlBolF}rrf)W(*V+f3R;|=NN5TpX-^VU`2SI#JI2!ic&|76l>u{1xhSu^sh zkPIl>az9vheo!7m9p(s0#EMa{kw8(t92*o;x74Qwja=k774!DHeeE@h8UKSw>b)5# zM+QXqTl4?7(`}?Cd?*WfE3S8PAngM2hUMR`OeK4-??O>hZH}Vd9!wt}Bg*pWKREF$ z1O{WlmT~x&8z+nm$;x`gQFwMR#xKZ|2c55j-$2EQ_-A0iqvCF_Tx&u^n}GuRk&9KW2&uOK<_BSfCTAff+#@IY$v6o5gE*A9K#9WsyJ^TH*=Xe$=zcqn9CF zE0HVBgxW?=AaKO~-QyG2jfsO!Iz~@HCxy6(C65G8KC2iYP(YY>Ood`^FljRWz&Gmh z8)`8*7?KhBSzmJ0{kmTnmb&q#>6*_^lmkKuTka zEK*s4e=qo2FM6$`OL9)HewG2smj9JQ=O<0XQ+Iv)LfA0?A7loV4+AuNrm|2IpgOhl zSp?wRNoMFXE}zuzHS>E(cY_f&OE%@M03zl>nf*1T7jv~UUlPhv$;EUcq=|B^V-)X| zv#2x7zB#bu&bjqV-#%u@V;O|u55kpaFv;MHUBMuwSrkjkL>EI)Sz=c!J#Mm#*T_U^ z@p}yEo=biF#ICTNgN-9>^%pNqO+3pPP2BmpOQ1-7eQPEbAk?dg{G=);QTQ3>JgQ8N zN0T&6pF{b{hR!$_E59@aCmVN7`St;DsaY&G!3IG-Ga!ETq*GzjQo2_$zkz1B^|E-Q z$^*H6tL?E0-;KfFYz5T$h`y)#8k16q98^I5pWOK+9os)j(9Z3L3ClsTgpi-!c%+WK zg&TwJ@ylRTsO^4z;-giNPhimeKQVuQl=4O1XPCyoO9Ju09J*grW|W&vlpBDq+k|B( zlYq}fSoSXn>pGZKm$7ylo?wU8RSqDlZ! z%szE5ncB?F|R0VeLlPFRVm7y#1#SyV}0ct6@)mEHy(9{n$P6T z|5&ZKd!An3o4`Ty#A|^_sCtj^RiagVA1!H0B(u3@0{dZ&{=_=W^ zxq7;pV#gq!XQ7qP?9q!~{9@q}k-zrrSYDN|hVcmyk#VU#v8W>hS>7ff@dcjtqP;(ijZF+Ob;yf(r~McWs{ z!1!m(7ji*Xi3ELgN@N5ElauW|mKW2b8m4QG0BjspMY^K1it10tB=+Uz=tb z-~pW(h}{Rh5$o90NZ5*lVL~cP1O|nhG1B|1kAbG)4RxR^eOTpkTHGFiG!e;`Do`<^ zxu<322lu!yC;7=vt{qcDmaf}%{Z5Bfq9%peymkpbx8^G?Lw634y1g(s7wm+=@QG4L zo&*2)OV}L4@)n1I&BR`k2OrEfB)(!k#vECTti3HL(4h`D;AvA<8AuFvq)_5058kNK zCru{MxC$erI^IFE6ba6vv|)6J|SyIt7hPYY-H=$|tF zo@Rd}w+YBQM0kXMIO|}za~{uNA{A1f-p|1cua%Wz$*( zjO%%U-R0QyA2lp3DV4*`-=|;OvGJfP_Ma5c=Jxp>dX46 z{%8|HJJSg>(SMskf26S2ivMHCk@@eGew{P?s=h*S(-K4k8<`_Cv8}9=u@MKx1CfFl z#qz>f@GTM-O)YfRP4W-nJY1nU(v5eg*t^*ax~fy!$~!g9wE>hudKtN0mU6L6`<)e~ z#-r>qiXWm_Aa6VZ>?zDPxEe+x09&6`1|Dtt42B(Nn{FEOvR5ysj{pi{Ew-B>opQ_K zAwFfIbA*fHuxW&Jm+&W|>Bix(-KW3GiPlmopF}6O?mOA<#octhQ{oJmiN=}*Q&M%e z*hdta6mC8#k2$jJT+y_5Omf;g32OJ`(HN7#Q$lh z3qp!S7~6M<57YmRpMn7IqUS9)Eq$&x&IcwR8dc3=9d>%LKJU!ise(>ThEau1T;y0S;7e4S>{l{qrI?zGPvKJLB-0tq{o9VOn=iYZS+ah z#BnXA&*ikRi^SJzyP^s6@Knb{n8gfXDL3FlN&lRewtf0UR!!uRafo-HbkEr@;itA- zIgyEQr~8d4z1F%VeNs6Qr2L8gtua=(JD&>Kvn1W+ zQKw@Q_ixDOn+^GV?}Vtjzx>CXzz|_1dj6{=M0?{t0VW8Dw?qQ1n9pO^PN8>EgUW^Q zPv3i3C9}IMj7mATyxs-i9MQ?`Kh&t(A?^soU}+!l5|pssBBjdNkcZG7#Z62kiR$Cd^pc*H-0^>I45yJH_c zU-aX^;s1Kx+x8bFGhw#iS81?>x;x^;tb;n#SKs@S*DNDyq~-%rzBO~c>i0--q=WlbHxfga#I$) zTZH*xax+ElGl@5qee#GOU1Z5xPtKN&whEY^m6f&&cI?*TAedeWn$$*WWG2N{P?o?H zd*pg{D3IO_ab~ppE(tn{`VQ>@4?i%)Y}_7**ul7wxXLuiUr0%CzecY17IGJS%WR`+ zAk77PM1*B&%V_+|0Pg~l%$TYjs;o${ws^v7iU)@Ke3Q8l1HrFN`R|bot4m~D%!SnY zt@VzirgxeUpr=gpXyvx=9fxmNz#k|s9sx1Ih=xUdTDj|Z1vx+xS_h9{FJz-fhuUE6 zJ&2nfX%az+<*L`E!Uu=M#Uw1j(Iy9~Tv}6mm;>-U=J~xM-yXF`6!iE;EC7YtZq~*7GG7zhkZYNmkPHOz&?X zpAb9EJWW>K685mA-PjmdA<*wP;-NaFjxxY7Y3o0cDxt&m{(xJ9C?SY;&R_Q==)-i9c@DEp9YxDmx}b^3vL&-iw#lrGC&) z^_4uwOU~%TxqEa2opcadsAzu{>Y(Rs{YST;F;1&P*x614b#TEr%N``52uW^C)!WCq z2hN3ZRyohiSo!sZ`5=FfUhJd`-4^L6oer*K!W({q{LmUh4;=a^$|Ga} zyZlU4ir=cSaGS!#It!MeVkC(;ToWCP$Rsa;`!ZxyKaFDj2t=@7;hi-np)Pq~uoYq( zZL;>$^mSH221Ea0Eb9GATp44c!p?Oqi3ZS{aI-j`3Xkh& zCCWc)w>1*K`QS&dni+WLaiI3Z<4=Tr!W-=8o8+bDTX(JnODYsG8lF-Zo<8{ld8N+4 z@$~)yrtHG{=s_KsFT?#Z>aPzQ znZDkh5oRXHuMF45w{gfX@y4>$Dgc%>_BEU8h#+0n%X;1?K`GA8HIbYydX(%1vLmNS zyn>VlrZxdKcru^2s4}?agCbo-`;o~6yO?~LfLz2%PK4jDdXfZ#CyqiGOtkVycP;Vj zW$`7Y7?#TyJ&|!f!fToF2c`OIGTv1pWAOakR45KnU(knfp*yGts6hcMhYK9eSpT%80Y2RJ#L)R#$cKJiWpw!S`23~;U!ML;6~J!p zbi=)VT>K4vVM}vK#g-IDDjU21&Wf4K-|j>Ht$@(S<{U-xgxXdIHocYpx;UosE?3Gv zs8-C|BcnR^Na+TM`*;`Nk?ONPha3g)TI_mM=NeJ0Y-|0RANAH^&J!Okjq~!<@iVg4 z&`@81%8OEh3xFvFXCBCiC@(mbP{tPB)0Hg@Qbt4xH&{zbC1Dg`feu-IdY#P|G>@)N zb8d%alOzM;7#=kyP^vZfHH<=$_4;}r0{W+`d+q8ETM95+*vaqa-iQz>eDnQl-G-BX z0yFt_B|91{m-1>*NS(U*f11Ry?S6+`@X_Ny`+4lsiDD!4GLQ9ZwFMd_3RWqm$Bha1_FAL|Q}jz!>Z+YS}v3SAor>-@y5NoB?936_cWUU8GL# zSnI|BGa!}qov-92%0%JIW&U2AF@C?cYxFt6Ur5bhZq?!<@;745nhIxm`zrAbC%pkS zDFh&$Nlo!vL$a*zB&sO=>5Duq9Cw&@9(TY+3tICJbPv}%Pv`klD{5Nh#23j6GDLMU zmzHlh3Ec>@Kbj9v#l#UNJ#RucpYmUK%?j#qcOvmW27XMb44na1Mb#DD!MQ^l;Ya=* zYa=`e+ezN*0A-(YP=8`Ssw|S1r)^}g5>!|fn{JVWXTp{JanWQ&Ot1PFI2OmMl1(?W zfk^^w#`;7*;bUX<08I|-aA7;p(l~2XC~AyB6B3y}k7&>-^KKNMWW%Su0SH6Ir0ts6 z`^FD$0!T1)j1GVXr?iYJiI20v^BnD;%>b&Bx29gu0EL{}hW6}RU~|Cv$HrvJpzJkB zYTHmBv>rjQi(;H$()e~D!mfA9idTD|txoAUE2YxU2u}IS@>ln;uCEJxz%Lbf(C*kj zQoxb9AGunGi+J2`kFKnbs;2jFD~{utDeixecpBL}Y{G#QD9sonN|P$b4CG^-vu5P) zX_lw2>MT2km1dKW5VP;5%ZA?_DF^R0amyV}RD0I}RJ?jCSjgB&kVfc&j$1e*^tv*c zFttPlmu~l@|25S?mC32m2ZNx-=DcRHdn3i%-T$`ECp(O+FEmj~-$Q}a|KZH6QNsgY zQ3U>dGz0KVv7;aU(qn1i*UFGkK#BPA9WDwQ=xk3#v{uAWq`It8PVP|TS{t>`yNeFU z^d)LmC`*{`&Z7#T>~fUjC`9H7R_5u{x@r}?3v`*<+T=mxX*WqQkv-Snu<12;VYIut zgfYTIz(2qlRbAO%LG?iGo@75l^X~L>~TF&k4jN2#h7Va|`^doy` zPCELoQG%cb=xmhYwh+qFXR^J5-Qtw3f;I-CU?YOHK#5o*h+XQXQH)q)w2oF{QQ%Ea z%&O2DRxI!0T$AN$%AfvJs^>v*G~p9$iA(OmT3by?DNW*xZ8fqep4v*8DgJ>K_-W#P zb#CE|m<8)3Gy39=lq=o95khgU7_I|s%Pr}^EWWItv0W|V7GBR?T?A8t1s(d(5ZZHl$4fGGJeh2+`=RwUp zVsr-Vx-|-Zf2EYZSBUnST1JG@dC?Q&pqs}14s5KC?pM}1s2d*o z{#7?X2R>jz@Lsm;s1iVe0fAVtpZe|kFg^H0r zqJ|!n5XWgvL2rQq8+#ZX%aQD8ri}Y~YxFOV8R8uCGN&A9LKfb)Evi{JKEPQLr9#Wr zE|l&ZsvfuTrGBi7TV-WBi$iU0F-D!*#8D z4IcGw>H3f;KB1j+no(rdPxaEVSK!-cFE(RwwVobq@PIlU07@xbCJdmsCxH19ZbgZkl8^MKxgpwOv-$L8!<5Hp%j>+oEBK-OmGo5m*E60P__In!vzH7iECz}7 z;amisj<0b5tDVBpE)_lOU;FMISj?*Xt;@v0N9J|sGcOws^6loqe&#d&3RJifK+@7b zf4<+3S1_)%IHbVU22>Wi6=z@=dyL|>X+-Vc+4e*kQolJMEOHEhR<-XHD zCiXR+J9Q)t7gG)4Q+5q?8}2a4e0AwhPuH|;!9Nu`oG{u2s@L0_9-x)xH)JOt;4RU}f$(tM1++#_y+`OR~3R3JXD%I{JzQWSKOpnyK0E z^g3I=*5^@Le?e1cX;@_$EHKRXw|Fk$@=K+uLkkKu3Jf}0Yk<(ZNUJhCH;DfPiFJg` zr%UaB59^6M+_Z<4Soru?MkWlCRcaDV4kdYWb6@NQj&n$*U~uP+vH8u?{&v2!6U993O59+IS2safQ|-)Ff4FKZdYn`Q?w5jRWE9H#*nu7{7yRn&92joYGu(Z@ieh z5b*Ba9kAxV1Zr*v!4$n zSpbeY=doE}+Jf%OLCbRc@2oj;zAFr^$Y!$*lQMfNf^@$S` z6Bl_LSVCBzZyNlWq}kQB*OhZm2=`~yLv9V9!pNS-M)%iH^?RX$ zx`%f`ey6GE@D_!4bBG(a=rPI<*A-`l^(Ol%o67n7{qDFx*v7=nyn9&LKnZ?&LCbQo zf~ucn=YYnI0-H-Pih#V0+yHAbeklR1^5=yfw*jo^azE`oN$nh}+v#vx#M+t#u&CU= zI`6*<;{qBem@l{&ynxiMMV=X6Hjz_h%-;REa2gFr+(1ZQBTokf3hWqAy_2=C0I~aK zzB&k`bA5f}+Bb(B`LYK9C>u~F8#z=~tJg?S7D^g{n5@$!HF`h0Or<$SwlryZz(CXX)Pwb5OhD*!QwYZs($QpW4J z+<`1%*GsZXLHCVSK^58yJ#PWu*42x>ZZ5r%eQnFQWtenfg7TF|-8MVeOJ^^)W?>BU zPax^P|CGepWPkghEHw_zom;=)VgUT6!g9;Lo1-#aD_?ly56B8oqEe=I{PDzZ!i2y+ zM!USA_vZ1ZH&|S?_#e8qQFyRh7-E?j1ygh%xW9S`0ClE=23y=c`ifiB^K;>hid+34 z{b88x?_H5J$f6%ye`|?t2#^IpXRI%Ng16cMWX4#qZ|h%k2do9pgxlG4cQK)Tz6H3M z5fwd<^>r@xnKDx3Z#KKx`np0R?3mkUTdzQ3lxF3f#V-BhWvglE5Bf*Mc!mUQ3wDP zO<}~Up^AbH_U)q?PcF#32_^r9EH0r>0gtC?&JW-TG+DU-m!dk=)(rZXie`Pz<{|jF z&*D8F6cC9ie0gYhMXY6YtsGcQ_kT47-4?KD1}f+_Aq#)B!#qj<^9QJSD0_FNu=((> zHQ#L&G$8)$pSPW@7eqzIdZB0ehi1i)@`q-nN`H`SSMM&rE)^rm^>8Hlli|ro8BW^e z?>`=LaG;v_=0Fb_7)8Mz2J@|~Kgj=fyzmZg15uMiW;x{F$tP^unL&>)pYuiPMTlbg z`!_%EpF$6ZtK;`q5HGEIPJH%v_PxoI_g+i%Lg0zFdj>qm*Bh0{PAwnF+b??H6}r1` zU)YB*fCKAZR%83h2i4T2AB=yCg}$ILraH`%X5+p*1Sj~?{{K{1nX;R&fwF&@T+muF zL&aRXAerFQ(0(!e9`8?S`9{h60VD3&(hG zLJBzT728Zzq*f#+CN}+{LHR#g_3ZxHo9qBYi6}4#;g+XWZaMhASdHB?<_icng+Z(P z7X*6)wbT3S!y=dWn!S-24-hO~(pTarom%hFmSw)=oI26UuP{IG8LycMgq+}R zp!`kBZ7I;H`88VTa~pcewYKL~H;4CD4N$-8T`udXBrkKzgY^wn$X;ehSdOCX9e+2* zy%p!jxW>89NIUZWhXehB4t6tNc2Pngt$x2xq}X=4y5Q3; z`+oK`f3_Jyx0@wD{$#jPvn-KbT-e^;PF%hX?RmSPK17A;4T!T?3$9R;-PNJpqAv<= zk;!)5kuFqTe_M`|6*tg!sP?-5E^w>qNxc^`LY$5FQN6tdg2 zbXtKR`rWlWYm?{obxP#KY`WwH-x1ssGgh^Sso0gSBMP4JbtM;2^n7I<>f76c+Mb1d zm6e;H>Ku=(cebX-#k9Bozqw3+9C98uXLbXk)LbV&11x~iAEF5K=Q25mx~Bahd&ea^ zywf85FaaP$Z@rqGfd|X0!o8`lp6_&T@@?{QZzhwMVBKx?eg9cs?T67z|I@b%R7xM+ z+H{C`+!ejT-Xwi%3;34tnf5L+U3&WGNZ3d2kdhW|?I*6|XR`hLd_C$qyuY3HFJ6wn ztoXgQKAf{r@Jz=Q?nqdLp@VRxKlQ7{5F-p-1&4(3d$V5j@~6;Es@HJud6rEXR6&m} zb;aBcf8-2ErdBI`@ZA+&KEB2G+TVpfeE85tt=(ljNq~(eVEaR8+GWZH;4^(XXgN@=|0mx=?TBmE*unhCd1!g6h)GjRs6+9FL8K4^4s33 z@te1Nd@6n2T~Sf>vE_FkdabEN)_=M>t`%KPzNk3kE_{pDhCHwq9g#5i!lgrF@`qGB z`0~9g*>sTGh>e_55m|9bRbVj{Pfg}C@O`^AhaV8*?0r5f^3IgSJ)=(Bt7%K^v8HC* z__`*8iRYTT(&=r29=87_T{iFX&Iv9hPZRadOA#FV-0@ZKgPnV0IkMvC?F^0?^7ILn!(wmhpxb^^RjJl`LF-ET}fJnZ<6W`z)GsL9p! zJR+TcK2K0wqWmOJr$o3F!CjcE5IkXGAM~#b8;gK@e-cadzRjLEh;zAts)YWGX9P+FmJ;<}R$(dfZuk;8gKlQ+`qR?>YOBM^us0etw{F$&|7yKJoPAF69;+*?LvhE&Nu&td zDs@KGObr&7JW}#paS64#m*beHLm{v=?W}TfD1QFh>-$Evp69rzj$1&Dt|uPp$}^v% zB*DCCGb?2;VLYeYqg8K{Gx*%Iv!p}ZkLTO6u@A zMOF^{*%*)Es^$aKJ&NE~o&^=5_j9BU_7MbdG!OoTH|cxtbSz$n3B~?D>fSq?>-PO0 zCsGOBEg_`5N+`+RDH$)ax9lP#l$n`QR1#iRNRqubAtcF4_FmaLQTF%sL^ zsjH{BBcxW$uU_)uj?jTRH-z6V1v3Wc!L}fXfFNhet&H{l=(CSzZ7|j2n9jGQ_FLi2 z_9I~oSO;imY+yo+Bo21#KEn$=m!QncUtgX$T{iqNgjMg#gi8L40A^K_3ZIk2kFT(i zh`=cy$}TQ0nW>D7jPl;Jf*dz1{>kO6cW&gqtP`!!IUBrvhxpq$k7NSGHp zy07dz#gCgjN=5W4IrDTn{O8zxM&yhvl=|e7=zkhE-EMtukVfjEq^_aJ)fypZuhf^& z_B4dMG2&U6e6Zo<3w#g7gf2xz7%enj6_>z#gYvdcpvcjJw``H=ew4A-6WVB)Cu%Pq zNx>yBU*mn1E)%0~r(}o;EU~p8_fPJ0m#GZbiX~lh@6wKU3d&0*EuHHu$RX_(s+>w~ zbXRx(B9TOT+-&+=5!WvRDz=&suCCO=0kbwu$Drn{h_LyTMt3sR?s+aHEk1H_gdr;F`^6~n&Hb+Y{i#&VOxUd;}cb@a`ls`$DCtI?j?pU`` zV{2Ub2MRm037e7wy+lZuoq&5k%{4sescj+s&rtYqu+9zeB|xoUO2A)m=?T8TokRK!>G>2au6{w z@okIL^AeRkL*Qyl$gQ%wfx3snna{^@QT_dJkqV|AS;m%m`kn>X!uYaF#(R$*JsQGi zlMvPR#PuqXN1tv}HPrTn&G(88dbKRAmaW58J2}p5qf5yr-rF^vB2=&bl|s@Sk75 z*OH{}75G#v(g9FZ43?Ldmx|vuDS078&@qRlXi+~nCjR5cD{v5eYR@ERJk#mJB#p7M zszEGTzo4ejtQGkAoSa27PWIB8(th%Db-6|rWP57dWmtd87ci%)Mc>CyV;UE_UBa6vmymN22V(bkTVCP2Y%9*haaIpAst@lg0#cRnb$r`7z`GDdL z*%nL)ZZs*%R%x<`yP#&RzUSro73d=*^K6g_n?+oD%{W4W~$$3}DC^iH;Blvzjm z4Ucu0S26)3%&q(ki1+X3v>Lv)1`}t@e=QYE7hQ*mIQ3tG*|VLNEYUn8(kgU_Ih<%+ zK&Dn`I+5+XVmsBAF2a86YZH7`=()~#MFu!MTdLIKK<<0z@Y>jYhtI^V7R$shJ)p%i zx##9i>^&QIQ&d9P;FUdr%0Yft!Qd(Cao(y#oBfGO`2pt$bay+G=^jWYpp$oJq%<2m zlARqZfr}ESwZ9rE=A|Gi`uMZ=iPTQ>0_hv&FO=b*+V}c)3$8B?;PknZdhe8y?z6Z* z(_gk+DeD5Wm@v7W$*{iEnwy)Kp(G7;lGf9Uu(Y(Cbcu39vG8-arm=W^?n2?p_X23s z0*W@)9nE@+w1mQCY51(`D6dycE|ya49GI7Kb5SJEeZ3)RMgdjcRg_BvmSi| zlRz{f?`9yR$iUF>OqO#gtA9X1H1Qtpvv?|$WR=HRZ$=HiW1+KuLi2&vL($Tngjek$ ze%f=PJ!u|o_`206IXJ7{Ty{e-I1XrA-D^QdYry(A&q92ks0n6g=$pvGaoBy=3{)B{C5g*Q@9S78HA$wD(r|X_3-J*Nx!K z|HF@W$S`55E8EFu{4P{5JJPR2Jg=_Z z%KCV&A{qb_{Q{&_22QJ(KIG6XdQ7Wn(#Q?PavqlmpRTJWRTb3#X1U!l&jn`1U6mhb zdbqznEJqhqddg=nN_?rIilwy&&ZZu>!r-gaZ(Y$O>$ObjRT@b}&S<6-;n;|T1SUud zvg$)_WwI(CLZDDN9^`R^$$~zS0-y0=8~!9?FJ=7;(t`oh&oKo|!d2Tz9+PrjtIdLW zPFPVwCpKby+ywR-@r0DYLHsl(&C|{c;b|Y0D^vFQXuw;0T_xBMav(t|kD;9tUt!O7 zSnI_^8697uFRmN*)s+yDiB*I*;NNJr`AhEPM^DPg@OJO~1lnAkae=z?xtIR<0eD8z z7>Wj;-sx7^`^$<;?7?*V(yBto}M_4@zfO3nG<9UgA(&`ulGw3qWqhQ zc^hD%5~t6tsIhD3IUZ_>Ay+lud;qLbCmT7kffoz5*MCl|>q{AMWyo4X_$|71BQ>T@ z8B2T#!mYdh5SWA0HKK18ZhW`;%Kg1|stoVY5qmeMLRaP2t`Xl$1!oD>3J5oU>)|hU zqfZo_iHEKJy>vW{!}M^^jblo&GGST9kr7798KwkLL>^Ma!@Psv;`U-5!5h14f7+t% zWDxfs4~q_-b`D!x;6V~I+HNT-rVAHZA*tW;LbXPb-UnQjV2sfHOt$uBJOwgz$19z2 zfkkq!Cr$7eA8#)-k9xxx2^0D`VZV2)B-=sy#8}Z&ATs$zLo3G-5+WNoKZ)_B)cW2u zCZ8KdKZ5ahTfPiBvUxLps)KbueiBqM_ghn^J=^+;cv)vq0HWAg?DHU2qPPlUwEU8l&e{cpxPK2BU+Ob~tm#Vqp z!}m8doJaaR<{@47`%?09g<6RA+M z6Z_mbj(CZookx_tjGIIabfJ>u9fXI(;JIBbZTMb;Ip%tGI}zPBrr+nzrFekj>C9c@ ziix@LPlsjwxj(e-R~y<#G0xRSFYDUHvz0YoPS@!%EFJkW^6y3aur~U?H5>F^y%Jh} zA%tVlny)$YmMm}gD*-$e-fjh3hS*o%Z?+OjoQDhd?qt|)No|=~!LCcW74)!Duf6ee zud1$|1D;g=#mRBh`PV&)de#iifiU9Nu6x zU5K`0?$b*Xk*(KvBt}9~q(oN^Dq2NWkJW>^0hc=K-ZZYx-eS+D*t(b8x`@7!-Tv1r z#&~p(ZYQ3*hUZG^&aC6Q$&L1@zG;-RvB?%%nPksPSoXcV>m0F1RPsbAu?J4;FkSXP zkkyq96vlGm5~|P#Y<{P8rkoF!*Xs<$6y7ju-j_i^2(W$e(S#>wP?C&GVO5?r&Q4$+ zedl@={g5I4$mQ87$$;shLyU<>{tNn}XZndFm+tDZcT$VC;&+U4OYNiZ+{$|H4 z+4iu!4uapwPi^W{ty!P9C`E^WLlB3Owss24&D>C2`hEw6+4HJydFOet$4qwY%DXoo z;jM+-gURZ0@!h>*IIW{}20KsS*5?*oqy6^>k97#ZU7V%zGJzW6*{tKyv~yIxRd!dO z9;dqu(ICr%G27t#_%Kv>*LK+|Y`t;=Aw5bv7T9TllD{Nc zw!8AkNGYZj>4N?&**hAJV3SJfhG#s_kmhxp)7<@Z(9&_q0Y6cbHeSo_n5WsU&Byls zGGpe4lNPLhq`wb=HyMuh->)>^oApT9wGpL!!!Iu*E|#fQl*7VNNbhW#4PwT@#yy1I z7QfWn<}X#CvuIi);@o!xJ6rT4lz$!w3j|oy`M#P6lqaq|QZ-Ms4HVc-G z5$H-sX>=6wzLl`aFx?eJ4v8o>UxBIjsIrX#`T*HZDlj=_Z@#}{GmiyJiYO~9J4__! zDk;-S+bX;IA7tX5t0_PExN2-W1PwYPmse{f1I+$d*Sb;-$LtJ!N0cr)w zj1?vuWnwwZp?Y`H<4uum{-KasFjRq(xj9~64@;azG5Ahl*+rTMZEnQBix2(CJsrEm zShMV(drOHxB^D{}9avtA^5Hz?X01^xfgU5;g8(y{Tk%z0zYTBVuf6LeRMo!p;#E@v zn?W1}D52%b@5HfwPNY5T)$Fai>A$~C*V8!1xA-PEp~go-KI6Egq-((Zz4?4Z=j4fA zR$c58i{gomLV@4A@QoWvCj_M?@t*D!T_|jh2WxmS;yMIaF73qOyfO3kel}c(Me!J< z^2;IO( zXxBM*YFy_ns092gvuQuD!CNcu!>zWHDNhc+P}o5LT+i2Y;rs<8nqRWtdV%Pvsh&dq zbqn~-8u`}ofh<}HK&M}^ct7Lr@M~0WMUaV^nbUsuW+4ENbL(rsH`W8J9|>+$8R#=w z0mL-zoc1Nrd?gzd8*g(}I6DZhQMm%VUqP+s%-}~*`pyA6ZCZ&t zjk+XK_qkCe809l>;oL z4s0d)+J%E=YP1cnr|JJh7+|$#hnQz86&GH3aA0k zSy#i|n*{O^MF1=I4F1gKYG~aI!tQ*VXG*!g5!Zx?pD0NcaEl*_mq8WSW<97X(d#0g zJpK%o8#LP$-PN+${f41SrqWVD0F_M_GB9#|d}D4I(E<}}->k2#Na0YnA0Pj8Ant&` z4_8d(nDsd57j6jT$tAvdBMeh0i!sJP!k~wE*v0$iN!Xye%yZojoM6fIPCb@ZH59-% zZ&NuWy>k_d8Bsmu4nx(Fe-wrinl*dfbAGf|(Nk!{5qOIOo)?PV)w7X#h=AfPBC4%y zqvO#dWygi@&F}4hVz6+&ouZzeUgQv(-D6--=0f-7wIF}Qf&?mxPo}me9+u&`+=Hic zK{tTmn_NAex4d;n(aA2+jTQmz#_+AJASW69qqtzqI1yeH8&jF z>|nPx!lI|6krq#A=nn4G&dt|+o6fvUcTiGQO^k|)D(jc_A~ULj5kMF$^s>0>=3kGS zT-KI3?@7O%PT#N%aR`TqxZZb1&9o({-W8wVkVERtZ?o*%JE$=3h`ddx`XKM^&)@qu zAd~_7Y0|fE%z8}`pOn-DDlbg-tCtluHOj0MO0a2jnRgj231XU=dmC1o)}9~dHox|i zkYHe7vkip)7;~RoGorjjjL{Be*`&B6U zD0)ebyn1))mW2!}h5wOI!Inc06MMF~o^nPaeiSvT6Rb^@n6+iRPLK#+-|1JXrWYnoY%F@jTnm1S ze#O-ZrDP^j4v#85>Q})E*BYA~l3#dhQUDHzu5V~~nD)m4q}ZAA2)Vej+3fwCD{Jd2 zj^P~(X+MQ3KfatqiFVbc80Vu&s1S6LS1^5JmjoX4i~~Lbl>N7&<&(M@i3bcfD1kob#<8!i3fK&{6RaL@zKVIRnt`=>aNN=2>~!a$M1RK z?1o=_FjIBp&Phwe!2vbJKlVHcIq00?t@PFg7X`}Gs~dptY0R;>06zEd;V!HK7K_a^ zu>0OcS-farkUo|_&NA5rp{Df@U;P4>92Ly!>hT~okPmPSZaS8hU}B-PVPCAE>=^uV ztI<`==X@)z^9T^Ue=Ap4tyXQvXd9s31J!u3rc!{*{dH3AJ>>9*IjW=Z7W+q z1Os|nnkg;C_W6LfOqRNXRG(*u@yO`xBA)We`I0c-dU zPZG>WWu%t;E;%jC^z>0w*m3%2Spq|}u6!sU<$|;B+Gk(cv%Wy-ld~O>mp%cr7Mo{L z6QC%gY?K-}t`!hcK-M-dVi+yd;snnN+wh!{9T6JTS&yT|y=l)ga&gv|pSTaH1&!=o zzXxD1q!vi$1D^b?-Cx(QMEH7Z?a4ZuOwQw9%3KQINUnzUA*-hw0c zqd=+lcXn*&KCW07He|!5#1=!C5x<;nJ(r-^dx+BbcUT3`upoB{}pI zv1y)A9l4d?)D%2BxWar>@(@({}rM}qYR8N zB=t-V{ZD(%+R`rLtb3go7`eF@J~+K|do!n6wY?eOMZIUy$~OXnAcW`cTk>;iZ zDjNpmCx%Dc9L{+e`YTUJK}jCkBx&G|0+;8f9RD%t$-3-Dw8=y4KBoBwUh-&8r@5(I zjBL122o!c~>{GRO`2fhDYR?o$#axf`f)={^xz~0))XN}KOlDM!X@fmq7uxCBl{LQU z_df?~Z&nEE25^_k^`>jvv+n?Me(fa@CAXFX+8;FD{r7nWhK44hE$%Rbj6Vjl`>zwp zKE@$6Mdpy&g&IAcF(s6e@n742jOCgG6eNf`sufzf2Fk#&zw|XO#gleNg#;yu7?GQVE_{OM6qv7}&v9dV4HXToSR| zz_)M$M>e(oRyctKQy?iU`NNQ6+%`+R*XfW#vo@Kht1@bY3>`fjyys179x?@(>s1kd zAl_;vB{U7*DNQ@Cy~G$pS;BPg+%-$Dju=QR@NA5RzXao=$e5ahNdrpb?l)!{hiIfW zFH7o3;KaOXlaZb?ItKqrBc!5W9PSWsURWGzXu_-4(`dHd>^C`)hb4TC9COt=>k1G- zsTfAtDVs-PRR-?{YB$80H?#56!wln(k7)y*E2|N9SNGx>erevYYu<#Is&7yBwxQCG zM~#$Jf?}(Idy`G^-!lBO&FtP^`FJO{ORz*y=D+0d2SOJ}yw<9U0aa#QWx85~3LUK& z*um*8*qUq#AFLGj?zAS~bdef-4#rJY`a~#9H7OLv4r#oZRz8KzpUUa{1@KwLP``sg zeuN!%dqd7)TG)a}l%~8)ranq4PZ`kO-fD%%a-I~eSV%;7^5_uk6#dlapm|6cF5*;` z;Z=?(?1)d^Vs}7lolD|YHr#j+;d^8rbD)G^q}I15{g5Cb(UBwcR^lu|Hc%!#+`;Tz z7^M+W_-DDXr*Uy+AbT`YlZkrqDb|J7fc#J7-Mz?pWgJbU%t(CT_JLK}&)&L00*if`Z#%^l zR2?n&$)Q%Swyk3@$=wm@7wjf1FY ztQ~0t@&y`L30GL`(>Drd4byD*Z6Sx5g(7Y){i=qJGUfO?=!LLp|1oJQP?%_^suGQm z0Zej|xBHa2D#rB z@#9&CLRhO!W3k~Wc~&DD38j#S54J9vzrb9L2q)>EB*|G#iZjDPqk5UFW5fEYX;(iOM5VM7$w0cMUKcmB#Dtp(>Y zH~_~U>a>RVRmA+Vg}hAr0nKFdkG@i61qFraUK%ow*DlM(S}?cPtH>P4Q$83IkjoDJ`#w+ zSWsHafa{}-7fz# zlr(Z#{r_NX@Umk3X-d*enwb!d2@oM4Jo!2BbTIPs7u06}Y)$JOTT+~=RiLuAvY^UC z-2y3t+ZLfB*nUc4JD-WkHE`NHmwj2MlG*_*9I5~N#I zqYsZ5D_%?VB%u?uO>l1kpwZxPoS!`7w;x9(%_7kN+;Y+#p1`sVn2{@YA&(9V*cf76 zFj#0vp*Ju}^MX)KOh}Lf_$e_+(1=B zCs#f4a}4%{fD3NC&iIM%gURM-2K>0$4Gwq;DoRD7~^qRFTNNUel1Hc_S`6|>&Zd-CaBP`=}{ln34|=ItcEP}vf%j# z1hp2gO%^Wn_+e}yYD#R2mxhmH6&AjOVv)KnH3C720Buy+vJoCiOVGciRISaVSoU?3 zJ30cL;jIz(Co1n1V#5B`kO-SfRuYyK(r_r}jn5>zci~IFWQ{1{ zG8I<_zaN*-vwq==(uxpEk~Nj7u7j*KZCz1-Wl+FXF;ICWm;N)Pao`WCh%s1K?ft!U z3`FR4h{;wU%@ct%SFpFY2bHZiyyK=w@dMq^!E_YZSwwci_!8ySyTvYRA2oti?4N5yLyRRl3a)Cnep8>@Gv_GceCdX#fHUjuRf0M1yqsNZ5_ zU=RnX1KFDIguffkkx)h%Z8ud)I*o zMA{nVNj({u9u3rUkyC*}fFlJr$tG*sUdWqZaG$yLd(9VL!X2;%PeW1i3zmtw&l?-?Ef$u?&nMrPQ&v8De{x~vaEgVM*mH`A_RL$R}xmf9w0Gs?9wR!Iq=yGM+uifYsc#&;jYI&MPc5=hio}I*= zeZFRiqQa^|S+Pa^dd{%1MV-%uOc@YnYI2?^AA1pyOu2ee7Cx3J(@yQt#i^58s;rn3 zL-pGAns(Mrb*7SL z&S&dIPKD*_INsvu>5*Zcn(9uyeQFAns1v!lCv$7lT6)?^J3IBF3y)7`wseAk^mv7h zQH47GkXM>4YuXa@v#w85^pQpl zo>rt|RAAHC1ffjD895BUeRwe55bcRE9&3n}Hjj)q_BLsL@zO`*wM=D-E^FM~fzM;m zWj4YxjRJ&z0x2n+);vHlDjmvI(~tvT2mqCF+NGKO8!e_;vSCD@9QMh6s5^LgwW`9~ zd2P2~7Zt0y&d2BxiB#eP-T^jC`UdQsKVj*7_drSqpH{$CO0AE&hXL|AO;sXtdcF4x$@$w2m4+`j3? zry?%udv9fTm!)S=?oQ9h4zmp^?H=be(P>}5G@qzdtJbb-oX@^R-|${Iz2e|Cn;=yqG?CJN zi=9}1N&`IM9=Cat-B4s+*e$K`V)Zy0!m%zvFa)M+j=qE^6T z(orz+W_ikaabwZH)uwnp#XkSXUb{j#i}P#j>UT~vwSwA~SBuuPqbk$&D^>ISC9(6I zQ#5hyx12%GpB^sd{GwNNqv(dycv~(^6?vZRS!@_SRafBRX!ZOXg&x=%NGUAyycRny zk2yT|iRyYA;+!M1^SSydqg2VRUbF%kAj|O|f@+U7_1jLSzb#ZI)xeikfA5fR(!2)4QE=%zRI3`qs zhMeQK9Fzb?O-(yBwOQ?LN7JFa`7qxNA-1T=QVE6*CA)=O?0;DI4)48RSvYq69+yoZD2jWt_gMk|BpJ+kmyy(SjQW zYrO6sl@)9rGkUPMR4PrrsCxd1t&K%CEW@U=j&Uh-A}gZTr;|Bgnr$Il@12WdYfeNb zL*ANA2Wzzt`^ps5iPpbiOAIHJ#1~;mT_4vFWJmO8|3v0(11ZWaiNP zSFR&u%@)%jx)8l?GEKCS1UXd0ks+)0duxwZww~L3idiX%h`T)G*PI2Hl_YMXinxN> zVLm0TgPpg|XWLB)UGMDST)AyEMbmq0A}3chq0Jx~65$;PsFI5hZxABsJvGF{zaMxa zGD0D*ovv!(yd;io0EkXmP39Q+ZAyfu;-%oP1^hhQny1-H;_8fQ@Db^c%+2}ihyO<9Whv`z;lS~gLCU382bD5 z5op&P#!zLJ^YzJox^ABC^n&%OoN}2MJT=r)zFSkcY!{T1d?0c8!}*!rQJjC_QZxlB z5)bi>v?XPHt>MJ5vJE}p!uDqt^ zDDi|>`WIGgfJ3edAG@7?&XvL%SrgRI>w5F=ShQ#xzvW(bjLM=l+H>62{`JLD%2n_?49e6*ssnFuTLjc~@_C4i*rg z^MM%jaj_{$p-Vo^59p!L_mdU!J(6ezqD~DbX?y!TL`i07^_@@>|0ahdheI3ZR7Gp* zH1S%tBq*nr`;&>M&OQB8b%~eE2vXIhrKSAIjA{%Pu*w%8`+ZDgASop^k(|g1;#DGp z80pY6LCiTHs+-~!p-Q{&Le4#GxMR?D4jx}68!RYf4@d@){B zoRYhD?>=wN4`QCy6fHJhJG^s=VFiBg@DHJvbhT7rtfj515-%xYON5QCrd8J`3T&Xr zeAAJp=cdULl=7~hILu{v463h&ssLsibT*VYt)~4@022SVjoKnY2##oS#zi6MHt@Q+ zJT!pW=G}bV_czuwik$46=CC7n0R1aL!CR1_D56jUP_^L*Pd)^lCFL%y^7h?>M7Zr9Lh-h>3YT9PcY&xa9@ z2fB3N@zxI_h3M!g`zrAu1ri)6Ag1d5DS(L%F9#x(q4eb zr2-yxTAG~9vCb!zf0jaNHO*f{UU#K{+bb^PcO5L^W~k)n%B5m_yt2(24j5;IBcU^S~! zUaLPP7Qs?TsLUgvpu+Dlf7^?RO7ed~ReVGh(GdVq!8&82Is!r=UrJvlTR)54heXk` z6lqA2uKz=;2G@L1hz0Rmh&tGo5a`BD)SKJyO48c3*<wQe(oRp(ux-Q_dgba+XbmzpHJ3WXxhh!9p$NP zoF-Ezt#X{eAIiUN7#7y^)+MBY;bVt%Uw_Yoj8!7K;*_=LhGRbRVJUQ zYe;I>SIcF+ScxJbVb_*ud@~XV|63%S@_kaYzHBO*5WGg5#-wn5Y6*CeKjo4MZHNDs zOTv3lb30j+MzpP((>;MM>EgET5s;J}-J>DJpSs6PHxV+`KUA0SV@9cLT|j>(CdGJx&^y~ z&V@;m1;qpZ>aSsGB9U!Th1JU;PQ1jodd9U2@}i|XZ{+oz=wIFAX&=wclBkL8FdT;w zMKg2H`pd=gir)f7g04RWinrsZDN0G}}^g8tYSs(?n^df~23@|z~cOJ|TVGZM^Iewy@ercODN z?gYdkF?bUI9cqEHjU;c+p>Ne}96zpxJE@BySu#Q}89;(6QcHHW;P8L!4&{oM z-sQ3rAQlBmtH>iECqV!CSyVUCAmU;IB+g53cG7{Dgr84vPGh(}~v^I5fs~}qz zqNlsh@>>I|8v8q*?@$L)cTaB;ZtNfpAvulp$FV3A<*h~(C zI|X~CkK+d>otTJqhQ-0^n^T9j7*!Q<5BFsSm1m2sYGur|s zK=P_8Y)&Kb|K349j$e~+cIE9<2TNLER8C@YOIm+1W@on5M98+A&{Z7;9ICQoc47hj6yHpPW6ksYgUy`J<{R(r_ha zrNF;HV3b5ErfetTB46ODs|i6Az~bGM;vvN%iyjFQnwN*3oTK>e%T53H7K*l#)`@20 z*swD?K8W-Xpd_0U_{=Ozv=iuJ4-}^y3j*Xn{44H-Ey&$C6I ztb>yRV|;DqD5xv9{$O0UD~1?qvLX#Sz2_AF?e||YZIBZab2l$uvo#pZ+jL40&Qep| zb&-1@up|9l)sGc>bxg_SqN(9;Q4t8~LCgc%>0h9JOw2g9DRQUJ;!d#fOgPeUd{fGg zUg%^ud3_*fb4P*Kzq&HWK}Y}wY!{=ivO z{^tFcsYm>{-F8fe;I4IH6Kdv=`y!9vpneeG=j6fMm z;xVFa>ZxS&(aID;AN?JwhFRZ9lL~Z=d;`zfp&0^9H*63Ufb`k<-I*~{SQsjVE zXETmw^Zu^YDbjTq`!#UlE*Q@xLri`@QO(45!G zS87&1mx`};GzC|*VWHNSu#+ie4dSzGFG~bO|K~OW9lpcD_w%uxo7`BRwG^+`E6aS; zm~OhIUb{98?adWS)BN1oH_wj#nrhk+b zz|?>UxT((eSjEJqM8sd00#|+Otfuj^$WyvBsA|6>(Q{iwxjLhW(E^8k8ak2O>rFu>C`Khvz>k4*%YZ#2$!< zzaCc=!yhsIqufJ{D_Cj}KSjpCaKKfWEOxNgwxUF-ZL@8qjlDigNJ8F4cxYRd@ZU;k zPY9T;KZyvDfChH^pLle7$n}CU4$$m7<;N~wG*d>7&SPgSrdGuFjqLGP{p57?k1Iok zsNC5ou$~APEU${`3~#kUPwmvHmv{2)X8A$<7+JYxXk7`F zR3$@;lT@~RNt;F`{oG&S3kgc;{QtRufNS;c-Sk&1^qXGE($fYucPdK0=x;rZAldP@ z+S5T7{`1?w;Jc;lMmo)<3~DOYuNQR4clI4y@z`e`_X4_o|B7(PHZ?a@ckPiu+9I2Y z7|__!1ULo?h;8mXgrz6#cew)^ea-L~!8!UZgVW1tx%Th@xqw`;;kqWmh20m(nW$@NN3m&MYvT+FX}-yHll@#I1E}hzy(hiP;Fmc)dYy3G+E9(zz?~ygD2tP zVZQiIZr=bNo@Nwu_DU2KiM!h78#n5#>J)q4q<%rhOTHs)4EeqDa&L3N6q?F@W0*$b2tq zUIk=%g4urOTj6#zk%bNJHwHcjoKGCwGIDZd>y;8ob-si#PcL|fDWJ2n8LhhvE~Z-a zjycs`KpL^HycJXpx0l%a>a6JW6I+m>N@unI7?r@iG?-1%KVt*E>nKdZ^U5*rHZkU} zd~%*TpKNa30Q^ofwT^H%+yyl-u_Q}-V-`q!&g<(S;CddUm9GCd+JW9Vx??&7pMa=> zl>|iP6&y8&x%@_TZx)Nd9+k^|eI5;;4hrKk3yF3h!0X^S%s4RDs>2PVXQi=T>vL0` zt(v*!T7Id;gE%QF=WbZNH{DD7+!nETrt2^}HW)y7>F+;rU$A~>IG2`Yv5*MPksy=*F3tDt4FGuOhev-0a#u8}Xnjgwrj9mW|OS)UW7g1|3vX)3pu zYdHkORrGy}$YRyrKT;Ag;qh4|8F1Pb62e_I<`*tq>V3s+p`F=@Rk__)XA`$@0VaSL z!nVO!NiA^iPG;vCl15oLA|N_v^}_>#0hB5B&M8GUn zGK9ZGf^=TUpp9eJA-HR?jmAZ=1f;Ngqq`h98p z7~#2I#!>Ed{8*}vm9yBCz24MF9t3#ExdM35_izI+SjjwQx9@j_IlCG_Cyw`i2kTJz zncVA+$q`&EAdylBE7{E@5Nm(VEikAKG}Iu&^I?K6ZwzvPpDL@dceCxF^^=bDGD=FyoK_IKbq@Scyin)3+8^$jm5Vhff)?idV~gD~Ter_;B9F5;*Kr{zzu=NV;uf!|MEOwj;> zp)=DD6CHgw9_*nt`my>})U$u4RcT`ugt2hxFy$wur#L7uFa$EK^g2)SN)HG`&Dp~# z(uO@g2O5VAgV5~I{Tj$A9Y(>RLlV+99B+#E3d9=1vJ>6V4=G-%vFM+M>AGEKE{RXo zr~^gxg0XV4IZ-t;JkK^1L{s75IsN9whr58fOkYeF@q*Z*PUYkFU(V zPAz1PO|K_~?=b|ghDP*vR~m*_cOEiUo;!P%6$nWa)8k-aR~9fAg3)?n)lM*uV}=cs z{WfkR+>pd1*=l(Po)gs;!nF4o%ug^38vmf)M?_7MoE;u^_cP_plnWRqNnam$e8o^k zMrPGRPf<~*iAJRuW|9-t!jtcY??SKVM;B<7%_U8&nT{PIF*38&XXfT^_19OV<1_%i zab}8(i&QG(#{M{)v-20w7&A{hS5T&MX&a)Mwr1v zgyBPebH@c8tOa~+!S@=1`vQi$-1-b=)s)*a9YlC^b7>V;#Bl{YL%?u%8Bqcb0TNX? zToz1E14X6d+-o$n88Zg+SyLCL;k%k3Je$&QloP1xecJvNs z=!s2#tirX$LY!l9Fzz+Hvd?H$>FxKAZy*58e>f?wDL|M5lX%9vJQ6B}tBD6NqM)w8 z*nq*KlC8bHeMTr5z=D#WpU4}uu7B4-7FB?$upyW3yF^Z}fXq<>2kluh5=??tH%m$A zpS?yuzLj_dUUrc3=;cIH=Qc;cd9j#iL;nc6KgmrWM}4HYlnF1(xcPBBpJfzH9Wp!= zBwUV`h&C)gaRDqRJywW?#f-t33{4Q|2@r3i@IG4}?K_OY`Z34~eaI%7vkvbtb0+0>7v2kRl2G;`Tt*_MQ zLB0otKqjKch3WqBK1rw5RQRL4tt>465=p3M>PZpzvlJwfCT$E@s93@<@Su8O!g2mk z;C0lMz`!SQur9Tt0t`kjeZDY{XQl-~k11OYkC_A$5L8!*szogN`^QqwFI<4y38cS% znDgoxQS}&Iv$Yq3^J>^LnaxTpiiZO^B5^_y^4V9OByl3 zP_iT=Z9fd50^i|NL{}r3e6pfF-DS^X7XptIG@=FWFyDU5X3$q0?ANl+%fIBop9PNe z2t?aM;xn^8ZnLnFf4BbSaKG55&3Sdz3HiHXUs*mA^P-C0bHYgu)CXv*1-eUjOW2te-j6SAgWVw-!h+*o(R{zj)b6I??@jAauO21y zm@qr$@!EP(OVMt_?6yv-mnXR6DhFna7Ju{s+0+3C83;iEd#2iMx(8VsYFudXgvaSh z>OL#OWX5S*(|CffH8oznHJKp3bEpM-C$Q^SyKb8xcot|31DF}cREw7bV2fn+6Gik%D{!)D0S4n;YTgU8~Y*4<4O%tIyQ`=$eG;+Q}%pnB_oQjeSm5S6QJ}3}+^>44i zD>A#w|KWg5yFt(x3~39(z=>cB8`e-iO+fZ+gh6|tZoiGR6=*O51`DSyc!B`CSNFIX zV~#7q`J>B0=z)U>2GIjpQgK!%Q1i~jhfz5S?sFGW+$dEc!N(!XF({;>(Sa+pb$q+_G(d{P zlntMQmnIwF=NAcuteD78^L#ooL&93&Dv*Sl3%35-1uom+uVC- z*rv^d3YhMMVNFT8&4Od1lJ}?Ydc%-i4M?aHksTPh+dlvZ=ckH`^SMX4(ev?voM{OGgqVB z8|j<*hF{(o7rcN)qXI`Gy)k7mUXbYaM7c-^j?EUt#McX=VHNX}?ewsZqCpTFh4FLP zahdd{28Tn?kY9Ni;g#rkg^KvG#yK7St8LQ@xtn)q7alHPZy9Ol44|0c;y1UMjr$Ot zpEYh03)6e3Eh|0Tm)e}C>7UjwMeTQxzTOA z$o!QibWEl{vYbEP{Ol-m|3=XU2kS~us$-uu?Ad6_#V4%}k9_MTNLIzE1*xr{%g~_M zq@<+9VwfhZ;jU){j@D)HF*Uw%g05v?A`TC)fdIy9u|WH_{w`kcg-vtMX*~m@i*@A9 z-6N*c!^U5rwQ7!*I)-h4VrBcDrwICqJl>+|OP;a>^C67Daa*g zJJk^l3(f=vI_ATXB25t@dtd+(nBL&1g_H(J@pO=?0DI8_F&Jr%$nBHeQTiJVZDAeY zhIv{WTD-B>y<=koI=2Dr?wALcli}X1+VngaVM|e1TPuk76@=1e9JgBt+_xlMr;z5;&l6Le3Y!X0V7A?cV*`RY}3FH#^^_9cq>FHOKDO>?7PZ$Asz4 z@5I@|TZIA7s@P}A%0Iw>Ed^0*I?tIs1DU)5fdK9?%?szSJEd@ivm=^-G6%IqNw2S~& zK-wU9EOXi;)_ensXZz~>S&B_bN}n(sR7ugK^sbE&o0nL@k!8=w*$r-P&X-_w7T#E2 zJBBsdB7kUhVY!oOg4J-KnOJ8O2wssh-g!m3@!l^ zqhS$9(sSwPTOaz+KJ}58g#XXI_dDOY=bSGpFTPGu9>Untba+gT>S~FfN(4k4OtL&K zx0TSjih?O?ojjz{HXLpuV7rVJyX+e~bCj>JYhr4KdYg~RQ%6(nfHWL3C$fO%#_C=r ze{SsfMzV;G^5dQJFmXVJOIZ^u=LK;UG@KiKH;zw<;yNW0)~J@_oS=s6u%DU&?SrCB16o$tjvz2(?B8YW;xy5f(Meg1wx`bW# z@LxLxsO@iy>*G~rFm42j>@4`D+P0@yj$d0?xP)@%I+2_ilI;nB4J5q7Fd1*iHLg{r zw!G+%#-33B$khb+@8G)6pvBKSMcFhduILH?0%g)Q?&6o1k+u9A;wF@q`bPlaq-7<_12AbDPsXgZrj> zOpaJiTBtLXuYfl%-4QmGNML89D^X2`OOYIdRUgm}7?=IcD9T*)#K;=~RoCnBB{RdB zC7?($isM?wbx0zxmUirb|4?nO_Mrn8raQBQ1;n+sZQEY+7-|a z_QkEk)5>iWz20p*J&YkAe7Q58RVrl?B%3xes}^(JO*;?e;O8AK4Aiqn{S*LS=6UAQ z3Q6^#ZleEo3gOpQ)*fXB(Y0mXI5p*ibnqiatTO4kt1KuQSqD4 zX0#=sYZ`{O&TIaAOg-~jzCw>qm7mvQQ0ff(5)qsgJWZ`9E6(>~dpjHE0ymvLsOX2C z>$W3~M=fC@1X2X#lK2QEBoZ%I5D}mLL}r^-w*Kc0`9!dX=LP+k2qsd&>W(-LH4qBX zJcK#iXPSNY_|knyx=Rqg$`%{|%8y2JE2H6^j}`aEOqcmzec>+v7sJ>&a4(a8;UKBy zIPrqmL(29m=jft8(1EZw(udu-=F>2o=oFd~q&|S8e7myMF82OnICOB5cIkC0{pvFu zN=($PX{I)>HIgEw&;h4sic5#^`J?DnmSl>Udch_C21B33{o>8jcQ=!OREQUmdg4cb zJn>JWa>D@W=icx(*_JoC?^EJ{V_i*?SuCPuqo7D9^3x|!v?cw2ahLq%K9d9Nfi?e%@~^GG8==Nwkv@a_yDBweZe z)dHwfmwQ{AsNU~%tvJp!)&?FzATzr>tP$zl&&H~0M~%!b^r-e!|Ae#Elrgy%x5*Aj z-D)}l-a0yS++JMJp%P-~$Qlx$3=fywc+FB;a{fr2RIgR3ub0TsVw+s_pF=VqE@ozK zTOFk-$9sN(_D{fJ^&TF>)%F8GYg(N&aEUuqvmTULv^u`OV?@~gU!5MrkO_LUdFd^N z*CsIQFZ*) zUIXH)g>F3L?{>NJP_@KS+O$x@!f*iF%14u+Ki*R_3Fu9|6@ywK9yc@)oLnGaxBP9A zgJV*cAKvZMlfUYbO37X%O&GMvAz@*;2tI`TiHoLgut%?}&BYX??Zwk#|H@M)4KUG- z!-aVPc@Kp4N2&wK7$<>V)W#Hw&wJp~LM%}nJgP1rL-Z*mMS>XXp*8LR^;?9bW~c7X z>87)8F46$>5$SAw{~6Z5v{5+M!9fz zX`kof-wXNm1m@!M0=NGC`kr=&!BsZg^TaBp4_}sJX)sr7S=4(yheMpdujMIfOI} zB{3jFJ!@n9Zh!yx{~qtB_tP`Sao->_b6xw|d#|<5b*^*m=W?>*2T4wo5D^g_l$5w3 zPeinboQP-_-#>fcFZoBqO5q2Ojp!X41q*!}dmSr1A{iZ<2c{M_rbhS9*y&kW8(ElN zVc}+ByL86T#^!-FFDt9rpAWEDSQ)T#e#lLQi|l(Kp=wP;MEx24x5K>2R*+~15s~DL zYl;qUr~4co6x%nd<{NKbxYB*q?&j{@!4(I|cKeIoPTPMjzf(D#A~!fCy(3DQI2|)9 zZPs3RJbv~>?*sAOx8;r;A(QjxG(CIPSwCuR?Y#coub=Da2FHBoIu}PAFJBq&U#lN< zn>#hew?gTqL+%M9`T08fEr<8_??iWn$l$4ezJxztWc&TQ$CKN4fB#OjFZSb~-;att zgwg+e(R%OP_4{`Ta$+=b+pkw_BnN)~en#j2-r(0<{Qo>fA?>hG9vB01&)3ZA2^OWR zV&PXUUUyC@IXM;b+D#|*mpD%~i5yb0v$IR3obsY^YkDX8GRJaQY<0tJbYvvyR+Jzw zE-5xBJlw=MN+D6UojI@fs4Kr-4Vg>?Z?4i1@!?vw1L>MY%Bd=u9i9g%6t%Q6dV16x z`Kd=oN0Z;bmxD{@^V-jv+9pYw%=F~q+EZ1QEd8hja_nZ*rgj>Co@kEcw4d#r80N7a zGhCWz?jYU`GbJr|mx$=h^K|Vptwa3ZJtAF~RfB_qIIs@RUcI)tUYC0?4-xb5P`(8;oAYj^1A=y<2nvhS5v_XNpZj5~Eje*)jB-I<=(pE8wM zCOE4bjaO7uoOrmG`k7!uZEdTPil&|_zadS7z>3D|#^w`@>W6zzGfI}#`m7rT2;)Lq z$yXY(|CG!D=7wiNkwlgZ%wta5&tB zmxtB!%-i1>L?-X0b`Vz4a*QWFg7JazDBTj;uvxNfj1*vCn|=tR{-WW`lK*Yzwhxf> z5RKeHBysN3UAe>vJGI!M&u(ioiF~v9B1|e7K?8H0%QM(fyi>00nqA4(=33!$k4byB zLE{r&J#x&tl}4NEs|!vgDJd!Ps;Y0Oou}FH6V2xn`ugk#(qZWv+6MMT zn^C%a{}jgWn5E@1FY3Bje|2HiB_%z*9b<+aSzOIAYQ0dhzEI1%`D2*E%(-1jWwK3TH6bpvcJnBv&`LQeVDVZYuj;%few_ zz9qs`W@=K>#SGn&g&HOw!JEbNl@$2SvQ5shf=7>bYC28EpB8c}mgOFN63QT+QA#lO zp%K!0^X84^=2N1c&jKsGu?n(0dU;PP&HD-`y{|MhoicbEW7L{386eGao14ym%_Sr~IP)wk_Ie+i(IwwWtgspPjWKX`Sb z-+9g~EB`%HVrz1%ET7D-JqNnXun)M?7!(q|@UOhoUVnGnQpX^I&%Og}=$*H>_k=a< zVnUVB<_GNX4nuVn4NK9__UxJtgHH*y+M7ogdsCEBbMAh6r0k7cy09~H{~olK-FhJm zWF(?Aev~}&c>`|F;gnOb_5I$Qt{!{v4a>Ilp?uJ=m2a1R!`oAf4t1gIxYop58dxo>YC0=k z`(k1SCZ^UZ8u#9m`5j$+3kwTvc@_hq<6LGv_iuB+<%pKKI_|<%_wmnvImYfM?oA#e za!4RY#`id>7pF-_TIhI#;M#P4-duC6mnSJz3T#{sLa#|?NrJ8~PeS`WQzmdH)d6&B zS@)kyNlD!&_bjxZ%g`zJG}_u&8JJm)k&}pWU4B!#Iz|y39L#X#io)7-wx2K07`g34 zlMd@TvGXkvZRBCpF{ZcK$Q7?$dsyj5lR4X0l$YNJ?l1RV1qt$NN=iyr+?0$LFUp0m zXxfbUi>H8ZNvF2Z)QmX6qLJi7aWy3;M-l9~rlCQ3Wwwv=?nfg04A$PSFY8JU^Z5 z(334e`;N8r$93fVz>>g`B*;ea8h!uv$>+rlm~r7=*cNw9V60+dVxDIi2#a01e!1QA zCz#d9tS?DcE{xV5>#5@G)Hs&CacwVE+r2fk6LX?2>q+%ig$cQrHphr~iB+kWxw*z- zV#R!37+p1Jpe$!QaGsKs;*ik#`{r12KQVXb^2V?J=Y1+(p1gWW#MU;~vQ_3P=Zn}u zdOEra?v-9^ADFYs4STwK^X3uGuY}Nb&jw;pwQK!bp6uq* zn%Y_)`Y4x{P;Se6*{(T@x60f$ydhq7eRnExZetyM(B&{+ank2@tk@~@yrK$SyXmfG z?z!Sc??Zw=K0do~&XQ&r_8|vL!N}2A>+y#AS?u5ga&bz_C-V!ntn_4C#3wZlXGd+V zj|(+-CftfLr?mQdR)%`6hAH#r1b0#PT9A}8r=_kLuKLmRfw`-*`NO{Y*75jsZ;Thfyu1OhnoAH$Du^^4Qc^Y4Re9MVT27MVQSPPdZthD3?7Ec`?pte7 zR@Tq(L@v`9d>mvnRaFIlrQyKHyRCndEPu8!m6DyKU`(fo}yH5PC@F0 zUterAX?V*McE!NgtW0Jd{I*eVz9nJMi)N@_f3hY1G{3|9oezb3v1xZcTrXSeo3jCn zo67CfQhWi;sEo*~0jkYM;;L2EzkB@g+?l!ve>Zipms>)yyX3wz_JeO>#%3 zHqD}jdcV&Sxkh6P_)ccb z+UDAvZ3EBv#N$JPO=VjfbD>7lU=$v&zc(C#`NlfV5KDq#W-r47hmK=RyWjZ<5+uN< zbwa>Tgixbx(wV_&TO7=!QprCH_~^4j)ik(McE1g`vW_%WUB<|KG*&MP2JDOK4BqCI;Bu~&IaaWQ{E z->ewcqB~2JKGNY{>?40F)872sx|QBWiW*01oMj%lhWmHXvAA)me*pk+%Db zQ+MO4jOA|MZk{$#RaHe-Sss{4PK<2%F+aS5Ba>C`$+raeaJoGy|5ZdpdR<-Jg*?Zh z=kzwU%z4v3-(k{U(f-=xIfl3Eh9B3n@jYg zr8F0Sjjfr)DDC`YE(AzC1scYlh|G zp(KrPUG5I!FbePmU~OnQ2q>=w5M~B!9QS7341m(G_C@Ap8+O^6O%h;{OJC3XNu+2i zuE9?9E>)J3YhtV_oX)C6C|$B8`r2cgncPm}>8=kjVXqY3>A$L5l*DV5IB^!Zf;UE( zCBmjf@-+8@Xu`@IjY4QrQc}}NZI_rWcs67~5EtnrAsX>6)?LAmhG=uC=5)7DcW2{M zwKo_GT^~bO6bsR?dhRQ*e8+aChm)`lsl*a|5C_BV0E^0TTpT;GVnOcdwpy!=i?Hv1 z?zlM->(>Dv$pFtS-Wd(f5`|N6f*Im8u8M+Dx8z-QaA+0apR^%Nn|V`U2kuLxvGDx3 ztICl<<}>;1yl+>lP^wadZHKB_o_PeV5lk(Dl(6xRYhKZ9BAq)1v+ib%`@hQUb0r&7VG*6aOq>ESxed!ds#x5^o77< zSYXVGP1qDwR49-Y-^79?=|bjXS&=jKcIco`r-rr6%f(s9*-DzZj$OFPMtjQ0$fy#Q zNR5A%E=1#KwppTVgtzdS!zy*pFJH-XRtQt~8wxYYVE;V$pm$BRz$)GnTrR>jmKKZM z22rP|`0TuS%=xz}!@10ib2K5m_nOe`-nj$awG#Fz)-)Wfg-?IWJP+%zP)%=NG{;)D z-ZIgVu3m?+A8@sQiRH-C`p8~I87Sw@r3ay)^1L7a(GABRgI+%HO>90cCDj}Ll-0~$ zWILtr0@rZ1sdM1pSZb|=_bKex9&nr9jNs+G(DC*yWo$}{aUK?vQz@!$;=@T!dx|B* zByW76Q`_C_zJWoNsXe}3Wp3GFKJC-{Y|TzxSmgb7&Iq#RxZm{OP2^EO!>fl(3LMdH zK;YJvbFo=j^59o}5jyR|q$ejockJz5;w%aT%s=FIEEjCdhn)R7gdDr2g5F+@l8t37 zvzxS?J%C8lKG&5#X4zfHP*R$U7q1vJ1kr8`(`+?8*>_BhzY;D_08M;-z$cZi0Umci8 ziuLV@)vX*x=Fs&)7b2hyFQ;BjP^gJ8AWg8}{u6__eD>hr%p1!@NO^8t9dNO(vxYUd zQuic=phtThF+<^4+rmKDqSql_>MYHFA1p_~KQ%x94umX7HJrvH>}?=qelZ1N0&?G; z&_fg9^6Kgoi`>l2^@_bkC&=ykEY7`V(M&Q;oMcB)_PG#nK>c9#JYnZvi z)PuuDnQ(lFRw35R+RDlXmz-G1zXHyu(zbW`^Niipr@b`2CRKc6p}HLRzrLCnhSAD{ zzpKZvGBKHOxHf{f&cjxO9h(P7n*?x~;IRH<-e)0=PMq2?4&|Q{!!qGqlQ2IwFM2x9 z79@7B;?={kGaV=o281J?_}Mr!qiD7;w2Dvre4x_S=7ufgmKE*G?_RRJU@$*^@}$XB zN4go=DcFet`w&HDYTjwF84?^U>RyKLQ0H{tbcwKT;OQ}laviZNYEM?6k9hETA96Ez zSgQ)Me-4y4S-34yIF|J5`{hlU%-1;&koi@$4!I5EA=#S*Z|kc{X8-NuLju4do2F}f z-}D$fhWwIFUvTsF0c!sIW@~WalD$twhjy9qqj zJjp-M4Z-7hwu2qeLz_#9Lb=BLMg5#hUP9|<2VJMtUP+9|!lD!!0&d$!)0!rHCK~4G z27;`WzEr6PDY&L{b?H-pRbjWcopw1XmW2Y9TJfT>0WmQ#t}|1+&iXk^BxHRaQS>Jq z_Yi#?v)hO+{RE4b5^i3YTw!)g0I#^Q7`5fSdd3Cj%nAH~ZN+gFj)M9O`%AREPo;O2 z4Gh3zLvD9#0${cu%lk``u+!dYLBbtM{HXpkkJbHNvv9R(r!UWrB;*a);!>B*I~m?B zw*hEdf($MdEFM;0CelD?^M`KTFn+4@YEcw(QU(fPU$laAqi}uu`n5i8 z_8Hh#1;5t&yVrWLzU1uZVnk!qt0^w2ud`5{n`Yf^;G9F#O@E9tBvlJH(5Dc2}}C>4-`>1 zjxScwOv~Dp=$`d|JW9W3jHJG5B8Ej9{;=#V#86%-UW0n|Cx z-3HTW<-a!(-fr998e8KRdOjP7guW)SqvU{jyG~^)6>(TRr*$k!DNKC z>FM_cnnGj&ar=&4pk4aZ4QQO~N<{5Y#Y-gxh1L6BWqhpF0-YPAO};t&Tbu56ocms`~6KG9Nzx3r&U8k9RUI@Lff4 zu1V)M#xTq4>(H-q1xJLS*@d>NGRYYkvbdch=Q>%dH#^V3Gu=7wIJa*P(Kmy4$%nrB z3KAxsEVH}(_#RpX^a7-UG8$D_{Nr{9NVOTs4`A{KUQcUifD=4f_+#khF<)K#p@_2L zbWGl{?14MlfULy4$v;$85GT8xjvAXT=6X&G0DESB-VT#UV|SI_f2WrE0B2K>_WICC zUI=@-k!!Fw`i9CXBJ+XYvVkl&Ps%+{$$O@vagu=8{3%4qd>kX?|Nc>|k&c&BOku`; zLm2aE$6m_Ai}~@6bK$LR_ud!H=Fve?@J!YDUSFXtvb?(MjfPu~K1Bn$*()~Qb3~jn z25Vj<1F3F?a@w63pcoxXv_#JxIpuj|DNQ?UF(6>E9Hj2LmM8Y-G$BRZ~-Q0Sm0+)v@`WToXNVvFkKl8LHVA#y)`CMi6mjxr*93Edek+IPg>q zMmb;!<)h#;!UUY{uCG0^MPLK63$p#=JoD4EK~KBwU!)1*Yd3#Z_}}!G1hT zs6g)2(hbO@n)lMUG^JD-W|HzvzZYvvSIrjlqO_7or5;DX-O=UiSuey4`xQNS^>uY8 z4E>B??qMNOsyS?gATpQ~+)Rh~3TUGVc;#o_6giRM60Fqf)9en&6aGV&B zd|Gw_j*jrvp*-CIJ=C#FoF%z?$`^%x=Z>qLQOQq_{`oh zG$wiXnxoyV^UzHSO1mx{pAPA+)yHKH(>-o**L`LK-vBeTyydY*dG&-f;KUXnX#j_5 zzv-c0j*OQMspQ{m&vXlJT1MnvuNm+;u+5{~2u9bddLkf2tK`?p)|dJ0Xs9A1li1OV zFHZw+bV0xV355O&IdUt&E?2y(fPo29M1Mr{1;vF3hoR@}jdX;ETNyN%LXC_IiCV@E zGb4ewd>v;iPHKCv-I?mlw6NJ*4w>U{znjXgy`*i$j*D$TM^0D+bHEE=Ky5>0eDYWW}ew~D2SR9bM75vnf z?@PR#;=UQmc6MwYWm&_1LY1~@5W>!lg?|M%x*fniaK%FqMfD2c12QM90g<2PvrE%& zj4TmfljSPfEK*idQYDkz2;0vmeV-&8P>Hyw&X>N;xIkHXeSQ6<55VjJI)!~c4*>GY zJ?a5KIYKWTx9m&YY^FM7HVAl=cHQaf0(ni%bV$ND26Zus8j^dK=wY6%-oZQzALRyg zY5VQrUNIUKB_*SpAO=gbwH9es&cay0)hvdV;b1ydl#Of$WFq+;^QzP!=h`ND$2Wge z32_nhQ%|kUW9rzK0kl!&*Ly!7ct`!=-c-Q0W^UgM3ByIU`f97=OL0fQeE)CZ#V9(6XRHZn#Cf@{Drw9f;C zrKDbLF6Wh1@Y{o-%`J;`tuBsF!E^dJnh&_Hv_Czmm5&|nv#MogZ$#k{Rh7c~65`@+ z7`(L|t`TCs%v}aCs%n6e3#q_TQ|LIg zA@@5(_Obl+f#dHUvH zc@yN434kx@$5yAOO*cka-Hm1ra~d{9hdv!oO-;oY4Q#NCnI~yJy?%CM*1oKDX|h#@ z%DU5*6DauPboIQjo|AD1?8}b(Zn>0)hHYmS>c#1g0hc zCq%S9W8t0(*`Eq35P2S=VF{_FD`(3w?Y=C4Z&PrB+z+_9*tG`*8tAD`%ZRrGWjF9j z`w4A2)a||DzA>epd%yZ9irKtF&&~%y?gJSQDzl(!%xPB#7x03NOiZc4PSIMB&~gA- zj2uEU-<9hzuK=*~10yvF*xR^$xVt&ua`@h?S^<2M!=j(x=QO7j6h6#t#H%gb*RWjA zbz9;jotB!#V=ErjhhLq7hwB8Op9VF!^Spj#jpMEBtBZI5n>RWk6Q$%OOvK{BJyf|C zBc@_?JgRda{oBJ4TO|^ z6Fj*lO9)Hpk9&QPDmITJ;D;&_S9>2kMkI%iE#f$)((`OOHSH%M3lF5Fdhl@v6y92Z z`56)%0|y@*9-dlLBPEG9DLO#TCJbal6I3{pfRYR4Yylq>L^k}PiduTY0i1Ou+^%bS-pa}<%ta<(9%@(Yv%@#vT&B~smH-_J~LW_q5%D-?|`Jaxp{Wg ziUYq`l`oYK%-xA$8*a)sC^OCLYaBaz!ysee6M>34v%LkU+3(#5tTHk7U4j|kz-PLf<(v>PsjaDL zLChlH1|Gs&NHKu9v4L%!H~9fu1mB!QME&jC{_QcS*4fr^sPiA7u9h(eU+ z+Ts*jtM~zca)QO8EhSS*{m*ViW#t6nGfg8?eD1Y{45v<=f=n*N23&8&&8h4wnVr}n zcG_f%fl?`$==nQl^>Zt!P#A-PPCaIFpsWnyi|)qYA$P;pJG?d%(W=?{$>M(0K3XRE zrK>Kbq2oX+B>=ft)|_*9z7T4(6zP3C7E!rQ0Bo7vz7l5WWB+!vz7JImly4&*1&JQi zOw|@4GsxOY-?*PIqd~kLKOjnNXHBM zgWolIU_F4iReOK;p?TqCf`H&Gu=2Sst5yQQck(WLJ#VkhG0~Ho>b4j@U4H!1D4@Css^Y_=WWmfG?&Rw3 z?nW_a3FcrDv1y#PjMGQh1VDzD4EbH(*cq7o9(pgG z&^u=j0f?_mkO^M`+R+G#bWpWdl9lxZ92-|o%9mF0$U_yjL`3QOf;8|cOo#uu$j7G+ z4y_Dm^ox+~HhU9{<))t;C?r0KNXN_zDrX+pqsCANyYvcA)NxwguE?)}2*>`z_nU zPJvUNR@%w|7lpiUr_7XL{&VPJ%UwmSs2|%Zs{w-VE zSyeq-ZV%=ksU(W)-I9#_3(SsI7sJ*E$(hz!8f(JN`Gw8|lfHK%qnR>!FiXl`sXo5NnXRgEO>rw()S^Fe{d_1QVfA+( zUp>)a2?6p%SoHd(Z@a%RQQlN?w6uTvc;w)#f6&BE$f#&KMn2LKoZc~1@#mfc) z;p1lcz1M6fK3rq5Z^FqDsh_ncvhIDOrDxm4VxQ0nf5G0Z+ffI9B{F-?Ngi+j#`E(v z_F>Pi!$PxnC9VSv2;uQI?c00kayPCsq%b!s(cb7MdVU5jcD+OF<4sUkZ}AG7ae^XlC} zltY&wA$1vTm+tJuLYv8VWo56@S)R7N@^E!e7Zh~rdTYRMTX+_0l8?F`rq?tTx*4&;j2o* zcr!3RbYS1!q#(+?@es@?A;GvQ`Wnez{_XF6oomJ@tuc(yTX@_+%U2q9Ny%dBqPEQI z_820}r~j9&60b%HY6JATOOy7A=!+lUUy@$h7{K9(z9ea5OJqHqS@?pI*>z)gyVA%V zDw4ZQV5bes2mA2d?u||GGyN}fzsN=#1IZ|`n>CXpYVdIihU9CbHq5uB7#(-fK7y&0 zlv#wymP$6#`g?&o?n+#S!TfxMR-HZ|ypF69kj-&2vWrK@qE0?jp`8xOWPDk?&Dv-f5=nwWABHD0H~td$RKuO&aO0_s9Qojs<<@NRCCa+KR5` zO)qO$xbMntp2q=o>N2$CLDAwa;kv*OuTD^?_CoKqiYq)I4!Vfy#P zf&c$HJU{W|n5^8_5FKPLyNz3O&6{;d+7i@%*|comGQXL&N?hTLBiiZz@&2SBu1kF^ zJjKAmq6|43tr3CVwJn)Kffjf%^qTL%@FZy;(x#K_`H2>oeg82m+t$|n`~ax_MUG0{ zy4493NTx9Jc7#;cGg@_y9Z9dr`W+!($VA{P_9rIaQ!x0SgJ(O?-qBGr=)G+Lq+T&? z9A%WG`aZjkUIRzK{q{(FoTo$C9$Jq-ll8xO6G~EGgim>vqaek0j`ZnHmQzO-_DJkT z5Mdt=L~I4xFIdYnT7Nd{yigcz(3>~OkmG1Q#JQlM#b)r|da1>&X*;?-Q^+S|ySm1d z5(XU1v>WpV|I4AQx(JpmwMbjVcW#e9GVSz?(84jttgjSjjv&mVoG5QQlP9klA@#Q_ z{k>6u$+L=&TlW6~E|Fg&GMabk66RN!d7CrMi>F-A{Tq+igAWF^2Nf{zBzt?ey;#$@ za&<~13E|g0ee*6$3%NNxDGpZsd#xeTzp5H;MoH=`zpeK>=SkZ1jq!=%jB?>dznx01 z9&ryQCC|8)0*|aY$AZ+Ch1@oJ$jf`+cu$e?YrS> zN`V>q_98136a<#KOe!jw&))wlY~1*FmkNNEo8_ku1aNEw3gX&8J@RuSdpP{YFY*tpk7H1r>Ah#*UFa6FQMJ;d$Y-aY2drGjg7swvn= zi{DdcFd z16y*B^grYN0{6bi%q)W_*GK&~(HfMiL?qLU9SqJ411y1dqoVm_QpFaZXs|j0cz?Tk zXpDeR;r-86v2gK$@|ftx^W_iFN}#FtJz~j7X*2J3P=e@Bc!2$S|HaFfN{WiKl3|;Y zG`6_c#+FF>3@;DY_Xq)(UIqs9=L_1S&hCTog$SXbGR6Vqn39-lTMf1ZL~`~1I2eV( zLW%uRJks&0FaNeW09?@P0&ce5orMexMKh z2NeG=Ua~-gWu|OvlVmRg3(-6YvAmL2uS^WlFZ?#&9%oV>uw$V;ZhQCqag+#-fP#z{ zM9*Xk`rGeq;x4(a3`(q~W}`80V}gXZKrR*m2~N6*zaImV%W5*vz5s8d1hY-;Rus-V zH=M;w`|-rNBVN}9{WOf+cp@}TJaj;|AM;9Kv&PiXDs|LKG>vrcd*YvnN`exC()=*M zY*6BZZej#&kgJKUulUN*mY6{(nMLJB25B%tWh8%A?52Ov6DTGlH4x)OeGWn->ztjmil{-AbLmQI>=m+_G%=vAsgM_IB$IN0U9hXR5j7ASNPPg!km0&OLXa?0BxfxRZ6w^Mz|G7MD`$~e@s#(d}f-Mlpikn?d^4&69@;zZ5xd=hm1 z9ix|R1Ge{=$^j$@fD&pFR0tS=PXhUN3sk+s&B~zvkB8ECq7g`KduMM@R*PXXHH)}1 z@^?P;KxL}}{{H-)U9Wmi2_C0fPKO`A*P(h^E_p{;Xlxxa`G132megHr!=U@y79MA1 zWrdDkwdhYnRXq?eb%O378l(id)iY2Kh1#FG0F>z18!bQv55mp1x;IyBp`U3I*!^JW zKeD1h0|!ZZ^3c%Ggf(hz06iprsrA;BN*STue9IR~y*IP<>szYnql&SZ=Ms{Vx1qjF zwl6UU=l1aa3DShG>Tgn)dZhryrh_{>h|t70+thoy_MK@18@&|5Ht`X16$vzPqb*G0hGi-DmF@2djE0XZ|v0Vw$a<6SJc zwQeo2wZ4dC-n5fYC4=6WzP4#W)Od#UhoHlE8uq!$0ZKznSA2W(P(?8faku;w+s88gp7WoH#IsK5BI0=P zO&D;^wp_M&-qXrDeDkot;eWo)*j;sU10@Q`|DvEii;9D=Cbyt2*4#OT!*M_>C9_(N z1WSlCbOS2R^_S=_53a1C0%Jo2p9xeepeM<@)DCs)fs(TgX~$qah4hPnkVpYlMnIe| z6(8!A3gFPKJRlRw7E@iO3sthh(bwvEGq4-ca8>;L` z1`t3PHGQrY^<2OhE=oFqT8F~*M^sc4E1*ayWPw_ZWh@tUsRTf0S#4gCfxbQt>db+( zsILu)eLuV3vgW7ugJ+F>#p=4^vqK^PqM=&ZkGsUU-#L(sYH6vXiMMgh&s_WuL1LsZ-J$! zfpS9*II9UL?Z`o~HW!NPldsjyZ_CKY1g_nImfEG2Qr9(%Lve)mfMd}f)U=Ek>|27X zH=sr51&AOrppdTasWSoHkY2!6W?{=11OzmpvhTV?4xKZApr4CF)fjqC-M>aCbu+H* zawEOGkizlcvwF?f)ITZpBiE}&6Pen|pGw33Mq4ngcc3Cin+zQhs9nJgw9!V;RmE-w zb>dj?ug2g5dUBHI-8-Ny@bCs`^RrREOM&KNL07^Aa*?VA5%JI}gzA^bUqCmSEl2~a zHtaR+y7ijxn3v#{pO)7>|K}HmG2B8+36VCAkV_8gb$13<)?2V^l0aYy-L^|0#F_x* zL=dejTnTlTP{{BoLdWrj0BAQVhG&W$tgY>DpjIa*xQ&vQ7E5MlDzs#9WF-6BjmZzKA-x4xryudq6X4 zW95LE_CO!PM1M%@YA#|=XiS$37?@K5#Se5)naPB4NP;&AfaDkn6+y~=MeY6%aPgdA zhM}%MTuLYA%KRrrW~7p6%{5rt z;U+6D|G0*=H!eu=7Y7j-HmfA&_Ef$VyX<=5)y;ozv$M?1%!D;0BL}S;m+`O-uPsQ> z#A$@Ulh@ClKm1RQ1Ao~7&4z$LiP^~kX&ISz@anY5ZefXukxs^b%i}9+sGt4mW4;#` zZIAOTY~?(=OFOM-rds;>S_mz}H++(vvsO-e-evX8FmD3ph?jBgLhQ?H#IDrsuV>mY zjMAkzLXm*CCuY+VW8VIHw3ZErC8S)j&*6;g$#Nlf#j|^^C*#e|`x>fSwEGs_gs+n= zwV!mo{*Zw2kLn?qTpmfU>uU{r;2*UToO;X~pIScKV8xdvUo8}Yc7YKX_hmK9m z%{Y=cQ4pL%1bcJKYORld=UUR)xzX3;)x0UI&?oEKwZKy(?XJQ#Fz`upt>}$)N8qH= z3ZUN+tYyUancn3@Ys_u;tIiE$@E<{q+aP>;?u90y$UJ0oGx-n&-d@yqr)^PWwmu=; z)qt0d5Ou5uOSJpq*^Su60T1Ed{5*2as%h*LGPrhBic-KoS|)<&!Sq_ z{>eBZlxtRwK7W>I{)5cJvwY4~#BqZxPZN-i2DK8?PQGLk0O$4Qg+H+CGr4vJ?B>04@f4h~&e|c)19@DURhit60L*)Lpr!)VNI2jNMLOlyaX= z9-Z^?#ca$6o@LbH6%HUe#^?j5^ z#|Xq3wJ(cIy3;-c+!iuSTe}zC;mZErO{6?VFS|0OINwdpqo!UHuGBSA;aaY;*QEY) zd2H3{*vzmZ2IHpbjSKKaW4JDK@Oy>y-ifMPo;R>8?iM*PAO^`4hT6_7Ro&xB=``eA z?pT%7v4bx$nmo>N7`FlS0N76L@a|}O#@0%IR+e9BxV25r%nHrH&ezBHN(8uYzCl;U zG2-?{2Pmx>jqZ(oXXYL%bTj-k0UMrxhKI=!aiz(aj2WGq{gJ1-F?sj6yQ`cl&7NNL z#T1Mk@KD-70b9&W%;iQMY#~&5Nu{{QzDLtyic=dHpeQne2fus{Z&Wf{Tb_f7DT^m; z_RE#^i?_dSz;95cxev<~kDN)@V&m>v#@bgV+02yUUGvjR%P9Kg%rrW*Q^)2meouF> z$ibxJ=#n>mKBDKzOm=Vm;JEsbpfh`$kFZvLq=%rn;W(QLr7n0kHI3$bo?E9llMv;H z*hAyg@%6Qbf@oLWadVzmuVa<*EiWP(x|J5ajEA!}18@VonZr4iIkC9L?v~s&9E@Rl zVvhK+Qt=3wQbNbd%Ik&~Pvmn(iv;oGrXud{>~d43{5J#c-@vUEx#(V%l&?t0fXOgj zs;`BoH=Z$gY`3(cUS+gKh$1+fBoa1B+sa}XHwkCbH*Lh-S>0Fe1gB5l9`K5%f;&d_ z)0z=5nQozFtvqX=E(WLd+zL=sx$WLSaKp_pGm$pITKQo%%p00}va(9cO4?QNz7c(cRg32m^&MfhXJk#t9&uB@!Q>!odRrDE$E z{o)c}Lmiy&Myj;nf!t1j0hJ>I@{%-OGx>s1DuF_0EG|G+(%t6=Pl?~R)6JO9XD@6w zcApU>EjLVJ#aKXh)$*uHYN9P^xC5WQ<#tBU@k}aV9$V|;B zOzCz-y;B6};JPRo#%ZGb*@THh@8_WJ{+hQ`u6IHbq6cE@)@ulE$zNZ$;uUB%+Xf=1jSG5ZR`Sl%rRC_a@rk^ls!^Yq zQ!C)#@pRpM)x>VnqC6(Ykmf?u0CsUic7>6%FH`O#ojYFEHQ&TNWSo(+p4GmP^}{A< z{8yDXu{phr@%f)g+Ts~TRxS=F3YxCIl~HKQQ*fViX_##pxRxpYFk(AIXe(?bWKo3`JcuI9Yg zy0A;Jc;qmi$LXO};cMC%&Y|%IL5L{*1!6(qg;Q3`ZN68}RY$0XqZm<(wz%{7X;cVW zc-)K=vct&BmrFYT-s8)i&uXkP-LB{-(;C5kX1tWf`ijV~4&cqe`qIof&^sb%5(kr_Cd+O3nm!wEN3(cbUjD-dt+yNuADs&ho z`U254Zdz8acyP~l4LSeHI?n2&@r(V!JO7Qf2HO;FDH$7Yteb)y-w@LWcYvHn zBp87ANDD^-q-iBV7+b0ZC#{H?fwEV(Ln)NQNIsTJMbkDIG$gb}3nSHV=nZ?OGnB9+ z`Bei(tP0dL5@VR*gqR7<10Zy3Hi|h4=S8HzaUD#Q-*e0#2p`=~5PJG!l52aMtT1`y9RXX(}20JS4F$Da?U z=HNjaeYGG870uub94}fUXg5UUWm}QG1zJaRWCH5@5XEkQ{@Wz?hkf22kzM6%Hjv+m z4;vnyJAFV@R5T!NGHU5|qIt42<<*~g#CPjYNEiU6u~*NKjug7wnxW|*j+{}Rge)%+ z^}2Bx+c%4zMESp|oe(4pMUY}F!Gcbr?s=Z^x2;L_kZq(vuTi?vFf7+#6FPqh4h>SZ za`~055ZP66DbR9GfL}&uD4}c&u~?wl1O0~5ojXZT`&Ea2)tE?VLY{CsC}YVRf!Ys2 z0(=P_-P2cOAA+6PK8Xc-(@Q|l>I6p*jM%7k3T$V1poBEWg2)186%WJSD*KX1X!XA^ zWp=erD?a`o7PK@bRnU3aCfH)a_^)cp{Zu~k(&d#f7DRV=3&#}C?AHATibm5PAxw!Rw3aXnSY2b<67&b zKCf~m^+=@E_)pml70N)>;X^H;HYi;9vrwOq`eW)b+0rkjmlB@3=H-fxpy`<%e+no( z2hfR4JJS=PPWG?Oj|AD^6x+jZvx6?0(2|@8)oMH-}pBWYRm)_&9MJS(rhL|sT91=(BUV9OQK`&rVGH0g-fy9PqtzK7z?*K@;?f%8ac0tvM0eP%ACcOBU?`VkfZ|bIYh0Xww5p68`V$Y zW^ir@0nVxj`uq+~!U4?;$qTOP(ceWUBURfT`)^mJYE!ni@2~J?HVLu5^OV8OpaF}C z=u-1~_gIO&%a-EWjg8XHe5}*4mh|_f0zgB40Ywmhi7zRynro1#3keEDIRC5MV|%=tFgSc(NyXpnU$)Tm2(HC0KzbJ>{<as+1Y{=6cbG6AOtsDYf`DkuNJ2F(KgN6GW! zCut`Sg^W#=9kN$4PC=)p82|V_s0Li8`jcXH2;bW*8)PC=z?3NhvpD*Id*lJP&EV6M zm}+)yhe2XQe&RaP!=aej20>s0TDdzQhry0Gn5ECh-FaVv2vRq~BuSeaQ?&t7!8)X7 zh^IL~ok6%YBhPGFa-U1|4%>V(IE#$4!vf#;i#0?v;yBd zWy4$~BPTZ^_|B?REky7R57n#X8V4hLEP)`;3u%u!!_W^Kbb0_)?fBwk-Ic~RkVBkW zT!$um)D4dg*9haaHMYSq6n!K0M77&>Hze;V+c`7}NsOfzSpPLtY%e$ZI!IDGNNfK` zVYA!@xfh4aj|a?J#dngETij`83&ks*?$H%Dz&%zWY5#CW6dJOdzaDuE$7=Kn9O{Y# zWr`0KAEtiU9e70Xm;0+It-ZBe@k*{>wJ3zQ1401>a354VP|WVRo&L-~E$~*UO zcNq#NXlnRSvP+;N=c*o&xqg?@Nj(WW@1vl(>$;OaDQ@aDxCZYl7jWPyEbzk|P#Q6B zhOYdUF$FqwT2Vk8wE76Fe=mpgq9k!$A7W>V7iA^oft^Qah|4FD^S5RSwJee-j&GL{ zK`ccWTD<~ANK}*jr8holJYRb($91D|1^Ynw-7goVU-yVp?fpgFkW4Jus9S{c^?9y(&d(hdL1V_L~wm`q~vYLzYi(j4@x>81@ z4CXJK(TYq{!=L&f3_pIy#cJH01eU#SnQ6Xy|0-LZxec9$`3>B<@7CQ!_Tp_#HYr4T z-}@ES`-Mk^ytCKp5+9aLDw7^c2sdvTsSZ5;{6^1um)RsRa3KS8A+*p!n9^+rDoud! zKIX>`>{*d=ajwy`B{FpV*}U%~FTW;n@8F&@)GW7zshrb)3y9z5yj8>VE-?K|0(h7e z@G&$|O~JhaXsHBfWikc(G*=xNin_D#afy8Rnqz%SSfP*!p+=QS?JYtGG_od?0lr>v z;4kVc703wr04?AXbFOR4W*^L;n+P2Tf{IJf=mnjx8(7|A0VGBN^#^`#Kzs16M8Jl{ z`JKz2uLjZ=eENdQ8ucOP{#{z1SJE?XT`0x%yT`X!{Sad~eCQ|G6E2>Gb}mCpo!)(K zoHqS4q;3tY9s8EAK`P*8VPHEM`i_s9u@g?Qi37jMkYR=$4w3?R`fRhbXs5*O+qdiN z>@KpgiOL^^4z5->2kZEP{l<&%Sj()!yyj@Bbag|NGu!zq@_x_M_*% zuj^XZTIV{?bA{Blt3l-yS7E51zh`T1FyU)zea}ZIv0@V9&I3ioIJk$hcG|vcff#^R z_yYD%^5;LAp7YHMWzl38B26G{p}twq>U+NpZe&Hta)1M)AV_*HbJ<~gB_;KHXTx79K0_l1ft!zH$(HduQ)UKcaC+R? zT}Tv4%^1uP9#}|JG+{@mMPLXQ6jWANEZ}#Jz~gPUBIoDz6Otzpwxq>ZPri8gr!PLg zm8z@#o|STv=A7g7+0<* z{121y`vN2X=v?1lT#K8d1h>0|6P39FqAS}goDQcJq33IsV_q{0?O%Ymjk`Xp;r~lY zZpXnPqNddRZVRf!mID0aN7X(*(~UDn3qUS$1%z2(NE}>|T8X>?;8*ok8@4J#@8eJH z5tR8u1^89!32B=cdBpEn^u|jPkK#_r)|+pKI5_%-hKPGYKs3TRA}&m zh0{M#W_RBXOyqt_r(w!?27uN!C^p=_fB0QqU(T&TS$}`(!zp0)w-Dq_uH&GaJB`3y z|Lf-H>tOr_e<7yH4Lsn}<%4MfgJ`Y{thbtHq2-2@(hO3zwzdc?fWAJ_3*1ntD`W&F z%cHf@7P&w%%j(X1#lKjA{!`?1TAFrGPPKuM=MVk-W-Ni!2x_IuQJsB75L*3^Ju~lo zM(m_^p`3=Vk@tQBd^TcI#whLQaxm5!)%fffzhbx;5DZir%G^Gr?uVdc3IfM~c*Lf6 zdwZj37GeB8FVaAia3qBM@u=t5u+SxbB1%f?{47bPZ-B-62L;+n<;q(x5uSNI%$%U# z_we6L1MB)CSnRYz|8{WPH0tHb8)1+#zMpJ9PsT6}B|rG`1ply`Wo!AsB>~aLD}LNRG7_9X z45mS6*n>PYkPHCE0V`igZ&lJ zN2>AUJ4cwv%*cJkBe02{m>okEea;M4t~Tx}|AXQ9ivZgv7oMwIg98*9HOh`37GO9% z1*vLxkzvwox&3N7p+vyi8dv^K1x2bASm&C6hoiEG%cZ4h%QKt=Vp>_Dyo5K80)~54 zuJX_Ff6Vmke6DJC_MfSoE;13k7 ze|U#}SHu)PN2EKp3&-A+L1GMaa>4GxxH-XrAwdn<0Mj?P$)8nIB6lB%cbXe!%avT( zB8>lHb;26q6$Z*}T%2csC-_Gcc~fCm&Bb{~bhn<8A9LstnfhMOHWIAw08!52;QMsy z;J+D2f~i;D(udp!#fe}4ij2S{MlvhN?}2@kf4FRoeB51NFfGbRHYkk3yD*sT!ZQUrihretF zseJDE@B7>x3-Hq=16P26n*N6hUdZ7ezWe5DU_-3o%~(V)6)KQEC;Rg+S|;s%ce>ke zH?DE}cgT+3Tt%cn2%Z!nuQqE$DfTB zME9_KL$u~y)j6qoYJ~Hz!;uUc;^f0O82Z~q?v|`4`xPoCVF;%fqtWZMGzl6o_l95o zqJzK#KEGm?_iiyE7e{Otvtf@OX#s!jKtV(s))cYOC43?)`;X$Fc~5#>z%lYaXqm$9 zmD@2&pba%b=(`N!`zJl26Qt17>x*~d4=@swfd8O{;lCBOmrsHrF+37A z@ZWF-dlli5L8@^sUElFGtyXy>CDLezU;dPnDd=vcvnB%`_w)!etJJDj`T{>?)ks>Jlvv~g@)5l18U$H z@LdP0WYdQLCKJh}_jcZp@8YBJYTw&p! zTI2n5;*z54@0{9SZ~E^oF(UuXh-OH}(0>wQ$RF+dO$Fo@)}KGNpks81mSDomU`Tq$R{4#F!#|VmHv-4 zig_mRVaxrf*lr($AHD}lO4C4)Zb$s65qBb}f)FnW-~+vH(r=K(lRN z&Jj#Z;dEI60%rn17~}|mXCm6iU zpc9NZ9PLBJ!z0*)T_{pzw}F9 zqYFC=HTP4m7yu;muL!U|v65B_dNTaLwOa@0XoR?nc&$K5a<&XKun1u>81xXGoeIb> z8MR_7dR9i?N@U90M>`WHt+Mv4a>+(FkjR*cU084O+qy02r(2R~3M1Lh!B-&=%p-!=HV3UCI&= z5ir(gPx3}i2TZo65gnMHSCPbfk{3XN_s z6(dHb4EYG3;4$4^`H7qxLg6hP81w`z{WL&R5MM-O>OxvE+OeyjQOQ{s`1go)JHze8 z$41$(+EWqOpy4pF5IL1a3c3PdM_tPTFOXT#A-BV=iyTrIzaazujwuH)`C=BLKhhbFO4ZKDI;(?FMeCExU)ys7WV7>`Tw?e^wl8gd5+J5~Bl^M@mZAAmegg=Rc z)m+Yfu{I|uDwyvy$?}ToH<0tK45{P�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