-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Describe the bug
When using curvilinear_make_uniform_on_extension instead of curvilinear_make_uniform, angle is not an accepted keyword, it raises: "MeshKernelError: Exception of type 'AlgorithmError' in libs/MeshKernelApi/include/MeshKernelApi/Utils.hpp (375:45) CreateUniformCurvilinearGridOnExtension: When generating an uniform grid on an defined extension, the grid angle must be equal to 0"
Also, when generating a spherical+rotated grid, the orthogonality is quite high (0.039 for this small extent)
To Reproduce
import meshkernel
import numpy as np
import matplotlib.pyplot as plt
plt.close("all")
projection = meshkernel.ProjectionType.SPHERICAL #SPERICAL results in non-orthogonal grid (0.039)
on_extension = False #True is not possible with angle!=0
#general settings
lon_min,lon_max = -1,-0.2
lat_min,lat_max = 49.1,49.6
lon_res,lat_res = 0.1,0.1
# Create an instance of MakeGridParameters and set the values
make_grid_parameters = meshkernel.MakeGridParameters()
make_grid_parameters.angle = 10.0
make_grid_parameters.origin_x = lon_min
make_grid_parameters.origin_y = lat_min
if on_extension:
make_grid_parameters.upper_right_x = lon_max
make_grid_parameters.upper_right_y = lat_max
else:
num_x = int(np.ceil((lon_max-lon_min)/lon_res))
num_y = int(np.ceil((lat_max-lat_min)/lat_res))
if projection == meshkernel.ProjectionType.SPHERICAL:
num_y = num_y*2 #TODO: remove *2, necessary to get correct lat grid extent with is_geographic=True
make_grid_parameters.num_columns = num_x
make_grid_parameters.num_rows = num_y
make_grid_parameters.block_size_x = lon_res
make_grid_parameters.block_size_y = lat_res
mk2 = meshkernel.MeshKernel(projection=projection)
if on_extension:
mk2.curvilinear_compute_rectangular_grid_on_extension(make_grid_parameters)
else:
mk2.curvilinear_compute_rectangular_grid(make_grid_parameters)
mk2.curvilinear_convert_to_mesh2d() #convert to ugrid/mesh2d
mesh2d = mk2.mesh2d_get()
fig, ax = plt.subplots()
mesh2d.plot_edges(ax)
print(mk2.mesh2d_get_orthogonality().values.max())Expected behavior
A rotated grid, also when using curvilinear_make_uniform_on_extension
Version info (please complete the following information):
- OS: [e.g. Windows]
- Version branch 2.1.0 wheel of 4-7-2023
Registered also under: https://issuetracker.deltares.nl/browse/GRIDEDIT-1859
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request