pyfvcom2.mesh_reader module
- class pyfvcom2.mesh_reader.MeshData(triangle: np.ndarray, nodes: np.ndarray | None, x1: np.ndarray, x2: np.ndarray, x3: np.ndarray | None, types_bdy: np.ndarray | None, nodes_bdy: List[List[int]] | None)[source]
Bases:
NamedTupleNamed tuple containing standardized mesh data from all readers
- Attrs:
triangles: Array of triangle vertex indices. nodes: Integer identifier for each node (one indexed). x1: Array of node x1-coordinates (x or longitude). x2: Array of node x2-coordinates (y or latitude). x3: Array of node x3-coordinates (if available). types_bdy: Array of boundary types for nodes (if available). nodes_bdy: List of lists of open boundary node indices (if available, zero-indexed).
- nodes: ndarray | None
Alias for field number 1
- nodes_bdy: List[List[int]] | None
Alias for field number 6
- triangle: ndarray
Alias for field number 0
- types_bdy: ndarray | None
Alias for field number 5
- x1: ndarray
Alias for field number 2
- x2: ndarray
Alias for field number 3
- x3: ndarray | None
Alias for field number 4
- pyfvcom2.mesh_reader.parse_obc_sections(obc_node_array, triangle)[source]
Separates the open boundary nodes of a mesh into the separate contiguous open boundary segments
Args: obc_node_array : array
Array of the nodes which are open boundary nodes, as nodes returned by read_fvcom_obc
- triangle3xn array
Triangulation array of nodes, as triangle returned by read_fvcom_mesh
Returns: nodestrings : list of arrays
A list of arrays, each of which is one contiguous section of open boundary
- pyfvcom2.mesh_reader.read_fvcom_mesh(mesh: str, obc_filename: str | None = None, depth_filename: str | None = None) MeshData[source]
Reads in the FVCOM unstructured grid format.
- Args:
- mesh (str): Full path to the FVCOM unstructured grid file (.dat usually). The file
name should also contain ‘_grd’ in the name e.g. ‘my_file_grd.dat’. The file contains information about the triangle indicies and the x, y, z coodinates of the grid nodes. The file header should be two lines:
Node Number = nnn Cell Number = eee
Followed by ‘element_index, tri1, tri2, tri3’ for eee cells Followed by ‘node_index, x, y, z’ for nnn nodes
- obc_filename (str, optional): Full path to the FVCOM OBC file. This is
used to read in the open boundary node strings if provided.
- depth_filename (str, optional): Full path to the FVCOM dep file. This is
used to overwrite the depth values if provided.
- Returns:
- MeshData: Named tuple containing:
triangle (np.ndarray): Integer array of shape (ntri, 3). Each triangle is composed of three points and this contains the three node numbers (stored in nodes) which refer to the coordinates in `x’ and `y’ (see below).
nodes (np.ndarray): Integer number assigned to each node.
X (np.ndarray): X coordinates of each grid node.
Y (np.ndarray): Y coordinates of each grid node.
Z (np.ndarray): Z coordinates and any associated Z value.
types (Optional[np.ndarray]): None for FVCOM format (no type information available).
nodestrings (Optional[List]): None for FVCOM format (no nodestring information available).
- pyfvcom2.mesh_reader.read_fvcom_obc(obc)[source]
Read in an FVCOM open boundary file.
Args: obc : str
Path to the casename_obc.dat file from FVCOM.
Returns: nodes : np.ndarray
Node IDs (zero-indexed) for the open boundary.
- typesnp.ndarray
Open boundary node types (see the FVCOM manual for more information on what these values mean).
- countnp.ndarray
Open boundary node number.
- pyfvcom2.mesh_reader.read_gmsh_mesh(mesh: str) MeshData[source]
Reads in the GMSH unstructured grid format (version 2.2).
- Args:
mesh (str): Full path to the GMSH unstructured grid file (.gmsh usually).
- Returns:
- MeshData: Named tuple containing:
triangle (np.ndarray): Integer array of shape (ntri, 3). Each triangle is composed of three points and this contains the three node numbers (stored in nodes) which refer to the coordinates in `x’ and `y’ (see below).
nodes (np.ndarray): Integer number assigned to each node.
X (np.ndarray): X coordinates of each grid node.
Y (np.ndarray): Y coordinates of each grid node.
Z (np.ndarray): Z coordinates and any associated Z value.
types (Optional[np.ndarray]): None for GMSH format (no type information available).
nodestrings (Optional[List]): None for GMSH format (no nodestring information available).
- pyfvcom2.mesh_reader.read_mesh_file(filename: str, mesh_type: str, **kwargs) MeshData[source]
Factory method to read mesh files of various formats.
- Args:
filename (str): Path to the mesh file. mesh_type (str): Type of mesh file. Supported types are:
‘sms’: SMS unstructured grid format (.2dm)
‘fvcom’: FVCOM unstructured grid format (.dat)
‘smesh’: smesh output format
‘mike’: DHI MIKE21 unstructured grid format (.mesh)
‘gmsh’: GMSH unstructured grid format (.gmsh)
- **kwargs: Additional keyword arguments passed to the specific reader function.
For ‘fvcom’: obc_filename (str) - path to FVCOM OBC file. For ‘sms’: nodestrings (bool) - whether to return nodestring information For ‘mike’: flipZ (bool) - whether to flip Z coordinates (default True)
- Returns:
MeshData: Named tuple containing standardized mesh data.
- Raises:
PyFVCOM2ValueError: If mesh_type is not supported. PyFVCOM2FileNotFoundError: If the mesh file cannot be found or opened.
- pyfvcom2.mesh_reader.read_mike_mesh(mesh: str, flipZ: bool = True) MeshData[source]
Reads in the MIKE unstructured grid format.
Depth sign is typically reversed (i.e. z*-1) but can be disabled by passing flipZ=False.
- Args:
mesh (str): Full path to the DHI MIKE21 unstructured grid file (.mesh usually). flipZ (bool, optional): DHI MIKE21 unstructured grids store the z value as positive down
whereas FVCOM wants negative down. The conversion is automatically applied unless flipZ is set to False. Defaults to True.
- Returns:
- MeshData: Named tuple containing:
triangle (np.ndarray): Integer array of shape (ntri, 3). Each triangle is composed of three points and this contains the three node numbers (stored in nodes) which refer to the coordinates in `x’ and `y’ (see below). Given as a zero-indexed array.
nodes (np.ndarray): Integer number assigned to each node.
X (np.ndarray): X coordinates of each grid node.
Y (np.ndarray): Y coordinates of each grid node.
Z (np.ndarray): Z coordinates and any associated Z value.
types (np.ndarray): Classification for each open boundary. DHI MIKE21 .mesh format requires unique IDs for each open boundary (with 0 and 1 reserved for land and sea nodes).
nodestrings (Optional[List]): None for MIKE format (no nodestring information available).
- pyfvcom2.mesh_reader.read_smesh_mesh(mesh: str) MeshData[source]
Reads output of the smeshing tool. This is (close) to the fort.14 file format.
- Args:
mesh (str): Full path to the smesh output file.
- Returns:
- MeshData: Named tuple containing:
triangle (np.ndarray): Integer array of shape (ntri, 3). Each triangle is composed of three points and this contains the three node numbers which refer to the coordinates in `x’ and `y’ (see below).
nodes (Optional[np.ndarray]): None for smesh format (no node information available).
X (np.ndarray): X coordinates of each grid node.
Y (np.ndarray): Y coordinates of each grid node.
Z (Optional[np.ndarray]): None for smesh format (no Z information available).
types (Optional[np.ndarray]): None for smesh format (no type information available).
nodestrings (Optional[List]): None for smesh format (no nodestring information available).
- pyfvcom2.mesh_reader.read_sms_mesh(mesh: str, nodestrings: bool | None = False) MeshData[source]
Reads in the SMS unstructured grid format. Also creates IDs for output to MIKE unstructured grid format.
- Args:
mesh (str): Full path to an SMS unstructured grid (.2dm) file. nodestrings (bool, optional): Set to True to return the IDs of the node strings. Defaults to False.
- Returns:
- MeshData: Named tuple containing:
triangle (np.ndarray): Integer array of shape (nele, 3). Each triangle is composed of three points and this contains the three node numbers (stored in nodes) which refer to the coordinates in `x’ and `y’ (see below). Values are python-indexed.
nodes (np.ndarray): Integer number assigned to each node.
X (np.ndarray): X coordinates of each grid node.
Y (np.ndarray): Y coordinates of each grid node.
Z (np.ndarray): Z coordinates and any associated Z value.
types (np.ndarray): Classification for each node string based on the number of node strings + 2. This is mainly for use if converting from SMS .2dm grid format to DHI MIKE21 .mesh format since the latter requires unique IDs for each boundary (with 0 and 1 reserved for land and sea nodes).
nodestrings (Optional[List]): List of lists containing the node IDs (python-indexed) of the node strings in the SMS grid if nodestrings=True, otherwise None.