ogstools.meshlib.region.region module#

class ogstools.meshlib.region.region.RegionSet[source]#

Bases: object

A class representing a set of regions composed of subsets, each identified by MaterialID.

The RegionSet class represents a collection of regions, where each region is composed of subsets. Each subset within a region is uniquely identified by “MaterialID”.

__init__(input)[source]#
Parameters:

input (Path | UnstructuredGrid)

box_boundaries()[source]#

Retrieve the boundaries of the mesh in local coordinate system (u, v, w).

This function extracts the boundaries of the mesh along the u, v, and w directions of the local coordinate system. The u-axis corresponds to the x-coordinate, the v-axis corresponds to the y-coordinate, and the w-axis corresponds to the z-coordinate.

Returns:

tuple: A tuple (u_min, u_max, v_min, v_max, w_min, w_max) representing the boundaries of the mesh in the local coordinate system.

Notes:
Example:

mesh = … u_min, u_max, v_min, v_max, w_min, w_max = mesh.box_boundaries()

Return type:

tuple[UnstructuredGrid, …]

ogstools.meshlib.region.region.to_boundary(surface_mesh, filter_condition)[source]#

Extract cells from a surface mesh that meet a filter condition for normals.

This function takes a surface mesh represented by a pv.PolyData object and extracts cells that match a specified filter condition based on the normals of the mesh.

Parameters:
  • surface_mesh (PolyData) – The input surface mesh.

  • filter_condition (Callable[[ndarray], ndarray]) – A callable filter condition that takes an array of normals as input and returns an array indicating whether the condition is met.

Return type:

UnstructuredGrid

Returns:

pv.UnstructuredGrid: A mesh containing only the cells that meet the filter condition.

Example:

surface_mesh = … specific_cells = to_boundary(surface_mesh, lambda normals: [n[2] > 0.5 for n in normals])

ogstools.meshlib.region.region.to_region_prism(layer_set, resolution)[source]#

Convert a layered geological structure into a RegionSet using prism meshing.

This function takes a boundary_set.LayerSet and converts it into a region.RegionSet object using prism or tetrahedral meshing technique. The function will use prism elements for meshing if possible; otherwise, it will use tetrahedral elements.

Parameters:

layer_set (LayerSet): A boundary_set.LayerSet. resolution (float): The desired resolution in [meter] for meshing. It must greater than 0.

Returns:

RegionSet: A boundary_set.LayerSet object containing the meshed representation of the geological structure.

Raises:

ValueError: If an error occurs during the meshing process.

Example:

layer_set = LayerSet(…) resolution = 0.1 region_set = to_region_prism(layer_set, resolution)

Parameters:
  • layer_set (LayerSet)

  • resolution (float)

Return type:

RegionSet

ogstools.meshlib.region.region.layer_to_simplified_mesh(layer, resolution, rank, bounds)[source]#

Convert a geological layer to a simplified mesh.

This function converts a geological layer into a simplified mesh using the specified resolution, rank, and bounding bounds.

Parameters:
  • layer (Layer) – The geological layer to be converted to a mesh.

  • (float) (resolution) – The desired spatial resolution of the mesh in units of the geological structure. Be cautious with very high resolutions, as they may lead to distorted or incomplete meshes, making them unsuitable for further analysis.

  • (int) (rank) – he rank of the mesh (2 for 2D, 3 for 3D). The mesh dimensionality must be consistent with the provided bounds.

  • (list[float]) (bounds) – A list of bounding values [min_x, max_x, min_y, max_y] for 2D mesh or [min_x, max_x, min_y, max_y, min_z, max_z] for 3D mesh. The bounds define the region of the geological structure that will be meshed.

  • resolution (float)

  • rank (int)

  • bounds (list[float])

Return type:

UnstructuredGrid

Returns:

pv.UnstructuredGrid: A simplified unstructured grid mesh representing the layer.

Raises:

Exception: If the specified rank is not 2 or 3, indicating an invalid mesh dimensionality.

Example:

layer = … resolution = 1.5 # Example resolution in geological units rank = 2 # Mesh will be 2D bounds = [0, 10, 0, 10] # Bounding box [min_x, max_x, min_y, max_y] mesh = layer_to_simplified_mesh(layer, resolution, rank, bounds)

ogstools.meshlib.region.region.to_region_simplified(layer_set, xy_resolution, rank)[source]#

Convert a layered geological structure to a simplified meshed region.

This function converts a layered geological structure represented by a LayerSet into a simplified meshed region using the specified xy_resolution and rank.

Parameters:
  • (LayerSet) (layer_set) – A LayerSet object representing the layered geological structure.

  • (float) (xy_resolution) – The desired spatial resolution of the mesh in the XY plane.

  • (int) (rank) – The rank of the mesh (2 for 2D, 3 for 3D).

  • layer_set (LayerSet)

  • xy_resolution (float)

  • rank (int)

Return type:

RegionSet

Returns:

RegionSet: A RegionSet object containing the simplified meshed representation of the geological structure.

Raises:

AssertionError: If the length of the bounds retrieved from the layer_set is not 6.

Example:

layer_set = LayerSet(…) xy_resolution = 0.1 # Example resolution in XY plane rank = 2 # Mesh will be 2D region_set = to_region_simplified(layer_set, xy_resolution, rank)

ogstools.meshlib.region.region.to_region_tetraeder(layer_set, resolution)[source]#
Parameters:
Return type:

RegionSet

ogstools.meshlib.region.region.to_region_voxel(layer_set, resolution)[source]#

Convert a layered geological structure to a voxelized mesh.

This function converts a layered geological structure represented by a LayerSet into a voxelized mesh using the specified resolution.

Parameters:

layer_set (LayerSet): A LayerSet object representing the layered geological structure. resolution (list): A list of [x_resolution, y_resolution, z_resolution] for voxelization.

Returns:

Mesh: A Mesh object containing the voxelized mesh representation of the geological structure.

Raises:

ValueError: If an error occurs during the voxelization process.

Example:

layer_set = LayerSet(…) resolution = [0.1, 0.1, 0.1] # Example voxelization resolutions in x, y, and z dimensions voxel_mesh = to_region_voxel(layer_set, resolution)

Parameters:
  • layer_set (LayerSet)

  • resolution (list)

Return type:

RegionSet