import mpas_tools.ocean.coastal_tools as ct
from compass.ocean.tests.global_ocean.mesh.mesh import MeshStep
[docs]class DEQU120at30cr10rr2Mesh(MeshStep):
"""
A step for creating DEQU120at30cr10rr2 meshes
"""
[docs] def __init__(self, test_case, mesh_name, preserve_floodplain):
"""
Create a new step
Parameters
----------
test_case : compass.TestCase
The test case this step belongs to
mesh_name : str
The name of the mesh
preserve_floodplain : bool
Whether the mesh includes land cells
"""
with_ice_shelf_cavities = False
super().__init__(test_case, mesh_name, with_ice_shelf_cavities,
package=self.__module__,
mesh_config_filename='dequ120at30cr10rr2.cfg',
do_inject_bathymetry=True,
preserve_floodplain=preserve_floodplain)
self.add_input_file(
filename='earth_relief_15s.nc',
target='SRTM15_plus_earth_relief_15s.nc',
database='bathymetry_database')
[docs] def build_cell_width_lat_lon(self):
"""
Create cell width array for this mesh on a regular latitude-longitude
grid
Returns
-------
cellWidth : numpy.array
m x n array of cell width in km
lon : numpy.array
longitude in degrees (length n and between -180 and 180)
lat : numpy.array
longitude in degrees (length m and between -90 and 90)
"""
km = 1000.0
params = ct.default_params
# QU 120 background mesh and enhanced Atlantic (30km)
params["mesh_type"] = "QU"
params["dx_max_global"] = 120.0 * km
params["region_box"] = ct.Atlantic
params["restrict_box"] = ct.Atlantic_restrict
params["plot_box"] = ct.Western_Atlantic
params["dx_min_coastal"] = 30.0 * km
params["trans_width"] = 5000.0 * km
params["trans_start"] = 500.0 * km
cell_width, lon, lat = ct.coastal_refined_mesh(params)
# Northeast refinement (10km)
params["region_box"] = ct.Delaware_Bay
params["plot_box"] = ct.Western_Atlantic
params["dx_min_coastal"] = 10.0 * km
params["trans_width"] = 600.0 * km
params["trans_start"] = 400.0 * km
cell_width, lon, lat = ct.coastal_refined_mesh(
params, cell_width, lon, lat)
# Delaware regional refinement (6km)
params["region_box"] = ct.Delaware_Region
params["plot_box"] = ct.Delaware
params["dx_min_coastal"] = 5.0 * km
params["trans_width"] = 175.0 * km
params["trans_start"] = 75.0 * km
cell_width, lon, lat = ct.coastal_refined_mesh(
params, cell_width, lon, lat)
# Delaware Bay high-resolution (2km)
params["region_box"] = ct.Delaware_Bay
params["plot_box"] = ct.Delaware
params["restrict_box"] = ct.Delaware_restrict
params["dx_min_coastal"] = 2.0 * km
params["trans_width"] = 100.0 * km
params["trans_start"] = 17.0 * km
cell_width, lon, lat = ct.coastal_refined_mesh(
params, cell_width, lon, lat)
return cell_width / 1000, lon, lat