From 482abf516995cf01e8ff64cd074dca9ca63fca15 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Mon, 30 Oct 2023 18:29:40 -0500 Subject: [PATCH 01/38] added linear dz in vertical grid --- compass/ocean/vertical/grid_1d/__init__.py | 8 +++++ compass/ocean/vertical/grid_1d/linear_dz.py | 38 +++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 compass/ocean/vertical/grid_1d/linear_dz.py diff --git a/compass/ocean/vertical/grid_1d/__init__.py b/compass/ocean/vertical/grid_1d/__init__.py index fab57b5f23..89064fb8ec 100644 --- a/compass/ocean/vertical/grid_1d/__init__.py +++ b/compass/ocean/vertical/grid_1d/__init__.py @@ -8,6 +8,7 @@ from compass.ocean.vertical.grid_1d.index_tanh_dz import ( create_index_tanh_dz_grid, ) +from compass.ocean.vertical.grid_1d.linear_dz import create_linear_dz_grid from compass.ocean.vertical.grid_1d.tanh_dz import create_tanh_dz_grid @@ -32,6 +33,13 @@ def generate_1d_grid(config): if grid_type == 'uniform': vert_levels = section.getint('vert_levels') interfaces = _generate_uniform(vert_levels) + elif grid_type == 'linear_dz': + vert_levels = section.getint('vert_levels') + bottom_depth = section.getfloat('bottom_depth') + linear_dz_rate = section.getfloat('linear_dz_rate') + interfaces = create_linear_dz_grid(vert_levels, + bottom_depth, + linear_dz_rate) elif grid_type == 'tanh_dz': vert_levels = section.getint('vert_levels') min_layer_thickness = section.getfloat('min_layer_thickness') diff --git a/compass/ocean/vertical/grid_1d/linear_dz.py b/compass/ocean/vertical/grid_1d/linear_dz.py new file mode 100644 index 0000000000..465fd8bd9a --- /dev/null +++ b/compass/ocean/vertical/grid_1d/linear_dz.py @@ -0,0 +1,38 @@ +import numpy +import numpy as np + + +def create_linear_dz_grid(num_vert_levels, bottom_depth, + linear_dz_rate): + """ + Creates the linear vertical grid for MPAS-Ocean and + writes it to a NetCDF file + + Parameters + ---------- + num_vert_levels : int + Number of vertical levels for the grid + + bottom_depth : float + bottom depth for the chosen vertical coordinate [m] + + linear_dz_rate : float + rate of layer thickness increase (for linear_dz) [m] + + Returns + ------- + interfaces : numpy.ndarray + A 1D array of positive depths for layer interfaces in meters + """ + + nz = num_vert_levels + layerThickness = [(bottom_depth / nz) - (np.floor(nz / 2) - k) * + linear_dz_rate for k in np.arange(0, nz)] + min_layer_thickness = layerThickness[0] + max_layer_thickness = layerThickness[-1] + print('Linear dz vertical grid') + print(f'min layer thickness: {min_layer_thickness}; ' + f'max layer thickness {max_layer_thickness} in m;') + interfaces = - np.append([0], np.cumsum(layerThickness)) + + return interfaces From 67daaa142cc65a751f17b73a57080dbd3797a066 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Tue, 31 Oct 2023 12:53:00 -0500 Subject: [PATCH 02/38] added baroclinic gyre test case - main files --- compass/ocean/__init__.py | 2 + .../ocean/tests/baroclinic_gyre/__init__.py | 22 +++ .../tests/baroclinic_gyre/baroclinic_gyre.cfg | 43 ++++++ .../ocean/tests/baroclinic_gyre/cull_mesh.py | 61 ++++++++ .../ocean/tests/baroclinic_gyre/forward.py | 101 ++++++++++++++ .../tests/baroclinic_gyre/gyre_test_case.py | 69 +++++++++ .../tests/baroclinic_gyre/initial_state.py | 132 ++++++++++++++++++ .../tests/baroclinic_gyre/namelist.forward | 17 +++ .../tests/baroclinic_gyre/streams.forward | 59 ++++++++ 9 files changed, 506 insertions(+) create mode 100644 compass/ocean/tests/baroclinic_gyre/__init__.py create mode 100644 compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg create mode 100644 compass/ocean/tests/baroclinic_gyre/cull_mesh.py create mode 100644 compass/ocean/tests/baroclinic_gyre/forward.py create mode 100644 compass/ocean/tests/baroclinic_gyre/gyre_test_case.py create mode 100644 compass/ocean/tests/baroclinic_gyre/initial_state.py create mode 100644 compass/ocean/tests/baroclinic_gyre/namelist.forward create mode 100644 compass/ocean/tests/baroclinic_gyre/streams.forward diff --git a/compass/ocean/__init__.py b/compass/ocean/__init__.py index 7bf9296c18..c9e8619193 100644 --- a/compass/ocean/__init__.py +++ b/compass/ocean/__init__.py @@ -1,5 +1,6 @@ from compass.mpas_core import MpasCore from compass.ocean.tests.baroclinic_channel import BaroclinicChannel +from compass.ocean.tests.baroclinic_gyre import BaroclinicGyre from compass.ocean.tests.buttermilk_bay import ButtermilkBay from compass.ocean.tests.dam_break import DamBreak from compass.ocean.tests.drying_slope import DryingSlope @@ -38,6 +39,7 @@ def __init__(self): super().__init__(name='ocean') self.add_test_group(BaroclinicChannel(mpas_core=self)) + self.add_test_group(BaroclinicGyre(mpas_core=self)) self.add_test_group(ButtermilkBay(mpas_core=self)) self.add_test_group(DamBreak(mpas_core=self)) self.add_test_group(DryingSlope(mpas_core=self)) diff --git a/compass/ocean/tests/baroclinic_gyre/__init__.py b/compass/ocean/tests/baroclinic_gyre/__init__.py new file mode 100644 index 0000000000..f43e3fd600 --- /dev/null +++ b/compass/ocean/tests/baroclinic_gyre/__init__.py @@ -0,0 +1,22 @@ +from compass.ocean.tests.baroclinic_gyre.gyre_test_case import GyreTestCase +from compass.testgroup import TestGroup + + +class BaroclinicGyre(TestGroup): + """ + A test group for baroclinic gyre test cases + """ + def __init__(self, mpas_core): + """ + mpas_core : compass.MpasCore + the MPAS core that this test group belongs to + """ + super().__init__(mpas_core=mpas_core, name='baroclinic_gyre') + + for resolution in ['80km']: + self.add_test_case( + GyreTestCase(test_group=self, resolution=resolution, + long=False)) + self.add_test_case( + GyreTestCase(test_group=self, resolution=resolution, + long=True)) diff --git a/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg b/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg new file mode 100644 index 0000000000..69197991f9 --- /dev/null +++ b/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg @@ -0,0 +1,43 @@ + +# Options related to the vertical grid +[vertical_grid] + +# the type of vertical grid +grid_type = linear_dz + +# the linear rate of thickness increase for linear_dz +linear_dz_rate = 10. + +# Number of vertical levels +vert_levels = 15 + +# Total water column depth +bottom_depth = 1800. + +# The type of vertical coordinate (e.g. z-level, z-star) +coord_type = z-star + +# 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 + + +# config options for the baroclinic gyre +[baroclinic_gyre] +# comment +lat_min = 15 +lat_max = 75 +lon_min = 0 +lon_max = 60 + +# Maximum zonal wind stress value +wind_stress_max = 0.1 + +# Surface temperature restoring +temp_min = 0. +temp_max = 30. + +# Restoring piston velocity for surface temperature (s-1) +restoring_temp_piston_vel = 3.86e-7 diff --git a/compass/ocean/tests/baroclinic_gyre/cull_mesh.py b/compass/ocean/tests/baroclinic_gyre/cull_mesh.py new file mode 100644 index 0000000000..54cdc176c7 --- /dev/null +++ b/compass/ocean/tests/baroclinic_gyre/cull_mesh.py @@ -0,0 +1,61 @@ +import numpy as np +import xarray as xr +from mpas_tools.io import write_netcdf +from mpas_tools.mesh.conversion import convert, cull + +from compass.step import Step + + +class CullMesh(Step): + """ + Cull a global mesh to only a signle basin + Attributes + ---------- + """ + def __init__(self, test_case): + """ + Create the step + Parameters + ---------- + test_case : compass.TestCase + The test case this step belongs to + """ + super().__init__(test_case=test_case, name='cull_mesh') + + self.add_input_file( + filename='base_mesh.nc', + target='../base_mesh/base_mesh.nc') + + for file in ['culled_mesh.nc', 'culled_graph.info']: + self.add_output_file(file) + + def run(self): + """ + Run this step of the test case + """ + config = self.config + section = config['baroclinic_gyre'] + logger = self.logger + ds_mesh = xr.open_dataset('base_mesh.nc') + ds_mask = xr.Dataset() + + lon = np.rad2deg(ds_mesh.lonCell.values) + lat = np.rad2deg(ds_mesh.latCell.values) + lon_min = section.getfloat('lon_min') + lon_max = section.getfloat('lon_max') + lat_min = section.getfloat('lat_min') + lat_max = section.getfloat('lat_max') + + mask = np.logical_and( + np.logical_and(lon >= lon_min, lon <= lon_max), + np.logical_and(lat >= lat_min, lat <= lat_max)) + + n_cells = ds_mesh.sizes['nCells'] + ds_mask['regionCellMasks'] = (('nCells', 'nRegions'), + mask.astype(int).reshape(n_cells, 1)) + + ds_mesh = cull(ds_mesh, dsInverse=ds_mask, logger=logger) + ds_mesh = convert(ds_mesh, graphInfoFileName='culled_graph.info', + logger=logger) + + write_netcdf(ds_mesh, 'culled_mesh.nc') diff --git a/compass/ocean/tests/baroclinic_gyre/forward.py b/compass/ocean/tests/baroclinic_gyre/forward.py new file mode 100644 index 0000000000..c7cf5921ef --- /dev/null +++ b/compass/ocean/tests/baroclinic_gyre/forward.py @@ -0,0 +1,101 @@ +from compass.model import run_model +from compass.step import Step + + +class Forward(Step): + """ + A step for performing forward MPAS-Ocean runs as part of + the baroclinic gyre test cases. + + Attributes + ---------- + resolution : str + The resolution of the test case + + """ + def __init__(self, test_case, resolution, name='forward', subdir=None, + long=False): + """ + Create a new test case + + Parameters + ---------- + test_case : compass.TestCase + The test case this step belongs to + + resolution : str + The resolution of the test case + + name : str + the name of the test case + + subdir : str, optional + the subdirectory for the step. The default is ``name`` + + long : bool, optional + Whether to run a long (3-year) simulation to quasi-equilibrium + """ + self.resolution = resolution + res_params = {'80km': {'ntasks': 20, # MODIFY + 'min_tasks': 2, + 'dt': "'00:12:00'", + 'btr_dt': "'00:00:36'", + 'mom_del4': "5.0e10", + 'run_duration': "'0000_00:36:00'"}} + + if resolution not in res_params: + raise ValueError( + f'Unsupported resolution {resolution}. Supported values are: ' + f'{list(res_params)}') + + res_params = res_params[resolution] + + ntasks = res_params['ntasks'] + min_tasks = res_params['min_tasks'] + + super().__init__(test_case=test_case, name=name, subdir=subdir, + ntasks=ntasks, min_tasks=min_tasks, openmp_threads=1) + + # make sure output is double precision + self.add_streams_file('compass.ocean.streams', 'streams.output') + + self.add_namelist_file('compass.ocean.tests.baroclinic_gyre', + 'namelist.forward') + if long: + output_interval = "0010_00:00:00" + restart_interval = "0010_00:00:00" + else: + output_interval = res_params['run_duration'].replace("'", "") + restart_interval = "0030_00:00:00" + replacements = dict( + output_interval=output_interval, restart_interval=restart_interval) + self.add_streams_file(package='compass.ocean.tests.baroclinic_gyre', + streams='streams.forward', + template_replacements=replacements) + options = dict() + for option in ['dt', 'btr_dt', 'mom_del4', 'run_duration']: + options[f'config_{option}'] = res_params[option] + if long: + # run for 3 years instead of 3 time steps + options['config_start_time'] = "'0001-01-01_00:00:00'" + options['config_stop_time'] = "'0004-01-01_00:00:00'" + options['config_run_duration'] = "'none'" + + self.add_input_file(filename='init.nc', + target='../initial_state/initial_state.nc') + self.add_input_file(filename='forcing.nc', + target='../initial_state/forcing.nc') + self.add_input_file(filename='graph.info', + target='../initial_state/culled_graph.info') + + self.add_model_as_input() + + self.add_output_file(filename='output/output.0001-01-01_00.00.00.nc') + + # no setup() is needed + + def run(self): + """ + Run this step of the test case + """ + run_model(self, partition_graph=True) diff --git a/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py b/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py new file mode 100644 index 0000000000..e108f8b799 --- /dev/null +++ b/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py @@ -0,0 +1,69 @@ +from compass.mesh import QuasiUniformSphericalMeshStep +from compass.ocean.tests.baroclinic_gyre.cull_mesh import CullMesh +from compass.ocean.tests.baroclinic_gyre.forward import Forward +from compass.ocean.tests.baroclinic_gyre.initial_state import InitialState +from compass.testcase import TestCase +from compass.validate import compare_variables + + +class GyreTestCase(TestCase): + """ + A class to define the baroclinic gyre test cases + + Attributes + ---------- + resolution : str + The resolution of the test case + """ + + def __init__(self, test_group, resolution, long): + """ + Create the test case + + Parameters + ---------- + test_group : + compass.ocean.tests.baroclinic_gyre.BaroclinicGyre + The test group that this test case belongs to + + resolution : str + The resolution of the test case + + long : bool + Whether to run a long (3-year) simulation to quasi-equilibrium + """ + name = 'performance' + self.resolution = resolution + self.long = long + + if long: + name = 'long' + + subdir = f'{resolution}/{name}' + super().__init__(test_group=test_group, name=name, + subdir=subdir) + + self.add_step(QuasiUniformSphericalMeshStep( + test_case=self, cell_width=int(resolution[:-2]))) + self.add_step(CullMesh(test_case=self)) + self.add_step( + InitialState(test_case=self, resolution=resolution)) + self.add_step( + Forward(test_case=self, resolution=resolution, + long=long)) + + def configure(self): + """ + Set config options for the test case + """ + config = self.config + config.add_from_package('compass.mesh', 'mesh.cfg') + + def validate(self): + """ + Validate variables against a baseline + """ + compare_variables(test_case=self, + variables=['layerThickness', 'temperature', + 'ssh'], + filename1='forward/output.nc') diff --git a/compass/ocean/tests/baroclinic_gyre/initial_state.py b/compass/ocean/tests/baroclinic_gyre/initial_state.py new file mode 100644 index 0000000000..ccac9e6c1d --- /dev/null +++ b/compass/ocean/tests/baroclinic_gyre/initial_state.py @@ -0,0 +1,132 @@ +import numpy as np +import xarray as xr +from mpas_tools.io import write_netcdf + +from compass.ocean.vertical import init_vertical_coord +from compass.step import Step + + +class InitialState(Step): + """ + A step for creating the initial condition for the baroclinic gyre + test cases + + Attributes + ---------- + resolution : str + The resolution of the test case + """ + def __init__(self, test_case, resolution): + """ + Create the step + + Parameters + ---------- + test_case : compass.TestCase + The test case this step belongs to + + resolution : str + The resolution of the test case + """ + super().__init__(test_case=test_case, name='initial_state') + self.resolution = resolution + self.add_input_file( + filename='culled_mesh.nc', + target='../cull_mesh/culled_mesh.nc') + self.add_input_file( + filename='culled_graph.info', + target='../cull_mesh/culled_graph.info') + + self.add_output_file('initial_state.nc') + + def run(self): + """ + Run this step of the test case + """ + config = self.config + + dsMesh = xr.open_dataset('culled_mesh.nc') + + ds = _write_initial_state(config, dsMesh) + + _write_forcing(config, ds.latCell) + + +def _write_initial_state(config, dsMesh): + # section = config['baroclinic_gyre'] + + ds = dsMesh.copy() + + bottom_depth = config.getfloat('vertical_grid', 'bottom_depth') + ds['bottomDepth'] = bottom_depth * xr.ones_like(ds.xCell) + ds['ssh'] = xr.zeros_like(ds.xCell) + + init_vertical_coord(config, ds) + + # setting the initial conditions + temperature = (-11. * np.log(0.0414 * + (-1. * ds.zMid + 100.3)) + 48.8) + temperature = temperature.transpose('Time', 'nCells', 'nVertLevels') + print(f'bottom T: {temperature[0, 200, -1]} and \ + surface : {temperature[0, 200, 0]}') + salinity = 34.0 * xr.ones_like(temperature) + + normalVelocity = xr.zeros_like(ds.xEdge) + normalVelocity, _ = xr.broadcast(normalVelocity, ds.refBottomDepth) + normalVelocity = normalVelocity.transpose('nEdges', 'nVertLevels') + normalVelocity = normalVelocity.expand_dims(dim='Time', axis=0) + + ds['temperature'] = temperature + ds['salinity'] = salinity + ds['normalVelocity'] = normalVelocity + + omega = 2. * np.pi / 86164. + ds['fCell'] = 2. * omega * np.sin(ds.latCell) + ds['fEdge'] = 2. * omega * np.sin(ds.latEdge) + ds['fVertex'] = 2. * omega * np.sin(ds.latVertex) + + write_netcdf(ds, 'initial_state.nc') + return ds + + +def _write_forcing(config, lat): + section = config['baroclinic_gyre'] + latMin = section.getfloat('lat_min') + latMax = section.getfloat('lat_max') + tauMax = section.getfloat('wind_stress_max') + tempMin = section.getfloat('temp_min') + tempMax = section.getfloat('temp_max') + restoring_temp_piston_vel = section.getfloat('restoring_temp_piston_vel') + lat = np.rad2deg(lat) + # set wind stress + windStressZonal = - tauMax * np.cos(2 * np.pi * (lat - latMin) / + (latMax - latMin)) + + windStressZonal = windStressZonal.expand_dims(dim='Time', axis=0) + + windStressMeridional = xr.zeros_like(windStressZonal) + + # surface restoring + temperatureSurfaceRestoringValue = \ + (tempMax - tempMin) * (latMax - lat) / (latMax - latMin) + tempMin + temperatureSurfaceRestoringValue = \ + temperatureSurfaceRestoringValue.expand_dims(dim='Time', axis=0) + + temperaturePistonVelocity = \ + restoring_temp_piston_vel * xr.ones_like( + temperatureSurfaceRestoringValue) + + salinitySurfaceRestoringValue = \ + 34.0 * xr.ones_like(temperatureSurfaceRestoringValue) + salinityPistonVelocity = xr.zeros_like(temperaturePistonVelocity) + + dsForcing = xr.Dataset() + dsForcing['windStressZonal'] = windStressZonal + dsForcing['windStressMeridional'] = windStressMeridional + dsForcing['temperaturePistonVelocity'] = temperaturePistonVelocity + dsForcing['salinityPistonVelocity'] = salinityPistonVelocity + dsForcing['temperatureSurfaceRestoringValue'] = \ + temperatureSurfaceRestoringValue + dsForcing['salinitySurfaceRestoringValue'] = salinitySurfaceRestoringValue + + write_netcdf(dsForcing, 'forcing.nc') diff --git a/compass/ocean/tests/baroclinic_gyre/namelist.forward b/compass/ocean/tests/baroclinic_gyre/namelist.forward new file mode 100644 index 0000000000..d7354563a0 --- /dev/null +++ b/compass/ocean/tests/baroclinic_gyre/namelist.forward @@ -0,0 +1,17 @@ +config_use_mom_del4 = .true. +config_mom_del4_div_factor = 10.0 +config_use_cvmix_convection = .true. +config_cvmix_background_diffusion = 5.0e-6 +config_cvmix_convective_basedOnBVF = .true. +config_use_cvmix_shear = .true. +config_cvmix_shear_mixing_scheme = 'KPP' +config_use_cvmix_kpp = .true. +config_use_bulk_wind_stress = .true. +config_eos_linear_alpha = 0.255 +config_eos_linear_Tref = 19.0 +config_eos_linear_Sref = 34.0 +config_eos_linear_densityref = 1025.0 +config_implicit_bottom_drag_coeff = 3.0e-3 +config_use_activeTracers_surface_bulk_forcing = .false. +config_use_activeTracers_surface_restoring = .true. +config_use_activeTracers_interior_restoring = .false. diff --git a/compass/ocean/tests/baroclinic_gyre/streams.forward b/compass/ocean/tests/baroclinic_gyre/streams.forward new file mode 100644 index 0000000000..f9a5343a42 --- /dev/null +++ b/compass/ocean/tests/baroclinic_gyre/streams.forward @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 10081cf0823918373309be495eb0473d2bc8d885 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Tue, 31 Oct 2023 13:16:26 -0500 Subject: [PATCH 03/38] added baroclinic gyre - documentation --- docs/developers_guide/ocean/api.rst | 20 +++ .../ocean/test_groups/baroclinic_gyre.rst | 66 +++++++ .../ocean/test_groups/index.rst | 1 + .../ocean/test_groups/baroclinic_gyre.rst | 168 ++++++++++++++++++ docs/users_guide/ocean/test_groups/index.rst | 1 + 5 files changed, 256 insertions(+) create mode 100644 docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst create mode 100644 docs/users_guide/ocean/test_groups/baroclinic_gyre.rst diff --git a/docs/developers_guide/ocean/api.rst b/docs/developers_guide/ocean/api.rst index 710c81c4fe..f61752704e 100644 --- a/docs/developers_guide/ocean/api.rst +++ b/docs/developers_guide/ocean/api.rst @@ -83,6 +83,26 @@ buttermilk_bay viz.Viz.contour_plots +baroclinic_gyre +~~~~~~~~~~~~~~~~~~~~~~~ + +.. currentmodule:: compass.ocean.tests.baroclinic_gyre + +.. autosummary:: + :toctree: generated/ + + BaroclinicGyre + + GyreTestCase + GyreTestCase.configure + + forward.Forward + forward.Forward.run + + initial_state.InitialState + initial_state.InitialState.run + + dam_break ~~~~~~~~~ diff --git a/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst b/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst new file mode 100644 index 0000000000..300de2f6c8 --- /dev/null +++ b/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst @@ -0,0 +1,66 @@ +.. _dev_baroclinic_gyre: + +baroclinic_gyre +=========================== + +The ``baroclinic_gyre`` test group implements variants of the +Baroclinic ocean gyre set-up from the +`MITgcm test case `_. + +This test case is described in detail in the User guide (see :ref:`baroclinic_gyre`). Here, +we describe the shared framework for this test group. + +Framework +-------------- + +At this stage, the test case is available at 80-km horizontal +resolution. By default, the 15 vertical layers vary linearly in thickness with depth, from 50m at the surface to 190m at depth (full depth: 1800m). + +The test group includes 2 test cases, called ``performance`` for a short (10-day) run, and ``long`` for a 3-year simulation to run it to quasi-equilibrium. Both test cases have 2 steps, +``initial_state``, which defines the mesh and initial conditions for the model, +and ``forward``, which performs the time integration of the model. + +Additionally, the test group has a shared ``namelist.forward`` file with +a few common namelist options related to horizontal +and vertical momentum and tracer diffusion, as well as a shared +``streams.forward`` file that defines ``mesh``, ``input``, ``restart``, and +``output`` streams. + +initial_state +~~~~~~~~~~~~~~~~ + +The class :py:class:`compass.ocean.tests.baroclinic_gyre.initial_state.InitialState` +defines a step for setting up the initial state for each test case. + +First, a mesh appropriate for the resolution is generated using +:py:class:`compass.mesh.QuasiUniformSphericalMeshStep`. Then, the mesh is +culled to keep a single ocean basin (with lat, lon bounds set in `.cfg` file). A vertical grid is generated, +with 15 layers of thickness that increases linearly with depth (10m increase by default), from 50m at the surface to 190m at depth (full depth: 1800m). +Finally, the initial temperature field is initialized with a vertical profile to match the discrete values set in the `MITgcm test case `_, uniform in horizontal space. Salinity is set to a constant value (34 pus) and initial +velocity is set to zero. + +The ``initial_state`` step also generates the forcing, defined as zonal wind stress that varies with latitude, surface temperature restoring that varies with latitutde, and writes it to `forcing.nc`. + +forward +~~~~~~~~~ + +The class :py:class:`compass.ocean.tests.baroclinic_gyre.forward.Forward` +defines a step for running MPAS-Ocean from the initial condition produced in +the ``initial_state`` step. + +performance +------------- + +``ocean/baroclinic_gyre/80km/performance`` is the default version of the +baroclinic eddies test case for a short (10-day) test run and validation of +prognostic variables for regression testing. Currently, only the 80-km horizontal +resolution is supported. + +long +----------- + +``ocean/baroclinic_gyre/80km/long`` performs a longer (3 year) integration +of the model forward in time. The point is to compare the quasi-steady state with theroretical scaling and results from other models. Currently, only the 80-km horizontal +resolution is supported. + + diff --git a/docs/developers_guide/ocean/test_groups/index.rst b/docs/developers_guide/ocean/test_groups/index.rst index 258bda2911..19fe85b3af 100644 --- a/docs/developers_guide/ocean/test_groups/index.rst +++ b/docs/developers_guide/ocean/test_groups/index.rst @@ -8,6 +8,7 @@ Test groups :titlesonly: baroclinic_channel + baroclinic_gyre buttermilk_bay dam_break drying_slope diff --git a/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst b/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst new file mode 100644 index 0000000000..c419524071 --- /dev/null +++ b/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst @@ -0,0 +1,168 @@ +.. _baroclinic_gyre: + +baroclinic_gyre +======================= + +The ``baroclinic_gyre`` test group implements variants of the +baroclinic ocean gyre set-up from the +`MITgcm test case `_. + +This test simulates a baroclinic, wind and buoyancy-forced, double-gyre ocean circulation. +The grid employs spherical polar coordinates with 15 vertical layers. +The configuration is similar to the double-gyre setup first solved numerically +in `Cox and Bryan (1984) `_: the model is configured to +represent an enclosed sector of fluid on a sphere, spanning the tropics to mid-latitudes, +:math:`60^{\circ} \times 60^{\circ}` in lateral extent. +The fluid is :math:`1.8`\ km deep and is forced by a zonal wind +stress which is constant in time, :math:`\tau_{\lambda}`, varying sinusoidally in the +north-south direction. + +.. figure:: ../images/baroclinic_gyre_config.png + :width: 95% + :align: center + :alt: baroclinic gyre configuration + :name: baroclinic_gyre_config + + Schematic of simulation domain and wind-stress forcing function for baroclinic gyre numerical experiment. The domain is enclosed by solid walls. From `MITgcm test case `_. + +Forcing +-------------- + +The Coriolis parameter, :math:`f`, is defined +according to latitude :math:`\varphi` + +.. math:: + f(\varphi) = 2 \Omega \sin( \varphi ) + +with the rotation rate, :math:`\Omega` set to :math:`\frac{2 \pi}{86164} \text{s}^{-1}` (i.e., corresponding the to standard Earth rotation rate). +The sinusoidal wind-stress variations are defined according to + +.. math:: + \tau_{\lambda}(\varphi) = -\tau_{0}\cos \left(2 \pi \frac{\varphi-\varphi_o}{L_{\varphi}} \right) + +where :math:`L_{\varphi}` is the lateral domain extent +(:math:`60^{\circ}`), :math:`\varphi_o` is set to :math:`15^{\circ} \text{N}` and :math:`\tau_0` is :math:`0.1 \text{ N m}^{-2}`. +:ref:`baroclinic_gyre.cfg` summarizes the +configuration options used in this simulation. + +Temperature is restored in the surface layer to a linear profile: + +.. math:: + {\cal F}_\theta = - U_{piston} (\theta-\theta^*), \phantom{WWW} + \theta^* = \frac{\theta_{\rm max} - \theta_{\rm min}}{L_\varphi} (\varphi_{\rm max} - \varphi) + \theta_{\rm min} + :label: baroc_restore_theta + +where the piston velocity :math:`U_{piston}=3.86e-7 \text{ } (s^{-1})` (equivalent to a relaxation timescale of 30 days) and :math:`\theta_{\rm max}=30^{\circ}` C, :math:`\theta_{\rm min}=0^{\circ}` C. + +Initial state +-------------- + +Initially the fluid is stratified +with a reference potential temperature profile that varies from (approximately) :math:`\theta=30.7 \text{ } ^{\circ}`\ C +in the surface layer to :math:`\theta=1.3 \text{ } ^{\circ}`\ C in the bottom layer. The temperature values were determined by fitting an analytical function to the MITgcm discrete values (originally ranging from 2 to :math:`30 \text{ } ^{\circ}`\ C. +The equation of state used in this experiment is linear: + +.. math:: + \rho = \rho_{0} ( 1 - \alpha_{\theta}\theta^{\prime} ) + :label: rho_lineareos + +with :math:`\rho_{0}=999.8\,{\rm kg\,m}^{-3}` and +:math:`\alpha_{\theta}=2\times10^{-4}\,{\rm K}^{-1}`. The salinity is set to a uniform value of :math:`S=34`\ psu. +Given the linear equation of state, in this configuration the model state variable for temperature is +equivalent to either in-situ temperature, :math:`T`, or potential +temperature, :math:`\theta`. For simplicity, here we use the variable :math:`\theta` to +represent temperature. + +Analysis +-------------- + +For scientific validation, this test case is meant to be run to quasi-steady state and its mean state compared to the MITgcm test case and / or theoretical scaling. This is done through an analysis step in the ``long`` case. +Examples of qualitative plots include: i) equilibrated SSH contours on top of surface heat fluxes, ii) barotropic streamfunction (compared to MITgcm or a braotropic gyre test case). + +Examples of checks against theory include: iii) max of simulated barotropic streamfunction ~ Sverdrup transport, iv) simulated thermocline depth ~ scaling argument for penetration depth (Vallis (2017) or Cushman-Roisin and Beckers (2011). + +Consider the Sverdrup transport: + +.. math:: \rho v_{\rm bt} = \hat{\boldsymbol{k}} \cdot \frac{ \nabla \times \vec{\boldsymbol{\tau}}}{\beta} + +If we plug in a typical mid-latitude value for :math:`\beta` (:math:`2 \times 10^{-11}` m\ :sup:`-1` s\ :sup:`-1`) +and note that :math:`\tau` varies by :math:`0.1` Nm\ :sup:`2` over :math:`15^{\circ}` latitude, +and multiply by the width of our ocean sector, we obtain an estimate of approximately 20 Sv. + +This scaling is obtained via thermal wind and the linearized barotropic vorticity equation), +the depth of the thermocline :math:`h` should scale as: + +.. math:: h = \left( \frac{w_{\rm Ek} f^2 L_x}{\beta \Delta b} \right) ^2 = \left( \frac{(\tau / L_y) f L_x}{\beta \rho'} \right) ^2 + +where :math:`w_{\rm Ek}` is a representive value for Ekman pumping, :math:`\Delta b = g \rho' / \rho_0` +is the variation in buoyancy across the gyre, +and :math:`L_x` and :math:`L_y` are length scales in the +:math:`x` and :math:`y` directions, respectively. +Plugging in applicable values at :math:`30^{\circ}`\ N, +we obtain an estimate for :math:`h` of 200 m. + +.. _baroclinic_gyre.cfg: + +config options +-------------- + +All 2 test cases share the same set of config options: + +.. code-block:: cfg + + # Options related to the vertical grid + [vertical_grid] + + # the type of vertical grid + grid_type = linear_dz + + # the linear rate of thickness increase for linear_dz + linear_dz_rate = 10. + + # Number of vertical levels + vert_levels = 15 + + # Total water column depth + bottom_depth = 1800. + + # The type of vertical coordinate (e.g. z-level, z-star) + coord_type = z-star + + # 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 + + + # config options for MITgcm baroclinic gyre + [baroclinic_gyre] + # comment + lat_min = 15 + lat_max = 75 + lon_min = 0 + lon_max = 60 + + # Maximum zonal wind stress value + wind_stress_max = 0.1 + + # Surface temperature restoring + temp_min = 0. + temp_max = 30. + + # Restoring piston velocity for surface temperature (s-1) + restoring_temp_piston_vel = 3.86e-7 + +performance +------------ + +``ocean/baroclinic_gyre/performance`` is the default version of the +baroclinic_gyre test case for a short (10-day) test run and validation of +prognostic variables for regression testing. + +long +-------- + +``ocean/baroclinic_gyre/long`` is an additional version of the +baroclinic_gyre test case for a test run to quasi equilibirum (3 years) +and validation of the mean state against theory and results from other models. diff --git a/docs/users_guide/ocean/test_groups/index.rst b/docs/users_guide/ocean/test_groups/index.rst index 56e55dbbcc..60e9c5a7fd 100644 --- a/docs/users_guide/ocean/test_groups/index.rst +++ b/docs/users_guide/ocean/test_groups/index.rst @@ -12,6 +12,7 @@ coming months. :titlesonly: baroclinic_channel + baroclinic_gyre buttermilk_bay dam_break drying_slope From d3fbb8a359e0c974abba863b31d89324c9b88ca1 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Mon, 6 Nov 2023 11:14:45 -0600 Subject: [PATCH 04/38] corrected path to output --- compass/ocean/tests/baroclinic_gyre/gyre_test_case.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py b/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py index e108f8b799..2b77babfc6 100644 --- a/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py +++ b/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py @@ -66,4 +66,5 @@ def validate(self): compare_variables(test_case=self, variables=['layerThickness', 'temperature', 'ssh'], - filename1='forward/output.nc') + filename1='forward/output/' + 'output.0001-01-01_00.00.00.nc') From 4b26fd5934b48c1eb076bcbe40c6de4f40685eff Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Mon, 6 Nov 2023 11:45:11 -0600 Subject: [PATCH 05/38] suggested changes: salinity --- .../ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg | 5 ++++- .../ocean/tests/baroclinic_gyre/initial_state.py | 13 ++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg b/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg index 69197991f9..d3187cad23 100644 --- a/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg +++ b/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg @@ -26,7 +26,7 @@ min_pc_fraction = 0.1 # config options for the baroclinic gyre [baroclinic_gyre] -# comment +# Basin dimensions lat_min = 15 lat_max = 75 lon_min = 0 @@ -35,6 +35,9 @@ lon_max = 60 # Maximum zonal wind stress value wind_stress_max = 0.1 +# Constant salinity value (also used in restoring) +initial_salinity = 34. + # Surface temperature restoring temp_min = 0. temp_max = 30. diff --git a/compass/ocean/tests/baroclinic_gyre/initial_state.py b/compass/ocean/tests/baroclinic_gyre/initial_state.py index ccac9e6c1d..fa8f808af8 100644 --- a/compass/ocean/tests/baroclinic_gyre/initial_state.py +++ b/compass/ocean/tests/baroclinic_gyre/initial_state.py @@ -1,5 +1,6 @@ import numpy as np import xarray as xr +from mpas_tools.cime.constants import constants from mpas_tools.io import write_netcdf from compass.ocean.vertical import init_vertical_coord @@ -64,12 +65,13 @@ def _write_initial_state(config, dsMesh): init_vertical_coord(config, ds) # setting the initial conditions + initial_salinity = config.getfloat('initial_salinity') temperature = (-11. * np.log(0.0414 * (-1. * ds.zMid + 100.3)) + 48.8) temperature = temperature.transpose('Time', 'nCells', 'nVertLevels') - print(f'bottom T: {temperature[0, 200, -1]} and \ - surface : {temperature[0, 200, 0]}') - salinity = 34.0 * xr.ones_like(temperature) + print(f'bottom T: {temperature[0, 0, -1]} and \ + surface : {temperature[0, 0, 0]}') + salinity = initial_salinity * xr.ones_like(temperature) normalVelocity = xr.zeros_like(ds.xEdge) normalVelocity, _ = xr.broadcast(normalVelocity, ds.refBottomDepth) @@ -80,7 +82,7 @@ def _write_initial_state(config, dsMesh): ds['salinity'] = salinity ds['normalVelocity'] = normalVelocity - omega = 2. * np.pi / 86164. + omega = 2. * np.pi / constants['SHR_CONST_SDAY'] ds['fCell'] = 2. * omega * np.sin(ds.latCell) ds['fEdge'] = 2. * omega * np.sin(ds.latEdge) ds['fVertex'] = 2. * omega * np.sin(ds.latVertex) @@ -97,6 +99,7 @@ def _write_forcing(config, lat): tempMin = section.getfloat('temp_min') tempMax = section.getfloat('temp_max') restoring_temp_piston_vel = section.getfloat('restoring_temp_piston_vel') + initial_salinity = section.getfloat('initial_salinity') lat = np.rad2deg(lat) # set wind stress windStressZonal = - tauMax * np.cos(2 * np.pi * (lat - latMin) / @@ -117,7 +120,7 @@ def _write_forcing(config, lat): temperatureSurfaceRestoringValue) salinitySurfaceRestoringValue = \ - 34.0 * xr.ones_like(temperatureSurfaceRestoringValue) + initial_salinity * xr.ones_like(temperatureSurfaceRestoringValue) salinityPistonVelocity = xr.zeros_like(temperaturePistonVelocity) dsForcing = xr.Dataset() From b95ab4d8f8c113205b6c8dc7d33ffef67259ea22 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Mon, 6 Nov 2023 13:16:04 -0600 Subject: [PATCH 06/38] modified resolution to string in m --- .../ocean/tests/baroclinic_gyre/__init__.py | 2 +- .../ocean/tests/baroclinic_gyre/forward.py | 19 +++++++++++------- .../tests/baroclinic_gyre/gyre_test_case.py | 20 +++++++++++-------- .../tests/baroclinic_gyre/initial_state.py | 10 +++++----- 4 files changed, 30 insertions(+), 21 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/__init__.py b/compass/ocean/tests/baroclinic_gyre/__init__.py index f43e3fd600..d582cf473b 100644 --- a/compass/ocean/tests/baroclinic_gyre/__init__.py +++ b/compass/ocean/tests/baroclinic_gyre/__init__.py @@ -13,7 +13,7 @@ def __init__(self, mpas_core): """ super().__init__(mpas_core=mpas_core, name='baroclinic_gyre') - for resolution in ['80km']: + for resolution in [80000.]: self.add_test_case( GyreTestCase(test_group=self, resolution=resolution, long=False)) diff --git a/compass/ocean/tests/baroclinic_gyre/forward.py b/compass/ocean/tests/baroclinic_gyre/forward.py index c7cf5921ef..bc2bfa6623 100644 --- a/compass/ocean/tests/baroclinic_gyre/forward.py +++ b/compass/ocean/tests/baroclinic_gyre/forward.py @@ -9,8 +9,8 @@ class Forward(Step): Attributes ---------- - resolution : str - The resolution of the test case + resolution : float + The resolution of the test case (m) """ def __init__(self, test_case, resolution, name='forward', subdir=None, @@ -23,8 +23,8 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, test_case : compass.TestCase The test case this step belongs to - resolution : str - The resolution of the test case + resolution : float + The resolution of the test case (m) name : str the name of the test case @@ -36,6 +36,11 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, Whether to run a long (3-year) simulation to quasi-equilibrium """ self.resolution = resolution + if resolution >= 1e3: + res_name = f'{int(resolution/1e3)}km' + else: + res_name = f'{int(resolution)}m' + res_params = {'80km': {'ntasks': 20, # MODIFY 'min_tasks': 2, 'dt': "'00:12:00'", @@ -43,12 +48,12 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, 'mom_del4': "5.0e10", 'run_duration': "'0000_00:36:00'"}} - if resolution not in res_params: + if res_name not in res_params: raise ValueError( - f'Unsupported resolution {resolution}. Supported values are: ' + f'Unsupported resolution {res_name}. Supported values are: ' f'{list(res_params)}') - res_params = res_params[resolution] + res_params = res_params[res_name] ntasks = res_params['ntasks'] min_tasks = res_params['min_tasks'] diff --git a/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py b/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py index 2b77babfc6..7c01ccfe9f 100644 --- a/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py +++ b/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py @@ -12,8 +12,8 @@ class GyreTestCase(TestCase): Attributes ---------- - resolution : str - The resolution of the test case + resolution : float + The resolution of the test case (m) """ def __init__(self, test_group, resolution, long): @@ -26,25 +26,29 @@ def __init__(self, test_group, resolution, long): compass.ocean.tests.baroclinic_gyre.BaroclinicGyre The test group that this test case belongs to - resolution : str - The resolution of the test case + resolution : float + The resolution of the test case (m) long : bool Whether to run a long (3-year) simulation to quasi-equilibrium """ - name = 'performance' + name = 'performance_test' self.resolution = resolution self.long = long if long: - name = 'long' + name = '3_year_test' - subdir = f'{resolution}/{name}' + if resolution >= 1e3: + res_name = f'{int(resolution/1e3)}km' + else: + res_name = f'{int(resolution)}m' + subdir = f'{res_name}/{name}' super().__init__(test_group=test_group, name=name, subdir=subdir) self.add_step(QuasiUniformSphericalMeshStep( - test_case=self, cell_width=int(resolution[:-2]))) + test_case=self, cell_width=int(resolution / 1e3))) self.add_step(CullMesh(test_case=self)) self.add_step( InitialState(test_case=self, resolution=resolution)) diff --git a/compass/ocean/tests/baroclinic_gyre/initial_state.py b/compass/ocean/tests/baroclinic_gyre/initial_state.py index fa8f808af8..9f72ae74f1 100644 --- a/compass/ocean/tests/baroclinic_gyre/initial_state.py +++ b/compass/ocean/tests/baroclinic_gyre/initial_state.py @@ -14,8 +14,8 @@ class InitialState(Step): Attributes ---------- - resolution : str - The resolution of the test case + resolution : float + The resolution of the test case (m) """ def __init__(self, test_case, resolution): """ @@ -26,8 +26,8 @@ def __init__(self, test_case, resolution): test_case : compass.TestCase The test case this step belongs to - resolution : str - The resolution of the test case + resolution : float + The resolution of the test case (m) """ super().__init__(test_case=test_case, name='initial_state') self.resolution = resolution @@ -65,7 +65,7 @@ def _write_initial_state(config, dsMesh): init_vertical_coord(config, ds) # setting the initial conditions - initial_salinity = config.getfloat('initial_salinity') + initial_salinity = config.getfloat('baroclinic_gyre', 'initial_salinity') temperature = (-11. * np.log(0.0414 * (-1. * ds.zMid + 100.3)) + 48.8) temperature = temperature.transpose('Time', 'nCells', 'nVertLevels') From 3964ace32daa11c80a1ed863daeec25ed55d2f9d Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Mon, 6 Nov 2023 14:18:56 -0600 Subject: [PATCH 07/38] updated documentation --- .../ocean/test_groups/baroclinic_gyre.rst | 10 +++++----- .../ocean/test_groups/baroclinic_gyre.rst | 17 ++++++++++------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst b/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst index 300de2f6c8..1cf9b97810 100644 --- a/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst +++ b/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst @@ -16,7 +16,7 @@ Framework At this stage, the test case is available at 80-km horizontal resolution. By default, the 15 vertical layers vary linearly in thickness with depth, from 50m at the surface to 190m at depth (full depth: 1800m). -The test group includes 2 test cases, called ``performance`` for a short (10-day) run, and ``long`` for a 3-year simulation to run it to quasi-equilibrium. Both test cases have 2 steps, +The test group includes 2 test cases, called ``performance_test`` for a short (10-day) run, and ``3_year_test`` for a 3-year simulation to run it to quasi-equilibrium. Both test cases have 2 steps, ``initial_state``, which defines the mesh and initial conditions for the model, and ``forward``, which performs the time integration of the model. @@ -48,18 +48,18 @@ The class :py:class:`compass.ocean.tests.baroclinic_gyre.forward.Forward` defines a step for running MPAS-Ocean from the initial condition produced in the ``initial_state`` step. -performance +performance_test ------------- -``ocean/baroclinic_gyre/80km/performance`` is the default version of the +``ocean/baroclinic_gyre/80km/performance_test`` is the default version of the baroclinic eddies test case for a short (10-day) test run and validation of prognostic variables for regression testing. Currently, only the 80-km horizontal resolution is supported. -long +3_year_test ----------- -``ocean/baroclinic_gyre/80km/long`` performs a longer (3 year) integration +``ocean/baroclinic_gyre/80km/3_year_test`` performs a longer (3 year) integration of the model forward in time. The point is to compare the quasi-steady state with theroretical scaling and results from other models. Currently, only the 80-km horizontal resolution is supported. diff --git a/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst b/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst index c419524071..2734051e37 100644 --- a/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst +++ b/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst @@ -76,10 +76,10 @@ represent temperature. Analysis -------------- -For scientific validation, this test case is meant to be run to quasi-steady state and its mean state compared to the MITgcm test case and / or theoretical scaling. This is done through an analysis step in the ``long`` case. -Examples of qualitative plots include: i) equilibrated SSH contours on top of surface heat fluxes, ii) barotropic streamfunction (compared to MITgcm or a braotropic gyre test case). +For scientific validation, this test case is meant to be run to quasi-steady state and its mean state compared to the MITgcm test case and / or theoretical scaling. This is done through an analysis step in the ``3_year_test`` case. +Examples of qualitative plots include: i) equilibrated SSH contours on top of surface heat fluxes, ii) barotropic streamfunction (compared to MITgcm or a barotropic gyre test case). -Examples of checks against theory include: iii) max of simulated barotropic streamfunction ~ Sverdrup transport, iv) simulated thermocline depth ~ scaling argument for penetration depth (Vallis (2017) or Cushman-Roisin and Beckers (2011). +Examples of checks against theory include: iii) max of simulated barotropic streamfunction ~ Sverdrup transport, iv) simulated thermocline depth ~ scaling argument for penetration depth (Vallis (2017) or Cushman-Roisin and Beckers (2011)). Consider the Sverdrup transport: @@ -145,6 +145,9 @@ All 2 test cases share the same set of config options: # Maximum zonal wind stress value wind_stress_max = 0.1 + + # Constant salinity value (also used in restoring) + initial_salinity = 34. # Surface temperature restoring temp_min = 0. @@ -153,16 +156,16 @@ All 2 test cases share the same set of config options: # Restoring piston velocity for surface temperature (s-1) restoring_temp_piston_vel = 3.86e-7 -performance +performance_test ------------ -``ocean/baroclinic_gyre/performance`` is the default version of the +``ocean/baroclinic_gyre/performance_test`` is the default version of the baroclinic_gyre test case for a short (10-day) test run and validation of prognostic variables for regression testing. -long +3_year_test -------- -``ocean/baroclinic_gyre/long`` is an additional version of the +``ocean/baroclinic_gyre/3_year_test`` is an additional version of the baroclinic_gyre test case for a test run to quasi equilibirum (3 years) and validation of the mean state against theory and results from other models. From f4d5676fa10f3363ebcce28594fc931b6e6cf781 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Mon, 6 Nov 2023 19:27:07 -0600 Subject: [PATCH 08/38] added config parameters for initial temp profile --- .../tests/baroclinic_gyre/baroclinic_gyre.cfg | 12 +++++--- .../tests/baroclinic_gyre/initial_state.py | 30 ++++++++++++++----- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg b/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg index d3187cad23..54c2364b9c 100644 --- a/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg +++ b/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg @@ -32,15 +32,19 @@ lat_max = 75 lon_min = 0 lon_max = 60 -# Maximum zonal wind stress value -wind_stress_max = 0.1 +# Initial vertical temperature profile +initial_temp_top = 33. +initial_temp_bot = 1. # Constant salinity value (also used in restoring) initial_salinity = 34. +# Maximum zonal wind stress value +wind_stress_max = 0.1 + # Surface temperature restoring -temp_min = 0. -temp_max = 30. +restoring_temp_min = 0. +restoring_temp_max = 30. # Restoring piston velocity for surface temperature (s-1) restoring_temp_piston_vel = 3.86e-7 diff --git a/compass/ocean/tests/baroclinic_gyre/initial_state.py b/compass/ocean/tests/baroclinic_gyre/initial_state.py index 9f72ae74f1..23b2f85382 100644 --- a/compass/ocean/tests/baroclinic_gyre/initial_state.py +++ b/compass/ocean/tests/baroclinic_gyre/initial_state.py @@ -54,7 +54,6 @@ def run(self): def _write_initial_state(config, dsMesh): - # section = config['baroclinic_gyre'] ds = dsMesh.copy() @@ -65,12 +64,27 @@ def _write_initial_state(config, dsMesh): init_vertical_coord(config, ds) # setting the initial conditions - initial_salinity = config.getfloat('baroclinic_gyre', 'initial_salinity') - temperature = (-11. * np.log(0.0414 * - (-1. * ds.zMid + 100.3)) + 48.8) + section = config['baroclinic_gyre'] + initial_salinity = section.getfloat('initial_salinity') + temp_top = section.getfloat('initial_temp_top') + temp_bot = section.getfloat('initial_temp_bot') + + cc = 0.049 # 0.049 value from optimization on 1800m + aa = temp_top / np.log(cc) + bb = (cc ** (temp_bot / temp_top) - cc) + temperature = aa * np.log(bb * ds.zMid / bottom_depth + cc) + val_bot = aa * np.log(bb + cc) + val_top = aa * np.log(cc) + print(f'analytical bottom T: {val_bot} at \ + depth : {bottom_depth}') + print(f'analytical surface T: {val_top} at \ + depth = 0') + +# temperature = (-11. * np.log(0.0414 * +# (-1. * ds.zMid + 100.3)) + 48.8) temperature = temperature.transpose('Time', 'nCells', 'nVertLevels') - print(f'bottom T: {temperature[0, 0, -1]} and \ - surface : {temperature[0, 0, 0]}') + print(f'bottom layer T: {temperature[0, 0, -1]} and \ + surface layer T: {temperature[0, 0, 0]}') salinity = initial_salinity * xr.ones_like(temperature) normalVelocity = xr.zeros_like(ds.xEdge) @@ -96,8 +110,8 @@ def _write_forcing(config, lat): latMin = section.getfloat('lat_min') latMax = section.getfloat('lat_max') tauMax = section.getfloat('wind_stress_max') - tempMin = section.getfloat('temp_min') - tempMax = section.getfloat('temp_max') + tempMin = section.getfloat('restoring_temp_min') + tempMax = section.getfloat('restoring_temp_max') restoring_temp_piston_vel = section.getfloat('restoring_temp_piston_vel') initial_salinity = section.getfloat('initial_salinity') lat = np.rad2deg(lat) From 066ff24c50661f84ceef68a58b56d776b6a37496 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Mon, 6 Nov 2023 20:09:53 -0600 Subject: [PATCH 09/38] updated documentation --- .../ocean/test_groups/baroclinic_gyre.rst | 2 +- docs/users_guide/ocean/test_groups/baroclinic_gyre.rst | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst b/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst index 1cf9b97810..c4281282f5 100644 --- a/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst +++ b/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst @@ -36,7 +36,7 @@ First, a mesh appropriate for the resolution is generated using :py:class:`compass.mesh.QuasiUniformSphericalMeshStep`. Then, the mesh is culled to keep a single ocean basin (with lat, lon bounds set in `.cfg` file). A vertical grid is generated, with 15 layers of thickness that increases linearly with depth (10m increase by default), from 50m at the surface to 190m at depth (full depth: 1800m). -Finally, the initial temperature field is initialized with a vertical profile to match the discrete values set in the `MITgcm test case `_, uniform in horizontal space. Salinity is set to a constant value (34 pus) and initial +Finally, the initial temperature field is initialized with a vertical profile to approximate the discrete values set in the `MITgcm test case `_, uniform in horizontal space. The surface and bottom values are set in the `.cfg` file. Salinity is set to a constant value (34 psu, set in the `.cfg` file) and initial velocity is set to zero. The ``initial_state`` step also generates the forcing, defined as zonal wind stress that varies with latitude, surface temperature restoring that varies with latitutde, and writes it to `forcing.nc`. diff --git a/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst b/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst index 2734051e37..85fd95cc13 100644 --- a/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst +++ b/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst @@ -34,7 +34,7 @@ according to latitude :math:`\varphi` .. math:: f(\varphi) = 2 \Omega \sin( \varphi ) -with the rotation rate, :math:`\Omega` set to :math:`\frac{2 \pi}{86164} \text{s}^{-1}` (i.e., corresponding the to standard Earth rotation rate). +with the rotation rate, :math:`\Omega` set to :math:`\frac{2 \pi}{86164} \text{s}^{-1}` (i.e., corresponding to the standard Earth rotation rate, using the CIME constant to ensure consistency). The sinusoidal wind-stress variations are defined according to .. math:: @@ -58,8 +58,8 @@ Initial state -------------- Initially the fluid is stratified -with a reference potential temperature profile that varies from (approximately) :math:`\theta=30.7 \text{ } ^{\circ}`\ C -in the surface layer to :math:`\theta=1.3 \text{ } ^{\circ}`\ C in the bottom layer. The temperature values were determined by fitting an analytical function to the MITgcm discrete values (originally ranging from 2 to :math:`30 \text{ } ^{\circ}`\ C. +with a reference potential temperature profile that varies from (approximately) :math:`\theta=30.6 \text{ } ^{\circ}`\ C +in the surface layer to :math:`\theta=1.56 \text{ } ^{\circ}`\ C in the bottom layer. To ensure that the profile is independent of the vertical discretization, the profile is now set by a surface value (at the top interface) and a bottom value (at the bottom interface), set in the `.cfg` file. The default values have been chosen for the layer values (calculated with `zMid`) to approximate the discrete values presented in the MITgcm test case. The temperature functional form (and inner parameter `cc` was determined by fitting an analytical function to the MITgcm discrete layer values (originally ranging from 2 to :math:`30 \text{ } ^{\circ}`\ C. If the `bottom_depth` is different from the default 1800m value, the temperature profile is stretched in the vertical to fit the surface and bottom temperature constraints, but the thermocline depth and the discrete layer values will move away from the MITgcm test case. The equation of state used in this experiment is linear: .. math:: @@ -67,7 +67,7 @@ The equation of state used in this experiment is linear: :label: rho_lineareos with :math:`\rho_{0}=999.8\,{\rm kg\,m}^{-3}` and -:math:`\alpha_{\theta}=2\times10^{-4}\,{\rm K}^{-1}`. The salinity is set to a uniform value of :math:`S=34`\ psu. +:math:`\alpha_{\theta}=2\times10^{-4}\,{\rm K}^{-1}`. The salinity is set to a uniform value of :math:`S=34`\ psu (set in the `.cfg` file) Given the linear equation of state, in this configuration the model state variable for temperature is equivalent to either in-situ temperature, :math:`T`, or potential temperature, :math:`\theta`. For simplicity, here we use the variable :math:`\theta` to From e49060bf5f222736b47b4fe986458d7f88082f85 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Wed, 15 Nov 2023 14:31:48 -0600 Subject: [PATCH 10/38] correction for T calculation --- compass/ocean/tests/baroclinic_gyre/initial_state.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/compass/ocean/tests/baroclinic_gyre/initial_state.py b/compass/ocean/tests/baroclinic_gyre/initial_state.py index 23b2f85382..618dde7462 100644 --- a/compass/ocean/tests/baroclinic_gyre/initial_state.py +++ b/compass/ocean/tests/baroclinic_gyre/initial_state.py @@ -69,10 +69,12 @@ def _write_initial_state(config, dsMesh): temp_top = section.getfloat('initial_temp_top') temp_bot = section.getfloat('initial_temp_bot') + print(f'zmid: {ds.zMid.values}') cc = 0.049 # 0.049 value from optimization on 1800m aa = temp_top / np.log(cc) bb = (cc ** (temp_bot / temp_top) - cc) - temperature = aa * np.log(bb * ds.zMid / bottom_depth + cc) + temperature = aa * np.log(bb * -1.0 * ds.zMid / bottom_depth + cc) + print(f'Tinit: {temperature.values}') val_bot = aa * np.log(bb + cc) val_top = aa * np.log(cc) print(f'analytical bottom T: {val_bot} at \ From bf6dda08cca95fa8ae6f42d2dc617472c0071114 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Tue, 14 Nov 2023 18:04:49 -0600 Subject: [PATCH 11/38] corrected inconsistencies --- compass/ocean/tests/baroclinic_gyre/forward.py | 1 + 1 file changed, 1 insertion(+) diff --git a/compass/ocean/tests/baroclinic_gyre/forward.py b/compass/ocean/tests/baroclinic_gyre/forward.py index bc2bfa6623..88a45f6a8d 100644 --- a/compass/ocean/tests/baroclinic_gyre/forward.py +++ b/compass/ocean/tests/baroclinic_gyre/forward.py @@ -86,6 +86,7 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, options['config_stop_time'] = "'0004-01-01_00:00:00'" options['config_run_duration'] = "'none'" + self.add_namelist_options(options=options) self.add_input_file(filename='init.nc', target='../initial_state/initial_state.nc') self.add_input_file(filename='forcing.nc', From a6ff45548a84eabf002f8e9c841d59307635931d Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Tue, 14 Nov 2023 18:07:28 -0600 Subject: [PATCH 12/38] added restart capabilities --- compass/ocean/tests/baroclinic_gyre/forward.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/compass/ocean/tests/baroclinic_gyre/forward.py b/compass/ocean/tests/baroclinic_gyre/forward.py index 88a45f6a8d..74abf77aab 100644 --- a/compass/ocean/tests/baroclinic_gyre/forward.py +++ b/compass/ocean/tests/baroclinic_gyre/forward.py @@ -105,3 +105,8 @@ def run(self): Run this step of the test case """ run_model(self, partition_graph=True) + + if self.name == '3_year_test': + replacements = {'config_do_restart': '.true.', + 'config_start_time': "'file'"} + self.update_namelist_at_runtime(replacements) From ea943308838ea65568721fc33cca0eac1141851c Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Wed, 27 Mar 2024 11:36:01 -0500 Subject: [PATCH 13/38] modifed 3_year test parameters --- .../ocean/tests/baroclinic_gyre/forward.py | 8 ++-- .../tests/baroclinic_gyre/initial_state.py | 6 +-- .../tests/baroclinic_gyre/namelist.forward | 37 +++++++++++++------ 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/forward.py b/compass/ocean/tests/baroclinic_gyre/forward.py index 74abf77aab..0bd077fc4f 100644 --- a/compass/ocean/tests/baroclinic_gyre/forward.py +++ b/compass/ocean/tests/baroclinic_gyre/forward.py @@ -67,8 +67,8 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, self.add_namelist_file('compass.ocean.tests.baroclinic_gyre', 'namelist.forward') if long: - output_interval = "0010_00:00:00" - restart_interval = "0010_00:00:00" + output_interval = "0001-01-01_00:00:00" + restart_interval = "0001-01-01_00:00:00" else: output_interval = res_params['run_duration'].replace("'", "") restart_interval = "0030_00:00:00" @@ -82,6 +82,8 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, options[f'config_{option}'] = res_params[option] if long: # run for 3 years instead of 3 time steps + options['config_dt'] = "'00:30:00'" + options['config_btr_dt'] = "'00:03:00'" options['config_start_time'] = "'0001-01-01_00:00:00'" options['config_stop_time'] = "'0004-01-01_00:00:00'" options['config_run_duration'] = "'none'" @@ -108,5 +110,5 @@ def run(self): if self.name == '3_year_test': replacements = {'config_do_restart': '.true.', - 'config_start_time': "'file'"} + 'config_start_time': "'Restart_timestamp'"} self.update_namelist_at_runtime(replacements) diff --git a/compass/ocean/tests/baroclinic_gyre/initial_state.py b/compass/ocean/tests/baroclinic_gyre/initial_state.py index 618dde7462..10ea8ab573 100644 --- a/compass/ocean/tests/baroclinic_gyre/initial_state.py +++ b/compass/ocean/tests/baroclinic_gyre/initial_state.py @@ -69,12 +69,12 @@ def _write_initial_state(config, dsMesh): temp_top = section.getfloat('initial_temp_top') temp_bot = section.getfloat('initial_temp_bot') - print(f'zmid: {ds.zMid.values}') + print(f'zmid: {ds.zMid[0,0,:].values}') cc = 0.049 # 0.049 value from optimization on 1800m aa = temp_top / np.log(cc) bb = (cc ** (temp_bot / temp_top) - cc) temperature = aa * np.log(bb * -1.0 * ds.zMid / bottom_depth + cc) - print(f'Tinit: {temperature.values}') + print(f'Tinit: {temperature[0,0,:].values}') val_bot = aa * np.log(bb + cc) val_top = aa * np.log(cc) print(f'analytical bottom T: {val_bot} at \ @@ -84,7 +84,7 @@ def _write_initial_state(config, dsMesh): # temperature = (-11. * np.log(0.0414 * # (-1. * ds.zMid + 100.3)) + 48.8) - temperature = temperature.transpose('Time', 'nCells', 'nVertLevels') +# temperature = temperature.transpose('Time', 'nCells', 'nVertLevels') print(f'bottom layer T: {temperature[0, 0, -1]} and \ surface layer T: {temperature[0, 0, 0]}') salinity = initial_salinity * xr.ones_like(temperature) diff --git a/compass/ocean/tests/baroclinic_gyre/namelist.forward b/compass/ocean/tests/baroclinic_gyre/namelist.forward index d7354563a0..802c1b2fb9 100644 --- a/compass/ocean/tests/baroclinic_gyre/namelist.forward +++ b/compass/ocean/tests/baroclinic_gyre/namelist.forward @@ -1,17 +1,30 @@ -config_use_mom_del4 = .true. -config_mom_del4_div_factor = 10.0 +config_dt = '00:30:00' +config_use_mom_del2 = .true. +config_mom_del2 = 5.0e3 +config_use_tracer_del2 = .true. +config_tracer_del2 = 1000.0 +config_use_mom_del4 = .false. config_use_cvmix_convection = .true. -config_cvmix_background_diffusion = 5.0e-6 +config_cvmix_background_diffusion = 1.0e-5 +config_cvmix_background_viscosity = 1.0e-2 +config_use_bulk_wind_stress = .true. +# config_eos_linear_alpha = 0.2 +# config_eos_linear_beta = 0. +# config_eos_linear_Tref = 19.0 +# config_eos_linear_Sref = 34.0 +# config_eos_linear_densityref = 999.8 +config_eos_linear_alpha = 0.2 +config_eos_linear_beta = 0.8 +config_eos_linear_Tref = 5.0 +config_eos_linear_Sref = 35.0 +config_eos_linear_densityref = 1000.0 +# config_bottom_drag_mode = 'explicit' +config_use_implicit_bottom_drag = .false. +config_use_explicit_bottom_drag = .true. +config_disable_vel_explicit_bottom_drag = .true. config_cvmix_convective_basedOnBVF = .true. config_use_cvmix_shear = .true. config_cvmix_shear_mixing_scheme = 'KPP' config_use_cvmix_kpp = .true. -config_use_bulk_wind_stress = .true. -config_eos_linear_alpha = 0.255 -config_eos_linear_Tref = 19.0 -config_eos_linear_Sref = 34.0 -config_eos_linear_densityref = 1025.0 -config_implicit_bottom_drag_coeff = 3.0e-3 -config_use_activeTracers_surface_bulk_forcing = .false. -config_use_activeTracers_surface_restoring = .true. -config_use_activeTracers_interior_restoring = .false. +config_use_GM = .true. +config_use_Redi = .true. From 8b24a8e19b6ecaff2cff3242317041e1e9027671 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Wed, 27 Mar 2024 20:25:47 -0500 Subject: [PATCH 14/38] minor changes to set-up --- compass/ocean/tests/baroclinic_gyre/forward.py | 12 +++++------- compass/ocean/tests/baroclinic_gyre/namelist.forward | 6 ++---- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/forward.py b/compass/ocean/tests/baroclinic_gyre/forward.py index 0bd077fc4f..756b008641 100644 --- a/compass/ocean/tests/baroclinic_gyre/forward.py +++ b/compass/ocean/tests/baroclinic_gyre/forward.py @@ -43,10 +43,10 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, res_params = {'80km': {'ntasks': 20, # MODIFY 'min_tasks': 2, - 'dt': "'00:12:00'", - 'btr_dt': "'00:00:36'", - 'mom_del4': "5.0e10", - 'run_duration': "'0000_00:36:00'"}} + 'dt': "'01:00:00'", + 'btr_dt': "'00:03:00'", + 'mom_del4': "5.0e11", + 'run_duration': "'0000_03:00:00'"}} if res_name not in res_params: raise ValueError( @@ -67,7 +67,7 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, self.add_namelist_file('compass.ocean.tests.baroclinic_gyre', 'namelist.forward') if long: - output_interval = "0001-01-01_00:00:00" + output_interval = "0000-01-00_00:00:00" restart_interval = "0001-01-01_00:00:00" else: output_interval = res_params['run_duration'].replace("'", "") @@ -82,8 +82,6 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, options[f'config_{option}'] = res_params[option] if long: # run for 3 years instead of 3 time steps - options['config_dt'] = "'00:30:00'" - options['config_btr_dt'] = "'00:03:00'" options['config_start_time'] = "'0001-01-01_00:00:00'" options['config_stop_time'] = "'0004-01-01_00:00:00'" options['config_run_duration'] = "'none'" diff --git a/compass/ocean/tests/baroclinic_gyre/namelist.forward b/compass/ocean/tests/baroclinic_gyre/namelist.forward index 802c1b2fb9..a1b1bfd207 100644 --- a/compass/ocean/tests/baroclinic_gyre/namelist.forward +++ b/compass/ocean/tests/baroclinic_gyre/namelist.forward @@ -18,10 +18,8 @@ config_eos_linear_beta = 0.8 config_eos_linear_Tref = 5.0 config_eos_linear_Sref = 35.0 config_eos_linear_densityref = 1000.0 -# config_bottom_drag_mode = 'explicit' -config_use_implicit_bottom_drag = .false. -config_use_explicit_bottom_drag = .true. -config_disable_vel_explicit_bottom_drag = .true. +config_bottom_drag_mode = 'implicit' +config_implicit_bottom_drag_type = 'constant' config_cvmix_convective_basedOnBVF = .true. config_use_cvmix_shear = .true. config_cvmix_shear_mixing_scheme = 'KPP' From 250fea836b28977742f55565528e19adea07d009 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Wed, 27 Mar 2024 20:44:42 -0500 Subject: [PATCH 15/38] added a finer resolution case --- compass/ocean/tests/baroclinic_gyre/__init__.py | 2 +- compass/ocean/tests/baroclinic_gyre/forward.py | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/__init__.py b/compass/ocean/tests/baroclinic_gyre/__init__.py index d582cf473b..b39f70d505 100644 --- a/compass/ocean/tests/baroclinic_gyre/__init__.py +++ b/compass/ocean/tests/baroclinic_gyre/__init__.py @@ -13,7 +13,7 @@ def __init__(self, mpas_core): """ super().__init__(mpas_core=mpas_core, name='baroclinic_gyre') - for resolution in [80000.]: + for resolution in [20000., 80000.]: self.add_test_case( GyreTestCase(test_group=self, resolution=resolution, long=False)) diff --git a/compass/ocean/tests/baroclinic_gyre/forward.py b/compass/ocean/tests/baroclinic_gyre/forward.py index 756b008641..217d59ffb0 100644 --- a/compass/ocean/tests/baroclinic_gyre/forward.py +++ b/compass/ocean/tests/baroclinic_gyre/forward.py @@ -46,7 +46,13 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, 'dt': "'01:00:00'", 'btr_dt': "'00:03:00'", 'mom_del4': "5.0e11", - 'run_duration': "'0000_03:00:00'"}} + 'run_duration': "'0000_03:00:00'"}, + '20km': {'ntasks': 100, + 'min_tasks': 10, + 'dt': "'00:20:00'", + 'btr_dt': "'0000_00:00:20'", + 'mom_del4': "2.0e10 ", + 'run_duration': "'0000_00:01:00'"}} if res_name not in res_params: raise ValueError( From 608047b063794809ba9d5defb9bd3914111d62b7 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Thu, 28 Mar 2024 18:18:36 -0500 Subject: [PATCH 16/38] changes to set up --- compass/ocean/tests/baroclinic_gyre/forward.py | 4 ++-- compass/ocean/tests/baroclinic_gyre/namelist.forward | 6 +----- compass/ocean/tests/baroclinic_gyre/streams.forward | 4 +++- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/forward.py b/compass/ocean/tests/baroclinic_gyre/forward.py index 217d59ffb0..4746c2447d 100644 --- a/compass/ocean/tests/baroclinic_gyre/forward.py +++ b/compass/ocean/tests/baroclinic_gyre/forward.py @@ -47,7 +47,7 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, 'btr_dt': "'00:03:00'", 'mom_del4': "5.0e11", 'run_duration': "'0000_03:00:00'"}, - '20km': {'ntasks': 100, + '20km': {'ntasks': 128, 'min_tasks': 10, 'dt': "'00:20:00'", 'btr_dt': "'0000_00:00:20'", @@ -74,7 +74,7 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, 'namelist.forward') if long: output_interval = "0000-01-00_00:00:00" - restart_interval = "0001-01-01_00:00:00" + restart_interval = "0001-0-00_00:00:00" else: output_interval = res_params['run_duration'].replace("'", "") restart_interval = "0030_00:00:00" diff --git a/compass/ocean/tests/baroclinic_gyre/namelist.forward b/compass/ocean/tests/baroclinic_gyre/namelist.forward index a1b1bfd207..7f0fa69858 100644 --- a/compass/ocean/tests/baroclinic_gyre/namelist.forward +++ b/compass/ocean/tests/baroclinic_gyre/namelist.forward @@ -8,11 +8,7 @@ config_use_cvmix_convection = .true. config_cvmix_background_diffusion = 1.0e-5 config_cvmix_background_viscosity = 1.0e-2 config_use_bulk_wind_stress = .true. -# config_eos_linear_alpha = 0.2 -# config_eos_linear_beta = 0. -# config_eos_linear_Tref = 19.0 -# config_eos_linear_Sref = 34.0 -# config_eos_linear_densityref = 999.8 +config_use_activeTracers_surface_restoring = .true. config_eos_linear_alpha = 0.2 config_eos_linear_beta = 0.8 config_eos_linear_Tref = 5.0 diff --git a/compass/ocean/tests/baroclinic_gyre/streams.forward b/compass/ocean/tests/baroclinic_gyre/streams.forward index f9a5343a42..72cc69faad 100644 --- a/compass/ocean/tests/baroclinic_gyre/streams.forward +++ b/compass/ocean/tests/baroclinic_gyre/streams.forward @@ -40,20 +40,22 @@ - + + + From 77664c850d6a9e9356a95e2f9982e555d7b06e75 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Mon, 1 Apr 2024 12:54:19 -0500 Subject: [PATCH 17/38] updated documentation --- .../ocean/tests/baroclinic_gyre/forward.py | 10 ++--- docs/developers_guide/ocean/api.rst | 4 +- .../ocean/test_groups/baroclinic_gyre.rst | 24 +++++----- .../ocean/test_groups/baroclinic_gyre.rst | 42 ++++++++++-------- .../images/baroclinic_gyre_config.png | Bin 0 -> 195790 bytes 5 files changed, 43 insertions(+), 37 deletions(-) create mode 100644 docs/users_guide/ocean/test_groups/images/baroclinic_gyre_config.png diff --git a/compass/ocean/tests/baroclinic_gyre/forward.py b/compass/ocean/tests/baroclinic_gyre/forward.py index 4746c2447d..db53c516f3 100644 --- a/compass/ocean/tests/baroclinic_gyre/forward.py +++ b/compass/ocean/tests/baroclinic_gyre/forward.py @@ -41,14 +41,14 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, else: res_name = f'{int(resolution)}m' - res_params = {'80km': {'ntasks': 20, # MODIFY - 'min_tasks': 2, + res_params = {'80km': {'ntasks': 32, + 'min_tasks': 3, 'dt': "'01:00:00'", 'btr_dt': "'00:03:00'", 'mom_del4': "5.0e11", 'run_duration': "'0000_03:00:00'"}, - '20km': {'ntasks': 128, - 'min_tasks': 10, + '20km': {'ntasks': 384, + 'min_tasks': 32, 'dt': "'00:20:00'", 'btr_dt': "'0000_00:00:20'", 'mom_del4': "2.0e10 ", @@ -74,7 +74,7 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, 'namelist.forward') if long: output_interval = "0000-01-00_00:00:00" - restart_interval = "0001-0-00_00:00:00" + restart_interval = "0001-00-00_00:00:00" else: output_interval = res_params['run_duration'].replace("'", "") restart_interval = "0030_00:00:00" diff --git a/docs/developers_guide/ocean/api.rst b/docs/developers_guide/ocean/api.rst index f61752704e..89795e4c77 100644 --- a/docs/developers_guide/ocean/api.rst +++ b/docs/developers_guide/ocean/api.rst @@ -84,12 +84,12 @@ buttermilk_bay baroclinic_gyre -~~~~~~~~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~~~ .. currentmodule:: compass.ocean.tests.baroclinic_gyre .. autosummary:: - :toctree: generated/ + :toctree: generated/ BaroclinicGyre diff --git a/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst b/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst index c4281282f5..911e139d24 100644 --- a/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst +++ b/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst @@ -1,7 +1,7 @@ .. _dev_baroclinic_gyre: baroclinic_gyre -=========================== +=============== The ``baroclinic_gyre`` test group implements variants of the Baroclinic ocean gyre set-up from the @@ -11,12 +11,12 @@ This test case is described in detail in the User guide (see :ref:`baroclinic_gy we describe the shared framework for this test group. Framework --------------- +--------- -At this stage, the test case is available at 80-km horizontal +At this stage, the test case is available at 80-km and 20-km horizontal resolution. By default, the 15 vertical layers vary linearly in thickness with depth, from 50m at the surface to 190m at depth (full depth: 1800m). -The test group includes 2 test cases, called ``performance_test`` for a short (10-day) run, and ``3_year_test`` for a 3-year simulation to run it to quasi-equilibrium. Both test cases have 2 steps, +The test group includes 2 test cases, called ``performance_test`` for a short (10-day) run, and ``3_year_test`` for a 3-year simulation. Note that 3 years are insufficient to bring the standard test case to full equilibrium. Both test cases have 2 steps, ``initial_state``, which defines the mesh and initial conditions for the model, and ``forward``, which performs the time integration of the model. @@ -27,7 +27,7 @@ and vertical momentum and tracer diffusion, as well as a shared ``output`` streams. initial_state -~~~~~~~~~~~~~~~~ +~~~~~~~~~~~~~ The class :py:class:`compass.ocean.tests.baroclinic_gyre.initial_state.InitialState` defines a step for setting up the initial state for each test case. @@ -42,25 +42,25 @@ velocity is set to zero. The ``initial_state`` step also generates the forcing, defined as zonal wind stress that varies with latitude, surface temperature restoring that varies with latitutde, and writes it to `forcing.nc`. forward -~~~~~~~~~ +~~~~~~~ The class :py:class:`compass.ocean.tests.baroclinic_gyre.forward.Forward` defines a step for running MPAS-Ocean from the initial condition produced in the ``initial_state`` step. performance_test -------------- +---------------- ``ocean/baroclinic_gyre/80km/performance_test`` is the default version of the -baroclinic eddies test case for a short (10-day) test run and validation of -prognostic variables for regression testing. Currently, only the 80-km horizontal -resolution is supported. +baroclinic eddies test case for a short (3 time steps) test run and validation of +prognostic variables for regression testing. Currently, only the 80-km and 20-km horizontal +resolutions are supported. 3_year_test ----------- ``ocean/baroclinic_gyre/80km/3_year_test`` performs a longer (3 year) integration -of the model forward in time. The point is to compare the quasi-steady state with theroretical scaling and results from other models. Currently, only the 80-km horizontal -resolution is supported. +of the model forward in time. The point is to (ultimately) compare the quasi-steady state with theroretical scaling and results from other models. Currently, only the 80-km and 20-km horizontal +resolutions are supported. Note that 3 years is not long enough to reach steady state. diff --git a/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst b/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst index 85fd95cc13..6f459aef0e 100644 --- a/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst +++ b/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst @@ -1,11 +1,11 @@ .. _baroclinic_gyre: baroclinic_gyre -======================= +=============== The ``baroclinic_gyre`` test group implements variants of the baroclinic ocean gyre set-up from the -`MITgcm test case `_. +`MITgcm test case`_. This test simulates a baroclinic, wind and buoyancy-forced, double-gyre ocean circulation. The grid employs spherical polar coordinates with 15 vertical layers. @@ -17,16 +17,16 @@ The fluid is :math:`1.8`\ km deep and is forced by a zonal wind stress which is constant in time, :math:`\tau_{\lambda}`, varying sinusoidally in the north-south direction. -.. figure:: ../images/baroclinic_gyre_config.png +.. figure:: ./images/baroclinic_gyre_config.png :width: 95% :align: center :alt: baroclinic gyre configuration :name: baroclinic_gyre_config - Schematic of simulation domain and wind-stress forcing function for baroclinic gyre numerical experiment. The domain is enclosed by solid walls. From `MITgcm test case `_. + Schematic of simulation domain and wind-stress forcing function for baroclinic gyre numerical experiment. The domain is enclosed by solid walls. From `MITgcm test case`_. Forcing --------------- +------- The Coriolis parameter, :math:`f`, is defined according to latitude :math:`\varphi` @@ -55,7 +55,7 @@ Temperature is restored in the surface layer to a linear profile: where the piston velocity :math:`U_{piston}=3.86e-7 \text{ } (s^{-1})` (equivalent to a relaxation timescale of 30 days) and :math:`\theta_{\rm max}=30^{\circ}` C, :math:`\theta_{\rm min}=0^{\circ}` C. Initial state --------------- +------------- Initially the fluid is stratified with a reference potential temperature profile that varies from (approximately) :math:`\theta=30.6 \text{ } ^{\circ}`\ C @@ -74,9 +74,9 @@ temperature, :math:`\theta`. For simplicity, here we use the variable :math:`\th represent temperature. Analysis --------------- +-------- -For scientific validation, this test case is meant to be run to quasi-steady state and its mean state compared to the MITgcm test case and / or theoretical scaling. This is done through an analysis step in the ``3_year_test`` case. +For scientific validation, this test case is meant to be run to quasi-steady state and its mean state compared to the MITgcm test case and / or theoretical scaling. This is done through an analysis step in the ``3_year_test`` case. Note that 3 years are likely insufficient to bring the test case to full equilibrium. Examples of qualitative plots include: i) equilibrated SSH contours on top of surface heat fluxes, ii) barotropic streamfunction (compared to MITgcm or a barotropic gyre test case). Examples of checks against theory include: iii) max of simulated barotropic streamfunction ~ Sverdrup transport, iv) simulated thermocline depth ~ scaling argument for penetration depth (Vallis (2017) or Cushman-Roisin and Beckers (2011)). @@ -143,29 +143,35 @@ All 2 test cases share the same set of config options: lon_min = 0 lon_max = 60 - # Maximum zonal wind stress value - wind_stress_max = 0.1 - + # Initial vertical temperature profile + initial_temp_top = 33. + initial_temp_bot = 1. + # Constant salinity value (also used in restoring) initial_salinity = 34. - # Surface temperature restoring - temp_min = 0. - temp_max = 30. + # Maximum zonal wind stress value + wind_stress_max = 0.1 + # Surface temperature restoring + restoring_temp_min = 0. + restoring_temp_max = 30. + # Restoring piston velocity for surface temperature (s-1) restoring_temp_piston_vel = 3.86e-7 performance_test ------------- +---------------- ``ocean/baroclinic_gyre/performance_test`` is the default version of the -baroclinic_gyre test case for a short (10-day) test run and validation of +baroclinic_gyre test case for a short (3 time steps) test run and validation of prognostic variables for regression testing. 3_year_test --------- +----------- ``ocean/baroclinic_gyre/3_year_test`` is an additional version of the -baroclinic_gyre test case for a test run to quasi equilibirum (3 years) +baroclinic_gyre test case for a test run to spin up (3 years) and validation of the mean state against theory and results from other models. + +.. _MITgcm test case: https://mitgcm.readthedocs.io/en/latest/examples/baroclinic_gyre/baroclinic_gyre.html diff --git a/docs/users_guide/ocean/test_groups/images/baroclinic_gyre_config.png b/docs/users_guide/ocean/test_groups/images/baroclinic_gyre_config.png new file mode 100644 index 0000000000000000000000000000000000000000..da1945be1e4d9308f5e8f30be38385dd41216276 GIT binary patch literal 195790 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

