salvus.mesh.mesh_block.generators.cartesian
Cartesian mesh grid generators.
Functions
axisem_tripling_layer_2d()
axisem_tripling_layer_2d()def axisem_tripling_layer_2d(
nelem_x: Union[int, numpy.int32, numpy.int64],
min_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
flip_vertical: bool = False,
) -> salvus.mesh.mesh_block.mesh_block.MeshBlock:
...generate a cartesian structured grid with tripling such that no element has a single point on the axis (needed for GLJ quadrature in AxiSEM) nelem_lat is the element number on the inner side, number of elements on the outer side is nelem * 3 - 2
nelem_xUnion[int, numpy.int32, numpy.int64] — nelem_xmin_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_xmax_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_xmin_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_ymax_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_yflip_verticalbool — flip_vertical
cube_3d()
cube_3d()def cube_3d(
nelem_x: Union[int, numpy.int32, numpy.int64],
nelem_y: Union[int, numpy.int32, numpy.int64],
nelem_z: Union[int, numpy.int32, numpy.int64],
min_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_z: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_z: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
elem_locations_horizontal: Optional[List[numpy.ndarray]] = None,
) -> salvus.mesh.mesh_block.mesh_block.MeshBlock:
...generate a simple rectangular structured grid
nelem_xUnion[int, numpy.int32, numpy.int64] — nelem_xnelem_yUnion[int, numpy.int32, numpy.int64] — nelem_ynelem_zUnion[int, numpy.int32, numpy.int64] — nelem_zmin_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_xmax_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_xmin_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_ymax_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_ymin_zUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_zmax_zUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_zelem_locations_horizontalOptional[List[numpy.ndarray]] — Ensure that the horizontal element boundaries exist at these list of coordinate values. Length of this array must equal 2, and the length of the entries must equal nelem_x and nelem_y respectively.
cube_vertical_refine_3d()
cube_vertical_refine_3d()def cube_vertical_refine_3d(
nelem_x: Union[int, numpy.ndarray],
nelem_y: Union[int, numpy.ndarray],
nelem_z: numpy.ndarray,
min_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_z: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_z: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
dangling: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.3333333333333333,
p1: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.5,
p2: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.64,
p3: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.1,
preprocess_nelem_z: bool = True,
elem_locations_horizontal: Optional[List[numpy.ndarray]] = None,
fallback: Optional[Callable[[numpy.ndarray], numpy.ndarray]] = None,
) -> salvus.mesh.mesh_block.mesh_block.MeshBlock:
...generate a simple rectangular structured grid
nelem_xUnion[int, numpy.ndarray] — nelem_xnelem_yUnion[int, numpy.ndarray] — nelem_ynelem_znumpy.ndarray — nelem_ymin_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_xmax_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_xmin_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_ymax_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_ymin_zUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_zmax_zUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_zdanglingUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — danglingp1Union[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — horizontal location of the refinements boundaryp2Union[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — vertical location of the nodes in the refinementp3Union[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — vertical location in the convex elementspreprocess_nelem_zbool — preprocess_nelem_zelem_locations_horizontalOptional[List[numpy.ndarray]] — Ensure that the horizontal element boundaries exist at these list of coordinate values. Length of this array must equal 2, and the length of the entries must equal nelem_x and nelem_y respectively.fallbackOptional[Callable[[numpy.ndarray], numpy.ndarray]] — A function that should attempt to modify the number of elements in the vertical direction. This will be called if invalid refinement specifications are detected.
cube_vertical_refine_doubling_3d()
cube_vertical_refine_doubling_3d()def cube_vertical_refine_doubling_3d(
nelem_x: numpy.ndarray,
nelem_y: numpy.ndarray,
nelem_z: numpy.ndarray,
min_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_z: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_z: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
dangling: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.25,
p1: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.5,
p2: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.35714285714285715,
p3: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.6,
preprocess_nelem_z: bool = True,
elem_locations_horizontal: Optional[
List[
Union[
Sequence[Sequence[Sequence[Sequence[Sequence[Any]]]]],
numpy._array_like._SupportsArray[numpy.dtype],
Sequence[numpy._array_like._SupportsArray[numpy.dtype]],
Sequence[
Sequence[numpy._array_like._SupportsArray[numpy.dtype]]
],
Sequence[
Sequence[
Sequence[numpy._array_like._SupportsArray[numpy.dtype]]
]
],
Sequence[
Sequence[
Sequence[
Sequence[
numpy._array_like._SupportsArray[numpy.dtype]
]
]
]
],
bool,
int,
float,
complex,
str,
bytes,
Sequence[Union[bool, int, float, complex, str, bytes]],
Sequence[
Sequence[Union[bool, int, float, complex, str, bytes]]
],
Sequence[
Sequence[
Sequence[Union[bool, int, float, complex, str, bytes]]
]
],
Sequence[
Sequence[
Sequence[
Sequence[
Union[bool, int, float, complex, str, bytes]
]
]
]
],
]
]
] = None,
fallback: Optional[Callable[[numpy.ndarray], numpy.ndarray]] = None,
) -> salvus.mesh.mesh_block.mesh_block.MeshBlock:
...nelem_xnumpy.ndarray — nelem_xnelem_ynumpy.ndarray — nelem_ynelem_znumpy.ndarray — nelem_ymin_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_xmax_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_xmin_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_ymax_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_ymin_zUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_zmax_zUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_zdanglingUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — danglingp1Union[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — p1p2Union[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — p2p3Union[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — p3preprocess_nelem_zbool — preprocess_nelem_zelem_locations_horizontalOptional[List[Union[Sequence[Sequence[Sequence[Sequence[Sequence[Any]]]]], numpy._array_like._SupportsArray[numpy.dtype], Sequence[numpy._array_like._SupportsArray[numpy.dtype]], Sequence[Sequence[numpy._array_like._SupportsArray[numpy.dtype]]], Sequence[Sequence[Sequence[numpy._array_like._SupportsArray[numpy.dtype]]]], Sequence[Sequence[Sequence[Sequence[numpy._array_like._SupportsArray[numpy.dtype]]]]], bool, int, float, complex, str, bytes, Sequence[Union[bool, int, float, complex, str, bytes]], Sequence[Sequence[Union[bool, int, float, complex, str, bytes]]], Sequence[Sequence[Sequence[Union[bool, int, float, complex, str, bytes]]]], Sequence[Sequence[Sequence[Sequence[Union[bool, int, float, complex, str, bytes]]]]]]]] — Ensure that the horizontal element boundaries exist at these list of coordinate values. Length of this array must equal 2, and the length of the entries must equal nelem_x and nelem_y respectively.fallbackOptional[Callable[[numpy.ndarray], numpy.ndarray]] — A function that should attempt to modify the number of elements in the vertical direction. This will be called if invalid refinement specifications are detected.
cube_xyz_3d()
cube_xyz_3d()def cube_xyz_3d(
x: numpy.ndarray, y: numpy.ndarray, z: numpy.ndarray
) -> salvus.mesh.mesh_block.mesh_block.MeshBlock:
...xnumpy.ndarray — xynumpy.ndarray — yznumpy.ndarray — z
cube_z_3d()
cube_z_3d()def cube_z_3d(
z: numpy.ndarray,
nelem_x: Union[int, numpy.int32, numpy.int64],
nelem_y: Union[int, numpy.int32, numpy.int64],
min_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
) -> salvus.mesh.mesh_block.mesh_block.MeshBlock:
...znumpy.ndarray — znelem_xUnion[int, numpy.int32, numpy.int64] — nelem_xnelem_yUnion[int, numpy.int32, numpy.int64] — nelem_ymin_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_xmax_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_xmin_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_ymax_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_y
doubling_layer_2d()
doubling_layer_2d()def doubling_layer_2d(
nelem_x: Union[int, numpy.int32, numpy.int64],
min_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
move_nodes: bool = True,
p1: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.5,
apply_mask: bool = True,
flip_vertical: bool = False,
) -> salvus.mesh.mesh_block.mesh_block.MeshBlock:
...Generates a cartesian mesh grid with doubling.
nelem_xUnion[int, numpy.int32, numpy.int64] — nelem_xmin_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_xmax_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_xmin_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_ymax_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_ymove_nodesbool — move_nodesp1Union[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — p1apply_maskbool — apply_maskflip_verticalbool — flip_vertical
doubling_layer_3d()
doubling_layer_3d()def doubling_layer_3d(
nelem_x: Union[int, numpy.int32, numpy.int64],
nelem_y: Union[int, numpy.int32, numpy.int64],
min_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_z: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_z: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
center_z: Optional[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = None,
flip_vertical: bool = False,
) -> salvus.mesh.mesh_block.mesh_block.MeshBlock:
...generate a cartesian structured grid with doubling nelem_lat is the element number on the inner side
nelem_xUnion[int, numpy.int32, numpy.int64] — nelem_xnelem_yUnion[int, numpy.int32, numpy.int64] — nelem_ymin_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_xmax_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_xmin_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_ymax_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_ymin_zUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_zmax_zUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_zcenter_zOptional[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — center_zflip_verticalbool — flip_vertical
doubling_layer_single_3d()
doubling_layer_single_3d()def doubling_layer_single_3d(
nelem_x: numpy.ndarray,
nelem_y: numpy.ndarray,
min_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_z: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_z: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
move_nodes: bool = True,
apply_mask: bool = True,
flip_vertical: bool = False,
) -> salvus.mesh.mesh_block.mesh_block.MeshBlock:
...generate a cartesian structured grid with doubling nelem_lat is the element number on the inner side
nelem_xnumpy.ndarray — nelem_xnelem_ynumpy.ndarray — nelem_ymin_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_xmax_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_xmin_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_ymax_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_ymin_zUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_zmax_zUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_zmove_nodesbool — move_nodesapply_maskbool — apply_maskflip_verticalbool — flip_vertical
mesh_block_collection()
mesh_block_collection()def mesh_block_collection(
discontinuities: numpy.ndarray,
hmax: numpy.ndarray,
ndim: Union[int, numpy.int32, numpy.int64] = 2,
horizontal_boundaries: Optional[
Tuple[numpy.ndarray, numpy.ndarray]
] = None,
hmax_refinement: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.5,
refinement_style: str = "doubling",
refinement_top_down: bool = True,
return_info_dict: bool = False,
max_nrefine: Optional[int, numpy.int32, numpy.int64] = None,
hmax_horizontal: Optional[numpy.ndarray] = None,
) -> Union[
salvus.mesh.mesh_block.mesh_block_collection.MeshBlockCollection,
Tuple[
salvus.mesh.mesh_block.mesh_block_collection.MeshBlockCollection, Dict
],
]:
...Create a cartesian mesh, quads in 2D or Hex in 3D
Note: using normalized coordinates here
discontinuitiesnumpy.ndarray — discontinuities to be respected by the mesh including top and bottom. Z is positive upwards, discontinuities should be sorted from bottom to to top.hmaxnumpy.ndarray — maximum elementsize between the discontinuities. Needs to be provided for all layers. array of floats, length = len(discontinuities) - 1ndimUnion[int, numpy.int32, numpy.int64] — number of space dimensionshorizontal_boundariesOptional[Tuple[numpy.ndarray, numpy.ndarray]] — horizontal boundaries of the domain, defaults to [0, 1]. tuple of two numpy float arrays with shape (ndim)hmax_refinementUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — criterion (radial oversamping factor) for moving doubling_layers inwards to avoid small timestep. Smaller values = more aggressive.refinement_stylestr — refinement style to use, choices: “doubling”, “tripling” and for 3D also “doubling_single_layer”refinement_top_downbool — top down approach means minimizing number of elements at the surface at the cost of more elements at the bottom (default). If False, bottom up approach is used, that is minimizing number of elements at the bottom at the cost of more elements at the surface. Which one is more efficient depends on the velocity model and refinement style.return_info_dictbool — return_info_dictmax_nrefineOptional[int, numpy.int32, numpy.int64] — maximum number of refinement layers to be usedhmax_horizontalOptional[numpy.ndarray] — hmax_horizontal
rectangle_2d()
rectangle_2d()def rectangle_2d(
nelem_x: Union[int, numpy.int32, numpy.int64],
nelem_y: Union[int, numpy.int32, numpy.int64],
min_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
elem_locations_horizontal: Optional[List[numpy.ndarray]] = None,
) -> salvus.mesh.mesh_block.mesh_block.MeshBlock:
...generate a simple rectangular structured grid
nelem_xUnion[int, numpy.int32, numpy.int64] — Points in the x dimension.nelem_yUnion[int, numpy.int32, numpy.int64] — Points in the y dimension.min_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — X coordinate of the first point.max_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — X coordinate of the last point.min_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — Y coordinates of the first point.max_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — Y Coordinate of the last point.elem_locations_horizontalOptional[List[numpy.ndarray]] — Ensure that the horizontal element boundaries exist at these list of coordinate values. Length of this array must equal 1, and the length of the single entry must equal nelem_x.
rectangle_vertical_refine_2d()
rectangle_vertical_refine_2d()def rectangle_vertical_refine_2d(
nelem_x: Union[int, numpy.int32, numpy.int64],
nelem_y: numpy.ndarray,
min_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
p1: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.6,
p2: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.8,
elem_locations_horizontal: Optional[List[numpy.ndarray]] = None,
preprocess_nelem_y: bool = True,
) -> salvus.mesh.mesh_block.mesh_block.MeshBlock:
...Generate a rectangular mesh grid with localized vertical refinements.
nelem_xUnion[int, numpy.int32, numpy.int64] — nelem_xnelem_ynumpy.ndarray — nelem_ymin_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_xmax_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_xmin_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_ymax_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_yp1Union[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — p1p2Union[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — p2elem_locations_horizontalOptional[List[numpy.ndarray]] — Ensure that the horizontal element boundaries exist at these list of coordinate values. Length of this array must equal 1, and the length of the single entry must equal nelem_x.preprocess_nelem_ybool — Preprocess the number of elements.
rectangle_vertical_refine_doubling_2d()
rectangle_vertical_refine_doubling_2d()def rectangle_vertical_refine_doubling_2d(
nelem_x: Union[int, numpy.int32, numpy.int64],
nelem_y: numpy.ndarray,
min_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
p1: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.65,
p2: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.8,
elem_locations_horizontal: Optional[
List[
Union[
Sequence[Sequence[Sequence[Sequence[Sequence[Any]]]]],
numpy._array_like._SupportsArray[numpy.dtype],
Sequence[numpy._array_like._SupportsArray[numpy.dtype]],
Sequence[
Sequence[numpy._array_like._SupportsArray[numpy.dtype]]
],
Sequence[
Sequence[
Sequence[numpy._array_like._SupportsArray[numpy.dtype]]
]
],
Sequence[
Sequence[
Sequence[
Sequence[
numpy._array_like._SupportsArray[numpy.dtype]
]
]
]
],
bool,
int,
float,
complex,
str,
bytes,
Sequence[Union[bool, int, float, complex, str, bytes]],
Sequence[
Sequence[Union[bool, int, float, complex, str, bytes]]
],
Sequence[
Sequence[
Sequence[Union[bool, int, float, complex, str, bytes]]
]
],
Sequence[
Sequence[
Sequence[
Sequence[
Union[bool, int, float, complex, str, bytes]
]
]
]
],
]
]
] = None,
) -> salvus.mesh.mesh_block.mesh_block.MeshBlock:
...generate a rectangular structured grid with localized vertical refinements
nelem_xUnion[int, numpy.int32, numpy.int64] — nelem_xnelem_ynumpy.ndarray — nelem_ymin_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_xmax_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_xmin_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_ymax_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_yp1Union[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — p1p2Union[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — p2elem_locations_horizontalOptional[List[Union[Sequence[Sequence[Sequence[Sequence[Sequence[Any]]]]], numpy._array_like._SupportsArray[numpy.dtype], Sequence[numpy._array_like._SupportsArray[numpy.dtype]], Sequence[Sequence[numpy._array_like._SupportsArray[numpy.dtype]]], Sequence[Sequence[Sequence[numpy._array_like._SupportsArray[numpy.dtype]]]], Sequence[Sequence[Sequence[Sequence[numpy._array_like._SupportsArray[numpy.dtype]]]]], bool, int, float, complex, str, bytes, Sequence[Union[bool, int, float, complex, str, bytes]], Sequence[Sequence[Union[bool, int, float, complex, str, bytes]]], Sequence[Sequence[Sequence[Union[bool, int, float, complex, str, bytes]]]], Sequence[Sequence[Sequence[Sequence[Union[bool, int, float, complex, str, bytes]]]]]]]] — Ensure that the horizontal element boundaries exist at these list of coordinate values. Length of this array must equal 2, and the length of the entries must equal nelem_x and nelem_y respectively.
rectangle_xy_2d()
rectangle_xy_2d()def rectangle_xy_2d(
x: numpy.ndarray, y: numpy.ndarray
) -> salvus.mesh.mesh_block.mesh_block.MeshBlock:
...Generate a rectangular mesh by specifying two one dimensional arrays denoting the x and y coordinates along each dimension.
The resulting mesh will have (len(x) - 1) * (len(y) - 1) elements
xnumpy.ndarray — Array with the x-coordinates.ynumpy.ndarray — Array with the y-coordinates.
rectangle_y_2d()
rectangle_y_2d()def rectangle_y_2d(
y: numpy.ndarray,
nelem_x: Union[int, numpy.int32, numpy.int64],
min_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
) -> salvus.mesh.mesh_block.mesh_block.MeshBlock:
...generate a simple rectangular structured grid
ynumpy.ndarray — ynelem_xUnion[int, numpy.int32, numpy.int64] — nelem_xmin_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_xmax_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_x
tripling_layer_2d()
tripling_layer_2d()def tripling_layer_2d(
nelem_x: Union[int, numpy.int32, numpy.int64],
min_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
flip_vertical: bool = False,
) -> salvus.mesh.mesh_block.mesh_block.MeshBlock:
...Generate a cartesian mesh grid with tripling.
nelem_xUnion[int, numpy.int32, numpy.int64] — nelem_xmin_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_xmax_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_xmin_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_ymax_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_yflip_verticalbool — flip_vertical
tripling_layer_3d()
tripling_layer_3d()def tripling_layer_3d(
nelem_x: Union[int, numpy.int32, numpy.int64, numpy.ndarray],
nelem_y: Union[int, numpy.int32, numpy.int64, numpy.ndarray],
min_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_x: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_y: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
min_z: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 0.0,
max_z: Union[
int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64
] = 1.0,
flip_vertical: bool = False,
) -> salvus.mesh.mesh_block.mesh_block.MeshBlock:
...generate a cartesian structured grid with tripling nelem_lat is the element number on the inner side
nelem_xUnion[int, numpy.int32, numpy.int64, numpy.ndarray] — nelem_xnelem_yUnion[int, numpy.int32, numpy.int64, numpy.ndarray] — nelem_ymin_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_xmax_xUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_xmin_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_ymax_yUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_ymin_zUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — min_zmax_zUnion[int, numpy.int32, numpy.int64, float, numpy.float32, numpy.float64] — max_zflip_verticalbool — flip_vertical