Files
mkdocs/doc/meshkernelpy/examples/07_curvilineargrid_with_defined_extension.md
T
2026-10-10 21:56:35 +08:00

2.4 KiB

在指定范围内生成曲线网格

本教程简要介绍如何在指定范围内生成曲线网格。

返回示例目录

以下保留原笔记本的代码和已保存输出;转换过程中未重新执行代码。

首先导入所需的库。

import matplotlib.pyplot as plt
import numpy as np
from meshkernel import (
    GeometryList,
    GriddedSamples,
    MakeGridParameters,
    MeshKernel,
    MeshRefinementParameters,
    ProjectionType,
    RefinementType,
)

在球面坐标系中创建曲线网格

网格从原点延伸到右上角,自动计算行数和列数,并调整纬度,使实际距离上的纵横比接近 1。

lon_min, lon_max = -1, -0.2
lat_min, lat_max = 49.1, 49.6
lon_res, lat_res = 0.1, 0.1

make_grid_parameters = MakeGridParameters()
make_grid_parameters.origin_x = lon_min
make_grid_parameters.origin_y = lat_min
make_grid_parameters.upper_right_x = lon_max
make_grid_parameters.upper_right_y = lat_max
make_grid_parameters.block_size_x = lon_res
make_grid_parameters.block_size_y = lat_res

mk = MeshKernel(projection=ProjectionType.SPHERICAL)
mk.curvilinear_compute_rectangular_grid_on_extension(make_grid_parameters)

将曲线网格转换为非结构网格。

mk.curvilinear_convert_to_mesh2d()

绘制网格。

mesh2d = mk.mesh2d_get()
fig, ax = plt.subplots()
mesh2d.plot_edges(ax, color="black")

单元格 9 的绘图输出

在笛卡尔坐标系中创建曲线网格

在笛卡尔坐标系中,无需调整 y 坐标。

min_x, min_y = 0, 0
max_x, max_y = 10.0, 10.0
block_size_x, block_size_y = 1, 2

make_grid_parameters = MakeGridParameters()
make_grid_parameters.origin_x = min_x
make_grid_parameters.origin_y = min_y
make_grid_parameters.upper_right_x = max_x
make_grid_parameters.upper_right_y = max_y
make_grid_parameters.block_size_x = block_size_x
make_grid_parameters.block_size_y = block_size_y

mk = MeshKernel(projection=ProjectionType.CARTESIAN)
mk.curvilinear_compute_rectangular_grid_on_extension(make_grid_parameters)

将曲线网格转换为非结构网格。

mk.curvilinear_convert_to_mesh2d()

绘制网格。

mesh2d = mk.mesh2d_get()
fig, ax = plt.subplots()
mesh2d.plot_edges(ax, color="black")

单元格 16 的绘图输出