Skip to content

srl-ethz/Foam-mesh-reading

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyFoam2SDF: Convert OpenFOAM mesh to SDF

This is a simple python package to convert OpenFOAM mesh to SDF. It also facilitates the reading of OpenFOAM mesh files for python. The calculation of SDF is based on barycentric coordinate system.

Github Repository

Installation

pip install pyfoam2sdf

in python:

import pyfoam2sdf

Documentation

read_boundary(boundary_file_path: str) -> dict

Reads boundary data from the foam mesh boundary file and returns a dictionary storing the boundary data.

Parameters:

  • boundary_file_path (str): Path to the boundary file, usually at constant/polyMesh/boundary.

Returns:

  • dict: A dictionary storing the boundary data.
faces_to_np(face_file_path : str) -> np.ndarray

Reads face data from the foam mesh face file and returns a 2D numpy array of shape num_faces x 4, storing the face indices.

Parameters:

  • face_file_path (str): Path to the face file, usually at constant/polyMesh/faces.

Returns:

  • np.ndarray: A 2D numpy array storing the face indices. Shape: (n_faces, 4)
points_to_np(points_file_path : str) -> np.ndarray

Reads points data from the foam mesh points file and returns a 2D numpy array of shape num_points x 3, storing the point coordinates.

Parameters:

  • points_file_path (str): Path to the points file, usually at <time_step>/polyMesh/points.

Returns:

  • np.ndarray: A 2D numpy array storing the point coordinates. Shape: (n_points, 3)
find_boundary_faces(boundary_file_path : str, face_file_path : str, boundary_name : str) -> np.ndarray

Finds the faces of a specific boundary patch and returns a 2D numpy array of shape num_boundary_faces x 4, storing the face indices of the specified boundary patch.

Parameters:

  • boundary_file_path (str): Path to the boundary file, usually at constant/polyMesh/boundary.
  • face_file_path (str): Path to the face file, usually at constant/polyMesh/faces.
  • boundary_name (str): Name of the boundary patch, e.g., 'inlet', 'outlet', 'top', 'bottom', 'front', 'back'.

Returns:

  • np.ndarray: A 2D numpy array storing the face indices of the specified boundary patch. Shape: (n_boundary_faces, 4)
find_boundary_points(boundary_file_path : str, face_file_path : str, points_file_path : str, boundary_name : str) -> np.ndarray

Finds the points of a specific boundary patch and returns a 3D numpy array of shape num_boundary_faces x 4 x 3, storing the point coordinates of the specified boundary patch.

Parameters:

  • boundary_file_path (str): Path to the boundary file, usually at constant/polyMesh/boundary.
  • face_file_path (str): Path to the face file, usually at constant/polyMesh/faces.
  • points_file_path (str): Path to the points file, usually at <time_step>/polyMesh/points.
  • boundary_name (str): Name of the boundary patch, e.g., 'inlet', 'outlet', 'top', 'bottom', 'front', 'back'.

Returns:

  • np.ndarray: A 3D numpy array storing the point coordinates of the specified boundary patch. Shape: (n_boundary_faces, 4, 3)
quadrilateral_to_triangular(faces : np.ndarray) -> np.ndarray

Converts the quadrilateral mesh to a triangular mesh. It cuts a quadrilateral into two triangles, so the number of faces will be doubled.

Parameters:

  • faces (np.ndarray): A 3D numpy array storing the point coordinates of the specified boundary patch, in triangular mesh format. Shape: (n_triangular_boundary_faces, 3, 3)

Returns:

  • np.ndarray: A 3D numpy array storing the point coordinates of the resulting triangular mesh. Shape: (n_triangular_boundary_faces, 3, 3), where n_triangular_boundary_faces = 2 * n_boundary_faces
calculate_sdf(face_points : np.ndarray, x_grid : np.ndarray, y_grid : np.ndarray, z_grid : np.ndarray) -> np.ndarray

Calculates the signed distance function (SDF) of a boundary patch.

Parameters:

  • face_points (np.ndarray): A 3D numpy array storing the point coordinates of the specified boundary patch, in triangular mesh format. Shape: (n_triangular_boundary_faces, 3, 3)
  • x_grid (np.ndarray): A 1D numpy array storing the x coordinates of the grid points.
  • y_grid (np.ndarray): A 1D numpy array storing the y coordinates of the grid points.
  • z_grid (np.ndarray): A 1D numpy array storing the z coordinates of the grid points. For 2D cases, this can be set to [0.].

Returns:

  • np.ndarray: A 3D numpy array storing the SDF values of the grid points. Shape: (n_x, n_y, n_z)
calculate_sdf_from_mesh_files(boundary_file_path : str, face_file_path : str, points_file_path : str, boundary_names : list, x_grid : np.ndarray, y_grid : np.ndarray, z_grid : np.ndarray) -> np.ndarray

Calculates the signed distance function (SDF) from mesh files for multiple boundary patches.

Parameters:

  • boundary_file_path (str): Path to the boundary file, usually at constant/polyMesh/boundary.
  • face_file_path (str): Path to the face file, usually at constant/polyMesh/faces.
  • points_file_path (str): Path to the points file, usually at /polyMesh/points.
  • boundary_names (list): List of boundary names to calculate SDF for.
  • x_grid (np.ndarray): A 1D numpy array storing the x coordinates of the grid points.
  • y_grid (np.ndarray): A 1D numpy array storing the y coordinates of the grid points.
  • z_grid (np.ndarray): A 1D numpy array storing the z coordinates of the grid points. For 2D cases, this can be set to [0.].

Returns:

  • np.ndarray: A 3D numpy array storing the SDF values of the grid points. Shape: (n_x, n_y, n_z)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages