Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 11 additions & 19 deletions src/i2pp/core/discretization_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,36 +79,28 @@ def determine_discretization_format(file_path: Path) -> DiscretizationFormat:
)


def verify_and_load_discretization(config: dict) -> Discretization:
"""Loads and processes mesh data based on the user configuration.
def verify_and_load_discretization(
discretization_path: Path, options: dict
) -> Discretization:
"""Loads and processes mesh data.

This function verifies the input file, selects the appropriate reader
(MeshReader or FourCYamlReader), and loads the discretization data.
This function selects the appropriate reader (MeshReader or
FourCYamlReader), and loads the discretization data.
Finally, it determines the discretization's bounding box.

Arguments:
config (dict): User configuration containing paths and processing
options.
discretization_path (Path): Path to the discretization file.
options (dict): Options for loading the discretization that are passed
to the reader classes.

Returns:
DiscretizationData: The loaded and processed mesh data.

Raises:
RuntimeError: If the mesh file is not valid or in the wrong format.
"""
relative_path = Path(
config["input informations"]["discretization_file_path"]
)

file_path = Path.cwd() / relative_path

dis_format = determine_discretization_format(file_path)
dis_format = determine_discretization_format(discretization_path)

dis_reader = cast(DiscretizationReader, dis_format.get_reader()())

dis = dis_reader.load_discretization(
file_path, config["processing options"]
)
dis = dis_reader.load_discretization(discretization_path, options)

bounding_box = find_mins_maxs(points=dis.nodes.coords, enlargement=2)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ def __init__(self):

@abstractmethod
def load_discretization(
self, file_path: Path, config: dict
self, file_path: Path, options: dict
) -> Discretization:
"""Abstract method to load discretization data from a file path.

Expand All @@ -114,8 +114,8 @@ def load_discretization(

Arguments:
file_path (Path): Path to the discretization file.
config (dict): A dictionary containing configuration options for
loading the discretization.
options (dict): A dictionary containing options for loading the
discretization.

Returns:
Discretization: An instance of Discretization containing
Expand Down
11 changes: 6 additions & 5 deletions src/i2pp/core/discretization_reader_classes/fourc_yaml_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ def _filter_discretization(
return dis

def load_discretization(
self, file_path: Path, config: dict
self, file_path: Path, options: dict
) -> Discretization:
"""Loads and processes a finite element discretization from a .4C.yaml
file.
Expand All @@ -81,7 +81,9 @@ def load_discretization(

Arguments:
file_path (Path): Path to the .4C.yaml file.
config (dict): User configuration containing material ID filters.
options (dict): Options for loading the discretization.
Filtering for material ids can be enabled by specifying
`material_ids` in the options dictionary.

Returns:
Discretization: The finite element discretization including nodes
Expand All @@ -94,10 +96,9 @@ def load_discretization(

raw_dis.compute_ids(zero_based=True)

if config["material_ids"] is not None:

if options["material_ids"] is not None:
raw_dis = self._filter_discretization(
raw_dis, np.array(config["material_ids"])
raw_dis, np.array(options["material_ids"])
)

nodes_coords = []
Expand Down
6 changes: 3 additions & 3 deletions src/i2pp/core/discretization_reader_classes/mesh_reader.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def _filter_discretization(self) -> None:
raise RuntimeError("This function is not implemented yet.")

def load_discretization(
self, file_path: Path, config: dict
self, file_path: Path, options: dict
) -> Discretization:
"""Loads and processes a finite element model from a .mesh file.

Expand All @@ -43,6 +43,7 @@ def load_discretization(

Arguments:
file_path (Path): Path to the .mesh file.
options (dict): Options for loading the discretization.

Returns:
Discretization: A structured representation of the finite element
Expand All @@ -53,8 +54,7 @@ def load_discretization(

raw_dis = trimesh.load(file_path)

if config["material_ids"] is not None:

if options["material_ids"] is not None:
self._filter_discretization()

nodes = Nodes(
Expand Down
Loading