From 62be50b42ea5d8a033a8b75968d4c43d4c810d8e Mon Sep 17 00:00:00 2001 From: Ivo Steinbrecher Date: Fri, 19 Jun 2026 10:29:10 +0200 Subject: [PATCH] Add functionality to convert exodus files to dictionaries --- src/cubitpy/cubit_to_fourc_input.py | 36 +------ src/cubitpy/exodus_utility.py | 97 ++++++++++++++++++ ...reate_block_unaltered_element_dict_exo.exo | Bin 0 -> 4208 bytes ...ment_types_tet_single_element_with_exo.exo | Bin 0 -> 2552 bytes ...ts_without_boundary_condition_with_exo.exo | Bin 0 -> 7424 bytes ...efined_node_set_and_block_ids_with_exo.exo | Bin 0 -> 98160 bytes .../test_yaml_with_exo_export_fsi.exo | Bin 0 -> 131624 bytes tests/test_cubitpy.py | 78 ++++++++++++-- 8 files changed, 166 insertions(+), 45 deletions(-) create mode 100644 src/cubitpy/exodus_utility.py create mode 100644 tests/input-files-ref/test_create_block_unaltered_element_dict_exo.exo create mode 100644 tests/input-files-ref/test_element_types_tet_single_element_with_exo.exo create mode 100644 tests/input-files-ref/test_node_sets_without_boundary_condition_with_exo.exo create mode 100644 tests/input-files-ref/test_user_defined_node_set_and_block_ids_with_exo.exo create mode 100644 tests/input-files-ref/test_yaml_with_exo_export_fsi.exo diff --git a/src/cubitpy/cubit_to_fourc_input.py b/src/cubitpy/cubit_to_fourc_input.py index bc985ca..1b08c41 100644 --- a/src/cubitpy/cubit_to_fourc_input.py +++ b/src/cubitpy/cubit_to_fourc_input.py @@ -33,46 +33,12 @@ from fourcipp.fourc_input import FourCInput from cubitpy.conf import GeometryType, cupy +from cubitpy.exodus_utility import get_exo_info if TYPE_CHECKING: from cubitpy.cubitpy import CubitPy -def get_exo_info(exo, entry_type) -> tuple[dict, dict]: - """Build mappings between Exodus IDs and Cubit IDs for blocks or - nodesets.""" - - if entry_type == "block": - exo_identifier = "eb" - elif entry_type == "nodeset": - exo_identifier = "ns" - else: - raise ValueError(f"Invalid entry type: {entry_type}") - - if exo_identifier + "_names" not in exo.variables.keys(): - return {}, {} - - # List of explicitly given names - names = [] - for line in exo.variables[exo_identifier + "_names"]: - name: str | None = str(netCDF4.chartostring(line)) - if name == "": - name = None - names.append(name) - - # Get information of all entries of the given type - cubit_id_to_info = {} - exo_id_to_info = {} - for exo_id, cubit_id in enumerate( - exo.variables[exo_identifier + "_prop1"][:].tolist() - ): - info = {"cubit_id": cubit_id, "exo_id": exo_id, "name": names[exo_id]} - cubit_id_to_info[cubit_id] = info.copy() - exo_id_to_info[exo_id] = info.copy() - - return cubit_id_to_info, exo_id_to_info - - def add_node_sets_external_geometry(cubit: CubitPy, input_file: FourCInput) -> None: """Add a reference to the node sets contained in the cubit session/exo file to the yaml file.""" diff --git a/src/cubitpy/exodus_utility.py b/src/cubitpy/exodus_utility.py new file mode 100644 index 0000000..74520f5 --- /dev/null +++ b/src/cubitpy/exodus_utility.py @@ -0,0 +1,97 @@ +# The MIT License (MIT) +# +# Copyright (c) 2018-2026 CubitPy Authors +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. +"""Utility functions interacting with the exodus file format.""" + +from pathlib import Path + +import netCDF4 +import numpy as np + + +def get_exo_info(exo, entry_type) -> tuple[dict, dict]: + """Build mappings between Exodus IDs and Cubit IDs for blocks or + nodesets.""" + + if entry_type == "block": + exo_identifier = "eb" + elif entry_type == "nodeset": + exo_identifier = "ns" + else: + raise ValueError(f"Invalid entry type: {entry_type}") + + if exo_identifier + "_names" not in exo.variables.keys(): + return {}, {} + + # List of explicitly given names + names = [] + for line in exo.variables[exo_identifier + "_names"]: + name: str | None = str(netCDF4.chartostring(line)) + if name == "": + name = None + names.append(name) + + # Get information of all entries of the given type + cubit_id_to_info = {} + exo_id_to_info = {} + for exo_id, cubit_id in enumerate( + exo.variables[exo_identifier + "_prop1"][:].tolist() + ): + info = {"cubit_id": cubit_id, "exo_id": exo_id, "name": names[exo_id]} + cubit_id_to_info[cubit_id] = info.copy() + exo_id_to_info[exo_id] = info.copy() + + return cubit_id_to_info, exo_id_to_info + + +def convert_exodus_to_dict(exo_path: Path) -> dict: + """Load an exodus file from disk and convert it to a dictionary containing + all the relevant information. + + This function can be used in testing to compare exodus files with + each other. + """ + exo_data = {} + with netCDF4.Dataset(exo_path) as exo: + exo_data["coordinates"] = ( + np.array( + [exo.variables["coord" + dim][:] for dim in ["x", "y", "z"]], + ) + .transpose() + .tolist() + ) + + _, exo_block_id_to_info = get_exo_info(exo, "block") + exo_data["exo_block_id_to_info"] = exo_block_id_to_info + for exo_id in exo_block_id_to_info.keys(): + connectivity_name = f"connect{exo_id + 1}" + connectivity = np.array(exo.variables[connectivity_name][:]).tolist() + exo_data[connectivity_name] = connectivity + + _, exo_node_set_id_to_info = get_exo_info(exo, "nodeset") + exo_data["exo_node_set_id_to_info"] = exo_node_set_id_to_info + for exo_id in exo_node_set_id_to_info.keys(): + node_set_name = f"node_ns{exo_id + 1}" + unique_node_set_ids = np.unique(np.array(exo.variables[node_set_name][:])) + # The correct data type here would be `set`. However, this can not be + # serialized by FourCIPP, so we return an ordered list of the unique IDs here. + exo_data[node_set_name] = unique_node_set_ids.tolist() + return exo_data diff --git a/tests/input-files-ref/test_create_block_unaltered_element_dict_exo.exo b/tests/input-files-ref/test_create_block_unaltered_element_dict_exo.exo new file mode 100644 index 0000000000000000000000000000000000000000..073c44cdc4141a40f83207ae58b8fd47e415235d GIT binary patch literal 4208 zcmd^?%Z?jG6ows=nX%1WLITMwhaE^Lwv#Y~QKV7G5D|$5NCB~{^w>Q~EA8%%yPUa* zB@e^{AbB2xf3hr%wGoU+C^!LdX^93()%}MnzY4f3}{)}_I0zLK64;~ zuZ4c5jBVAI_Vo&zWWak4PmGNUZ;E)N*v`>ZyNmriGNZWfu*A4@kdH@L{LHDeqa=Ic z{2%K3ZitnYE)F@bN>}hjMPgpWqcX`eRU1pv3-=l)zsauDv~M1yd1N($De@$<<}e=( zOqraBN0$RRk!$N9NyVpk%=qwM9Y#mV5H7{PQPNNBQ#DWfZ>hYh;M=z~o5+r#jQPu8BoHye%l}KC-$RJ=U!3lMK{|W}`^OY}@+$1gFG9c>)UY?$1A*T# zkG6S`r0MrjI`$g{4C5mzhhp<`0^DK+| zmc2n7ez)wk5Ua)6W9)G;^LtqO>dPNkCxo>>rJ!TT<>${2t)D-L+_@$v=OX((2xI-^ zE9-Y=*njY^C zG;)E9AmsAcS2n(pT^l5&H3w1On(74f`Oo&5*|Qrzs}C`!IyqBKQfGJ1oV!tH=ljj$ z{wsfo8{$ptFeaH)*4NIzp*`4hk1x%)ziEB98uzX3?>>((pQ#P)!Jf_Gs`g3MUTXuc z#_oo=m4CiInU7!LCYAMBE$+9k%eQA*EEp9>3pU^R>H4dGzIAcx{yDQa z^ZkdJa+mU+;7;d$=B>t^8{RVbT2kI1VDRx4;f@A_kN<4z((q2%Q2DYH3^D2Vo|N}G z?<4wMmA)^9zaceev*-3bmp?4WHh)Q|oRt&i`A~ zfO_4X?q@sQTQzRiT*qNuI~>Cq^Mg-taK;?rgZaWum?s=CZ@7bRc!F2>V13{fzE~Id t3!DZn=?9*8#13m3){=O{A|K+AALA33+~Au0$ocwPzZG7px8(os|0jzFYGMEY literal 0 HcmV?d00001 diff --git a/tests/input-files-ref/test_element_types_tet_single_element_with_exo.exo b/tests/input-files-ref/test_element_types_tet_single_element_with_exo.exo new file mode 100644 index 0000000000000000000000000000000000000000..cb5d88cbf69348fd7ddd23bfa29ad045111f0b82 GIT binary patch literal 2552 zcmds2y>AmS6i;bB?$Yofu`q@WB-G1QCD1G=G*qh81r(T&Ea&31R`1T{;?OiRe<(;D z7#J8Cc|SW&+o4Ii=1D&L`ThJp?RSU0qX#8Nb((f)1gXeb&NEReZ9x(mnF%&FLW6Tu z%O@Ed$_(5#jSzgUhGOjGWtsx)iBtdtMRmusL3(aM*n2eJlR38I#s1^DKBh%MI;;RX zt&VS;6(U(+%Of=@h_iC|J~oBSPp$kpeH%1tGt?ghJIs$O=Qt#%Y2M0>5hcBdJ)tY%mHhqSKSdS9HWxl#DxeF3ye12GeY|L_rm zYsZNP7P<9=STHbM(I+6hE|f-5Jr*^>y6oK8V(SSveuT zj(8T@oIc<|YwGhUs6tmL4KhJIl=w+xz{jXlympEVa(onn$a^n!PXDQgkNb6teuRbZ6M%z4J`ueIUoL{b;Dxu=vU*ffJd)k zxA8s+B(}PJ47f9}?~`77_ZN`WbYI*cRmnMXO>DLH%|o~+xp{G|8>!LRg=UV6H x#dVK}&|}aC(TmE5pWh$%mmQ`b@ax^TOAy!p={rDitJ8YZiI?^q-}`R)_8;M##w7p% literal 0 HcmV?d00001 diff --git a/tests/input-files-ref/test_node_sets_without_boundary_condition_with_exo.exo b/tests/input-files-ref/test_node_sets_without_boundary_condition_with_exo.exo new file mode 100644 index 0000000000000000000000000000000000000000..873437ece7a6d4226780e003a8e4b68f8a78ebd3 GIT binary patch literal 7424 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 literal 0 HcmV?d00001 diff --git a/tests/input-files-ref/test_yaml_with_exo_export_fsi.exo b/tests/input-files-ref/test_yaml_with_exo_export_fsi.exo new file mode 100644 index 0000000000000000000000000000000000000000..d577ca90f14ab18533c40183f3cdf9812941196a GIT binary patch literal 131624 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