qBFiE=hxye7t~Y+0thSK0YQmS4ZXg` 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 Date: Mon, 1 Apr 2024 14:44:19 -0500 Subject: [PATCH 18/38] correct the restart set-up --- compass/ocean/tests/baroclinic_gyre/forward.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compass/ocean/tests/baroclinic_gyre/forward.py b/compass/ocean/tests/baroclinic_gyre/forward.py index db53c516f3..8b36f7a780 100644 --- a/compass/ocean/tests/baroclinic_gyre/forward.py +++ b/compass/ocean/tests/baroclinic_gyre/forward.py @@ -114,5 +114,5 @@ def run(self): if self.name == '3_year_test': replacements = {'config_do_restart': '.true.', - 'config_start_time': "'Restart_timestamp'"} + 'config_start_time': "'file'"} self.update_namelist_at_runtime(replacements) From 974fe687ca6a8bdd9b3c670fa8fb0605e53014fc Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Mon, 29 Jul 2024 11:39:41 -0500 Subject: [PATCH 19/38] correct default run setup --- compass/ocean/tests/baroclinic_gyre/forward.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/forward.py b/compass/ocean/tests/baroclinic_gyre/forward.py index 8b36f7a780..0980770674 100644 --- a/compass/ocean/tests/baroclinic_gyre/forward.py +++ b/compass/ocean/tests/baroclinic_gyre/forward.py @@ -35,6 +35,7 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, long : bool, optional Whether to run a long (3-year) simulation to quasi-equilibrium """ + self.long = long self.resolution = resolution if resolution >= 1e3: res_name = f'{int(resolution/1e3)}km' @@ -52,7 +53,7 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, 'dt': "'00:20:00'", 'btr_dt': "'0000_00:00:20'", 'mom_del4': "2.0e10 ", - 'run_duration': "'0000_00:01:00'"}} + 'run_duration': "'0000_01:00:00'"}} if res_name not in res_params: raise ValueError( @@ -112,7 +113,7 @@ def run(self): """ run_model(self, partition_graph=True) - if self.name == '3_year_test': + if self.long: replacements = {'config_do_restart': '.true.', 'config_start_time': "'file'"} self.update_namelist_at_runtime(replacements) From 918287533960fed13ac6e30a6c293eef2639c2b8 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Tue, 30 Jul 2024 12:09:32 -0500 Subject: [PATCH 20/38] added monthly output --- .../tests/baroclinic_gyre/gyre_test_case.py | 74 ------------------- .../tests/baroclinic_gyre/streams.forward | 49 +++++++++++- 2 files changed, 47 insertions(+), 76 deletions(-) delete mode 100644 compass/ocean/tests/baroclinic_gyre/gyre_test_case.py diff --git a/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py b/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py deleted file mode 100644 index 7c01ccfe9f..0000000000 --- a/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py +++ /dev/null @@ -1,74 +0,0 @@ -from compass.mesh import QuasiUniformSphericalMeshStep -from compass.ocean.tests.baroclinic_gyre.cull_mesh import CullMesh -from compass.ocean.tests.baroclinic_gyre.forward import Forward -from compass.ocean.tests.baroclinic_gyre.initial_state import InitialState -from compass.testcase import TestCase -from compass.validate import compare_variables - - -class GyreTestCase(TestCase): - """ - A class to define the baroclinic gyre test cases - - Attributes - ---------- - resolution : float - The resolution of the test case (m) - """ - - def __init__(self, test_group, resolution, long): - """ - Create the test case - - Parameters - ---------- - test_group : - compass.ocean.tests.baroclinic_gyre.BaroclinicGyre - The test group that this test case belongs to - - resolution : float - The resolution of the test case (m) - - long : bool - Whether to run a long (3-year) simulation to quasi-equilibrium - """ - name = 'performance_test' - self.resolution = resolution - self.long = long - - if long: - name = '3_year_test' - - if resolution >= 1e3: - res_name = f'{int(resolution/1e3)}km' - else: - res_name = f'{int(resolution)}m' - subdir = f'{res_name}/{name}' - super().__init__(test_group=test_group, name=name, - subdir=subdir) - - self.add_step(QuasiUniformSphericalMeshStep( - test_case=self, cell_width=int(resolution / 1e3))) - self.add_step(CullMesh(test_case=self)) - self.add_step( - InitialState(test_case=self, resolution=resolution)) - self.add_step( - Forward(test_case=self, resolution=resolution, - long=long)) - - def configure(self): - """ - Set config options for the test case - """ - config = self.config - config.add_from_package('compass.mesh', 'mesh.cfg') - - def validate(self): - """ - Validate variables against a baseline - """ - compare_variables(test_case=self, - variables=['layerThickness', 'temperature', - 'ssh'], - filename1='forward/output/' - 'output.0001-01-01_00.00.00.nc') diff --git a/compass/ocean/tests/baroclinic_gyre/streams.forward b/compass/ocean/tests/baroclinic_gyre/streams.forward index 72cc69faad..9c82aa8e4e 100644 --- a/compass/ocean/tests/baroclinic_gyre/streams.forward +++ b/compass/ocean/tests/baroclinic_gyre/streams.forward @@ -48,8 +48,9 @@ - + filename_template="forcing.nc" + input_interval="initial_only" + type="input"> @@ -58,4 +59,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 08419be3438057ad45046131cd6540d8703b9b78 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Wed, 31 Jul 2024 11:32:38 -0500 Subject: [PATCH 21/38] added monthly streams --- .../ocean/tests/baroclinic_gyre/forward.py | 2 + .../tests/baroclinic_gyre/gyre_test_case.py | 74 +++++++++++++++++++ .../tests/baroclinic_gyre/namelist.forward | 1 + .../tests/baroclinic_gyre/streams.forward | 22 +++++- 4 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 compass/ocean/tests/baroclinic_gyre/gyre_test_case.py diff --git a/compass/ocean/tests/baroclinic_gyre/forward.py b/compass/ocean/tests/baroclinic_gyre/forward.py index 0980770674..957e516cd1 100644 --- a/compass/ocean/tests/baroclinic_gyre/forward.py +++ b/compass/ocean/tests/baroclinic_gyre/forward.py @@ -104,6 +104,8 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, self.add_model_as_input() self.add_output_file(filename='output/output.0001-01-01_00.00.00.nc') + self.add_output_file(filename='output/' + 'timeSeriesStatsMonthly.0001-01-01.nc') # no setup() is needed diff --git a/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py b/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py new file mode 100644 index 0000000000..7c01ccfe9f --- /dev/null +++ b/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py @@ -0,0 +1,74 @@ +from compass.mesh import QuasiUniformSphericalMeshStep +from compass.ocean.tests.baroclinic_gyre.cull_mesh import CullMesh +from compass.ocean.tests.baroclinic_gyre.forward import Forward +from compass.ocean.tests.baroclinic_gyre.initial_state import InitialState +from compass.testcase import TestCase +from compass.validate import compare_variables + + +class GyreTestCase(TestCase): + """ + A class to define the baroclinic gyre test cases + + Attributes + ---------- + resolution : float + The resolution of the test case (m) + """ + + def __init__(self, test_group, resolution, long): + """ + Create the test case + + Parameters + ---------- + test_group : + compass.ocean.tests.baroclinic_gyre.BaroclinicGyre + The test group that this test case belongs to + + resolution : float + The resolution of the test case (m) + + long : bool + Whether to run a long (3-year) simulation to quasi-equilibrium + """ + name = 'performance_test' + self.resolution = resolution + self.long = long + + if long: + name = '3_year_test' + + if resolution >= 1e3: + res_name = f'{int(resolution/1e3)}km' + else: + res_name = f'{int(resolution)}m' + subdir = f'{res_name}/{name}' + super().__init__(test_group=test_group, name=name, + subdir=subdir) + + self.add_step(QuasiUniformSphericalMeshStep( + test_case=self, cell_width=int(resolution / 1e3))) + self.add_step(CullMesh(test_case=self)) + self.add_step( + InitialState(test_case=self, resolution=resolution)) + self.add_step( + Forward(test_case=self, resolution=resolution, + long=long)) + + def configure(self): + """ + Set config options for the test case + """ + config = self.config + config.add_from_package('compass.mesh', 'mesh.cfg') + + def validate(self): + """ + Validate variables against a baseline + """ + compare_variables(test_case=self, + variables=['layerThickness', 'temperature', + 'ssh'], + filename1='forward/output/' + 'output.0001-01-01_00.00.00.nc') diff --git a/compass/ocean/tests/baroclinic_gyre/namelist.forward b/compass/ocean/tests/baroclinic_gyre/namelist.forward index 7f0fa69858..8c37456dbe 100644 --- a/compass/ocean/tests/baroclinic_gyre/namelist.forward +++ b/compass/ocean/tests/baroclinic_gyre/namelist.forward @@ -22,3 +22,4 @@ config_cvmix_shear_mixing_scheme = 'KPP' config_use_cvmix_kpp = .true. config_use_GM = .true. config_use_Redi = .true. +config_AM_timeSeriesStatsMonthly_enable = .true. diff --git a/compass/ocean/tests/baroclinic_gyre/streams.forward b/compass/ocean/tests/baroclinic_gyre/streams.forward index 9c82aa8e4e..efd14d7d36 100644 --- a/compass/ocean/tests/baroclinic_gyre/streams.forward +++ b/compass/ocean/tests/baroclinic_gyre/streams.forward @@ -31,6 +31,9 @@ + + + @@ -61,8 +64,8 @@ + + + @@ -103,4 +109,16 @@ + + + + From b03cb16b76be83884d4bc33b7428b1ca7842fc4a Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Tue, 30 Jul 2024 12:10:06 -0500 Subject: [PATCH 22/38] WIP - analysis and viz steps --- .../tests/baroclinic_gyre/gyre_test_case.py | 4 + compass/ocean/tests/baroclinic_gyre/moc.py | 94 +++++++++++++++++++ compass/ocean/tests/baroclinic_gyre/viz.py | 68 ++++++++++++++ 3 files changed, 166 insertions(+) create mode 100644 compass/ocean/tests/baroclinic_gyre/moc.py create mode 100644 compass/ocean/tests/baroclinic_gyre/viz.py diff --git a/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py b/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py index 7c01ccfe9f..46676023da 100644 --- a/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py +++ b/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py @@ -2,6 +2,7 @@ from compass.ocean.tests.baroclinic_gyre.cull_mesh import CullMesh from compass.ocean.tests.baroclinic_gyre.forward import Forward from compass.ocean.tests.baroclinic_gyre.initial_state import InitialState +from compass.ocean.tests.baroclinic_gyre.moc import Moc from compass.testcase import TestCase from compass.validate import compare_variables @@ -55,6 +56,9 @@ def __init__(self, test_group, resolution, long): self.add_step( Forward(test_case=self, resolution=resolution, long=long)) + if long: + self.add_step( + Moc(test_case=self, resolution=resolution)) def configure(self): """ diff --git a/compass/ocean/tests/baroclinic_gyre/moc.py b/compass/ocean/tests/baroclinic_gyre/moc.py new file mode 100644 index 0000000000..e893803cff --- /dev/null +++ b/compass/ocean/tests/baroclinic_gyre/moc.py @@ -0,0 +1,94 @@ +import os + +import numpy as np +import xarray +from mpas_tools.io import write_netcdf + +from compass.step import Step + + +class Moc(Step): + """ + A step for computing the zonally-averaged meridional overturning + streamfunction in the single basin of the baroclinic gyre + + Attributes + ---------- + resolution : float + The horizontal resolution (km) of the test case + """ + def __init__(self, test_case, resolution): + """ + Create the step + + Parameters + ---------- + test_case : compass.TestCase + The test case this step belongs to + + resolution : float + The horizontal resolution (km) of the test case + """ + super().__init__(test_case=test_case, name='moc') + self.resolution = resolution + + self.add_input_file('./init.nc') + self.add_input_file( + '../output/timeSeriesStatsMonthly.0001-01-01.nc') + self.add_output_file('moc.nc') + + def run(self): + """ + Run this step of the test case + """ + + in_dir = '../output' + out_dir = '.' + + # show progress only if we're not writing to a log file + # show_progress = self.log_filename is None + + lat_min = self.config.getfloat('baroclinic_gyre', 'lat_min') + lat_max = self.config.getfloat('baroclinic_gyre', 'lat_max') + dlat = 0.25 # set in config next + # latbins = np.arange(15.5, 75.5, 0.25) + latBins = np.arange(lat_min + dlat, lat_max + dlat, dlat) + nz = self.config.getfloat('vertical_grid', 'vert_levels') + + dsMesh = xarray.open_dataset(os.path.join(in_dir, 'init.nc')) + + ds = xarray.open_mfdataset( + '{}/timeSeriesStatsMonthly*.nc'.format(in_dir), + concat_dim='Time', combine='nested') + + moc = self._compute_amoc(dsMesh, ds, latBins, nz) + + dsMOC = xarray.Dataset() + dsMOC['xtime_startMonthly'] = ds.xtime_startMonthly + dsMOC['xtime_endMonthly'] = ds.xtime_endMonthly + dsMOC['moc'] = moc + dsMOC.moc.attrs['units'] = 'Sv' + dsMOC.moc.attrs['description'] = \ + 'zonally-averaged meridional overturning streamfunction' + outputFileName = '{}/moc.nc'.format(out_dir) + # if file_complete(ds, outputFileName): + # return + write_netcdf(dsMOC, outputFileName) + + def _compute_amoc(dsMesh, ds, latBins, nz): + """ + compute the overturning streamfunction for the given mesh + """ + + latCell = 180. / np.pi * dsMesh.variables['latCell'][:] + velArea = ds.vertVelocityTop.mean(axis=0) * ds.areaCell[:] + mocTop = np.zeros([np.size(latBins), nz + 1]) + for iLat in range(1, np.size(latBins)): + indlat = np.logical_and( + latCell >= latBins[iLat - 1], latCell < latBins[iLat]) + mocTop[iLat, :] = mocTop[iLat - 1, :] \ + + np.nansum(velArea[indlat, :], axis=0) + # convert m^3/s to Sverdrup + mocTop = mocTop * 1e-6 + mocTop = mocTop.T + return mocTop diff --git a/compass/ocean/tests/baroclinic_gyre/viz.py b/compass/ocean/tests/baroclinic_gyre/viz.py new file mode 100644 index 0000000000..3bd8c99e49 --- /dev/null +++ b/compass/ocean/tests/baroclinic_gyre/viz.py @@ -0,0 +1,68 @@ +import matplotlib.pyplot as plt +import numpy as np +import xarray + +from compass.step import Step + + +class Viz(Step): + """ + A step for visualizing output from baroclinic gyre + + Attributes + ---------- + resolution : float + The horizontal resolution (km) of the test case + """ + def __init__(self, test_case, resolution): + """ + Create the step + + Parameters + ---------- + test_case : compass.TestCase + The test case this step belongs to + + resolution : float + The horizontal resolution (km) of the test case + """ + super().__init__(test_case=test_case, name='viz') + self.resolution = resolution + + def run(self): + """ + Run this step of the test case + """ + + # config = self.config + out_dir = '../figures' + sim_dir = '../output' # check output structure + dsMesh = xarray.open_dataset('./init.nc') + ds = xarray.open_dataset(f'{sim_dir}/moc.nc') + # Insert plots here + self._plot_moc(ds, dsMesh, out_dir) + + def _plot_moc(ds, dsMesh, out_dir): + """ + Plot the final moc state for the test case + """ + + moc = ds.moc[:, :] # assume timemean here + latbins = np.arange(15.25, 75.25, 0.25) # needs updating + plt.contourf( + latbins, dsMesh.refInterfaces, moc, + cmap="RdBu_r", vmin=-12, vmax=12) + plt.gca().invert_yaxis() + plt.ylabel('Depth (m)') + plt.xlabel('Latitude') + idx = np.unravel_index(np.argmax(moc), moc.shape) + amoc = "max MOC = {:.1e}".format(round(np.max(moc), 1)) + maxloc = 'at lat = {} and z = {}m'.format( + latbins[idx[-1]], int(dsMesh.refInterfaces[idx[0]].values)) + maxval = 'max MOC = {:.1e} at def loc'.format( + round(np.max(moc[:, 175]), 1)) + plt.annotate(amoc + '\n' + maxloc + '\n' + maxval, + xy=(0.01, 0.05), xycoords='axes fraction') + # plt.text('%d2'0.1) + plt.colorbar() + plt.savefig('{}/AMOC_default_100.png'.format(out_dir)) From d61771a07d76297200555295dcce57a1a12bcdad Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Wed, 31 Jul 2024 11:21:19 -0500 Subject: [PATCH 23/38] WIP - debugging moc analysis --- compass/ocean/tests/baroclinic_gyre/moc.py | 13 +++++++------ compass/ocean/tests/baroclinic_gyre/viz.py | 6 +++--- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/moc.py b/compass/ocean/tests/baroclinic_gyre/moc.py index e893803cff..254c66f0ba 100644 --- a/compass/ocean/tests/baroclinic_gyre/moc.py +++ b/compass/ocean/tests/baroclinic_gyre/moc.py @@ -1,5 +1,3 @@ -import os - import numpy as np import xarray from mpas_tools.io import write_netcdf @@ -32,9 +30,9 @@ def __init__(self, test_case, resolution): super().__init__(test_case=test_case, name='moc') self.resolution = resolution - self.add_input_file('./init.nc') + self.add_input_file('../initial_state/initial_state.nc') self.add_input_file( - '../output/timeSeriesStatsMonthly.0001-01-01.nc') + '../forward/output/timeSeriesStatsMonthly.0001-01-01.nc') self.add_output_file('moc.nc') def run(self): @@ -42,7 +40,7 @@ def run(self): Run this step of the test case """ - in_dir = '../output' + in_dir = '../forward/output' out_dir = '.' # show progress only if we're not writing to a log file @@ -55,12 +53,15 @@ def run(self): latBins = np.arange(lat_min + dlat, lat_max + dlat, dlat) nz = self.config.getfloat('vertical_grid', 'vert_levels') - dsMesh = xarray.open_dataset(os.path.join(in_dir, 'init.nc')) + dsMesh = xarray.open_dataset('../initial_state/initial_state.nc') ds = xarray.open_mfdataset( '{}/timeSeriesStatsMonthly*.nc'.format(in_dir), concat_dim='Time', combine='nested') + # print(np.shape(dsMesh), np.shape(ds), np.shape(latBins), + # np.shape(nz)) + moc = self._compute_amoc(dsMesh, ds, latBins, nz) dsMOC = xarray.Dataset() diff --git a/compass/ocean/tests/baroclinic_gyre/viz.py b/compass/ocean/tests/baroclinic_gyre/viz.py index 3bd8c99e49..9a808c37c7 100644 --- a/compass/ocean/tests/baroclinic_gyre/viz.py +++ b/compass/ocean/tests/baroclinic_gyre/viz.py @@ -36,8 +36,8 @@ def run(self): # config = self.config out_dir = '../figures' - sim_dir = '../output' # check output structure - dsMesh = xarray.open_dataset('./init.nc') + sim_dir = '../forward/output' # check output structure + dsMesh = xarray.open_dataset('./initial_state/initial_state.nc') ds = xarray.open_dataset(f'{sim_dir}/moc.nc') # Insert plots here self._plot_moc(ds, dsMesh, out_dir) @@ -65,4 +65,4 @@ def _plot_moc(ds, dsMesh, out_dir): xy=(0.01, 0.05), xycoords='axes fraction') # plt.text('%d2'0.1) plt.colorbar() - plt.savefig('{}/AMOC_default_100.png'.format(out_dir)) + plt.savefig('{}/AMOC_default_3.png'.format(out_dir)) From dd7db804c8a1776295c8d891d6ec7481945495d0 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Wed, 31 Jul 2024 21:05:18 -0500 Subject: [PATCH 24/38] debugging moc calc --- compass/ocean/tests/baroclinic_gyre/moc.py | 25 ++++++++++++++-------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/moc.py b/compass/ocean/tests/baroclinic_gyre/moc.py index 254c66f0ba..af3aa71df9 100644 --- a/compass/ocean/tests/baroclinic_gyre/moc.py +++ b/compass/ocean/tests/baroclinic_gyre/moc.py @@ -50,8 +50,9 @@ def run(self): lat_max = self.config.getfloat('baroclinic_gyre', 'lat_max') dlat = 0.25 # set in config next # latbins = np.arange(15.5, 75.5, 0.25) - latBins = np.arange(lat_min + dlat, lat_max + dlat, dlat) - nz = self.config.getfloat('vertical_grid', 'vert_levels') + latBins = np.arange(lat_min + 2 * dlat, + lat_max + 2 * dlat, dlat) + nz = self.config.getint('vertical_grid', 'vert_levels') dsMesh = xarray.open_dataset('../initial_state/initial_state.nc') @@ -59,15 +60,19 @@ def run(self): '{}/timeSeriesStatsMonthly*.nc'.format(in_dir), concat_dim='Time', combine='nested') - # print(np.shape(dsMesh), np.shape(ds), np.shape(latBins), - # np.shape(nz)) + # print(dsMesh) + # print(ds) + # print(latBins) + # print(nz) moc = self._compute_amoc(dsMesh, ds, latBins, nz) dsMOC = xarray.Dataset() dsMOC['xtime_startMonthly'] = ds.xtime_startMonthly dsMOC['xtime_endMonthly'] = ds.xtime_endMonthly - dsMOC['moc'] = moc + dsMOC['moc'] = (['interfaceP1', 'latitudeBins'], moc) + dsMOC.coords['latitudeBins'] = latBins + dsMOC.coords['interfaceP1'] = np.arange(nz + 1) dsMOC.moc.attrs['units'] = 'Sv' dsMOC.moc.attrs['description'] = \ 'zonally-averaged meridional overturning streamfunction' @@ -76,20 +81,22 @@ def run(self): # return write_netcdf(dsMOC, outputFileName) - def _compute_amoc(dsMesh, ds, latBins, nz): + def _compute_amoc(self, dsMesh, ds, latBins, nz): """ compute the overturning streamfunction for the given mesh """ latCell = 180. / np.pi * dsMesh.variables['latCell'][:] - velArea = ds.vertVelocityTop.mean(axis=0) * ds.areaCell[:] + velArea = (ds.timeMonthly_avg_vertVelocityTop.mean(axis=0) * + dsMesh.areaCell[:]) mocTop = np.zeros([np.size(latBins), nz + 1]) for iLat in range(1, np.size(latBins)): indlat = np.logical_and( latCell >= latBins[iLat - 1], latCell < latBins[iLat]) - mocTop[iLat, :] = mocTop[iLat - 1, :] \ - + np.nansum(velArea[indlat, :], axis=0) + mocTop[iLat, :] = (mocTop[iLat - 1, :] + + np.nansum(velArea[indlat, :], axis=0)) # convert m^3/s to Sverdrup mocTop = mocTop * 1e-6 mocTop = mocTop.T + print(np.shape(mocTop)) return mocTop From 517a81c55df2708565c7465ba9289c7f58d39af3 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Thu, 1 Aug 2024 12:21:00 -0500 Subject: [PATCH 25/38] add time-varying moc --- compass/ocean/tests/baroclinic_gyre/moc.py | 28 ++++++++++++---------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/moc.py b/compass/ocean/tests/baroclinic_gyre/moc.py index af3aa71df9..fda7c9963a 100644 --- a/compass/ocean/tests/baroclinic_gyre/moc.py +++ b/compass/ocean/tests/baroclinic_gyre/moc.py @@ -70,9 +70,9 @@ def run(self): dsMOC = xarray.Dataset() dsMOC['xtime_startMonthly'] = ds.xtime_startMonthly dsMOC['xtime_endMonthly'] = ds.xtime_endMonthly - dsMOC['moc'] = (['interfaceP1', 'latitudeBins'], moc) - dsMOC.coords['latitudeBins'] = latBins - dsMOC.coords['interfaceP1'] = np.arange(nz + 1) + dsMOC['moc'] = (["Time", "latBins", "nVertLevelsP1"], moc) + dsMOC.coords['latBins'] = latBins + dsMOC.coords['nVertLevelsP1'] = np.arange(nz + 1) dsMOC.moc.attrs['units'] = 'Sv' dsMOC.moc.attrs['description'] = \ 'zonally-averaged meridional overturning streamfunction' @@ -87,16 +87,18 @@ def _compute_amoc(self, dsMesh, ds, latBins, nz): """ latCell = 180. / np.pi * dsMesh.variables['latCell'][:] - velArea = (ds.timeMonthly_avg_vertVelocityTop.mean(axis=0) * - dsMesh.areaCell[:]) - mocTop = np.zeros([np.size(latBins), nz + 1]) - for iLat in range(1, np.size(latBins)): - indlat = np.logical_and( - latCell >= latBins[iLat - 1], latCell < latBins[iLat]) - mocTop[iLat, :] = (mocTop[iLat - 1, :] + - np.nansum(velArea[indlat, :], axis=0)) + nt = np.shape(ds.timeMonthly_avg_vertVelocityTop)[0] + mocTop = np.zeros([nt, np.size(latBins), nz + 1]) + indlat_all = [np.logical_and( + latCell >= latBins[iLat - 1], latCell < latBins[iLat]) + for iLat in range(1, np.size(latBins))] + for tt in range(nt): + for iLat in range(1, np.size(latBins)): + indlat = indlat_all[iLat - 1] + velArea = (ds.timeMonthly_avg_vertVelocityTop[tt, :, :] * + dsMesh.areaCell[:]) + mocTop[tt, iLat, :] = (mocTop[tt, iLat - 1, :] + + np.nansum(velArea[indlat, :], axis=0)) # convert m^3/s to Sverdrup mocTop = mocTop * 1e-6 - mocTop = mocTop.T - print(np.shape(mocTop)) return mocTop From 51e742229f00b1a9b0e23f2b2d3d2ba9ca923452 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Thu, 1 Aug 2024 13:15:04 -0500 Subject: [PATCH 26/38] added moc viz step --- .../tests/baroclinic_gyre/gyre_test_case.py | 3 +++ compass/ocean/tests/baroclinic_gyre/viz.py | 19 +++++++++---------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py b/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py index 46676023da..b8baafab0c 100644 --- a/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py +++ b/compass/ocean/tests/baroclinic_gyre/gyre_test_case.py @@ -3,6 +3,7 @@ from compass.ocean.tests.baroclinic_gyre.forward import Forward from compass.ocean.tests.baroclinic_gyre.initial_state import InitialState from compass.ocean.tests.baroclinic_gyre.moc import Moc +from compass.ocean.tests.baroclinic_gyre.viz import Viz from compass.testcase import TestCase from compass.validate import compare_variables @@ -59,6 +60,8 @@ def __init__(self, test_group, resolution, long): if long: self.add_step( Moc(test_case=self, resolution=resolution)) + self.add_step( + Viz(test_case=self, resolution=resolution)) def configure(self): """ diff --git a/compass/ocean/tests/baroclinic_gyre/viz.py b/compass/ocean/tests/baroclinic_gyre/viz.py index 9a808c37c7..d5d6eb886c 100644 --- a/compass/ocean/tests/baroclinic_gyre/viz.py +++ b/compass/ocean/tests/baroclinic_gyre/viz.py @@ -35,20 +35,20 @@ def run(self): """ # config = self.config - out_dir = '../figures' - sim_dir = '../forward/output' # check output structure - dsMesh = xarray.open_dataset('./initial_state/initial_state.nc') + out_dir = '.' + sim_dir = '../moc' + dsMesh = xarray.open_dataset('../initial_state/initial_state.nc') ds = xarray.open_dataset(f'{sim_dir}/moc.nc') # Insert plots here self._plot_moc(ds, dsMesh, out_dir) - def _plot_moc(ds, dsMesh, out_dir): + def _plot_moc(self, ds, dsMesh, out_dir): """ - Plot the final moc state for the test case + Plot the time-mean moc state for the test case """ - moc = ds.moc[:, :] # assume timemean here - latbins = np.arange(15.25, 75.25, 0.25) # needs updating + moc = ds.moc[:, :, :].mean(axis=0).T.values + latbins = ds.latBins plt.contourf( latbins, dsMesh.refInterfaces, moc, cmap="RdBu_r", vmin=-12, vmax=12) @@ -58,11 +58,10 @@ def _plot_moc(ds, dsMesh, out_dir): idx = np.unravel_index(np.argmax(moc), moc.shape) amoc = "max MOC = {:.1e}".format(round(np.max(moc), 1)) maxloc = 'at lat = {} and z = {}m'.format( - latbins[idx[-1]], int(dsMesh.refInterfaces[idx[0]].values)) + latbins[idx[-1]].values, int(dsMesh.refInterfaces[idx[0]].values)) maxval = 'max MOC = {:.1e} at def loc'.format( round(np.max(moc[:, 175]), 1)) plt.annotate(amoc + '\n' + maxloc + '\n' + maxval, xy=(0.01, 0.05), xycoords='axes fraction') - # plt.text('%d2'0.1) plt.colorbar() - plt.savefig('{}/AMOC_default_3.png'.format(out_dir)) + plt.savefig('{}/time_avg_moc.png'.format(out_dir)) From 7e37003c5938ec193d234bf8cc51cb1c248db72e Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Thu, 1 Aug 2024 13:48:09 -0500 Subject: [PATCH 27/38] added spinup timeseries plot --- compass/ocean/tests/baroclinic_gyre/viz.py | 34 ++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/viz.py b/compass/ocean/tests/baroclinic_gyre/viz.py index d5d6eb886c..9d70e9dc35 100644 --- a/compass/ocean/tests/baroclinic_gyre/viz.py +++ b/compass/ocean/tests/baroclinic_gyre/viz.py @@ -36,11 +36,13 @@ def run(self): # config = self.config out_dir = '.' - sim_dir = '../moc' + moc_dir = '../moc' + mon_dir = '../forward/output' dsMesh = xarray.open_dataset('../initial_state/initial_state.nc') - ds = xarray.open_dataset(f'{sim_dir}/moc.nc') + ds = xarray.open_dataset(f'{moc_dir}/moc.nc') # Insert plots here self._plot_moc(ds, dsMesh, out_dir) + self._plot_spinup(mon_dir, dsMesh, out_dir) def _plot_moc(self, ds, dsMesh, out_dir): """ @@ -65,3 +67,31 @@ def _plot_moc(self, ds, dsMesh, out_dir): xy=(0.01, 0.05), xycoords='axes fraction') plt.colorbar() plt.savefig('{}/time_avg_moc.png'.format(out_dir)) + + def _plot_spinup(self, mon_dir, dsMesh, out_dir): + """ + Plot the timeseries of monthy layer-mean + kinetic energy and temperature for the test case + """ + + ds = xarray.open_mfdataset( + '{}/timeSeriesStatsMonthly*.nc'.format(mon_dir), + concat_dim='Time', combine='nested') + KE = ds.timeMonthly_avg_kineticEnergyCell[:, :, :].mean(axis=1) + T = ds.timeMonthly_avg_activeTracers_temperature[:, :, :].mean(axis=1) + midlayer = (dsMesh.refInterfaces + + 0.5 * + (np.roll(dsMesh.refInterfaces, -1) - dsMesh.refInterfaces) + ).values[:-1] + + fig, ax = plt.subplots(2, 1, figsize=(6, 8)) + for ll in [0, 3, 6, 10, 14]: + ax[0].plot(KE[:, ll], label='{}m'.format(int(midlayer[ll]))) + ax[1].plot(T[:, ll], label='{}m'.format(int(midlayer[ll]))) + ax[0].legend() + ax[1].legend() + ax[0].set_xlabel('Time (months)') + ax[1].set_xlabel('Time (months)') + ax[0].set_ylabel('Layer Mean Kinetic Energy ($m^2 s^{-2}$)') + ax[1].set_ylabel(r'Layer Mean Temperature ($^{\circ}$C)') + plt.savefig('{}/spinup_ft.png'.format(out_dir), bbox_inches='tight') From 4f8ea0c460d43446f0748cc3c4458422a091ab80 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Thu, 1 Aug 2024 13:59:28 -0500 Subject: [PATCH 28/38] removed some static fields from output and monthly streams --- compass/ocean/tests/baroclinic_gyre/streams.forward | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/streams.forward b/compass/ocean/tests/baroclinic_gyre/streams.forward index efd14d7d36..bea43d8600 100644 --- a/compass/ocean/tests/baroclinic_gyre/streams.forward +++ b/compass/ocean/tests/baroclinic_gyre/streams.forward @@ -13,17 +13,11 @@ clobber_mode="overwrite" output_interval="{{ output_interval }}"> - - - - - - @@ -71,17 +65,11 @@ io_type="pnetcdf" packages="timeSeriesStatsMonthlyAMPKG" output_interval="00-01-00_00:00:00"> - - - - - - From 1e743102375a81adfa0e3c423f196cc8c784d10c Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Thu, 1 Aug 2024 18:29:53 -0500 Subject: [PATCH 29/38] added averaging period for moc --- compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg | 5 +++++ compass/ocean/tests/baroclinic_gyre/viz.py | 7 +++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg b/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg index 54c2364b9c..7d6225af93 100644 --- a/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg +++ b/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg @@ -48,3 +48,8 @@ restoring_temp_max = 30. # Restoring piston velocity for surface temperature (s-1) restoring_temp_piston_vel = 3.86e-7 + +# config options for the mean state visualization +[mean_state_viz] +# number of years to average over for the mean state plots +time_averaging_length = 1 diff --git a/compass/ocean/tests/baroclinic_gyre/viz.py b/compass/ocean/tests/baroclinic_gyre/viz.py index 9d70e9dc35..7e9dfc7e2f 100644 --- a/compass/ocean/tests/baroclinic_gyre/viz.py +++ b/compass/ocean/tests/baroclinic_gyre/viz.py @@ -34,7 +34,6 @@ def run(self): Run this step of the test case """ - # config = self.config out_dir = '.' moc_dir = '../moc' mon_dir = '../forward/output' @@ -48,8 +47,8 @@ def _plot_moc(self, ds, dsMesh, out_dir): """ Plot the time-mean moc state for the test case """ - - moc = ds.moc[:, :, :].mean(axis=0).T.values + avg_len = self.config.getint('mean_state_viz', 'time_averaging_length') + moc = ds.moc[-12 * avg_len:, :, :].mean(axis=0).T.values latbins = ds.latBins plt.contourf( latbins, dsMesh.refInterfaces, moc, @@ -66,7 +65,7 @@ def _plot_moc(self, ds, dsMesh, out_dir): plt.annotate(amoc + '\n' + maxloc + '\n' + maxval, xy=(0.01, 0.05), xycoords='axes fraction') plt.colorbar() - plt.savefig('{}/time_avg_moc.png'.format(out_dir)) + plt.savefig('{}/time_avg_moc_last{}years.png'.format(out_dir, avg_len)) def _plot_spinup(self, mon_dir, dsMesh, out_dir): """ From 05f2b79f890286bdede916d332e20ac276aa3c8e Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Mon, 12 Aug 2024 10:30:29 -0500 Subject: [PATCH 30/38] added time mean state plots --- compass/ocean/tests/baroclinic_gyre/viz.py | 43 +++++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/viz.py b/compass/ocean/tests/baroclinic_gyre/viz.py index 7e9dfc7e2f..497c87c570 100644 --- a/compass/ocean/tests/baroclinic_gyre/viz.py +++ b/compass/ocean/tests/baroclinic_gyre/viz.py @@ -1,3 +1,4 @@ +import cmocean import matplotlib.pyplot as plt import numpy as np import xarray @@ -41,6 +42,7 @@ def run(self): ds = xarray.open_dataset(f'{moc_dir}/moc.nc') # Insert plots here self._plot_moc(ds, dsMesh, out_dir) + self._plot_mean_surface_state(mon_dir, dsMesh, out_dir) self._plot_spinup(mon_dir, dsMesh, out_dir) def _plot_moc(self, ds, dsMesh, out_dir): @@ -60,8 +62,9 @@ def _plot_moc(self, ds, dsMesh, out_dir): amoc = "max MOC = {:.1e}".format(round(np.max(moc), 1)) maxloc = 'at lat = {} and z = {}m'.format( latbins[idx[-1]].values, int(dsMesh.refInterfaces[idx[0]].values)) - maxval = 'max MOC = {:.1e} at def loc'.format( - round(np.max(moc[:, 175]), 1)) + maxval = 'max MOC = {:.1e} at lat={}-{}'.format( + round(np.max(moc[:, 175]), 1), + latbins[175 - 1].values, latbins[175].values) plt.annotate(amoc + '\n' + maxloc + '\n' + maxval, xy=(0.01, 0.05), xycoords='axes fraction') plt.colorbar() @@ -94,3 +97,39 @@ def _plot_spinup(self, mon_dir, dsMesh, out_dir): ax[0].set_ylabel('Layer Mean Kinetic Energy ($m^2 s^{-2}$)') ax[1].set_ylabel(r'Layer Mean Temperature ($^{\circ}$C)') plt.savefig('{}/spinup_ft.png'.format(out_dir), bbox_inches='tight') + + def _plot_mean_surface_state(self, mon_dir, dsMesh, out_dir): + + lon = 180. / np.pi * dsMesh.variables['lonCell'][:] + lat = 180. / np.pi * dsMesh.variables['latCell'][:] + ds = xarray.open_mfdataset( + '{}/timeSeriesStatsMonthly*.nc'.format(mon_dir), + concat_dim='Time', combine='nested') + + heatflux = ( + ds.timeMonthly_avg_activeTracerSurfaceFluxTendency_temperatureSurfaceFluxTendency[:, :, 0] * + 3996. * 1026.0) # add to config or pull from constants + avg_len = self.config.getint('mean_state_viz', 'time_averaging_length') + absmax = np.max(np.abs(np.mean(heatflux[-12 * avg_len:, :], axis=0))) + fig, ax = plt.subplots(1, 3, figsize=[18, 5]) + ax[0].tricontour(lon, lat, + np.mean(ds.timeMonthly_avg_ssh[-12 * avg_len:, :], axis=0), + levels=14, linewidths=0.5, colors='k') + ssh = ax[0].tricontourf(lon, lat, + np.mean(ds.timeMonthly_avg_ssh[-12 * avg_len:, :], axis=0), levels=14, cmap="RdBu_r") + plt.colorbar(ssh, ax=ax[0]) + ax[1].tricontour(lon, lat, np.mean(ds.timeMonthly_avg_ssh[-12 * avg_len:, :], axis=0), levels=14, linewidths=.8, colors='k') + temp = ax[1].tricontourf(lon, lat, np.mean(ds.timeMonthly_avg_activeTracers_temperature[-12 * avg_len:, :, 0], axis=0), levels=15, cmap=cmocean.cm.thermal) + plt.colorbar(temp, ax=ax[1]) + ax[2].tricontour(lon, lat, np.mean(ds.timeMonthly_avg_ssh[-12 * avg_len:, :], axis=0), levels=14, linewidths=.8, colors='k') + hf = ax[2].tricontourf(lon, lat, np.mean(heatflux[-12 * avg_len:, :], axis=0), levels=np.linspace(- absmax, absmax, 27), cmap="RdBu_r") + plt.colorbar(hf, ax=ax[2]) + + ax[0].set_title('SSH (m)') + ax[1].set_title(r'SST ($^\circ$C)') + ax[2].set_title('Heat Flux (W/s)') + + ax[0].set_ylabel(r'Latitude ($^\circ$)') + for axis in ax: + axis.set_xlabel(r'Longitude ($^\circ$)') + plt.savefig('{}/meansurfacestate_last{}years.png'.format(out_dir, avg_len), bbox_inches='tight') From 1964db41014cf1162a3a42026c26f8404fa202aa Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Mon, 12 Aug 2024 10:43:29 -0500 Subject: [PATCH 31/38] WIP - correction restoring velocity --- .../ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg | 4 ++-- compass/ocean/tests/baroclinic_gyre/initial_state.py | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg b/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg index 7d6225af93..4283b2eb39 100644 --- a/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg +++ b/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg @@ -46,8 +46,8 @@ wind_stress_max = 0.1 restoring_temp_min = 0. restoring_temp_max = 30. -# Restoring piston velocity for surface temperature (s-1) -restoring_temp_piston_vel = 3.86e-7 +# Restoring timescale for surface temperature (in days) +restoring_temp_timescale = 30. # config options for the mean state visualization [mean_state_viz] diff --git a/compass/ocean/tests/baroclinic_gyre/initial_state.py b/compass/ocean/tests/baroclinic_gyre/initial_state.py index 10ea8ab573..bfdd3cbf32 100644 --- a/compass/ocean/tests/baroclinic_gyre/initial_state.py +++ b/compass/ocean/tests/baroclinic_gyre/initial_state.py @@ -49,8 +49,8 @@ def run(self): dsMesh = xr.open_dataset('culled_mesh.nc') ds = _write_initial_state(config, dsMesh) - - _write_forcing(config, ds.latCell) + print('bottomDepth0', ds.refBottomDepth[0]) + _write_forcing(config, ds.latCell, ds.refBottomDepth) def _write_initial_state(config, dsMesh): @@ -107,14 +107,14 @@ def _write_initial_state(config, dsMesh): return ds -def _write_forcing(config, lat): +def _write_forcing(config, lat, refBottomDepth): section = config['baroclinic_gyre'] latMin = section.getfloat('lat_min') latMax = section.getfloat('lat_max') tauMax = section.getfloat('wind_stress_max') tempMin = section.getfloat('restoring_temp_min') tempMax = section.getfloat('restoring_temp_max') - restoring_temp_piston_vel = section.getfloat('restoring_temp_piston_vel') + restoring_temp_timescale = section.getfloat('restoring_temp_timescale') initial_salinity = section.getfloat('initial_salinity') lat = np.rad2deg(lat) # set wind stress @@ -132,8 +132,8 @@ def _write_forcing(config, lat): temperatureSurfaceRestoringValue.expand_dims(dim='Time', axis=0) temperaturePistonVelocity = \ - restoring_temp_piston_vel * xr.ones_like( - temperatureSurfaceRestoringValue) + (refBottomDepth[0] * xr.ones_like(temperatureSurfaceRestoringValue) / + (restoring_temp_timescale * 24. * 3600.)) salinitySurfaceRestoringValue = \ initial_salinity * xr.ones_like(temperatureSurfaceRestoringValue) From 3d5fff77166329772779af8871cb4f8c6c3be919 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Mon, 12 Aug 2024 11:11:21 -0500 Subject: [PATCH 32/38] modified doc for restoring correction and estimated spin-up time --- .../ocean/test_groups/baroclinic_gyre.rst | 4 ++++ .../ocean/test_groups/baroclinic_gyre.rst | 13 ++++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst b/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst index 911e139d24..433733c03a 100644 --- a/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst +++ b/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst @@ -62,5 +62,9 @@ resolutions are supported. ``ocean/baroclinic_gyre/80km/3_year_test`` performs a longer (3 year) integration of the model forward in time. The point is to (ultimately) compare the quasi-steady state with theroretical scaling and results from other models. Currently, only the 80-km and 20-km horizontal resolutions are supported. Note that 3 years is not long enough to reach steady state. +For the 80km configuration, the estimated time to equilibration is roughly 50 years. +For a detailed comparison of the mean state against theory and results from other models, +the mean state at 100 years may be most appropriate to be aligned with the MITgcm results. + diff --git a/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst b/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst index 6f459aef0e..de6ec45b5b 100644 --- a/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst +++ b/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst @@ -52,7 +52,7 @@ Temperature is restored in the surface layer to a linear profile: \theta^* = \frac{\theta_{\rm max} - \theta_{\rm min}}{L_\varphi} (\varphi_{\rm max} - \varphi) + \theta_{\rm min} :label: baroc_restore_theta -where the piston velocity :math:`U_{piston}=3.86e-7 \text{ } (s^{-1})` (equivalent to a relaxation timescale of 30 days) and :math:`\theta_{\rm max}=30^{\circ}` C, :math:`\theta_{\rm min}=0^{\circ}` C. +where the piston velocity :math:`U_{piston}` (in m.s^{-1}) is calculated by applying a relaxation timescale of 30 days (set in config file) over the thickness of the top layer (50 m by default) and :math:`\theta_{\rm max}=30^{\circ}` C, :math:`\theta_{\rm min}=0^{\circ}` C. Initial state ------------- @@ -157,8 +157,8 @@ All 2 test cases share the same set of config options: restoring_temp_min = 0. restoring_temp_max = 30. - # Restoring piston velocity for surface temperature (s-1) - restoring_temp_piston_vel = 3.86e-7 + # Restoring timescale for surface temperature (in days) + restoring_temp_timescale = 30. performance_test ---------------- @@ -171,7 +171,10 @@ prognostic variables for regression testing. ----------- ``ocean/baroclinic_gyre/3_year_test`` is an additional version of the -baroclinic_gyre test case for a test run to spin up (3 years) -and validation of the mean state against theory and results from other models. +baroclinic_gyre test case with a longer (3-year) spin-up. By default, it +includes monthly mean output, and plots the mean state of the simulation for the last 1 year (option in the config file). +Note that for the 80km configuration, the estimated time to equilibration is roughly 50 years (approx 3hours on default layout). +For a detailed comparison of the mean state against theory and results from other models, +the mean state at 100 years may be most appropriate to be aligned with the MITgcm results. .. _MITgcm test case: https://mitgcm.readthedocs.io/en/latest/examples/baroclinic_gyre/baroclinic_gyre.html From e976366a1359ae507c76c21e07483b607223c5dc Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Mon, 12 Aug 2024 11:59:47 -0500 Subject: [PATCH 33/38] correction to heat flux plot --- compass/ocean/tests/baroclinic_gyre/viz.py | 1 + 1 file changed, 1 insertion(+) diff --git a/compass/ocean/tests/baroclinic_gyre/viz.py b/compass/ocean/tests/baroclinic_gyre/viz.py index 497c87c570..9717fa3eac 100644 --- a/compass/ocean/tests/baroclinic_gyre/viz.py +++ b/compass/ocean/tests/baroclinic_gyre/viz.py @@ -108,6 +108,7 @@ def _plot_mean_surface_state(self, mon_dir, dsMesh, out_dir): heatflux = ( ds.timeMonthly_avg_activeTracerSurfaceFluxTendency_temperatureSurfaceFluxTendency[:, :, 0] * + ds.timeMonthly_avg_layerThickness[:, :, 0] * 3996. * 1026.0) # add to config or pull from constants avg_len = self.config.getint('mean_state_viz', 'time_averaging_length') absmax = np.max(np.abs(np.mean(heatflux[-12 * avg_len:, :], axis=0))) From 77b6e27e25825d3d39529b322b66ac98c8df88c8 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Mon, 12 Aug 2024 12:00:27 -0500 Subject: [PATCH 34/38] WIP - added surface flux variable to streams as test --- compass/ocean/tests/baroclinic_gyre/streams.forward | 1 + 1 file changed, 1 insertion(+) diff --git a/compass/ocean/tests/baroclinic_gyre/streams.forward b/compass/ocean/tests/baroclinic_gyre/streams.forward index bea43d8600..2f34120ff8 100644 --- a/compass/ocean/tests/baroclinic_gyre/streams.forward +++ b/compass/ocean/tests/baroclinic_gyre/streams.forward @@ -94,6 +94,7 @@ + From a85d655d0058268225c6d3e843f76f8ce6b0d2de Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Mon, 12 Aug 2024 12:18:34 -0500 Subject: [PATCH 35/38] correction to plot title --- compass/ocean/tests/baroclinic_gyre/viz.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compass/ocean/tests/baroclinic_gyre/viz.py b/compass/ocean/tests/baroclinic_gyre/viz.py index 9717fa3eac..a2fa33b0a2 100644 --- a/compass/ocean/tests/baroclinic_gyre/viz.py +++ b/compass/ocean/tests/baroclinic_gyre/viz.py @@ -128,7 +128,7 @@ def _plot_mean_surface_state(self, mon_dir, dsMesh, out_dir): ax[0].set_title('SSH (m)') ax[1].set_title(r'SST ($^\circ$C)') - ax[2].set_title('Heat Flux (W/s)') + ax[2].set_title('Heat Flux (W/m^{2})') ax[0].set_ylabel(r'Latitude ($^\circ$)') for axis in ax: From b7139d35c70ff62a1f85bcaf73a5e5e6d7728bb8 Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Tue, 13 Aug 2024 13:00:08 -0500 Subject: [PATCH 36/38] corrected the heat flux viz --- .../ocean/tests/baroclinic_gyre/forward.py | 5 +-- compass/ocean/tests/baroclinic_gyre/viz.py | 34 +++++++++++-------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/forward.py b/compass/ocean/tests/baroclinic_gyre/forward.py index 957e516cd1..0642238f57 100644 --- a/compass/ocean/tests/baroclinic_gyre/forward.py +++ b/compass/ocean/tests/baroclinic_gyre/forward.py @@ -104,8 +104,9 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, self.add_model_as_input() self.add_output_file(filename='output/output.0001-01-01_00.00.00.nc') - self.add_output_file(filename='output/' - 'timeSeriesStatsMonthly.0001-01-01.nc') + if long: + self.add_output_file(filename='output/' + 'timeSeriesStatsMonthly.0001-01-01.nc') # no setup() is needed diff --git a/compass/ocean/tests/baroclinic_gyre/viz.py b/compass/ocean/tests/baroclinic_gyre/viz.py index a2fa33b0a2..36bdf01f47 100644 --- a/compass/ocean/tests/baroclinic_gyre/viz.py +++ b/compass/ocean/tests/baroclinic_gyre/viz.py @@ -2,6 +2,7 @@ import matplotlib.pyplot as plt import numpy as np import xarray +from mpas_tools.cime.constants import constants from compass.step import Step @@ -105,25 +106,27 @@ def _plot_mean_surface_state(self, mon_dir, dsMesh, out_dir): ds = xarray.open_mfdataset( '{}/timeSeriesStatsMonthly*.nc'.format(mon_dir), concat_dim='Time', combine='nested') - heatflux = ( - ds.timeMonthly_avg_activeTracerSurfaceFluxTendency_temperatureSurfaceFluxTendency[:, :, 0] * - ds.timeMonthly_avg_layerThickness[:, :, 0] * - 3996. * 1026.0) # add to config or pull from constants + ds.timeMonthly_avg_activeTracersSurfaceFlux_temperatureSurfaceFlux[:, :] * # noqa: E501 + constants['SHR_CONST_CPSW'] * constants['SHR_CONST_RHOSW']) avg_len = self.config.getint('mean_state_viz', 'time_averaging_length') - absmax = np.max(np.abs(np.mean(heatflux[-12 * avg_len:, :], axis=0))) + absmax = np.max(np.abs(np.mean(heatflux[-12 * avg_len:, :].values, axis=0))) # noqa: E501 fig, ax = plt.subplots(1, 3, figsize=[18, 5]) - ax[0].tricontour(lon, lat, - np.mean(ds.timeMonthly_avg_ssh[-12 * avg_len:, :], axis=0), - levels=14, linewidths=0.5, colors='k') - ssh = ax[0].tricontourf(lon, lat, - np.mean(ds.timeMonthly_avg_ssh[-12 * avg_len:, :], axis=0), levels=14, cmap="RdBu_r") + ax[0].tricontour(lon, lat, np.mean(ds.timeMonthly_avg_ssh[-12 * avg_len:, :], axis=0), # noqa: E501 + levels=14, linewidths=0.5, colors='k') + ssh = ax[0].tricontourf(lon, lat, np.mean(ds.timeMonthly_avg_ssh[-12 * avg_len:, :], axis=0), # noqa: E501 + levels=14, cmap="RdBu_r") plt.colorbar(ssh, ax=ax[0]) - ax[1].tricontour(lon, lat, np.mean(ds.timeMonthly_avg_ssh[-12 * avg_len:, :], axis=0), levels=14, linewidths=.8, colors='k') - temp = ax[1].tricontourf(lon, lat, np.mean(ds.timeMonthly_avg_activeTracers_temperature[-12 * avg_len:, :, 0], axis=0), levels=15, cmap=cmocean.cm.thermal) + ax[1].tricontour(lon, lat, np.mean(ds.timeMonthly_avg_ssh[-12 * avg_len:, :], axis=0), # noqa: E501 + levels=14, linewidths=.8, colors='k') + temp = ax[1].tricontourf(lon, lat, + np.mean(ds.timeMonthly_avg_activeTracers_temperature[-12 * avg_len:, :, 0], axis=0), # noqa: E501 + levels=15, cmap=cmocean.cm.thermal) plt.colorbar(temp, ax=ax[1]) - ax[2].tricontour(lon, lat, np.mean(ds.timeMonthly_avg_ssh[-12 * avg_len:, :], axis=0), levels=14, linewidths=.8, colors='k') - hf = ax[2].tricontourf(lon, lat, np.mean(heatflux[-12 * avg_len:, :], axis=0), levels=np.linspace(- absmax, absmax, 27), cmap="RdBu_r") + ax[2].tricontour(lon, lat, np.mean(ds.timeMonthly_avg_ssh[-12 * avg_len:, :], axis=0), # noqa: E501 + levels=14, linewidths=.8, colors='k') + hf = ax[2].tricontourf(lon, lat, np.mean(heatflux[-12 * avg_len:, :], axis=0), # noqa: E501 + levels=np.linspace(- absmax, absmax, 27), cmap="RdBu_r") # noqa: E501 plt.colorbar(hf, ax=ax[2]) ax[0].set_title('SSH (m)') @@ -133,4 +136,5 @@ def _plot_mean_surface_state(self, mon_dir, dsMesh, out_dir): ax[0].set_ylabel(r'Latitude ($^\circ$)') for axis in ax: axis.set_xlabel(r'Longitude ($^\circ$)') - plt.savefig('{}/meansurfacestate_last{}years.png'.format(out_dir, avg_len), bbox_inches='tight') + plt.savefig('{}/meansurfacestate_last{}years.png'.format( + out_dir, avg_len), bbox_inches='tight') From 5d571a90d00555b8d0ef4ec1baf2dc8cc33bba3a Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Tue, 13 Aug 2024 15:14:58 -0500 Subject: [PATCH 37/38] best practice modif for strings --- compass/ocean/tests/baroclinic_gyre/initial_state.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/initial_state.py b/compass/ocean/tests/baroclinic_gyre/initial_state.py index bfdd3cbf32..d09590cc04 100644 --- a/compass/ocean/tests/baroclinic_gyre/initial_state.py +++ b/compass/ocean/tests/baroclinic_gyre/initial_state.py @@ -77,16 +77,16 @@ def _write_initial_state(config, dsMesh): print(f'Tinit: {temperature[0,0,:].values}') val_bot = aa * np.log(bb + cc) val_top = aa * np.log(cc) - print(f'analytical bottom T: {val_bot} at \ - depth : {bottom_depth}') - print(f'analytical surface T: {val_top} at \ - depth = 0') + print(f'analytical bottom T: {val_bot} at ' + f'depth : {bottom_depth}') + print(f'analytical surface T: {val_top} at ' + f'depth = 0') # temperature = (-11. * np.log(0.0414 * # (-1. * ds.zMid + 100.3)) + 48.8) # temperature = temperature.transpose('Time', 'nCells', 'nVertLevels') - print(f'bottom layer T: {temperature[0, 0, -1]} and \ - surface layer T: {temperature[0, 0, 0]}') + print(f'bottom layer T: {temperature[0, 0, -1]} and ' + f'surface layer T: {temperature[0, 0, 0]}') salinity = initial_salinity * xr.ones_like(temperature) normalVelocity = xr.zeros_like(ds.xEdge) From 36f3f91093fb48e1d3b335873adb2525aab0e23a Mon Sep 17 00:00:00 2001 From: Alice Barthel Date: Fri, 16 Aug 2024 16:49:47 -0500 Subject: [PATCH 38/38] PR review changes --- .../tests/baroclinic_gyre/baroclinic_gyre.cfg | 16 +- .../ocean/tests/baroclinic_gyre/cull_mesh.py | 2 +- .../ocean/tests/baroclinic_gyre/forward.py | 4 +- .../tests/baroclinic_gyre/initial_state.py | 6 - compass/ocean/tests/baroclinic_gyre/moc.py | 18 +-- compass/ocean/tests/baroclinic_gyre/viz.py | 41 ++--- docs/developers_guide/ocean/api.rst | 8 + .../ocean/test_groups/baroclinic_gyre.rst | 85 +++++++++-- .../ocean/test_groups/baroclinic_gyre.rst | 141 ++++++++++++------ .../images/baroclinic_gyre_config.png | Bin 195790 -> 42775 bytes 10 files changed, 211 insertions(+), 110 deletions(-) diff --git a/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg b/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg index 4283b2eb39..757918f28c 100644 --- a/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg +++ b/compass/ocean/tests/baroclinic_gyre/baroclinic_gyre.cfg @@ -5,13 +5,13 @@ # the type of vertical grid grid_type = linear_dz -# the linear rate of thickness increase for linear_dz +# the linear rate of thickness (m) increase for linear_dz linear_dz_rate = 10. # Number of vertical levels vert_levels = 15 -# Total water column depth +# Total water column depth in m bottom_depth = 1800. # The type of vertical coordinate (e.g. z-level, z-star) @@ -32,24 +32,26 @@ lat_max = 75 lon_min = 0 lon_max = 60 -# Initial vertical temperature profile +# Initial vertical temperature profile (C) initial_temp_top = 33. initial_temp_bot = 1. # Constant salinity value (also used in restoring) initial_salinity = 34. -# Maximum zonal wind stress value +# Maximum zonal wind stress value (N m-2) wind_stress_max = 0.1 -# Surface temperature restoring +# Surface temperature restoring profile restoring_temp_min = 0. restoring_temp_max = 30. # Restoring timescale for surface temperature (in days) restoring_temp_timescale = 30. -# config options for the mean state visualization -[mean_state_viz] +# config options for the post processing (moc and viz) +[baroclinic_gyre_post] +# latitude bin increment for the moc calculation +dlat = 0.25 # number of years to average over for the mean state plots time_averaging_length = 1 diff --git a/compass/ocean/tests/baroclinic_gyre/cull_mesh.py b/compass/ocean/tests/baroclinic_gyre/cull_mesh.py index 54cdc176c7..36cccc5f61 100644 --- a/compass/ocean/tests/baroclinic_gyre/cull_mesh.py +++ b/compass/ocean/tests/baroclinic_gyre/cull_mesh.py @@ -8,7 +8,7 @@ class CullMesh(Step): """ - Cull a global mesh to only a signle basin + Cull a global mesh to only a single basin Attributes ---------- """ diff --git a/compass/ocean/tests/baroclinic_gyre/forward.py b/compass/ocean/tests/baroclinic_gyre/forward.py index 0642238f57..0b31277a3e 100644 --- a/compass/ocean/tests/baroclinic_gyre/forward.py +++ b/compass/ocean/tests/baroclinic_gyre/forward.py @@ -89,9 +89,7 @@ def __init__(self, test_case, resolution, name='forward', subdir=None, options[f'config_{option}'] = res_params[option] if long: # run for 3 years instead of 3 time steps - options['config_start_time'] = "'0001-01-01_00:00:00'" - options['config_stop_time'] = "'0004-01-01_00:00:00'" - options['config_run_duration'] = "'none'" + options['config_run_duration'] = "'0003-00-00_00:00:00'" self.add_namelist_options(options=options) self.add_input_file(filename='init.nc', diff --git a/compass/ocean/tests/baroclinic_gyre/initial_state.py b/compass/ocean/tests/baroclinic_gyre/initial_state.py index d09590cc04..0b5bdaac1a 100644 --- a/compass/ocean/tests/baroclinic_gyre/initial_state.py +++ b/compass/ocean/tests/baroclinic_gyre/initial_state.py @@ -49,7 +49,6 @@ def run(self): dsMesh = xr.open_dataset('culled_mesh.nc') ds = _write_initial_state(config, dsMesh) - print('bottomDepth0', ds.refBottomDepth[0]) _write_forcing(config, ds.latCell, ds.refBottomDepth) @@ -69,12 +68,10 @@ def _write_initial_state(config, dsMesh): temp_top = section.getfloat('initial_temp_top') temp_bot = section.getfloat('initial_temp_bot') - print(f'zmid: {ds.zMid[0,0,:].values}') cc = 0.049 # 0.049 value from optimization on 1800m aa = temp_top / np.log(cc) bb = (cc ** (temp_bot / temp_top) - cc) temperature = aa * np.log(bb * -1.0 * ds.zMid / bottom_depth + cc) - print(f'Tinit: {temperature[0,0,:].values}') val_bot = aa * np.log(bb + cc) val_top = aa * np.log(cc) print(f'analytical bottom T: {val_bot} at ' @@ -82,9 +79,6 @@ def _write_initial_state(config, dsMesh): print(f'analytical surface T: {val_top} at ' f'depth = 0') -# temperature = (-11. * np.log(0.0414 * -# (-1. * ds.zMid + 100.3)) + 48.8) -# temperature = temperature.transpose('Time', 'nCells', 'nVertLevels') print(f'bottom layer T: {temperature[0, 0, -1]} and ' f'surface layer T: {temperature[0, 0, 0]}') salinity = initial_salinity * xr.ones_like(temperature) diff --git a/compass/ocean/tests/baroclinic_gyre/moc.py b/compass/ocean/tests/baroclinic_gyre/moc.py index fda7c9963a..261d4435bd 100644 --- a/compass/ocean/tests/baroclinic_gyre/moc.py +++ b/compass/ocean/tests/baroclinic_gyre/moc.py @@ -43,13 +43,9 @@ def run(self): in_dir = '../forward/output' out_dir = '.' - # show progress only if we're not writing to a log file - # show_progress = self.log_filename is None - lat_min = self.config.getfloat('baroclinic_gyre', 'lat_min') lat_max = self.config.getfloat('baroclinic_gyre', 'lat_max') - dlat = 0.25 # set in config next - # latbins = np.arange(15.5, 75.5, 0.25) + dlat = self.config.getfloat('baroclinic_gyre_post', 'dlat') latBins = np.arange(lat_min + 2 * dlat, lat_max + 2 * dlat, dlat) nz = self.config.getint('vertical_grid', 'vert_levels') @@ -57,14 +53,9 @@ def run(self): dsMesh = xarray.open_dataset('../initial_state/initial_state.nc') ds = xarray.open_mfdataset( - '{}/timeSeriesStatsMonthly*.nc'.format(in_dir), + f'{in_dir}/timeSeriesStatsMonthly*.nc', concat_dim='Time', combine='nested') - # print(dsMesh) - # print(ds) - # print(latBins) - # print(nz) - moc = self._compute_amoc(dsMesh, ds, latBins, nz) dsMOC = xarray.Dataset() @@ -76,9 +67,8 @@ def run(self): dsMOC.moc.attrs['units'] = 'Sv' dsMOC.moc.attrs['description'] = \ 'zonally-averaged meridional overturning streamfunction' - outputFileName = '{}/moc.nc'.format(out_dir) - # if file_complete(ds, outputFileName): - # return + + outputFileName = f'{out_dir}/moc.nc' write_netcdf(dsMOC, outputFileName) def _compute_amoc(self, dsMesh, ds, latBins, nz): diff --git a/compass/ocean/tests/baroclinic_gyre/viz.py b/compass/ocean/tests/baroclinic_gyre/viz.py index 36bdf01f47..7ae61f4a20 100644 --- a/compass/ocean/tests/baroclinic_gyre/viz.py +++ b/compass/ocean/tests/baroclinic_gyre/viz.py @@ -50,7 +50,8 @@ def _plot_moc(self, ds, dsMesh, out_dir): """ Plot the time-mean moc state for the test case """ - avg_len = self.config.getint('mean_state_viz', 'time_averaging_length') + avg_len = self.config.getint('baroclinic_gyre_post', + 'time_averaging_length') moc = ds.moc[-12 * avg_len:, :, :].mean(axis=0).T.values latbins = ds.latBins plt.contourf( @@ -60,16 +61,21 @@ def _plot_moc(self, ds, dsMesh, out_dir): plt.ylabel('Depth (m)') plt.xlabel('Latitude') idx = np.unravel_index(np.argmax(moc), moc.shape) - amoc = "max MOC = {:.1e}".format(round(np.max(moc), 1)) - maxloc = 'at lat = {} and z = {}m'.format( - latbins[idx[-1]].values, int(dsMesh.refInterfaces[idx[0]].values)) - maxval = 'max MOC = {:.1e} at lat={}-{}'.format( - round(np.max(moc[:, 175]), 1), - latbins[175 - 1].values, latbins[175].values) + max_moc = round(np.max(moc), 1) + max_moc_loc = [latbins[idx[-1]].values, + int(dsMesh.refInterfaces[idx[0]].values)] + ref_moc_loc = 175 # to be improved + max_moc_ref = round(np.max(moc[:, ref_moc_loc]), 1) + ref_moc_lat = [latbins[175 - 1].values, latbins[175].values] + + amoc = f"max MOC = {max_moc:.1e}" + maxloc = f'at lat = {max_moc_loc[0]} and z = {max_moc_loc[1]}m' + maxval = (f'max MOC = {max_moc_ref:.1e} at ' + f'lat={ref_moc_lat[0]}-{ref_moc_lat[1]}') plt.annotate(amoc + '\n' + maxloc + '\n' + maxval, xy=(0.01, 0.05), xycoords='axes fraction') plt.colorbar() - plt.savefig('{}/time_avg_moc_last{}years.png'.format(out_dir, avg_len)) + plt.savefig(f'{out_dir}/time_avg_moc_last{avg_len}years.png') def _plot_spinup(self, mon_dir, dsMesh, out_dir): """ @@ -78,7 +84,7 @@ def _plot_spinup(self, mon_dir, dsMesh, out_dir): """ ds = xarray.open_mfdataset( - '{}/timeSeriesStatsMonthly*.nc'.format(mon_dir), + f'{mon_dir}/timeSeriesStatsMonthly*.nc', concat_dim='Time', combine='nested') KE = ds.timeMonthly_avg_kineticEnergyCell[:, :, :].mean(axis=1) T = ds.timeMonthly_avg_activeTracers_temperature[:, :, :].mean(axis=1) @@ -89,27 +95,28 @@ def _plot_spinup(self, mon_dir, dsMesh, out_dir): fig, ax = plt.subplots(2, 1, figsize=(6, 8)) for ll in [0, 3, 6, 10, 14]: - ax[0].plot(KE[:, ll], label='{}m'.format(int(midlayer[ll]))) - ax[1].plot(T[:, ll], label='{}m'.format(int(midlayer[ll]))) + ax[0].plot(KE[:, ll], label=f'{int(midlayer[ll])}m') + ax[1].plot(T[:, ll], label=f'{int(midlayer[ll])}m') ax[0].legend() ax[1].legend() ax[0].set_xlabel('Time (months)') ax[1].set_xlabel('Time (months)') ax[0].set_ylabel('Layer Mean Kinetic Energy ($m^2 s^{-2}$)') ax[1].set_ylabel(r'Layer Mean Temperature ($^{\circ}$C)') - plt.savefig('{}/spinup_ft.png'.format(out_dir), bbox_inches='tight') + plt.savefig(f'{out_dir}/spinup_ft.png', bbox_inches='tight') def _plot_mean_surface_state(self, mon_dir, dsMesh, out_dir): lon = 180. / np.pi * dsMesh.variables['lonCell'][:] lat = 180. / np.pi * dsMesh.variables['latCell'][:] ds = xarray.open_mfdataset( - '{}/timeSeriesStatsMonthly*.nc'.format(mon_dir), + f'{mon_dir}/timeSeriesStatsMonthly*.nc', concat_dim='Time', combine='nested') heatflux = ( ds.timeMonthly_avg_activeTracersSurfaceFlux_temperatureSurfaceFlux[:, :] * # noqa: E501 constants['SHR_CONST_CPSW'] * constants['SHR_CONST_RHOSW']) - avg_len = self.config.getint('mean_state_viz', 'time_averaging_length') + avg_len = self.config.getint('baroclinic_gyre_post', + 'time_averaging_length') absmax = np.max(np.abs(np.mean(heatflux[-12 * avg_len:, :].values, axis=0))) # noqa: E501 fig, ax = plt.subplots(1, 3, figsize=[18, 5]) ax[0].tricontour(lon, lat, np.mean(ds.timeMonthly_avg_ssh[-12 * avg_len:, :], axis=0), # noqa: E501 @@ -131,10 +138,10 @@ def _plot_mean_surface_state(self, mon_dir, dsMesh, out_dir): ax[0].set_title('SSH (m)') ax[1].set_title(r'SST ($^\circ$C)') - ax[2].set_title('Heat Flux (W/m^{2})') + ax[2].set_title('Heat Flux (W/m$^{2}$)') ax[0].set_ylabel(r'Latitude ($^\circ$)') for axis in ax: axis.set_xlabel(r'Longitude ($^\circ$)') - plt.savefig('{}/meansurfacestate_last{}years.png'.format( - out_dir, avg_len), bbox_inches='tight') + plt.savefig(f'{out_dir}/meansurfacestate_last{avg_len}years.png', + bbox_inches='tight') diff --git a/docs/developers_guide/ocean/api.rst b/docs/developers_guide/ocean/api.rst index 89795e4c77..bd94c3cac1 100644 --- a/docs/developers_guide/ocean/api.rst +++ b/docs/developers_guide/ocean/api.rst @@ -96,12 +96,20 @@ baroclinic_gyre GyreTestCase GyreTestCase.configure + cull_mesh.CullMesh + cull_mesh.CullMesh.run + forward.Forward forward.Forward.run initial_state.InitialState initial_state.InitialState.run + moc.Moc + moc.Moc.run + + viz.Viz + viz.Viz.run dam_break ~~~~~~~~~ diff --git a/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst b/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst index 433733c03a..6eaa8c6325 100644 --- a/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst +++ b/docs/developers_guide/ocean/test_groups/baroclinic_gyre.rst @@ -7,18 +7,23 @@ The ``baroclinic_gyre`` test group implements variants of the Baroclinic ocean gyre set-up from the `MITgcm test case `_. -This test case is described in detail in the User guide (see :ref:`baroclinic_gyre`). Here, -we describe the shared framework for this test group. +This test case is described in detail in the User guide +(see :ref:`baroclinic_gyre`). Here, we describe the shared framework +for this test group. Framework --------- At this stage, the test case is available at 80-km and 20-km horizontal -resolution. By default, the 15 vertical layers vary linearly in thickness with depth, from 50m at the surface to 190m at depth (full depth: 1800m). +resolution. By default, the 15 vertical layers vary linearly in thickness +with depth, from 50m at the surface to 190m at depth (full depth: 1800m). -The test group includes 2 test cases, called ``performance_test`` for a short (10-day) run, and ``3_year_test`` for a 3-year simulation. Note that 3 years are insufficient to bring the standard test case to full equilibrium. Both test cases have 2 steps, -``initial_state``, which defines the mesh and initial conditions for the model, -and ``forward``, which performs the time integration of the model. +The test group includes 2 test cases, called ``performance_test`` for a short +(3-time-step) run, and ``3_year_test`` for a 3-year simulation. Note that +3 years are insufficient to bring the standard test case to full equilibrium. +Both test cases have 2 steps, ``initial_state``, which defines the mesh and +initial conditions for the model, and ``forward``, which performs the time +integration of the model. Additionally, the test group has a shared ``namelist.forward`` file with a few common namelist options related to horizontal @@ -26,20 +31,34 @@ and vertical momentum and tracer diffusion, as well as a shared ``streams.forward`` file that defines ``mesh``, ``input``, ``restart``, and ``output`` streams. +cull_mesh +~~~~~~~~~ + +The class :py:class:`compass.ocean.tests.baroclinic_gyre.cull_mesh.CullMesh` +defines a step for setting up the mesh for the baroclinic gyre test case. + +First, a mesh appropriate for the resolution is generated using +:py:class:`compass.mesh.QuasiUniformSphericalMeshStep`. Then, the mesh is +culled to keep a single ocean basin (with lat, lon bounds set in `.cfg` file). + initial_state ~~~~~~~~~~~~~ The class :py:class:`compass.ocean.tests.baroclinic_gyre.initial_state.InitialState` defines a step for setting up the initial state for each test case. -First, a mesh appropriate for the resolution is generated using -:py:class:`compass.mesh.QuasiUniformSphericalMeshStep`. Then, the mesh is -culled to keep a single ocean basin (with lat, lon bounds set in `.cfg` file). A vertical grid is generated, -with 15 layers of thickness that increases linearly with depth (10m increase by default), from 50m at the surface to 190m at depth (full depth: 1800m). -Finally, the initial temperature field is initialized with a vertical profile to approximate the discrete values set in the `MITgcm test case `_, uniform in horizontal space. The surface and bottom values are set in the `.cfg` file. Salinity is set to a constant value (34 psu, set in the `.cfg` file) and initial -velocity is set to zero. +A vertical grid is generated, with 15 layers of thickness that increases +linearly with depth (10m increase by default), from 50m at the surface to 190m +at depth (full depth: 1800m). Finally, the initial temperature field is +initialized with a vertical profile to approximate the discrete values set in +the `MITgcm test case `_, +uniform in horizontal space. The surface and bottom values are set in the +`.cfg` file. Salinity is set to a constant value (34 psu, set in the `.cfg` +file) and initial velocity is set to zero. -The ``initial_state`` step also generates the forcing, defined as zonal wind stress that varies with latitude, surface temperature restoring that varies with latitutde, and writes it to `forcing.nc`. +The ``initial_state`` step also generates the forcing, defined as zonal wind +stress that varies with latitude, surface temperature restoring that varies +with latitutde, and writes it to `forcing.nc`. forward ~~~~~~~ @@ -60,11 +79,47 @@ resolutions are supported. ----------- ``ocean/baroclinic_gyre/80km/3_year_test`` performs a longer (3 year) integration -of the model forward in time. The point is to (ultimately) compare the quasi-steady state with theroretical scaling and results from other models. Currently, only the 80-km and 20-km horizontal -resolutions are supported. Note that 3 years is not long enough to reach steady state. +of the model forward in time. The point is to (ultimately) compare the quasi- +steady state with theroretical scaling and results from other models. +Currently, only the 80-km and 20-km horizontal resolutions are supported. +Note that 3 years is not long enough to reach steady state. For the 80km configuration, the estimated time to equilibration is roughly 50 years. For a detailed comparison of the mean state against theory and results from other models, the mean state at 100 years may be most appropriate to be aligned with the MITgcm results. +moc +--- + +The class :py:class:`compass.ocean.tests.baroclinic_gyre.moc.Moc` +defines a step for computing the zonally-averaged meridional overturning +in the baroclinic gyre test case. + +It calculates the moc by summing the monthly mean vertical velocities +in latitude bins (the bin width ``dlat`` is set in the ``.cfg`` file). +It outputs a netcdf file ``moc.nc`` in the local folder, with the monthly +value of zonally-averaged meriodional overturning in Sv. + +By default, this step is only called after the ``3_year_test`` step since +the ``performance_test`` is too short to output monthly mean output. + +viz +--- + +The class :py:class:`compass.ocean.tests.baroclinic_gyre.viz.Viz` +defines a step for visualizing output from baroclinic gyre. +Currently, it includes 3 separate plots. + +First, it plots 2 timeseries to assess the test case spin-up: the top plot is +layer-mean kinetic energy over 5 different layers (to show dynamical spin-up), +while the bottom plot is layer mean temperature (to show thermal adjustment). +The values plotted are all basin-averaged monthly output. +It also plots the time-averaged final state of the simulation. The averaging +period is set up in the ``.cfg`` file (by default, 1 year). Plots include +time-mean sea surface height (SSH), sea surface temperature, and surface heat +flux (in W/m2, due to surface restoring) with contours of SSH superimposed. +A separate figure is generated showing the time-mean overturning streamfunction, +based on the ``moc.nc`` file generated in the ``moc`` step described above. +By default, this step is only called after the ``3_year_test`` step since +the ``performance_test`` is too short to output monthly mean output. diff --git a/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst b/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst index de6ec45b5b..8990555e26 100644 --- a/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst +++ b/docs/users_guide/ocean/test_groups/baroclinic_gyre.rst @@ -4,17 +4,17 @@ baroclinic_gyre =============== The ``baroclinic_gyre`` test group implements variants of the -baroclinic ocean gyre set-up from the -`MITgcm test case`_. - -This test simulates a baroclinic, wind and buoyancy-forced, double-gyre ocean circulation. -The grid employs spherical polar coordinates with 15 vertical layers. -The configuration is similar to the double-gyre setup first solved numerically -in `Cox and Bryan (1984) `_: the model is configured to -represent an enclosed sector of fluid on a sphere, spanning the tropics to mid-latitudes, +baroclinic ocean gyre set-up from the `MITgcm test case`_. + +This test simulates a baroclinic, wind and buoyancy-forced, double-gyre ocean +circulation. The grid employs spherical polar coordinates with 15 vertical +layers. The configuration is similar to the double-gyre setup first solved +numerically in `Cox and Bryan (1984) `_: +the model is configured to represent an enclosed sector of fluid on a sphere, +spanning the tropics to mid-latitudes, :math:`60^{\circ} \times 60^{\circ}` in lateral extent. -The fluid is :math:`1.8`\ km deep and is forced by a zonal wind -stress which is constant in time, :math:`\tau_{\lambda}`, varying sinusoidally in the +The fluid is :math:`1.8`\ km deep and is forced by a zonal wind stress which +is constant in time, :math:`\tau_{\lambda}`, varying sinusoidally in the north-south direction. .. figure:: ./images/baroclinic_gyre_config.png @@ -23,7 +23,9 @@ north-south direction. :alt: baroclinic gyre configuration :name: baroclinic_gyre_config - Schematic of simulation domain and wind-stress forcing function for baroclinic gyre numerical experiment. The domain is enclosed by solid walls. From `MITgcm test case`_. + Schematic of simulation domain and wind-stress forcing function for + baroclinic gyre numerical experiment. The domain is enclosed by solid walls. + From `MITgcm test case`_. Forcing ------- @@ -34,16 +36,19 @@ according to latitude :math:`\varphi` .. math:: f(\varphi) = 2 \Omega \sin( \varphi ) -with the rotation rate, :math:`\Omega` set to :math:`\frac{2 \pi}{86164} \text{s}^{-1}` (i.e., corresponding to the standard Earth rotation rate, using the CIME constant to ensure consistency). +with the rotation rate, :math:`\Omega` set to +:math:`\frac{2 \pi}{86164} \text{s}^{-1}` (i.e., corresponding to the +standard Earth rotation rate, using the CIME constant to ensure consistency). The sinusoidal wind-stress variations are defined according to .. math:: \tau_{\lambda}(\varphi) = -\tau_{0}\cos \left(2 \pi \frac{\varphi-\varphi_o}{L_{\varphi}} \right) where :math:`L_{\varphi}` is the lateral domain extent -(:math:`60^{\circ}`), :math:`\varphi_o` is set to :math:`15^{\circ} \text{N}` and :math:`\tau_0` is :math:`0.1 \text{ N m}^{-2}`. -:ref:`baroclinic_gyre.cfg` summarizes the -configuration options used in this simulation. +(:math:`60^{\circ}`), :math:`\varphi_o` is set to :math:`15^{\circ} \text{N}` +and :math:`\tau_0` is :math:`0.1 \text{ N m}^{-2}`. +:ref:`baroclinic_gyre.cfg` summarizes the configuration options used in this +simulation. Temperature is restored in the surface layer to a linear profile: @@ -52,14 +57,29 @@ Temperature is restored in the surface layer to a linear profile: \theta^* = \frac{\theta_{\rm max} - \theta_{\rm min}}{L_\varphi} (\varphi_{\rm max} - \varphi) + \theta_{\rm min} :label: baroc_restore_theta -where the piston velocity :math:`U_{piston}` (in m.s^{-1}) is calculated by applying a relaxation timescale of 30 days (set in config file) over the thickness of the top layer (50 m by default) and :math:`\theta_{\rm max}=30^{\circ}` C, :math:`\theta_{\rm min}=0^{\circ}` C. +where the piston velocity :math:`U_{piston}` (in m.s^{-1}) is calculated by +applying a relaxation timescale of 30 days (set in config file) over the +thickness of the top layer (50 m by default) and +:math:`\theta_{\rm max}=30^{\circ}` C, :math:`\theta_{\rm min}=0^{\circ}` C. Initial state ------------- -Initially the fluid is stratified -with a reference potential temperature profile that varies from (approximately) :math:`\theta=30.6 \text{ } ^{\circ}`\ C -in the surface layer to :math:`\theta=1.56 \text{ } ^{\circ}`\ C in the bottom layer. To ensure that the profile is independent of the vertical discretization, the profile is now set by a surface value (at the top interface) and a bottom value (at the bottom interface), set in the `.cfg` file. The default values have been chosen for the layer values (calculated with `zMid`) to approximate the discrete values presented in the MITgcm test case. The temperature functional form (and inner parameter `cc` was determined by fitting an analytical function to the MITgcm discrete layer values (originally ranging from 2 to :math:`30 \text{ } ^{\circ}`\ C. If the `bottom_depth` is different from the default 1800m value, the temperature profile is stretched in the vertical to fit the surface and bottom temperature constraints, but the thermocline depth and the discrete layer values will move away from the MITgcm test case. +Initially the fluid is stratified with a reference potential temperature +profile that varies from (approximately) :math:`\theta=30.6 \text{ } ^{\circ}`\ C +in the surface layer to :math:`\theta=1.56 \text{ } ^{\circ}`\ C in the +bottom layer. To ensure that the profile is independent of the vertical +discretization, the profile is now set by a surface value (at the top +interface) and a bottom value (at the bottom interface), set in the ``.cfg`` +file. The default values have been chosen for the layer values (calculated +with ``zMid``) to approximate the discrete values presented in the MITgcm +test case. The temperature functional form (and inner parameter ``cc`` was +determined by fitting an analytical function to the MITgcm discrete layer +values (originally ranging from 2 to :math:`30 \text{ } ^{\circ}`\ C. If the +``bottom_depth`` is different from the default 1800m value, the temperature +profile is stretched in the vertical to fit the surface and bottom +temperature constraints, but the thermocline depth and the discrete layer +values will move away from the MITgcm test case. The equation of state used in this experiment is linear: .. math:: @@ -67,34 +87,47 @@ The equation of state used in this experiment is linear: :label: rho_lineareos with :math:`\rho_{0}=999.8\,{\rm kg\,m}^{-3}` and -:math:`\alpha_{\theta}=2\times10^{-4}\,{\rm K}^{-1}`. The salinity is set to a uniform value of :math:`S=34`\ psu (set in the `.cfg` file) -Given the linear equation of state, in this configuration the model state variable for temperature is -equivalent to either in-situ temperature, :math:`T`, or potential -temperature, :math:`\theta`. For simplicity, here we use the variable :math:`\theta` to -represent temperature. +:math:`\alpha_{\theta}=2\times10^{-4}\,{\rm K}^{-1}`. The salinity is set to +a uniform value of :math:`S=34`\ psu (set in the `.cfg` file) +Given the linear equation of state, in this configuration the model state +variable for temperature is equivalent to either in-situ temperature, +:math:`T`, or potential temperature, :math:`\theta`. For simplicity, here we +use the variable :math:`\theta` to represent temperature. Analysis -------- -For scientific validation, this test case is meant to be run to quasi-steady state and its mean state compared to the MITgcm test case and / or theoretical scaling. This is done through an analysis step in the ``3_year_test`` case. Note that 3 years are likely insufficient to bring the test case to full equilibrium. -Examples of qualitative plots include: i) equilibrated SSH contours on top of surface heat fluxes, ii) barotropic streamfunction (compared to MITgcm or a barotropic gyre test case). +For scientific validation, this test case is meant to be run to quasi-steady +state and its mean state compared to the MITgcm test case and / or +theoretical scaling. This is done through an analysis step in the +``3_year_test`` case. Note that 3 years are likely insufficient to bring the +test case to full equilibrium. Examples of qualitative plots include: +i) equilibrated SSH contours on top of surface heat fluxes, +ii) barotropic streamfunction (compared to MITgcm or a barotropic gyre test +case). -Examples of checks against theory include: iii) max of simulated barotropic streamfunction ~ Sverdrup transport, iv) simulated thermocline depth ~ scaling argument for penetration depth (Vallis (2017) or Cushman-Roisin and Beckers (2011)). +Examples of checks against theory include: +iii) max of simulated barotropic streamfunction ~ Sverdrup transport, +iv) simulated thermocline depth ~ scaling argument for penetration depth +(Vallis (2017) or Cushman-Roisin and Beckers (2011)). Consider the Sverdrup transport: .. math:: \rho v_{\rm bt} = \hat{\boldsymbol{k}} \cdot \frac{ \nabla \times \vec{\boldsymbol{\tau}}}{\beta} -If we plug in a typical mid-latitude value for :math:`\beta` (:math:`2 \times 10^{-11}` m\ :sup:`-1` s\ :sup:`-1`) -and note that :math:`\tau` varies by :math:`0.1` Nm\ :sup:`2` over :math:`15^{\circ}` latitude, -and multiply by the width of our ocean sector, we obtain an estimate of approximately 20 Sv. +If we plug in a typical mid-latitude value for :math:`\beta` +(:math:`2 \times 10^{-11}` m\ :sup:`-1` s\ :sup:`-1`) and note that +:math:`\tau` varies by :math:`0.1` Nm\ :sup:`2` over :math:`15^{\circ}` +latitude, and multiply by the width of our ocean sector, we obtain an +estimate of approximately 20 Sv. -This scaling is obtained via thermal wind and the linearized barotropic vorticity equation), -the depth of the thermocline :math:`h` should scale as: +This scaling is obtained via thermal wind and the linearized barotropic +vorticity equation), the depth of the thermocline :math:`h` should scale as: .. math:: h = \left( \frac{w_{\rm Ek} f^2 L_x}{\beta \Delta b} \right) ^2 = \left( \frac{(\tau / L_y) f L_x}{\beta \rho'} \right) ^2 -where :math:`w_{\rm Ek}` is a representive value for Ekman pumping, :math:`\Delta b = g \rho' / \rho_0` +where :math:`w_{\rm Ek}` is a representive value for Ekman pumping, +:math:`\Delta b = g \rho' / \rho_0` is the variation in buoyancy across the gyre, and :math:`L_x` and :math:`L_y` are length scales in the :math:`x` and :math:`y` directions, respectively. @@ -116,13 +149,13 @@ All 2 test cases share the same set of config options: # the type of vertical grid grid_type = linear_dz - # the linear rate of thickness increase for linear_dz + # the linear rate of thickness (m) increase for linear_dz linear_dz_rate = 10. # Number of vertical levels vert_levels = 15 - # Total water column depth + # Total water column depth in m bottom_depth = 1800. # The type of vertical coordinate (e.g. z-level, z-star) @@ -135,46 +168,60 @@ All 2 test cases share the same set of config options: min_pc_fraction = 0.1 - # config options for MITgcm baroclinic gyre + # config options for the baroclinic gyre [baroclinic_gyre] - # comment + # Basin dimensions lat_min = 15 lat_max = 75 lon_min = 0 lon_max = 60 - # Initial vertical temperature profile + # Initial vertical temperature profile (C) initial_temp_top = 33. initial_temp_bot = 1. # Constant salinity value (also used in restoring) initial_salinity = 34. - # Maximum zonal wind stress value + # Maximum zonal wind stress value (N m-2) wind_stress_max = 0.1 - # Surface temperature restoring + # Surface temperature restoring profile restoring_temp_min = 0. restoring_temp_max = 30. - + # Restoring timescale for surface temperature (in days) restoring_temp_timescale = 30. + + # config options for the post processing (moc and viz) + [baroclinic_gyre_post] + # latitude bin increment for the moc calculation + dlat = 0.25 + # number of years to average over for the mean state plots + time_averaging_length = 1 + performance_test ---------------- ``ocean/baroclinic_gyre/performance_test`` is the default version of the -baroclinic_gyre test case for a short (3 time steps) test run and validation of -prognostic variables for regression testing. +baroclinic_gyre test case for a short (3 time steps) test run and validation +of prognostic variables for regression testing. 3_year_test ----------- ``ocean/baroclinic_gyre/3_year_test`` is an additional version of the baroclinic_gyre test case with a longer (3-year) spin-up. By default, it -includes monthly mean output, and plots the mean state of the simulation for the last 1 year (option in the config file). -Note that for the 80km configuration, the estimated time to equilibration is roughly 50 years (approx 3hours on default layout). -For a detailed comparison of the mean state against theory and results from other models, -the mean state at 100 years may be most appropriate to be aligned with the MITgcm results. +includes monthly mean output, and plots the mean state of the simulation for +the last 1 year (option in the config file). Note that for the 80km +configuration, the estimated time to equilibration is roughly 50 years +(approx 3 hours of compute time on default layout). This can be done by +running the ``forward`` step several times (adding 3 years each time), or by +editing the ``forward/namelist.ocean`` file to set the ``config_run_duration`` +to the desired simulation duration. +For a detailed comparison of the mean state against theory and results from +other models, the mean state at 100 years may be most appropriate to be +aligned with the MITgcm results. .. _MITgcm test case: https://mitgcm.readthedocs.io/en/latest/examples/baroclinic_gyre/baroclinic_gyre.html diff --git a/docs/users_guide/ocean/test_groups/images/baroclinic_gyre_config.png b/docs/users_guide/ocean/test_groups/images/baroclinic_gyre_config.png index da1945be1e4d9308f5e8f30be38385dd41216276..64d18b0a7c66a12edef385990a8c8114feaf281c 100644 GIT binary patch literal 42775 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�uNLs0Rb=zBC_Z9WBy7RsBX%;2Go&R45fc+v z9G$6})Th6&XA#WT+B-_~;X%f=GGxsFK&H|2KgoLpuv#;|vUxjiM%NdYX|Ok|D5m3Q z=FsYvJ!v!?OF-C!yII}JHDSgaG~gv;%;;cB|>#&~e;nD0+g;qOk%!mB(5 z4KPK`v&N#0ym=fx6U^cWVzIY*{cZ;dfEuUj^rW4)SP-#PoiC3AAACU`#qV#M-V9#+ zA-kxZG$*S!zmnYLL(W}Uo{{NCEOCZmH`4yOWe{n1Z}g2Sr$*H#3p*YO$--82rISiY z5;kOWMmjXd&ok?+V?2_UIHPX6Q+_f!bo}UH>g$Nu34uyEc=FD4>dFeq#*e3uNJpD2 zOK*1#eVz+N=%ze{;Q$@1b#-!Gb5rLPd}TN1zf3{nFG}^AOohludhM&@jt!%}+W4Sl zig!YNyTS*`Y=I}h(vV=`Oz z%&{niANNgE5Sjf@5FN(ARCUcj>X-(bydN?*Cl~P1y~Ti3Ey3(*^R*^Dsmq_-u@jyI zP0Bnv4zqd6X$Hv7d!sWf`t&NYlxupP;A4}rp&KpP{1h3%51fNE7Q+F;OBV2GD6V2_ zq~^|arM&xVn`n;5E5Z7WMUCR0+#Hm6JMSjMzna6YT|XCXOsBIX%=CeO+{BHMn9~iG zznFYYC;{LpbVt1xpJ| z|2dYB9bK5*B)r2MwCu}cbKWL%c9?78QS5y=c8utv+aN)NwbFB!&$=+(IjgTlE6|Q3BELMH8B8MS=galCUT;_K*cNFS9 zpS^X}_}&;Leg09Q*Bsj)Ro>vKw8TXAB>qnT3u0-U(`df`XEf)pd)N_uL%Eu5m^&tc zU*_E%TGuml!oFy7{}T?y4P;(^=Ur@Uk!LIvM=cDVAQ6?l-A`h87v(}h zZ*S)P{%x*jLyziAEa2uB7N!QB7Zw1v3{I|lsDrjMpDo>LQ?CkG&;Ov8ow~mJy*rJ? zJK+sIkEC|L%6qQ%ZB1}#G0FI^KSXn385PW$F4s2Fg8m+Kw#pMPes_Eix^tR_eQDvs zihXHuEg4M>I^0O*nAz>1p3R8^9@5IehPb!rjiyhLpH|fi>G4_dt&sZZ`_RcZHlL65R|RtkT$_1gPFYrdEuzc zwG*FWuRjdz5lS{wkSI}O*Ah8??=c5Y*)&urXkXb=^`qzdZg=rU?6AFdtN{OG*Xb`# zo%Zj>8kl$0)+Ldt7L@5wT(PA5*{&A%mzwCi>a(HXSx15b^hzP6X4(9s&ZtovV(T{T*D9YA+5-?YKc~2&loY;%0ed z%gcR%5D?VF2i*DIwqT@6$+lBTWW%(r;pXnoA|gau1R@DbLWc~@otC5hbJ|$;sVa*W z?APWz;QAgEqdT=Ai(L303T+=H4w(R}LE(DN{A4v(T4p}Hbf-?u?GDc$P+yVuPI+t? zwIW;3>(>Xe2W{!XpCR43t0OOPxDe2Zk~xy`&k=A8Wz!%EpW#QU*~j;SjUT)l2ZSY% zlBo9}t$qQg#la%97R*cdKc<<6<6(@M;Caw*?k7ZgkwkYtw(8Y2)I~c8I?2#ssxwe# z_!1QwTeV`?Ui$q4t8Xo}VDQHWIt*N&`k$!w9L(EgIa$&C4Fhj<`f*aq?ux*0(heg$ z`w3Rg!VlWGt#k(P(qr@5zg-d`Jnq-e-&?ST;@+KQo@?HDJj-!O4|@La0%yaK_t)XJ zfmtWmIyk})U*c6D+V1r4kbt1BV5RdXU9&c}DiV#krv)O#o>!e_XuLgP7|w-z4O+tF zLPn_fMODJpCPY>XpHt;qm&?OAF!z+%%n2_t;pKkCC<=c>xhMzRFgqvohNk182F^zO z>aX{X5`uN~tjl27pyqASDxRyrcQ1Ai%Nw0PTk@coVRg|1W&RmaP-n6BPJfaBmRD>O z8!N>*rKwB&JF3z9Q)Vbzj>A916Mp_YS5ab2H z!8_q6ZrXj~>UOr+>mq#vDs%AM9fedEJbfd}sJ&J~qS6zoNfzM$@o23dR2BVuiW4bC z*|gMi6O3!FE?6!Z&M9-q^=b9twHh8I+3ac{RT-9oYSY?u*y&v<^#0_OyUTK@HAYU+ zF^orWzv42q>GU|>`?FK-``V4(aY6}72JSXUt#49mG$$vuU>sP_H8LG4(jJtdDkzvX zXC)#=!5jzvE*HZo5}J08bS6Qe&ZAbvYX}+iFT$xaOlkEN)f275o+oEWzIkv!I@_ag zf=RBoe?;82f1D`ryvBO7!!@GG-Lm?z_M1G_PnIT`U(X3<-WJh*O*Y1-HGa|_j7KRG zK>k~I+>~)+SA4`P=`=;=jnDBJ9Ns6XtOcWM4`MQJ+$*^}mml|{qoS*dj$lx6Ba5Si z(6C8XyunBu4laga&lAGFg8$amFV@U(A_t!Y^G*T&H*X{&cOKKuhQn6uLenT1HYqSopD61*L!m#c@y8fwZ?SQ6r^E9d$^DPeS{&2!F4N4G5!4Pcik;SF0A#!XS zBC*K9hS+4CbD+ckLcvOTVFX5pF|(&;A?0WRy4e@NUI{s7|4FbC^^ro;M9cB1NywsX zp?ckt;AgKlgkG|=?JUndOpqx)*}t7h{EzY;&-N&0q6g2hQ>3$(Fh+B*q~!-wRD*d4 zO{4z#o|=9YiONtExPy`E1=LAPe!|Ua?ME-Y>{RLJGVP+4M+icXN=?{G7h%i~7+KZi zfYOZ^Y$LviW44ElzwUWc^)p!gJvK>veX7P+J4L&xw9bT~{hs7<#b33lVz;X3F>FT=5u3N-O+_HV>Hm$9WeROKvXo(_{Qm-z?WY##C9$oyM}`XhhEy36@OmE|4QJ+ zg>9?+(X5$7l|B9jQpE2mbMa!eg}JI?yg9Ajf>cph@bV;TsR#RbQ7rvG2-4;H7CGAsfa}!c-5&h*j-U9H zzSNV2nyyd#4}g7JaS%cNj1niP7q92JjSOXvzYR1J>|3orZ|neNZl(ZAW<*6V`2Lej zf@w_X(AFS?d;NF8<4{0<0mL9*!PdIE*9ek zys293!j^iXNHWf|J7q9XTeWt-?RWt7^EPwd*3ei7M{s$~{#`z|Th=!PO}DJDcVj0{ zU>D@*|0?yyhT-!Ua5(&}8`NT|$Ykqu)Q;x192Jkluw%zmk#u(69PR!@uL-_A)758} z2t1~hL3qXA?|~+5WuaO`kOVCkMYuf?uy$w1BWw+{Sb=j zbPjp@kKEn#8O?;*-yAiC-woT>&Z(cj#N_B(g~#v9(l{+;E%xK6c7EK;rGuQK%C?JI zGwZg??$)p3>yEh(eqfFRVWeb8F~Y3ZAK?#>-$2QkY_6Sh&VJBda-`06(=Fs3$acsU zo>p+zD?pC_X3C5d(ogczQKYjxl^!w@ECULLM@JskM!6KP_a$lj4nMIqXyZ{?qhR@Mk>-_Z8O*{2ZK+=xU%-3T$y1B{uBAh4jnk>Ji@7TBN}^t50tN}5>W zEA8nxu|%&0&*)*~AvrP}q&n!?YzmLHfqkGso{=N<8L?0#R^;#$O5lDc3413+!_xXQ zs4X0|Acu7)tOUd8NHEWtk!W({0RoB}Pl*UmqcEfVP)CMweWK@e& z573J@QbJ+Tv2h>>6Cs8#HnQpOnkedqA&#pPI@(htLxQOygLIO7%%1YuS`+LX<~Ogi zYH$99Rr@Cr-9?LO_$M)PYyu^VXEbtz1(7Ywr!K9xpdeAz*sAWwQ=sltX0Uh4Q4V`U zX`cVt~l!&Z-xz^ip7&K8nzl+^6o4+e#IaDT*+$NNle zZFI5oNRio2W&S2Fx|~PDWq0QJ{ZNSwkR+r!Fl4b(6*a##v(9#C8w!d|mC2ZKp+o8r z)Ng#F0B#0rRtzU7JEB#hvA8rWsi5uILjgLRinmVnLC}CZz3q$w1YU=x!gt<=$tb5P z!W4pB$g`Bs(b(J1vItiJ&cCRLR^z8IG>EjI-7K-4(F5w%PZ)SA?h?_*(GeZcXx3$G zgzr`E-0&VRkkAVLBoxu)lTqO70ad|9X`6xEUlK2eOT&)kmhiEydrNhYdIb_p#g%%) zQO-&l6c?)_6bh2?i2u&L9H05U?&D9{{kEaM>y?um{Mno;Ft{@I;6qzOK0gc6W=f^q^q0ZsQ1;p-vBht)OZfZw^L;bdLWK4D$2t|L#1H68 z2dHBUZhZ(2HjiOYld0jx()d3~#(VpgP)Z2koZ&bybN!02Ugx4&VAquixg`s$-8!Z@ zjQ=n3!BB*#SHWZ3a>081`Yvaz_@qeDTac8sA+uR`8Qso*Mubg^4lg$0oY=I$N1I#h z@{;u671uf~hdNR~jIsUQCGo9)+=k`0<(u1yB_Z$y-m3E%(?daQ@^jx{XAb`yx^`Bc zKSAJN8$}xDoPdiWvd3l_UvoZh*weq?4I@GGVVe0oEA)cQ*LJL!ll=M8lWdYH%VJe% zP{pHxk$}nP@t)&mNmr+}Ol73O^_6rFXh-Y4wQWBxoA_n!G_$d+E`05&kaOjRkQtR{ zZ+?L8D4B2v$)Fe{SVG_VO20y0SI&#BAauA3FLEEiLZrGi3GJ~*OD8N=B9>2Lhp9{L z4wn6A?2(i(D?AK`wia6`^xW~;E963@F^H0n-CBjEqxJ!e2l9-tpp_G^8x8t1QuC92 z+ndET5%B;<MP1gp}=L9skiBca{~S%(C<8^1|>O1F`Dd z;Li^!+cgr+?A{nzHO(a9*_(MJS4xXopGik}P2p1)-yYA2kBN+-cAUMM4J3stOqXDM zHRRg-_{JRd-tbmI$cL1_IWzJuwi~kd7}6Byk53k-hQwXKJN}+5%?ee& zYBW>Rnkb!A)3_hj8)S=+SSGqN3bI>TZGEPK5m230R%d2E2Ai|-*laXeAgx^*UQWBZ z#MN57u(Y`R1*tODTENfzDsIFLDTjIF_j4yp8t2!ARB%DlvT!5e{<;*sz2nDGE*I%J z0}E`Jd8M*Nr5+NM%TLW8eoNf@Kp~< zc5S<@toG60je62FPXpU{0BeN{CMb<@{S3yaBKxhD1xhInlr}7F^Bg>?lXS0-|4LGh z%zqMA>Vqwf)e&H4XGOwD4Q=jQ%iRD1%p#_nGpL(%D_%KY=C!V&x z(}j2sQyL2+O`7=GIcxW-;L%^`r~BlBmQTX99k*Uay|cblu9?2$^^o)tCdXooYIXe; za>|MlxixJ~I>_W}ZdeL=yj*5W_Q)B*K+Iwls)V>!bn)$s$QR-Nf_W3O+r}u^7zApa zj{-@{DWoiGnSKH>TGM>~-Qp@hx_1^LXP(?RD+pOizHCNFTOT)mQ$0)ndeBbap#2Kj zQUUSE?+*I8Z5?Sbdgl~a*2*Lf$$0hDixW~}T##VXU}$>hZ&^WjR&iP*jB`pDbd)7=z69OqdujaA%{xVgEFe54?4Ii^66ySgZC(i{g{mNh1ut9xm$PGMLjct2FDUIZt{fNA`|| zEm+Le;s>nx?Ny=Lw9X9uT}lzFdIcyM3&xbD%EV&x9Y+z?@{ zI_!9fy3x2a2ds|0K{c_RONQau`~gZEgeav*nb%?Ik~9*+^1leEyyhuRgO)kjLd9Im zf57BWgAx3)(Xu3Ty+pLq4|SqipKtuGTsKDwmzFXVoJcpqihX+&$apYCY?$xMoVg)l zuA^A5x6Q$&aRn^4lBU~h@AB{<5zEsBwQG`Mr^{LbJB6?d(QKH;=d>?OCvm=H-Ew{q zHsleZZr#J?T{5HwFBJZ;UcS_IfEk&P z`I;c^&vjKRk&3(I#I7{o`N;cY6t;78^$V|pul-n(3ckpBKmHN7T{&trBNUJ4$#ptB zbhLfOw~2H&eTdPi5T=Fg-KYFFn!H>$F&E_N@TA+U-t>d}d0x|BaTP=u7li~nq1fS8 zAnbL4vD(=0%H2}#QVE}ptob+Of4X9S{dB!|u92N#{L)1Nej*Pu&iaiAaxYbQkgAOQ z$}ri-b$3}S{W%Alg{4O#uP3~}kO$WtgRtzG zU#Z1@Yd5FlCm0LQuQ+Yet_<j$uk0SUC`qR~tlIgyKEmV~>8X!3_AS_~R#i};6;abXF2GS?tO%NK(TJZ=`~l%(I0&tVZIwJ2y(nNTYcX=ts_JL-`KDrh3Yi4k8@Vqt?5%mY_2GiOr_6 z%U}Y$1?@0gb^&rE3FV}a$OHI)a}qCWB|qob+jezvE6Xco>AxIm5`@xNzjTSX$WV7U z@Ja~q-+{#Vde~Y>FG48Ou_XW)Zc;@fWz4j~Tt6AnO!ZjXkVyFp+?Rmv^mbjcl))r! z%$H*VVtg+OwObK&YOUMwFl;blrkDUthOP{Osa)MU0nCW#e90q-u0&Q^+wkW9;pwXb zntH>wMY=({mF|Xtps1vzBGM@$AZ%=OBSX5R8$_f;KtQ(9Od6z{4H#VxhDb=h^Y^~r z_y2R(bzk>=o^#F$i#af6}5MJ&V6;4h(`COh3cdidvcXOlQ-Z89D)P%oz3_s>b5qo57cq zbbieh&qB*9BpmaKv4W)+28K+C;a|^tsynemZc;^h+wf0>tHVCU9($)*&OYtuJZ(!w zLZc~xJcW4MuMHP!DpCkn4Vjn*Gd>wi>tcMYN}u zk7FU&b&>zLp)bUL@2BEk@_-M+KOOe|=PduxfMUwCR<`lIJAgWh@YLo|qzs`3uP7*W zT{Eo<0j&s~mf6~UZEq5^d3vL_ccNt0^+X#R=l5qi9C)8~{BK71GS4yo?^;t_hM z^fq9Xg!R5SkZ_fopz5OZ?RubWw(Wv33@9Mg5*`#P0FJj?rUP_J|1*0kTww|-Mib?4 zG-qsj9QoK`Mm&QKxgdm8beS*$Nb-BbV(Yi2KQf0l4w7mGJc;*D;)4w0YY912erK$guj(%I}FQF{jD*bG7W2A>{x}) zST!_=f#sSL=T`qkN8=2veMoS3e;oIVdC(`Ly_$wQ^wKxePkWzY1aCcR1M2)Qe3t37 z!h5{Ld!iv1$;&fAOcNJ`r{db^TZ9f4&-qBZAIO>rkG>S1ogNr>8ds*+1PGlH`e|*+ zzjNqJl7EC=a|~FPNLS1Lcx-rT0XMT`ra;GV*xwp+C&t58$?RG4LfFg+ZT!7y&a@fW zNr^744A!dke0MYY6vgx}y1qU~r+P`t$lnvOlZv8Uq=fL-$q0gLz>tvdXM)x1p(VCo zFlxf*W49dHT?LHmuce~7gZ6IhD4Y-3d)?@tRmt!9Z}M82fQZXH1_V0zYqP*xUtb|~ z*Cq~6-#F(6*O2odoWLMb!n4=R|0(=3)srqkSnjyDk_jx<_-lek1R` zs-Su~I5N*NI6N7+t0w?vTOtPSuaV5rs7%;%#9TbCGyKL2(CfeB6ZkenqB?IQqcsF0 zi4T|Wmrlg+-F?!HV3BkoGhsN-rfZO>?L~=!l}+9SEq(w;ehLZdF*^Avmp8eeaj|uP zNkYjGGw$pmQ&MgI* z39AXZF4&1qP~$;<aSNhG1?#l={MJnPCNyMyu%R|tt;wwK>+_Kq4ve5X ze{{^zr1mmfEYA1B+=(e}`hU(6?ss7_7=pL6jd^ z_kO9UHvA^erq^>0{JiR$h~m+`qCm4d85$Cv32*LnPbkJLGTW8~J}emZVegH+Vd^cx z5{cD31KldYjSMKc46l0kGk_LBA93LWWJxn@WYE61tmniv3_29rRk=Oy{#)fXU6V~1H>0&az z(eP~FKtKM>3VZHWmrKSSvk~laAIa}xVWF1M6{KCdDNBjZkc6W;RKbZ+O%Gf6!+Ozo}7 ze$stB32E^5lroE*u~&R&Ib`jmJ}HjVbHE^fymxM#rqZ;QeLwcWR*QuYnn=u^kCQa`$T2&hm(RP{V5rbkaJN~4nyrlH2 zny>srcnavI?sOHSi=LgSy%l1mf$M0CxY)7ylo4^PH###cqQay0zz+N52wxn3@qS%D zM&-k9cg(A_Fqel5Q;mKwcmy}BGtlGvv-ZgZDH&g67PL}2OL2YcF=OlRi7<~>{wtq_ zlpAvqu161979kTg@noaz&LcmqKQyu-Z<1ooF};S;FNLE!@3}HH@J&ZX(PADNsb1?t z7=EZv^k2QJwo7{+b|WMM<#AGlx_kW{?B?u=j`VDdw6a-rB?hU!sm!P2PSx5cBw&scdT#r@-vp-* z)0b`#{Y(-`5Vsl{P+EBidg9NotUMCwaW&{bk!6IN_m8(oh~({VH)VsgebLN|IAzKF|KC z@3UxSAFaQs^1aqu3G!Xlc1*0uJww~3I8Iyo?<;QimWAhpN=0(2Iup0>eoZM>MjNaf zNJEEuzsp+LafyS4zIneW=49hkG(CveJ!BIugh$Zd7B8Dp{97*QX~{81e>onYiCbM~ z(s?NfR__4Iarf)cH1P#S=!iBef?uHDTURL^a1-TzM?9 zI+1;i;d!V3#gO!f;V&2#+7zydJFK7@^Y39%Vqx#S6>FI|RU`G@mkW{h=)Z9k?z{&) z4-zpYbxHvn_pHUPuEs>uN!`|9G-&^-5(K#nn}PqLq60&K-L@G~k)i!-e+vn)whRdp zVN7HsQ~7rDG12~eJaHBTX}-l?T5qcpNpVbm5_1e!nPMDt1nwa!lR2&9SJdP3=-%dC zMqypH`W=XhnrpssOm^P}2-3Iu6mv?>#`OyQ>IB9I;g^<^tcDsR={<9vq23Fn6cNV{ zhiHK1%ZkUXB*5zZyZgYs+uz92-e6!o*yP{6^q#TLQ0oU@uR0dSH{}kl+}B1TW^+!( zW~u##n!N0fM}lrH4Hle;W)od!3F?{yr(ECV>``nC)HwkiT`~tfE@jNAd9%nG4FZ>v zeD|C|8&`oSTabZVQCca-Y`3C8R{OeZt|Yps;YfKDU8!m{vvA$Bptp1%7Z}_0y@9NT zV-oH2E}cH3G}6J7)tV=n86{#x3xpi7AqH+0!=5gq#@~cy4Ykm@SS=I=(7uVcbXz_r zocVF6=w*jP7WBTIrJGdyOChp(@P5pBu?A|S>A2uyat?3qq^?>6_Rq|Oi#_Fy_C2{i zoL7K!bs9vG;5`j1b3I47Xg+E8sg`CLtQtN%`pF_b8L%_uZPV;OnS+=t7`0GX_ZztV zxHVgfg5apU=VO;p#cZ~_Fg%Zn@@?Lqj@aOa zlRdN%s$i74hT4={KD*`TT2B78`K}zc%*6Kk)h$R~_(jCoy=BnQN>y;^qyyjiS&F;< zBqiFPqQr5q9U(`NQ5>o+9<|(Clfpp)lD&&>5;V@aBhPp}Vyo5GtJBcaD(9}QN19c` zuDE?*147QuA*r(<8NOPy9pV>+?E4}^{g*w*+=e)c5s2o4Cfm=@pqHut!_)pF>}fJ; zTmuuOfw~oN2J7#Nm*)|Ex?CNp?n7fIX+8AW^&Y0o_;0Is<7$a`Z^udK{Jbr0+#FCA z*-O0t3_njijp^LHVIzxMLgFc(K z&4$^J(YsQ^?5~0My$8MHF~#w>;denIp34*Q9_bB_8mp&@>k6O~#|!yM{y&%AiAy&P;I{*0<(ckR z$8oTQ<+s4FzT)~BML#jKP=09G^_c?;^6FGge*2IF&?qB|0N=3iXr~dvx5!tS`QWxv zpYjPK+yb5Ijfb%=#2UEm*z5+Pma>Cynei)Dn?5S5n<&HCpF6)e;l$F<+T$_T7d-Tr z!+rcvzK4A5U5&=YoMnAg!JO3h`?PP}P%r=-OT(>{Uz~@(wW>ravB&=C%#^&h=6dqL zfZ&viaptlATC{0b|7T`RPujk&pRu*W@-|_G*-A7e^{b(o7EN!-g1vHyw;wg_UB_TN zE&*!I7@o^4R~F8d+$Fx%x+lt15~h6|*iW5TK@cegu$Xh~TPx+aqk~}`U*&x3(ekEq z6EVXq_3QH8VZ-r>%)ttSs^~W}(a{dAe!sCChJ$ZxjnS0Ro*u7nEx!bX6R-(;oS9Ty zU0<+VNS<9}73dT7F-+E*b7c_%x+Ur+I;-<}z5q+*BW$ZgZ>)ID2e{o{?V^&T^Ll$8 zE<|Gcv**vV5Yd1i3O*v@vZWjofCl4LZe^nLtxMl;X%P|jHj3F=LrWn5dZk1RDIo59 zQ=F5~a7h~miKTFU>lze6~gvLiAY zp5U2MR!3cNo6j+=yFG6^`Oax>@Op^oemPi9q*p3m=udP+&RtM%@bEeD3Hg0Bs>DQB zoI<0tq3xp9y<6uVK1 zWAXvSsG=ZR16}eJp`Go*=REl2G5Uw9N@(vlqhxnsKbx~$n#45%-BH~KY#MmYO-a~A z?K{P;Y^~{C_dq!rB%lrJZ9fx~E?bRhd7Z&0K~CpnnOAbw;!c+->RkErJ)X-=B5@bw zLu-989BDv*kE%!MbY5LTxn(=^#|WQANd@ob;nLZQv&*gfildI&$k)+XOsDv#yC*mQ z)!<-=l&PprBRi^tOy*D`_z`_qJ;%$n9D=@rwGqP{gR)PEXpKWMY$`(83YC(_L$t?C zRrdG`dS>wlaruRhdr^qHhLPIsGhR+)ctv0qSGdaEn*=$Gt`pBdQyX8qf8ZLbz{jlS^_$q^#juV1x&i!ps`^a&dm z3NRJbc!eEQfHg!TXB2z5xZ}Y0_I;z8k81mWsk4EN&ud-HHp}WOO<-z{fq7h?PZ#%2XEsm zogfXP-^tX-HeZEuiZX$2J4Sl8ioWdjv%#4igxTn75&EGx`SwdmK&3O@miPirVI#_b zowToUas+8m+Qt+yYVWJC(w6W>H)G>DQc!b(+qiJgxhbEVM43+{vqw+<}0w7Q&hP7y+skY z*L{TUJ>`}1TIN7{SDDIEA&gBX9g%$kR}o83n;NZ)mD(-YwTWXwOOlFN?pZ2tEB zX3XQ!bcafOG6b$nNz-zjfO^ChMvY*u5AmbKaQR>;K8pL6x zqhlH}Suzi=@t)NTh8cwG-s-={(VIoNUEMCyqe}=k);^z|useU6QW^c!Kmkz?_vO-E z|08YgqKEc!wGBz{-P6ow-YrL6W#w<|$uqSvEJ$UbtP6T+p-s}V8Qv?@g{u<0!LkxJ zIn9egFFzHE^x=!dSo;oykh5`&tmb2#4OZlLewV$M-fBC;mZj%=l-lMWV=UzDA(@z7 zY=>)AkfRNH^nF;$i-0_CqKFikNI`i-3o*X)gnpAGn=i~d_&d{?{`wyW@6iDs^C66@ z?kMkYOC@kYMwz2i^B48GRAlc`2&wfv5F7}jgm~z*1+R8iD)zL&tVL)^lMYS$atb1*qNqW6_k!E_*k}NS7aPaci!- za~}p7S4Ua{@!vfKjMi1_#rIJ%OIZUgnJRi2ojcqzx|yIy?efGS(~ zz!!AlC8ef$alV%4^)C+Qb_)!Ren93>7twXUux`&z*f9z?>ZZtHhD+7LQI;`$e;YXc zvxcH@Zi)mzlXmH{{dHw-z=Y9{_2v$M`|f^!4dS3%NfQ)l+X*6ycy&ZNX&%85Cdv7C zb#xed*RU|6N=u8|G{~N@bd^8$Lbqi8k2QcEvFDSQ7^Q{ND~(D7zB1!*o5bjha3&4k z`nPFUDCa^uitR;mq}u~c$mBb&=oA7ti(*?M2jcG|<(~;=6`=uUR{2_Mqr;zY285@L z9lv2-i+IoPmHrlsMLrk>x)F8g>{{}&&_oo74|?@(`a>o|!~xrjXwCKsxS>s7Ke^l7#5ch6H> zGk9kw2==?4K;1X3F)8GP4AG+}$wFFVLwm%O$fEQUV}80z*b((oZV;!r7WOsc-`G#B!ghdM zVrE~A{v$Ar^DCg^rnHqSxAKU3$tC%f{jIi5s`Q|mV0v?PgvNU{zW_+SUyCbd|M+_3 zpI1}w4t^Cpu9=i()J)80S12ZbN_Us!9no$6vsc|jzVeR1@U)JYUu3=K^o z)+b?qKO6QJEp43q{u|D*WNOu<1BLNji9)xG6a_rPVlQ&KuK+HfCz;>re*(Y{g5Nnm zp3iIUUnH)nS^V^W0ugwDn!C`g&*@C5`~Kg@B=?21R+DH+%9NMLNWw1$IF=8c9`l+0 zsOeQ-F$rDUgFo4iNNgzAYk71G1NZ=wpPz7QuW%A5^f3w zTgt=#L4S4Wy()aOWFng`9|Do!)dL@Fu2!=MEU=@{B+VAB`^Z;9rpe&nC^E7 zCgc&{=$*gn`ZfW-yO!_xd7sxrR|N2}N`8D**t+V{mTQf5d9EUU`2S#zh4F3SVb=1+ z!)&|VRV0RnCw6nOQ3=;3wElXGfP_N?Lc zf4FYJdo$dXbrI13V&jAK5iecReImKTYwqnJVSxB`1L=8V3Sh>dK{-OF(_a$J`=nrgRQ1k60 zGLP%*PmYH+TRBfx3a;J>k+R54ccsv(|IDSGIz zoHyEpgT-z?0X=4&D`;6ECW%l>1|=afc){Zdy@AboSiNBbqRD6y$#3z*_q zf>v31LL$#YF>nJshea!fN$%fh@0~m?0nb>D?jx9#S<4~y@NVM?R8EDf@9p`Py1<`y zt1;C1G@Y39BXk_5QVSdjj8(Z!O~YJ_6a&k!u|rD_%T7|S<~Y9OlIm`!-99aeD4I5v zoOu0j_){(LamiEkbHx0k9C?4@$N3zC5)yCuqDf7w2ns)`{F$5T1fC}!)J7s?pM1?e z88WJ4qt(O_@tw76)I{O8Rf}V>uYy*wx$cQ$ze1k2z_iPgTk2>>5}n+&!-JmsaojW2 zzwmjX(h})%`qqTVNCH}=AqioCv;hZZbY{+EB30~d}8KpvFO7QFnq>5JwC8E_{B0En!0d%UxV;1Tq zAbmt#{kp$>p9(h4+;Se6mX;tdc!*&NCi{HQ6wYD&cpAP`S#A9p|4)VqDWrwFwk9&0 zv!%ats=O2|tL7iFi~Vw!X*Tmu94WLBa{cVZInCFQQ8ILE$wiXPW>?h~J}{C0dPbx6 ze>su~hl_Z0t?A73n_H*8r@U|Y+I+fb*!;YPE79eUf-o&$%dh0h6TUFmv&)7jr_dmy(@}X6IFgU$Y4ywJOk- z8)aw}kHKmZ*%r`>lX4m)tgx1Yld;dLc1`;tQYyuW2#{jEf?JM$COIr<^P2TxkNLFy z(a|V9ive{<14kZ{N)j7Qw+M8p;0u2jMREWBbp+Ii__p?0eIF^QGw97~8wKOgyY97m zbH`COSq-#4PM#sZ4$IlYMf%4#2<-XSs=_8~H*e!CH=E3b<*Qp;s35V4&$H=_XbHE@ zl<4b{sa_uB z6BhT}j%ieRCH?i&Mb-&r2$Yf`_z~1&7C3Y|9{3Sa6226*#4KOOQsFG@y2ImQc`TKF zvDCMCZ3(t(V)#WIv_Uoy+Z;{|67;tu9})Pi_6$A#*u!ksCHRZY%3;Ad8&kp;W@};X zqY{iwblHO*Tj|h{lvXm;wKq_q42)X41tjs3g%NHL?6Jo+R%MC^<^JXx z@?1=ZW}Z9LOh^ys=W%)v&rd7Ra#whtuhr&bQ0Z;#5Bv=1r>2}wf=IH{zD=~nP@Dbh zRHE)-BDJjpjf)-B*6f2JoIW@Xb+;WpRBlMm<9+<uO@?_uH913=aDuuHrJ*|KYS43(jv|2k1v z%MDHepM6QzxC>Sfw*a?5N0q7t2b)Fz&P22Q^Xb-`-NT=W;az4rBU9AdN#vm=vDft<5nK$ap3pTJ z)R_vBi1sl=+rg(4tI~;rmixU@rc}ki7CCL%v+hiALW9z?ZyrXf50n*P7*E58pD$&C@3ZKw z^?bjPYb;o9m`TLQ;2rt-pW_lppChx}=u`tSq{w~*96sA-W3hB%<3Y)PG9CmgWf%83 zSUg)(%@E>jeG;ZMIs2?*xg`txxF!l-RRedh zx2#Ct*ftx-30~_QtXz)c+W?L!^}%ubFP(C*qCRfzjGDvDq524 zS_+lN(Mb#WI-uD50F&tkDv}6gZ2G#<;ydqbjF3Jq`2qm9p%Xm&WlbKMjJ!I7!?()d zb#;wV&sWc$G+jD7phjC}&5|Y!I~x2Hs}1pI6m#eBm&)XPpNSOy^fBfmFM{Q<_p|}M zwXGys=)MVfWu)VtB)S==7RU3r+{5#}t8tKE!1AKG6aZXoRG6c@CH-RbH)k-5p9wg_ z$4r#*a`<9$(r5|wq1RAel(F@^mLe4R`$tIFWG`?F!f}|7;zwv(;t1eAD_e^V87uzu zZ+2Y~`C7yW^uM%{Jk*t$F8e7$T~~i3qDh(zcy7U;hjj&go+pZHvmAGqD{gNw|8qIn zfD(~|%D>B_pc&hF-avi8Z-QGBJ8N{M^lP%1cBjGk(sZeCu*A;s4d3on2Mjh)1=dm> zW_6U74Td|A5CE83v!FvI9iLv{+|%*427lOq^jSbCA}4e1=ENuo(MBKpIV@n3qU(^C zYVsCH)Zcmgqq`WJt`@NeeJweqUtLXdP6%j=7fwHI@yO#vI;0!X0CnKV1D)F9l&ZDT&K}s2zB3Sm=Tl#_S38ptAq{AS!0D!j*6GcaZ>?hNo)6n6r=@ zzYX`@t}w+pm-8&w>T_LrsEabGUWDOK--}!FDHaU|Ssn0mG-2((k$q#MQYq>ZIK*wl z{&B7Q2$rLQs@&PGc!85DFCSG?cq9ac7Y~S@73>7e7S-_v46ik`APNZ7SF)SSlq~OG zn_1@u;MxOjjHSIGgN;N#D<*F5D}5}{K$=Z|wIuLHA4aD>M-mfvJWxJpmbMCLS#_51 zHGgW=bmh?{-{L%=C|S_z@z6zNj(Ftgb#E#cCW+|2_A_wB^^@&q$d_Vg1+nC(SMy)W zyrtpKzl>L6uZ0#W6@CyOq3xE6*eC#9-nacY$CN)qhw2lHp<-sZzR5fL&BLzFpfz!N zA%i`lXI2@x(Qf-Yh0mpj@9F9zahv9 zBM}TGM*mgav7e$*94rlTlfyf9Nesvb8Y3Sg^Q@{XIPtV9hr(fcdRqa*z*g_f1!fSc zo3BxRR*Wf&S+^tjt6sGcOMLPBi%N&=xk+%Z0Wm2t?J{3E^ab*G!>C36wDZq~uP97s zNaNXP;_E5H?(?g8PvMmss;=%r67UPWnYLx?GnR=zR01Vd$YTSQnO1>)n;92%7ur*Cd1IRZ1s*1#{Y($QgWVba|j7=buc58qh3Zm;~d?+o(9K zi5%(d(0nio&rQc;r$q!{vaYzMXpb=@R{IK75%tf4i8cA4(7uZAP=+o*3PArUv-{MM zchytn$UFyCu(oSQbTC=dIVD6Jk66`k5lrl_YIR>Y!B+v0Gs%~xlxoi-M)Bh(NJX#i z*5%LnKZd1c5tSH;2$%v5K6D-fWIP#T>zw!lGnf$dJJ=og^U6axA_XWLu}Uycn<$8@ zBFx5=Pr+@{UZ4n8Ayg&xY6;rNY9Mk7wNlm>&frEwIYNC}W@QbZ`lHNjl_}amI#nL8 zaOwjznn-GM9u^;r>c;C-Y}aUNMl|=a#4vQ*hB_CpZ{o5Oohundh_V%OpP^IqML4bg0}VP49Vc ze!ABvU7-w!l-MHsMZm}z4J(}{_?Pu>lbybf_DLwR74NBVl#X#;7Zf(zkurq4YJc*# zDLTr5*SWY_1}lYmSW00#IMt zSh$EaDwd%q(Uk*C$@+)w39?R0vYzGEKImQ=0ZJABgcaa51kB*O9``DW(wskHb&yY^S2o>s| zjS2Hvom&qO)Y{>{c4lAd6<^-gMz9$fLL3)p(5vv4gu~X;*?y)+(G;O?8PP|eil(9L zNEzu_b(&5CZ36U35r1lg9m}l~X#$?CD2LU}K+mr2p9h$k-Qbnciy8$_rm>WhwU1D3 z6R;YBGLI16!2St*2LM(%1uFoRpYl^4k_#rC;EC;^3kI{p4y`M~|H1J)?zgx>Fp zU@_nJnTNm4itxf(#4KkZon&Yh1F1RMm)NSmp>$^u8w4ao%{}85#gxbolAShmZ@^}9 zg&D;BB*lRGl(*r3+7y4BSkl{f@G_|?(1{|LiKUj4?5Tdzvz=LDyRf`;LyExp+@8(n zS_q@mmzyk7OEy=fo_W-QwxHog#WG^3)xc3>*NPo!V1~_nCqhwI!!RHPJ*& z*0oR`BQ)#WNQT^6Dghj_!O_IkK28CBKn&V?CYiG#y9~=9DVX=d@ zD?+6m_#{#FPpCM)D@)oT;RqEs4zivJ#9{=hWU6+uhiq>(yx{HW=%0qD9R2}HKgf3| z!XX=oe^(+u(JQlax20CAVbVlGYBN?&n=(nbM9)@){goj=*X_9`%{AbbA}GdmZszzG zl@EJ5*CTGn+R478>7>;t2Wv;mRQ_4Rga!SM`*oIiBbYVI_AR$`c4fRHHBXTZQ>36i zESK@~_;?aHeqPz-)9h|DT9Yevw}0)IPhcuPi=Uahk)v;p(4MswYiZ61#=^^=qCEqc zqHXXrf`-Yu8lTTuLz*>|GOMC@LJ)#WI@D$!!{W~5T02=Hh_GXgs`Pp|zxkVMw$c~- zWt`D`O)`$~1=uL@KlAV#E+$SUba;y=+IKS^RmxOC2Qs^^sh@grynp^=hUo8^wZ~BQ z0C26|zA_)8tZNMuTLhT$*Z^{&!>(Fc(5|D#AiO60!Eq6 zm9jtn9gBVKWZRLO(BDbR4z@QLVn-ZRYTW#LXm3pW8+oVuY4-OYJhbboGr)HZp7+p> zplMb@_3ScRkknOZ0cvdetz(28;#N?>{!2QahUU>UjpI4V$uLRxv9=1euYNrWxv~XM zWeaSJYF89I@jcbL4iCqz`UV#S*vu9beUiLJ`7)a6z&{$g*leSg%+jkGnu~uZYMlOE z_t27sGJP0jlzDia$h1%yww;n`VMK36}n z7@`zP83G_Wc-Ra@{Ww$n!2Eb|1pAye8-{z56#2W*t5WL}tDR5eNFzF#BRRRFbS==Q zs37d$X`sV4%yJqp@(4K;%P}8y2z&%_BE-+?&PY^ce z|0)haE_!y22PqUNBp5LO-y4oXw!tzCg(14__52kLZ!*vR=qM3V!L_ z!3%;?T&J})xB+=%e&E;?E59eo#G*c!q%x*|{>b}OO_IOS42nq*X-ZV<+nUC)e50p2 z&Xsq8TL~{ObND#3MHVhHWa=QoQL)gqao@zX>)oQOdh_?fh&t#^Fkyk6{m*9#01T|R zV3v%_#^cZ=z(A5>V~xQl6PelC#4Cco11_&|M?)L+^VIC%S5^#=-c&& zziO}NrQ$VXpj&TA)mhE55H<>HzVDnMoD81(J@Sd4)r(tM;Xw|pNrIHy%zK$%`xE)< z)3}(*3)nex_i3c)5ej85wq5d$u6JwyHx3%~9Eqt~R5N^lGo|wqrbJvZ>w-V1Vq*=t z&ZIfNXzaYRpQZtAs-z(^#?=)`oaYti3Vb%vB?BcwS?({qL3CtxhFXY!nxdewQ~!%B z`2N25u~|Zsje^=pO_2wNBhQdxgU?4S$dRGuth6Ii68{aWG?QAv1_(eJplCjo&!CJoJcnzZkb zlfjKquVsoY^B!wdfLZjnFJJJm!Zl?7tcLT0Y8>|dw72i6@qj(OTjqW%RD&{<7n zK`8Y-L>dFoeYu7^tq|o#TvN=JiXNC0BV=uQz}>UHPu?VeKiME7D1B;hYp2p`U38c^ zx_X9{j7KeG;j-65I7e8iO7ruz@?b5dQET<*GkH?0s7wirqOH0Li7x7109MAL|6#fy z-wv~1A!$?;nDKTCf0ap#8cAuK?R&73wZzm@hF^Vh7w z&%vhg!flX4Lw0s!@CQiKOGn39Jd_ZJH(lv8xnf}9z{9)5PCG1j&i}A+s&gp)f_9IC6)fx zX_5)?Vc(%h`}`i&?794+!FyZY%EmM6%}{dni9W1$>Wo^zaWA+qI5ie(^|YFR_$?y( zO*c@ydhcmc^z4}!QP|!#g~g!#OTrQFPn$XYGH`x+{FSP0Ex3?5wm$xMzXInE<}f6@|0d4o;y%)$Ax7do3Id#NVB*`J6BvmAnSF1mcE z{=-*YXsp#+zMlECC{@@m!}AlmZ5{E3tcOPnbM0Y;9UuIUf2H5-nB#HJk$hmnisH{U zv_G4;?v@^!LBo`PKMZ_wB0H601r0S#odjIA@bo)MNK;}7lGhuOwx+(}zzI0LLgWr3|qoe~+>2W})z zgz(0fhtz~3aAm9Yje7#Fd%fWXq{d=d8kqJwPMeFQ1?hs7_H5w4&;;?U2Ll@jFg$Xq(Bs>brhXf4)z@=TE(j zX|FMEDhN=)TAY-)3K05bLc=a`8~8S;&4{+TaH@;Bsm3gG;8fY|o0Z@SI#H4yZRPM9 z)HWK#kjgQ%A%iGN)iCZx;CIB_Uozz2G=8H?v9DCraqaK7auHGkY!ao|9}U#Sx0qFMR_%f_P{Nd=!BK|wn2>ikbhd(ZdZ2+qYbVag753Y@+No$CpC{*Vx%0WFw9Ky+nSVTD_6Fl(A~K-fb1 zg{c??cWM6Kp*7N>pX?ld{qn_8Ab^-@Sg-t%-!_pLyMIXV0uAa#Zh1&Ws<*b3bHag- z4zCEsepK9%Gz0p9Cmj(WEwg;u<8v(3Q3J_h{7Lg2l!aCH_UO0mvKW)ZntTTj*maiZ zx{ILsIro^qN5v*verDfAv}i{844G+zY!@;jW z8?sgDhk4vg*e^^E3{F4k#OQt~>uLJ1Ch!Eo_#}o165gGWcO=s7T;>t9aHM~uqM&kK zbbMJ;5#e*^BF}j!M67|v39CPA?1y2I9QlaDinV}~_ zJwg$CQFL^0Z2&fh09ud}wQ369?fS=+OI3=+A*s@7& zu0uXF`KHwVC87d0h%C+--%I+fx_n@(@ZLYZCCo4PyBe^a+FM@w_DT=eL+D!U`mz7C zEOfMD>*$w@b<9ohN-F)|^o$v{KPO8kOTD!}nAt<$Q=+d|4bOW;#EU#(1W*3f5X`;T(4r`CriEZ$%z6Gu~eNZZ> zg>iDf=%I(`s`*%(#m|wW{7u2)?hs$mUqV|fduSFaY2T({xmHA%Hn>j5HqA_e?<^tk zVR9MS!g8{qvJm zt<1B&<2bgO)zuW8HTq513|t?E~vr63~7xIgM}ufD93L4)Ej&An`*ytS}< z^E7;Cr}}g4)Eqr`!@DdhQsGvL9)KP;U)9~IqWy`{t{d$}GG6{#4&)*4BPX3_WI z6pZgL;QS-Ol1N2$?-K%El~yDXdi`fJcExctVQ}V+NqmqaQS_DFf<2Kl5kPP?T1QSs z55N(&2Xr;&JeKVH9T&Zq^`_uEM5@W9tu(d@-K~x`7lKdtU`;gc?GMvm{&0<4m^o?3 z3(J%*+o)>f#%2M{cCblwHJWWjLkUt9Td%!UcC2PQTB7KlqEXWW*gvTv5fcHw5#1pZ z^4i!EK46&xkzE9RaHK!?D@`=lm`jO>_#3??n8X_ZdZv|70=#A&Aj>)j+x%9jb=jTh z^V=Y6oC|R*@`~})^JX@>k~RYrV0_u0`~Z5O`ulBA;UEw1FxZrHR4l7aBCGGvC~LM= zOl_BOfMpX#T1==OBMdsd-z54Zo&yflc3{`SrAb4jo?p3H>(FPKEA_PwL3{{M9L-C<2VLAwVCO{9r5 zDbfT5X#$~1k=~_>bOe=}5PEMx1nEfcDovyb3JFb!i1eZe2ni6WA|z6zNxKJs-@Sj| z=R1F-Jehgtotd+{&)MwGUf3p9&lLnx7r2$#{ztoBzFd#GSY!&ykLEt}JpSO$#RgU$ zm8TU*)@)4Zn3Yi7xhjTOG%O}(np@Ky=;5*}vb|nuaS8L|Ju|x&Vp*LIT=AveC{3nI zQ<(=N5Gsth<94PH(TcaH;zVYMd$hde3n_I*bPEB`Y<@KjQ+*)OLTK}GKQCv8&wpO* zZ*Zd1nbXoNFL(iU`_L!W;<;?CsWnlHzwiIIhMBu=PZ`fm#@C6Sbfdb9ER{8x* zlSNw0z6(EHZ)Pr%%JTloO;BuAkdMdm!!f7g$!8|)m?=k4w)kAuB|jvn&26{Yx!-nq zJu1!F+qvktX;Ps@fJop+hrpzeUQZcuv;>fUH_UOnSUfSrrV%A+PMi37?`6eC2X`CyC=V8)P2ujyx6YqY~Wl)1@>+68r&8;$%$ga zppc9>X3=wb1^I^_E?$ev4szhBs4^_$I=2nZ!_WDNP!9{mnG!B*A!OMwN>uU!>fV9e z3Uh1A%Y=%>SNkmzTqWI#Pt%0Kp2BCjNtyvw*}Rx&18!C>D6T+)o0ZE@Fl)+o>oikj z?%0@MEZeVMy)ic0o5`P3l|H+Ei`BRLtAAW&FKm0EvUr5BHkQ}&`<=ke0_9agu#4bd zDtkM0B=X4M2`9!-p(Q3;T3`--U2iyGEqr_!85-&G-4f{Q;j%3%jK@YdGhz~>sfhGo z&NH6VT{&DUwD0-Y$@^UTzz!Oju+e2ASzFokp&npJR75MtGom!G>7PV3Hl28otX(HM zkH0>4&TFXoh7Gf-g<`O~HUs4JexKivs@^2xe=W76muIvf`xi7e5BSmYE$R1_$@sPc zz8c$71v(hCl}bUqS>JCM#7ml==usdxUc?m`JgO%9(30gXgm#Y!5Q@D#3?`B`}n~ zP$5_hKL4Ie3#SG_RY;dS)6_;}%-A+G-n5ifq7p<)8aCr2QUm1E5{`Jv&SkxtxHQgX z%Ws!Fi`75~6W{Ebz(Tz&FRk$84mw@2L#%Fva>>X@y!+49J$vi}Fop;Zy`4M;oQ??V z{dfr9p6gyMPX?7mTy@od z60QVBfsUl*qs~&v%SS504#UzMI_L(S9K!V%C2T8Q$<=$Q4hF({=Wo-QBM0=ag$o%)PU^YNDIQE{xp)xF=f z7k53@QVR0LufzC}`e~`0@%Y3f(7vf(E#GeQZs*+Nc2Rr8RfptxV5sjpLD|%|yj-?< zLV9LZYW3uSrLEE8@c!amopbI0A9|Zo7b1J(P`B``D0JHX^F)G^k$+pqTBhK}?TE#{ z%o2*~wNk^6-%sEqD&KWQPxOu5^YU|;5nk=oQw~4nEIZ_ThF9+Fh^8{S|BdRQ>80dp zdn?1AFbiD`*`fhfT<--S+PRm_^C4$|LJ@!ZK=KHi-%P^tscU^lXVaUdg%uIE=mPP4 zDq^i0117eQAFZqVex%L)mY2|7=1_$s@l0n7ZCIJi806Kq(Pv_SR)d@4+iJPL3eM&G zXi*l~vrHZ76>v8<=!bR*bs}S5SqAg0r#W-EX&08Zr!44$aSFNYW>$Gf$ElO3x=mwX z-F8l1f6f8hSy<@I^HBZ$EMr`Iv$M2=Kur93y8_p9;RTEC3*F6CpU$3x`$QN0V}N|| z=+-Y6;mB&y;NraFY4m`i!s;|8^V)vv^JfK90l1aKM+|o$qc{2;HMDtrKNfz=4pM9o zZEmug_4~W&^YJu_Toy6%Tyo`+(jt4QPj)x7bBX0#(QSyepJ$-~blqwRY|pwMZQInc z=SaOWYEj^d%bE7fxATq|T1dS42b3cC#bzwVZZ z3o=WOp*y#sfezO#?>=3m4rQW&<3;AhJ+QCO5DH;+37>{tIaU%~LHDlm4`BMro*P0} zVIf-y<7)DcBDrYb45S=?k*uPcJXr2@bTF(tOp=z5JCA}9_Y8e#7{Iq5;QR`;F1nm1 z#)9Jke7t{8cuB_m%vLTJWkPi{Kll(&!Kkq*>BN>~5Yp3Xaa3p3t!!1Tw{XnEMt+X% zvJlZ$Ef*4E;SxXMZ3aVqyX^QO_guxB^gL0;FRL}%?eaDVZ}OuSy=ZTu?=U2NI{A1# zTlO!yR_dO>0*l-KBi{v*|2FnVUZMfzL8M25^+PG{yx7IRmD#l{9gbvj^)gy0w!lg_ zn8#4@9mxFvJHY48j!Vr_Ehv!`dZc0J;$bOim)Twlyvps*)BRH}Z`|{EtPo7w>BD`B z^q&1%223KDQV&f$>{SHjj)ZQT?fL^75(cqIaKz#+e|i04Nd_Op=cVNh2n#t2(#WA7^_%9nuKU2f9eFVKn0IW7Y&VMZP$EG#VIgAkU)1WH3pjE>tH+kMZSnYoB%li?W0UCdJ-N2xeN9qKi{KsIw>xZ-<4 z{2?d1MjGC7h&?Hjr8#3zI6E+9kTr8OgrfE>iR1Ns-qFfca^jPR>7guV?4~l_y)%3L zYM#&%kr=8=wl8Xn7#q=wCkvKU#;8oxQOg|E&E+Cc(YTz8=x^K58dRFqtae{${zobu zBvt(NZ=f2>{`IpL0sM0#C+w$b0HFD)NU2R}QOe`Zb)u{_eca;ILnUazKOe-#e2^k` z#4grgBr36WehLBvW#bnJnbf@+W^ek|w-B$xJNH+TuX2QKboq)`53ly|AR(--Yl<)b z;6H!fQkcswX4$zlHqV)Az%=bGl4>IhVkiDNF%7YtFYy#&6?5jT z7YS;^H!Z6NaR5?5I-A^=a1x%}V0do8!i6HhBDk#;sE(0jGVnO@(mnxnDnypLnvzif zty=s0lR4}D9*@ch<+Tn%mpOe@DG$c52dqXxJtwU<#rmh3gFOXQyMN&l&b;Ovk?<^Z zj5Q#CViy|10Tier3lfH7;%ljidC&2BG}>rzeXR!ULv(1Iz5z)PivYTM#TV>&kWuUI?x9a>zas|CS#Jd_mR!PrTb@Pp2@XQRg#vB;4gTGvLDjLb*gLi59Kv(NKn zL(v?70NVLK6iddysZzmqf=M-Neb}-;Gj=C73IKEvLjMy$6KjdO<12Ts{Lv4#ky$3( z9WpN#ANmq^Qs}IvAq%*q;ZySeOHaH_$PqO8ws5nZXzkuTaeH~uJQwr)YeF=O)k;#@ zLZrY$Rb-pHvNi>yzyXtYVsF=Lk8D(i_8g7yp!CVu-#*TlEhK&9)Wp|^w&yot6*@M2 zaY<&0;O$IBv1fc4}fDXHPY z_vrb=c`!`g^ku6*b~_AD)2=viM3hD`rNnVyhC@R%e0KC0ZfTEu_;^tRjubiwvxZ;> z-AlNN`8!(>ONC(WxjGcHj0VFj3p#mIP>I8$PjCNXX z#ow0=2T$11%h~g-RJpziGc;@{C^`|Hi)s$NylD1#PU$!nwR%<{#RPO2r{OD{iXcS> zh;pyJ9UJ$h`IG%`a=u2nrecGU&S3?@5v-CsTN;ujyl`M>)e9*ifR4Ve^v{41Vs}SN zC9vahdo9OaKuEEOpn@?sw(PALG_3uD#fIrG%EBdzF2Vl{*y(J}&+DQC%0G-wgu2Ht z2@Tyyjgq&1L>6}X(~uwA&9$RQ3Vf&d?-utgP|jqjv#a_|c%V3El+&`G+1(qNrM${- zmxma7+~3XzL^a73<=y*PPW<8#kCJmEnK5r4y=rlZe5MOcjXJb~>dR5V9 z;>O-tN<9D15|z1GlCzgckJt-yoX&QmX}!OEkDNN1J#6~03(hMUZd*l7Uph+$sezBt z7wWP`W8%MFfO{^lV=wzZ!NK7T@y7>iX?0fQJFgKcHMuyi;72JF#Q=#K`P2pG_H=x9 zy_ZT#NWM>jYyHF7zBUib_W7Dq>$$g`J`}0Nq!3zWTagk55hO&jY=q+dJ;`f0m&g1=|A%pXEbl zZO+u@!;gP(0J`27)3hDT;8u#{5V0rA7_BxD=X*dB_zt(OB`AJSb9UY;=Bd${d=7^IpZjC1wB98DWTw6CeIaqxP{@S?@ zKD53syPeIxIt&2Jw_hyLJYrxJK4`_viX^Vum&u{(YdF~PK2YEVk}^Lm`XZkic|BP4 z-R<`J2;o?2e{#O}+X&cf$eC|{J6E-81DSFP<&Y`~55v?8_6h`!3WK#`SkZIjZ?n}& z%@JqM#nbMT?deN@zEGc6$MiE?zhF}7=X^U{K&pol9yQadO(_M6MP`U+-YIh@mu=pV zYq|XMvj5B=L3beRSOfG4)8rX7Lw7f4s9ink0=Mcm`K@@IIVO47E3{=Y)V+^zt>g%o zHI?kx3snv855nY0k_ZQ>_OlM~n3`geMW=^fD4qPIbJ-?V0Vy! zyvFkiI`G8wWnEA{U{BxNNO&t$Q-rHvcaS?Zd?Z-E2?}NtZ!YVTd`g7=m%`&(d}lK~^_X{&1dG?iS1_vzPscunPu${T~ckhT?w$3N3AK6bkY8)2K)~bFs6bAp+vdtD8sCaH3njrAWD{1%qC@hsD44KXz?DrU^-$EiU+)bjBRDsU=I2$^;^&&@)=1oWgMfq{WPX(-mBxAWY+pnYh%f)l?(WW-xc2{O8THV^AUS&RF7Nm3FmWZy` zwe4cbaI&J^06+aT1(H>sAn9EE1LIKQ7NI5`?zILTtMH!2=6%clCFZ~?1@~D?BpPkr zxy)osXqhd3xZt1w2BaP&L#5N!{g2`R#FkR4?^a6n_mD(t;@Cs9iqJ%Ckq+61FEG5qSHlTOqAJ;3 z^tCB^0|e{Y4DHa^#dpA18sXK1ko|8 z2zp9cKaQxF{V3MmbJN}rkfF4wBeq=JI1CW8?Cg(?(tbisyn!pBNP*jcDFy6f*%5Te z-bDnmlIvj4#{hBmgWE#oGPD8VG_uPahxk0wILFnK^RtDbz$!+_O?F zQ!6dr^W1U}85orxk`nvAj(!|n(`xPgnhf-U2U`gG-|({8)vkwb_O%eeiSA%=5quKn zIf$Yrh9j$$c73-!zZ#%|dzn;EqT+lq2FIsj z54kTvfh6l0!5j}h)g5~S1Z^hXG6%n4Ic}tk%{S{%hm%FcwvllA!VEXh4(*UXaOUph2R83F~7-tj~f`D11n@TeyCOYPV&*x-k>50a6D*wui=aQjj4;6OTiY% zM8_3>x4YuFAj}mt06lbx^q8ZFf9naB#6AHZ!a#0aA2~_GdKZh=F2+nsqvXv&Gucfd z-MG`WkG)rbAcMsMTj;|aCzc^5I?zlmjBr7TA4Sr2V-{e2Xz5e?LcZ$$ZYVJjbIBI6ljP;BBo7>jEaksqfBi(nL?Obq zLD0$krzF?g~X8n zaD2Fz={{&G`4-k#7r0=yB86?2(sDazE- zeOEv5Lrq^4Q-HS*Zy#m*&M{dBM9qH`G^+n7%1VwlLJPuRgy6Hr#*II|Wd&iqF+`i2 zRS;H8n6sl-9}L(`U9r}fTKF7G@}arYxG$^mZ1jPzXR(LE^#*OnAcM*i(p_n?LB57B;1m5%|bZc zTxpA7T=;-k9LA12#)cnl=UV}aOQRCPe#<7W%O-h|MV)=EP%BO|s=B*#$5ih|ccF*J ztk~xX2{i4*_MQ~{eOBA!`^dz*xStzX{r zN%q8W1+)$LlCsKN3)+>@g-8BY>Wc`$u(1KRk?I~-XxB8pns6?^tia0rXeWxQi&Q<< zy7FatE%29lp}wc1_q_WngV})8PqImp5sa&f#yRM{Mlq#F2EJrOD z8zGjJFpT(e=wg14{#WR}@i8-D3D{&yf;B66mIvS3zFU=Kp_jAxW!AM_dADLZ#zq^b zbL&^oqq*?l@CeotYVLvT)VaSfx8D!|FVdfVr1^1j%;s+mFmzc+Yl*$z3qLcp5>M9 zz^ix%_w0B85mh<+Mq&KJq1O3yMs%XpJki6ZMy7DG|fXpsOMQT9q8BE_73jA$$}gwuP{ME z@G-xfZ;HA}1!Qa&gb!I^xYkpuQ19BRl$YMo*)ZW#S9LwUgI3@JfCIVx`X#rW#}a>! zIyX`vfe1eIJE@q^mswI|g-W@pFDmi&=X~rN)uUFwGS-aL&DQ!|BoCZ3dr2QOPNQMM zb_pLS`t5?V8(>U<&VuHwx=a!C{Fan3cASxh;6JY7+<3@AA-ahunN0yG4WSd?TDCg3 zSrvo312G*n5wiF}CnjahdIhaNTYPeNPmUOGfpY3!g#*Pi{6gnj7t2|2vzVrxaQpVy zQGT-HETEIVmxdTf0&v!7!Knj}CYG{ltoy&x!l%O2H##Zgs=o`0e=GeN0;qc2_q@h` z6T9a5rh5m?gwxzfexFDh#`x5vY}Gkqumj8j$|`Mfqy@7RqB{6Z2!`Ez!>D z*)a{|pqsj>*AleyX7RR(?4FlEEzc-j+)CZ-!d|0nIpC5pIGjZ;yKV{K1y%>g3?~NI z8r;WjE66s5%r#g0@>_1XZE=6l@E~*xH&@X#X%uh(Pmjju`q;!QWp=;3e-yridruQ4 z1cS)EK^8z|fr|zek0yxk6CZi|-!EQyGpI$QPyx&_Aq~=%(~BY8 zi+NPH*k!LJ_Y3tAdEcE5y~R|xAO~fheq(n@qO9~iP%$-5E!-|nqRWHkg08IRupPB@ zp)5e|yBE+KkEKN;ue7ju5CqH$EIgSS*u&Jtabrsq5?(zKw`w2CG&^-LzD*zqHVg3` z9TveMK>X6~>~$lR%cRg2+()g{XT@qM;(+6*wR8UJNR!W%uTB0m5LMStaey0lSC`@dHqXKyWY7S> zew>9T0N`HElW-@~AfPP(u$kD=X8DXQ{uNMYGwsUDB39rt=s5t((WFwwd^oFSOMl^X zDU!6C>-dB6?vIOkQYsm+e$6Pdu7q|H;$tZw)7PV)9Qb9ndKtU?9q5X@H+9+ODr;mL znX0InC*v1dTEJL6>bFywA6b`e)T)h-yvCESv_O_Y11;lAKQh$@V7_^&F;#cfLJH_p z?g>ZP~jgr&jzH9{_V>u;`fGF7O)_R@+GiT(FBXC@$;Cjkj3fxdY8vZ8{I(&r>l-~z=f@(qjuJAHu4 zl2lJ>_!Pw{qbUc%^tKgjgPm3gcM-aq~@V2_<1GuVb zY;n^9SH9RVkO2SRm)vv=**|ffvnefOi~se-yoXo)XSDCEiP8Lj4Pz0jB**X%XFC!G t`QO7>xY5&5pW{GIA_>&|{}BJZyaNQUc|GdT&!Rv7s;g@2(0i{5J^zUXj$ZeDKkNPWez;hR#o?TsnLT^<{_Q$>rYJAHmztTHjErpWjq6vH z$jEl(l95pmsCI%o_BYa|$;ikhO(i82Z%9hAE81D#Gqo@xBjbK z${JoCYC9*Tr%!#A^gKV8d}l8$`5aXn74ce2tCxwccgO87WYM=i=a}#DWncZsUzz-2 zWodjj`JASQbzY5F&YiXWv91gyuU=@p-SdG+W~*d(`PS|oI}BlgDOx&8WCl589mlRA zq{%zZAtoKDP>e9%OUYolN z1BjrJ#?`sMI>4TS* zC2!mSf0YgGjEt=8O{^Ux<*MxTi_V`kB>N*!;h)SDY8pi+ZnN+=NIA^JSI-f&dx4o zclX{UrK?iEUI+idkC`|)*jy42aB_0ucRI&!ZD%ZS=HkVR0)l4+&YtB1pWw51v2xIN z=CiWr{5i<)ajqKK8`_!LIG9>nv6IHtH?VeefFC~cr^5?56_C|J+)|TK+ z2k~tN|9Tnv@b4FY%&88U^Q`b0=$w#8zg`s+Agvw3i=T}CaTjn}oLWp^YuCi7l_w_6 z$jA_6H?Cg3?Myz2qj{;N5-zc-8xwSY|GdfB;-m1s-OL z@-$YI7UaHicHhI{`J;Qety!A$`q{_n)H9i$xsVkfxPHIdhI8MHGNnPVSddJxSO2Z>16(m6TAQSw1|?aBmbK&GPEoeRqnY4xl=d( z7x`dbm{rgJSl^FFcdsBy!k<|w-T1F;_&EZd&DzfY!l&O;u+zg})3OdhHxK-8`tRSz z3ja^Wg8|>r(b*Wk54-*1_u&6!r4(Jo|L5*Jx_@7k9{1tJ|FJ>rz4*QVdu#3^PEt^G zy%|0E>iGXbKY5Pze<65_hi5t1duy)>CmjDj=m(;;T5_^nXrUpF4G;@=4I zcPRI7gb4iVf0GYeA^g9|2f&K|-zFdQ98Q`g{3Gdu-b171Hdl7WwDH68tgfd>C&8@F zM&@=nG|$Az8#poEEtO5(E&p5fe+QH%I%o!~NT+U>m7T>i?lV3yG9eeN4YPcquS=fR z^PcC}iFe+zBR?;qvM4>4l5`J}TNO-Yi>wR=`BWgcWQlYUbpfOZEp=|v|Mo|Ir=!dc zwCCCyrp-&NR4F{_D!O{~_k$mAxsoftRJD%zM0bb zx_AFUR{Uu_3MZo@s(%ndTJ^(2qlc~7Tu0xPjU2Ah{*W#SVFfyolA=pRndds>-Vc{L zUamKzf_1{NG+90KN+r(cEBWut42eNz2bi>#O}+j~fTHuMy4(r4701_Y$?Eh$C*{0N zn_|nB=LQCza{5t8+1HlbH%05=&Dw0)=#S z;%gS0xq>gS4nx;YiEaga;3A$|Z|}6X5I>Y>0LI?Yw>$N?b9!N0tay&PFNF0R9dp8L z;C-IabCo}rW_^PxijI!%tl$>@4wG2#qa840TT|OiNth7_|BMiFEIJMd;~bRF49at* zRE5XQ(L%Yp$iv<{9aM1*dXJ7>PzaW%l{!r;J{TxDA6-JjvAnr9!?x?F4Z`Em@-1l= z6#~IUj|j6L{{F0*zu>g)EX$0ubRnT=hOhfJ|6nn`(|lmDNkJeu1G*LDup&y?Tiw{w z{ZLL*(J|Sf8y(*$z?Yh@>yP*d6f+$Ww(?EU%qj28GB?C#TNX(z<5e@Bu)1>V9+&gf zG3BMeJz+trc`!IrYh$t4fs!4xz6r{4ck*jiE>TTpW37rJKCVp{ROoKB=q@o=xtAX{ z9;~LyL*2Rv6;{M8M9E*W0?2wS9p#`sEL=S2w^8i8G~Tjuwhm6v5+_r*yc{bR)*ln1 zwu`XWkk@R%tmbQj0vlC*`0U(3Ma6#Uqu>fAD}jmO%%v&w>Z06@flAk? zE}{g7d42$T4`^~KjL_rhIp-3@rNBQ;dymWO!;g_y3-=zmaCJ54%8bwfF-y!EZe||i zr6}fEUnil|ab*Q-Rghv~I)TP~n;(r1IOKj({;gV<0B*lsh_}ee-w;H~=(qr&aA7q5 zQ>g|>3fdC0{tKya6{!jB)ra#`6hm-^A--8mtp(*DY=xWH&<#ewF z^{*J-{_t4i*PxwkuDt?9i%PZ*c4O`_6+6^v#oz-ZB#=l1YPtBl)V0fg5wC-qQduf! z(mg9O_8|zlJFkgqHo#*sT17(oGIR+-(TLO}lzI7MQ+mj1!H${SCLyFjcZJ8wu^S~ZtZ+lXKL>NvH8mDoL>VjjmNtdzMni-yi#K=rN6i&zBWnE zwmJKxIylMUtQ=#H{c)$nnfKRx9)GHRHQor0MirgMq@k*?zj26;J!Lwsc$W==Py?c!!)Gc%PdwfUm#AW|t5bN_w;Pk~DGA4nf{ zi_-ORa!YD;SG?unao6*!uDvtP6{5%d$~_6Xg`&VZ_IPpnDX~qS9Ar(7T7w9j3CUPx zF2&>jz*U4K&EnA_?dtsRdvWpmleP3&X1`dQsyw!X&o(;6m{#_z4+~fP!uF>pWP%xd zKA7*oJ?h%=%AO6fH#OWq63ca3PC~bl&O{B(73ua-f1=g*AQqU6XgUu@4;id_+EPi= zr!lXDCTn0=8{77bt5w3e#f2eewEilPyOZOxavTsX0&>U5G@1Y1ujk8Ti;YO@jn9;7*Rx{}fI!}+|nRP7@)jQqY_5zfav=6rM~8(;3GKlxR(XQg(11+(mf zc?!(cwV13nr@Xwuui8$yR}%J%4bmZ6wh-%x-~|;s&37SL&;LLuW~nIFiL=78h8pq5 zS}2;6RMTpG#0XvX8IBXJB#Up+`H81d17~{N1)eQLy^%ZMPjWbh*@PQ8oT#%gvt9yU z{e-*QtrwKYbn;p3zn?i{^zEfc@BJOeD0@shH;W%kSi21zvBh^7S4?(fuANq0WvzgU zM8FTdh!{564dFdWFD%ewO>q@Cr=IY%!Dn0%BE7eg{ctz4j+miUlI|RooL)@55p=R_ zAOOw^Y%=Xql24riXM%!A-y^jgEA2V0B4j5pA@!29Q%ku+)gdDR_IX-ji}jM5xUral zZJz-#LB;eLcgZ~^20|1ad%YeE?4#zxmg|lmkJ)_PFFlylX@8t>=3KzDq3U2-nM(M} zKBSo%bqx&~Stov@5AQM(&eb*j%ph`$xd@-#U}OW9)Vx1N7W@d~iQ=^|4IOfo)7Ey5 z?P)#0%~IuF$?;^5OJ#WM3D35I?t=;v8xE|Za%Uo>?BYzzX)ldN8SLsp%@oZI1}O|z zzoJR6qN+_0B{zYiRa-5e@<|k*&+f8A zSrj>`OfHosQFQHHJbYTGFjpbWS#PbtR zb~!Z36@80&v!_;Mz&E$|0nPkK)5{SOMt-=}1JBt(D<&8#AFi>4a_u(X-UBl9Faw>9 zurbE$AVj+Oj;C)#sAL#@e($_ujCsmJo64W<)>Tze*6#nN%uv+tM0y1)O6ZPP^T{Sy z=|MYPhlXn|aT95n;@EnZhWFPBmLpt--;~*VMHP<3&-7pW!_ylDCDm!P{vV!!I^Ff? zPdWVRteQmk8y4Ctks0Y1olY&H1tj*e5578r8GbdG*-Wb3Hu6}-jbIP+Ldk$&_uP07&Pu*0x8J(j`r1exC`?$c#o$k6czTd4tHOCvl%o3g*!9jQ; zG2f?_?=Y55pR8SQ!K!esTxUjZ!pXCrK63Q$WgY~}_D#J)SImU&NZj*?e3)pv1ZueGzJFN^2}JdkWA2@ki; zx<|X|4ZwB;ki5mRc_dZyF-2y(xLeHt`0Y-srAGxXg;Wo<%}zTu{viNnbd`>2 zUd<|!E>LJ-N9fVP(vq=snjxnHQi#RJb&B0r?n|4hCVm;b*5jAKa*kIU>G6nix_E7R zc|HVllvZNhX7OkZyxq+2h%i6!{?pbCyXS**20dxsIWtp6NIk@AsOt57@hThp7IZ~} z=qdsLYpjYmS+|+YxbCqw#R$Cr+iCXuAXvbz=mP-a5T6kQv)C1n&5jOe+tv^>Ia77o z4{9fs2Wz=636geFlc3R=)4d;iM_e&m7A`;S(dBERYv&GU9XeckJbl{B(YCILFxZ2v zU~wAsR87%1NQyF~+1!O%({y!nLS;jRc<{h$Td$mn;QZV~qcmz_ZiRkMl_!8%pI`20 z#I(~O@sl04Eh?%@mqsA+Ob*Ke2GhJjDHw{QI2c@VYBWO@pVF3HmORioFC{=6ZEeRd zOe>Ggd3ZsB#_Gx06)T1{0 zOjc+3`6Dyxr7U)A9?N}mB|D0UN_F8*-G{*n90vO0p&`{9pw-5)Nw;5a6NG+#NMxaF zYOZNo%y#LV(H+;$P1(2Sr-PR<*+kUQ#pQ)kofdfA%H2tqv5?0bMLO+FFrHEQ=%Prs z`KtBBx+51XDtGyq9$%KEh2L(wc_>zV<|4IN3XK(fHvcSbRcZFG5OYzBu<@x$-e<;b zMAXrb%hgvPv}E(sETU;48l@?v!hY=l55-7iHf1{j?Q9yxjPGWeH~{X z>C+K5?fpy}i+alvf$REUJNLN4bANOv*StGNLlG;Hefd($k4Vronh`Z?xYw>U8?^e7Q zXYb1IvHGf~Vl^O=1$zes9oe#T9HK4Rb%Q3T>M(=mWw^ojK5L(@ue;CSD|1GAgtHBY z1B==ohG|9t&y>x5v0+_kZ0P`rR=J1808%QZ3uahJp4r4wXt1+9b4H}pY?^vztSYL9 zP)sNb@LU`)=}9VTTlviTGAu%jvODQc3iD(%P647JXr>y-f8?+fe#HPi6vo|tZUytL zj8Qyj^PKrjS)I9{_H1YMWa47T5A~3L+pX?A6CA_)t=Mz%-J0XBUR3$0dpCona`yqt zHOzS_Ho+5iQv-(I3j(-N0YNEzf{x?O*F78Y4FMjXPD{lsl_>W)q;#f?TxxhV&Evbu zpS(-lV|^J!Zx28ac>mRrtZ=D%UHh8z2iMXorgn4|&6OW<%A0w}w%*G>@)jEU0BP{; zWqlfof}oQLHTv={?7*>mb>GTVLVU-X24Z|L2g8atr$#l1ou5kFyXz5*74j0Nb;EG} zE~=YOi=sWOmO&@4V$o|Po!@&~S*7Yl$@SD-5mM;5hF((!XXd@#$(kDGYay8Rp>)4a zev#Ov!k&c)!q@qsYMQut3;@~mu`1Lv5eRL1Q9yst-|_+=s{WmN&#CrJ<@k*}%wd+M zecx0pXTRm|ovZL%9cg#yAS4#Yg+9pJT`&}PtY@xw+|0YJNY<(`m&tw>U6xSaM1vH? z3oOiJusY-NG>6fxJJ_^TNjP*TRjXryLlSOQF#B;N(oVJcEDp`tvdt`KD!>B z9m2289Me<~iR?6;%S!V|nKrka(Rlb2cw*w>APb4lU(Bm>=T9wO9oHGTN!tp7B-2Ef zBM{Z5Sf!`4A#e>|g4~niuo=$74vbT3XJr}PkIqVRxuFq>8dy;+&wiD*v$3U1IpO

qBFiE=hxye7t~Y+0thSK0YQmS4ZXg` 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