diff --git a/doc/source/api/data_sources.rst b/doc/source/api/data_sources.rst index 76bbf42f5..626e79b42 100644 --- a/doc/source/api/data_sources.rst +++ b/doc/source/api/data_sources.rst @@ -11,4 +11,6 @@ Data sources ShortFiberCompositesFiles CompositeDataSources get_composite_files_from_workbench_result_folder - get_composites_data_sources \ No newline at end of file + composite_files_from_workbench_harmonic_analysis + get_composites_data_sources + diff --git a/examples/010_harmonic_example.py b/examples/010_harmonic_example.py index 7b21a7fe4..6d1b6c3b7 100644 --- a/examples/010_harmonic_example.py +++ b/examples/010_harmonic_example.py @@ -6,7 +6,9 @@ .. note:: - This example is work in progress. Please open a Github issue if something is unclear. + When using a Workbench project, + use the :func:`.composite_files_from_workbench_harmonic_analysis` + method to obtain the input files. This example shows how to evaluate failure criteria for a harmonic simulation. It shows how to create a phase sweep to compute the maximum IRF in the frequency-phase @@ -38,13 +40,9 @@ from ansys.dpf.composites.server_helpers import connect_to_or_start_server from ansys.dpf.composites.unit_system import get_unit_system -# Todo: Discuss influence of damping factor -# Todo: Currently the CompositeDefinition file from the modal analysis needs -# to be copied to the harmonic response folder (including the Setup folder) - # %% # Start a DPF server and copy the example files into the current working directory. -server = connect_to_or_start_server(port=50052) +server = connect_to_or_start_server() composite_files_on_server = get_continuous_fiber_example_files(server, "harmonic") # %% diff --git a/src/ansys/dpf/composites/data_sources.py b/src/ansys/dpf/composites/data_sources.py index 5480dd9be..2beb0e2af 100644 --- a/src/ansys/dpf/composites/data_sources.py +++ b/src/ansys/dpf/composites/data_sources.py @@ -14,6 +14,7 @@ "ShortFiberCompositesFiles", "CompositeDataSources", "get_composite_files_from_workbench_result_folder", + "composite_files_from_workbench_harmonic_analysis", "get_composites_data_sources", "get_short_fiber_composites_data_sources", ) @@ -22,6 +23,7 @@ _SHELL_COMPOSITE_DEFINITIONS_PREFIX = "ACPCompositeDefinitions" _SETUP_FOLDER_PREFIX = "Setup" _H5_SUFFIX = ".h5" +_EXT_SUFFIX = "_ext" _MATML_FILENAME = "MatML.xml" _RST_SUFFIX = ".rst" _RST_PREFIX = "file" @@ -169,16 +171,26 @@ def _is_matml_file(path: pathlib.Path) -> bool: return path.name == _MATML_FILENAME and path.is_file() +def _has_ext_suffix(path: pathlib.Path) -> bool: + """Check if the stem (filename without extension) ends with ``_ext``. + + Example: CompositeDefinitions.1_ext.h5 + """ + return path.stem.endswith("_ext") + + def _is_composite_definition_file(path: pathlib.Path) -> bool: is_composite_def = path.name.startswith(_SHELL_COMPOSITE_DEFINITIONS_PREFIX) - return path.suffix == _H5_SUFFIX and path.is_file() and is_composite_def + no_ext_suffix = not _has_ext_suffix(path) + return path.suffix == _H5_SUFFIX and path.is_file() and is_composite_def and no_ext_suffix def _is_solid_model_composite_definition_file(path: pathlib.Path) -> bool: is_h5 = path.suffix == _H5_SUFFIX + has_ext_suffix = _has_ext_suffix(path) is_file = path.is_file() is_def = path.name.startswith(_SOLID_COMPOSITE_DEFINITIONS_PREFIX) - return is_h5 and is_file and is_def + return is_h5 and is_file and is_def and not has_ext_suffix def _get_file_paths_with_predicate( @@ -261,6 +273,65 @@ def get_composite_definitions_files( composite_files.composite[key] = definition_files +def composite_files_from_workbench_harmonic_analysis( + result_folder_modal: _PATH, result_folder_harmonic: _PATH +) -> ContinuousFiberCompositesFiles: + """Get a ``ContinuousFiberCompositesFiles`` object for a harmonic analysis. + + Parameters + ---------- + result_folder_modal : str + Result folder of the Modal solution. + In the Modal system, right-click the **solution** item in the Ansys Mechanical tree + and select **Open Solver Files Directory** to obtain the result folder. + result_folder_harmonic : str + Result folder of the Harmonic Response solution. + In the Harmonic Response system, + right-click the **solution** item in the Ansys Mechanical tree + and select **Open Solver Files Directory** to obtain the result folder. + + """ + result_folder_path_harmonic = pathlib.Path(result_folder_harmonic) + result_folder_path_modal = pathlib.Path(result_folder_modal) + + setup_folders_modal = [ + folder_path + for folder_path in result_folder_path_modal.iterdir() + if folder_path.is_dir() and folder_path.name.startswith(_SETUP_FOLDER_PREFIX) + ] + + rst_paths = _get_file_paths_with_predicate( + _is_rst_file, + result_folder_path_harmonic, + ) + + if len(rst_paths) == 0: + raise RuntimeError( + f"Expected at least one rst file. Found {rst_paths}." + f" Available files in folder: {os.listdir(result_folder_path_harmonic)}" + ) + + matml_path = _get_single_file_path_with_predicate( + _is_matml_file, + result_folder_path_harmonic, + "matml", + ) + + assert matml_path is not None + assert rst_paths is not None + + continuous_fiber_composite_files = ContinuousFiberCompositesFiles( + rst=[rst_path.resolve() for rst_path in rst_paths], + composite={}, + engineering_data=matml_path.resolve(), + ) + + for setup_folder in setup_folders_modal: + _add_composite_definitons_from_setup_folder(setup_folder, continuous_fiber_composite_files) + + return continuous_fiber_composite_files + + def get_composite_files_from_workbench_result_folder( result_folder: _PATH, ensure_composite_definitions_found: bool = True ) -> ContinuousFiberCompositesFiles: @@ -386,7 +457,8 @@ def get_composite_files_from_workbench_result_folder( raise RuntimeError( "No composite definitions found. Set " "ensure_composite_definitions_found argument" - " to False to skip this check." + " to False to skip this check. Note: Use the function" + " composite_files_from_workbench_harmonic_analysis if this is a harmonic analysis." ) return continuous_fiber_composite_files diff --git a/tests/data/workflow_example/assembly/Setup 3/ACPSolidModel_SM.1_ext.h5 b/tests/data/workflow_example/assembly/Setup 3/ACPSolidModel_SM.1_ext.h5 new file mode 100644 index 000000000..55f9e402f Binary files /dev/null and b/tests/data/workflow_example/assembly/Setup 3/ACPSolidModel_SM.1_ext.h5 differ diff --git a/tests/data/workflow_example/assembly/Setup 4/ACPCompositeDefinitions.1_ext.h5 b/tests/data/workflow_example/assembly/Setup 4/ACPCompositeDefinitions.1_ext.h5 new file mode 100644 index 000000000..7f0b392f6 Binary files /dev/null and b/tests/data/workflow_example/assembly/Setup 4/ACPCompositeDefinitions.1_ext.h5 differ diff --git a/tests/data/workflow_example/harmonic/harmonic_analysis/MatML.xml b/tests/data/workflow_example/harmonic/harmonic_analysis/MatML.xml new file mode 100644 index 000000000..5d39333e1 --- /dev/null +++ b/tests/data/workflow_example/harmonic/harmonic_analysis/MatML.xml @@ -0,0 +1,1317 @@ + + + + + + + + + Epoxy Carbon UD (230 GPa) Prepreg + + Composite + + + - + Temperature + Density + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + AlgorithmType$$Linear Multivariate (CGAL)$$EngineeringData.CGAL + Interpolation Options + + + 1490 + Dependent + Density + + + + - + ACP + Regular + Ply Type + + + - + Orthotropic + Temperature + Orthotropic Elasticity + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + AlgorithmType$$Linear Multivariate (CGAL)$$EngineeringData.CGAL + Interpolation Options + + + 121000000000 + Dependent + Young's Modulus X direction + + + 8600000000 + Dependent + Young's Modulus Y direction + + + 8600000000 + Dependent + Young's Modulus Z direction + + + 0.27 + Dependent + Poisson's Ratio XY + + + 0.4 + Dependent + Poisson's Ratio YZ + + + 0.27 + Dependent + Poisson's Ratio XZ + + + 4700000000 + Dependent + Shear Modulus XY + + + 3100000000 + Dependent + Shear Modulus YZ + + + 4700000000 + Dependent + Shear Modulus XZ + + + + - + Orthotropic + Temperature + Orthotropic Strain Limits + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + AlgorithmType$$Linear Multivariate (CGAL)$$EngineeringData.CGAL + Interpolation Options + + + 0.0167 + Dependent + Tensile X direction + + + 0.0032 + Dependent + Tensile Y direction + + + 0.0032 + Dependent + Tensile Z direction + + + -0.0108 + Dependent + Compressive X direction + + + -0.0192 + Dependent + Compressive Y direction + + + -0.0192 + Dependent + Compressive Z direction + + + 0.012 + Dependent + Shear XY + + + 0.011 + Dependent + Shear YZ + + + 0.012 + Dependent + Shear XZ + + + + - + Orthotropic + Temperature + Orthotropic Stress Limits + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + AlgorithmType$$Linear Multivariate (CGAL)$$EngineeringData.CGAL + Interpolation Options + + + 2231000000 + Dependent + Tensile X direction + + + 29000000 + Dependent + Tensile Y direction + + + 29000000 + Dependent + Tensile Z direction + + + -1082000000 + Dependent + Compressive X direction + + + -100000000 + Dependent + Compressive Y direction + + + -100000000 + Dependent + Compressive Z direction + + + 60000000 + Dependent + Shear XY + + + 32000000 + Dependent + Shear YZ + + + 60000000 + Dependent + Shear XZ + + + + - + Secant + Orthotropic + Temperature + Orthotropic Secant Coefficient of Thermal Expansion + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + AlgorithmType$$Linear Multivariate (CGAL)$$EngineeringData.CGAL + Interpolation Options + + + -4.7e-07 + Dependent + Coefficient of Thermal Expansion X direction + + + 3e-05 + Dependent + Coefficient of Thermal Expansion Y direction + + + 3e-05 + Dependent + Coefficient of Thermal Expansion Z direction + + + + - + Secant + Orthotropic + Orthotropic Zero-Thermal-Strain Reference Temperature Secant + + 20 + Dependent + Zero-Thermal-Strain Reference Temperature + + + Coefficient of Thermal Expansion + + + + - + Carbon + Temperature + Puck Constants + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + AlgorithmType$$Linear Multivariate (CGAL)$$EngineeringData.CGAL + Interpolation Options + + + 0.3 + Dependent + Compressive Inclination XZ + + + 0.25 + Dependent + Compressive Inclination YZ + + + 0.35 + Dependent + Tensile Inclination XZ + + + 0.25 + Dependent + Tensile Inclination YZ + + + + - + Additional Puck Constants + + 0.8 + Dependent + Interface Weakening Factor + + + 0.5 + Dependent + Degradation Parameter s + + + 0.5 + Dependent + Degradation Parameter M + + + + - + Tsai-Wu Constants + + -1 + Dependent + Coupling Coefficient XY + + + -1 + Dependent + Coupling Coefficient YZ + + + -1 + Dependent + Coupling Coefficient XZ + + + 7.88860905221012e-31 + Independent + Temperature + + + + - + e236c55c-e4b2-423c-8262-2cbd5ec4377b + Material Unique Id + False + + + - + Color + + 222 + Dependent + Red + + + 222 + Dependent + Green + + + 222 + Dependent + Blue + + + Appearance + + + + - + Isotropic + Temperature + Isotropic Thermal Conductivity + + Interpolation Options + Linear Multivariate + True + True + Projection to the Bounding Box + Interpolation Options + + + 2 + Dependent + Thermal Conductivity + + + 7.88860905221012e-31 + Independent + Temperature + Temperature + 22 + Program Controlled + Program Controlled + C + + + + + + + Epoxy Carbon Woven (230 GPa) Wet + + Composite + + + - + Temperature + Density + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + AlgorithmType$$Linear Multivariate (CGAL)$$EngineeringData.CGAL + Interpolation Options + + + 1451 + Dependent + Density + + + + - + ACP + Woven + Ply Type + + + - + Orthotropic + Temperature + Orthotropic Elasticity + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + AlgorithmType$$Linear Multivariate (CGAL)$$EngineeringData.CGAL + Interpolation Options + + + 59160000000 + Dependent + Young's Modulus X direction + + + 59160000000 + Dependent + Young's Modulus Y direction + + + 7500000000 + Dependent + Young's Modulus Z direction + + + 0.04 + Dependent + Poisson's Ratio XY + + + 0.3 + Dependent + Poisson's Ratio YZ + + + 0.3 + Dependent + Poisson's Ratio XZ + + + 3300000000 + Dependent + Shear Modulus XY + + + 2700000000 + Dependent + Shear Modulus YZ + + + 2700000000 + Dependent + Shear Modulus XZ + + + + - + Orthotropic + Temperature + Orthotropic Strain Limits + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + AlgorithmType$$Linear Multivariate (CGAL)$$EngineeringData.CGAL + Interpolation Options + + + 0.0092 + Dependent + Tensile X direction + + + 0.0092 + Dependent + Tensile Y direction + + + 0.0078 + Dependent + Tensile Z direction + + + -0.0084 + Dependent + Compressive X direction + + + -0.0084 + Dependent + Compressive Y direction + + + -0.011 + Dependent + Compressive Z direction + + + 0.02 + Dependent + Shear XY + + + 0.015 + Dependent + Shear YZ + + + 0.015 + Dependent + Shear XZ + + + + - + Orthotropic + Temperature + Orthotropic Stress Limits + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + AlgorithmType$$Linear Multivariate (CGAL)$$EngineeringData.CGAL + Interpolation Options + + + 513000000 + Dependent + Tensile X direction + + + 513000000 + Dependent + Tensile Y direction + + + 50000000 + Dependent + Tensile Z direction + + + -437000000 + Dependent + Compressive X direction + + + -437000000 + Dependent + Compressive Y direction + + + -150000000 + Dependent + Compressive Z direction + + + 120000000 + Dependent + Shear XY + + + 55000000 + Dependent + Shear YZ + + + 55000000 + Dependent + Shear XZ + + + + - + Secant + Orthotropic + Temperature + Orthotropic Secant Coefficient of Thermal Expansion + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + AlgorithmType$$Linear Multivariate (CGAL)$$EngineeringData.CGAL + Interpolation Options + + + 2.2e-06 + Dependent + Coefficient of Thermal Expansion X direction + + + 2.2e-06 + Dependent + Coefficient of Thermal Expansion Y direction + + + 1e-05 + Dependent + Coefficient of Thermal Expansion Z direction + + + + - + Secant + Orthotropic + Orthotropic Zero-Thermal-Strain Reference Temperature Secant + + 20 + Dependent + Zero-Thermal-Strain Reference Temperature + + + Coefficient of Thermal Expansion + + + + - + Tsai-Wu Constants + + -1 + Dependent + Coupling Coefficient XY + + + -1 + Dependent + Coupling Coefficient YZ + + + -1 + Dependent + Coupling Coefficient XZ + + + 7.88860905221012e-31 + Independent + Temperature + + + + - + 7ab9c060-4547-4561-aab3-d3fd3c4952ed + Material Unique Id + False + + + - + Color + + 170 + Dependent + Red + + + 170 + Dependent + Green + + + 170 + Dependent + Blue + + + Appearance + + + + - + Isotropic + Temperature + Isotropic Thermal Conductivity + + Interpolation Options + Linear Multivariate + True + True + Projection to the Bounding Box + Interpolation Options + + + 2 + Dependent + Thermal Conductivity + + + 7.88860905221012e-31 + Independent + Temperature + Temperature + 22 + Program Controlled + Program Controlled + C + + + + + + + Honeycomb + + Composite + + + - + Temperature + Density + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + AlgorithmType$$Linear Multivariate (CGAL)$$EngineeringData.CGAL + Interpolation Options + + + 80 + Dependent + Density + + + + - + ACP + Honeycomb Core + Ply Type + + + - + Orthotropic + Temperature + Orthotropic Elasticity + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + AlgorithmType$$Linear Multivariate (CGAL)$$EngineeringData.CGAL + Interpolation Options + + + 1000000 + Dependent + Young's Modulus X direction + + + 1000000 + Dependent + Young's Modulus Y direction + + + 255000000 + Dependent + Young's Modulus Z direction + + + 0.49 + Dependent + Poisson's Ratio XY + + + 0.001 + Dependent + Poisson's Ratio YZ + + + 0.001 + Dependent + Poisson's Ratio XZ + + + 1 + Dependent + Shear Modulus XY + + + 37000000 + Dependent + Shear Modulus YZ + + + 70000000 + Dependent + Shear Modulus XZ + + + + - + Orthotropic + Temperature + Orthotropic Stress Limits + + Interpolation Options + Linear Multivariate (Qhull) + True + True + Projection to the Bounding Box + AlgorithmType$$Linear Multivariate (CGAL)$$EngineeringData.CGAL + Interpolation Options + + + 0 + Dependent + Tensile X direction + + + 0 + Dependent + Tensile Y direction + + + 5310000 + Dependent + Tensile Z direction + + + 0 + Dependent + Compressive X direction + + + 0 + Dependent + Compressive Y direction + + + -5310000 + Dependent + Compressive Z direction + + + 0 + Dependent + Shear XY + + + 1210000 + Dependent + Shear YZ + + + 2240000 + Dependent + Shear XZ + + + + - + 7c43386c-d57e-4169-bf28-1674ece809c5 + Material Unique Id + False + + + - + Color + + 103 + Dependent + Red + + + 192 + Dependent + Green + + + 205 + Dependent + Blue + + + Appearance + + + + - + Isotropic + Temperature + Isotropic Thermal Conductivity + + Interpolation Options + Linear Multivariate + True + True + Projection to the Bounding Box + Interpolation Options + + + 2 + Dependent + Thermal Conductivity + + + 7.88860905221012e-31 + Independent + Temperature + Temperature + 22 + Program Controlled + Program Controlled + C + + + + + + + Options Variable + + + + Density + + + kg + + + m + + + + + Young's Modulus X direction + + + Pa + + + + + Young's Modulus Y direction + + + Pa + + + + + Young's Modulus Z direction + + + Pa + + + + + Poisson's Ratio XY + + + + Poisson's Ratio YZ + + + + Poisson's Ratio XZ + + + + Shear Modulus XY + + + Pa + + + + + Shear Modulus YZ + + + Pa + + + + + Shear Modulus XZ + + + Pa + + + + + Tensile X direction + + + + Tensile Y direction + + + + Tensile Z direction + + + + Compressive X direction + + + + Compressive Y direction + + + + Compressive Z direction + + + + Shear XY + + + + Shear YZ + + + + Shear XZ + + + + Tensile X direction + + + Pa + + + + + Tensile Y direction + + + Pa + + + + + Tensile Z direction + + + Pa + + + + + Compressive X direction + + + Pa + + + + + Compressive Y direction + + + Pa + + + + + Compressive Z direction + + + Pa + + + + + Shear XY + + + Pa + + + + + Shear YZ + + + Pa + + + + + Shear XZ + + + Pa + + + + + Coefficient of Thermal Expansion X direction + + + C + + + + + Coefficient of Thermal Expansion Y direction + + + C + + + + + Coefficient of Thermal Expansion Z direction + + + C + + + + + Zero-Thermal-Strain Reference Temperature + + + C + + + + + Material Property + + + + Compressive Inclination XZ + + + + Compressive Inclination YZ + + + + Tensile Inclination XZ + + + + Tensile Inclination YZ + + + + Interface Weakening Factor + + + + Degradation Parameter s + + + + Degradation Parameter M + + + + Coupling Coefficient XY + + + + Coupling Coefficient YZ + + + + Coupling Coefficient XZ + + + + Temperature + + + C + + + + + Red + + + + Green + + + + Blue + + + + Thermal Conductivity + + + W + + + m + + + C + + + + + + Density + + + + Ply Type + + + + Elasticity + + + + Strain Limits + + + + Stress Limits + + + + Coefficient of Thermal Expansion + + + + Zero-Thermal-Strain Reference Temperature + + + + Puck Constants + + + + Additional Puck Constants + + + + Tsai-Wu Constants + + + + Material Unique Id + + + + Color + + + + Thermal Conductivity + + + + + + + + Epoxy Carbon UD (230 GPa) Prepreg + 2b1ddcf4-d4a0-4be9-be73-47b0072b1494 + a1f2e775-77fe-4ad6-a822-54d353e0ea0e,,7668aedd-db89-44f4-9a38-3121f02765c8,, + + + Epoxy Carbon Woven (230 GPa) Wet + c9d22e4e-18c9-42aa-8d9b-9d330f980ddd + 14c6ac6f-4e65-4269-9e3a-335446a83ea5,,fed0e86c-e669-442c-b172-9df6a68f6b07,, + + + Honeycomb + d6be5592-8963-4fa0-9583-ea30785bd301 + 21084963-4dd6-484f-abe2-d1fe8fef3da3,,a416aeaa-e123-4c18-a2cd-9320a9a1108e,, + + + + \ No newline at end of file diff --git a/tests/data/workflow_example/harmonic/harmonic_analysis/file.rst b/tests/data/workflow_example/harmonic/harmonic_analysis/file.rst new file mode 100644 index 000000000..7716b65c2 Binary files /dev/null and b/tests/data/workflow_example/harmonic/harmonic_analysis/file.rst differ diff --git a/tests/data/workflow_example/harmonic/modal_analysis/Setup/ACPCompositeDefinitions.h5 b/tests/data/workflow_example/harmonic/modal_analysis/Setup/ACPCompositeDefinitions.h5 new file mode 100644 index 000000000..54846a5d5 Binary files /dev/null and b/tests/data/workflow_example/harmonic/modal_analysis/Setup/ACPCompositeDefinitions.h5 differ diff --git a/tests/test_data_sources.py b/tests/test_data_sources.py index fa46e0792..1cdaa860f 100644 --- a/tests/test_data_sources.py +++ b/tests/test_data_sources.py @@ -1,6 +1,9 @@ import pathlib -from ansys.dpf.composites.data_sources import get_composite_files_from_workbench_result_folder +from ansys.dpf.composites.data_sources import ( + composite_files_from_workbench_harmonic_analysis, + get_composite_files_from_workbench_result_folder, +) def test_get_files_from_result_folder(dpf_server): @@ -28,3 +31,29 @@ def test_get_files_from_result_folder(dpf_server): assert files.rst == [WORKFLOW_EXAMPLE_ROOT / "file.rst"] assert files.engineering_data == WORKFLOW_EXAMPLE_ROOT / "MatML.xml" + + +def test_get_files_from_result_folder_harmonic(dpf_server): + WORKFLOW_EXAMPLE_ROOT_HARMONIC = ( + pathlib.Path(__file__).parent + / "data" + / "workflow_example" + / "harmonic" + / "harmonic_analysis" + ) + WORKFLOW_EXAMPLE_ROOT_MODAL = ( + pathlib.Path(__file__).parent / "data" / "workflow_example" / "harmonic" / "modal_analysis" + ) + + files = composite_files_from_workbench_harmonic_analysis( + result_folder_modal=WORKFLOW_EXAMPLE_ROOT_MODAL, + result_folder_harmonic=WORKFLOW_EXAMPLE_ROOT_HARMONIC, + ) + + assert ( + files.composite["Setup_shell"].definition + == WORKFLOW_EXAMPLE_ROOT_MODAL / "Setup" / "ACPCompositeDefinitions.h5" + ) + + assert files.rst == [WORKFLOW_EXAMPLE_ROOT_HARMONIC / "file.rst"] + assert files.engineering_data == WORKFLOW_EXAMPLE_ROOT_HARMONIC / "MatML.xml"