From a09d1ba90d9ceaf18baf268e9b9a9dfab65ff043 Mon Sep 17 00:00:00 2001 From: jvonrick Date: Fri, 7 Jul 2023 13:52:59 +0200 Subject: [PATCH 1/9] Implement composite_files_from_workbench_harmonic_analysis --- doc/source/api/data_sources.rst | 1 + examples/010_harmonic_example.py | 9 +- src/ansys/dpf/composites/data_sources.py | 63 +- .../harmonic/harmonic_analysis/MatML.xml | 1317 +++++++++++++++++ .../harmonic/harmonic_analysis/file.rst | Bin 0 -> 327680 bytes .../Setup/ACPCompositeDefinitions.h5 | Bin 0 -> 46176 bytes tests/test_data_sources.py | 31 +- 7 files changed, 1413 insertions(+), 8 deletions(-) create mode 100644 tests/data/workflow_example/harmonic/harmonic_analysis/MatML.xml create mode 100644 tests/data/workflow_example/harmonic/harmonic_analysis/file.rst create mode 100644 tests/data/workflow_example/harmonic/modal_analysis/Setup/ACPCompositeDefinitions.h5 diff --git a/doc/source/api/data_sources.rst b/doc/source/api/data_sources.rst index 3d1ec1e67..8002fb933 100644 --- a/doc/source/api/data_sources.rst +++ b/doc/source/api/data_sources.rst @@ -11,4 +11,5 @@ Data sources ShortFiberCompositesFiles CompositeDataSources get_composite_files_from_workbench_result_folder + 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..187e9a049 100644 --- a/examples/010_harmonic_example.py +++ b/examples/010_harmonic_example.py @@ -6,7 +6,8 @@ .. note:: - This example is work in progress. Please open a Github issue if something is unclear. + When using a workbench project, use :func:`composite_files_from_workbench_harmonic_analysis` + 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 +39,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 a1a7bb6f5..72b8ccf4d 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", ) @@ -245,6 +246,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 : + 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 : + 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: @@ -370,7 +430,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/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 0000000000000000000000000000000000000000..7716b65c2f5c41ce742aebb7bdddd579473c5331 GIT binary patch literal 327680 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 A*Z=?k literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..54846a5d55107fe29aab9cfe609515669439b0c3 GIT binary patch literal 46176 zcmeHQZ)_aLbze%hMay(b$8M^mPO?s%gpx&-`e#!~934&3q7q8Fh?GO8PLIdCm3Rrs zyWSlgGI1KVaauKXQUxfQxJetOX&MJL9HPhvqG%d@C<+7pQ1=g7edq_ZXaNIBQ57gq zp$L$^H}Cy!XXkeBxFpS_;tj!_eKYfB-n@D9=Dpe3z26)?@%Y`l-?ZD~(B19b=JlFe zTz;%!>bsHx82M9r)1~nxjbGRyH(eh8dEOpPzenqL%T1gc8S$tj>PM_--u2t%t{VxR zcw2E`bYv*Y9iG%)L!Mq%IRi5a<+)0^R;mZNLO!5G$YllvQpR20T@m^1Rr&4Pr4?!W z?d12>yQIA7L`oVu#sB|v0P?${U0Kw4^|ah1>B-S?$)7ooayw(?@#>S3KPpk;ux^by{Oa)rOt~)a4&rgQH*soWj21HQUi!b2{-J+{ zhO_?Zaxs`Sr9CgiyUXC2yxhc6g_RZs#^)gcer+b0W!xUGkFK1~t#x}(1l3xpJa5Y1 zX3|Zzcj)keLwpyu(__ky1@jl{Gr9BgrMfA|?Qk1tXU?SBc)JbWL}@Mvv4lPwua<-t z%vD<94L9Mv&a^kYP^|{@g(cuJoy>aBd4Bwa!3_H+be_)FYQW(FjK?Y(cptmSsWu;X znf8X}FU|(k3AdeMAP8M#8F3w0cd!l&+-<7!mL>Aqtpk-_DTw)~Xq{-AZ~*H7>=+dX z@3PtlV8iKyatFC}^*YL}HI{W?m**?O<-Kx)`d1ac_K>6xYPp;5kCyX4AaF+4Ezm#k z`e?aHg%|IW^eKrv|5MR&E6)r3%2y-?Uv54VEw_A0;47b#81tu(l`IAHBdc)5v9~Vi z`i64ux+=A_zhWJ5+X?kh^E%LD(RVr^O%iQ4L+?)#-6_^oK2Xq#{VdT2%aJEQTnm*fWP+okUa4E@te&Uq67 z^DA2|SAuH2#A~V@Tzhmy*H7SGQ~2i3*jSx=mjlp4F27uTV%wv4P$l3q>mi@k7`Oa- z_0J8}^QxxX>Yu?q(j(|`w|^b@*5&~857r;p5non0LhnZ=2Fxww7J3NzX=BVA*FNd- z2DP2$^_xW%?T^d`bHRMwXHU&PHGiR8oy*tB0ZTuRx=o!r4QN+MII#Ri>CvJ#DE@?( zxG$Qv|DE!;76;sU1buq_=c4_D{AQ!c>xSHQeDPu&HCMT9a;dIxZ7#|%OnK0#{_jVI*xA)l4_(*O-ktn~H1d8{SJkK{* zjIX*IgaiF7`&dI~#-ALwD&ThQeVc=W;@I|h8LjVL)9%RF$mx+Y6FJ(h9LWuzJ%5IY zqmb0T(8T>k``xCVv7skN&W)T%!~^}je`fAAp$q$JJ0wBf$cEl`;hm(fxui=UbDh(7 z?2wAOb;oFDSN6@^AJ2PGBE7zz%5z|xZy?}ZDVck@lnd3Flc z%j`Ss)aLt1O}g)i@1+0N1wd!rIY{i ziD!?~?YhG1TR!`P53c?}6aI=x|H5&%ew269|6a@g-t#6j)#s+89ycBJxP8Z(kQ6h2 zvi-sW#H#B|$IC0Lw05mJ9A9V3rRXW?A8Xd8H`y-Fc{aaT&TN={ zbN&ZDZ;#pav)OIe&wAUgpSSbu`q(|UVb&^k{k%Td_3^Z3n$SL*xi-wa;XWdt%?CUG z4FucuHOz|T$1{}GK2W(Iefz)u?)3D)@&4iafAFsl?`y=6Bc!7o%OnTp0|%Bt4%}}J zJcb;2>{t1!9QfxQn78e0d|p&+zOdTnu|WN-CRz3XKS=lXxIf^) zZzI?qhqn`K*T0`&dt7+C*oOBx_^kHr{62#1`t}lR!fQB=na5-^Y57^^uIF9-D^)so zK5F312gW4*Z$4^bzVO)dxI^#oSlfKzhig11z*n|vY`(HpV$TO|(S{EYY>(3~5Ny{! zNU&Z1BLv&^KTNP)-(d$nLa<%`QG$K?2fgp3dmekh%n2KQFTwV>9dq*EO|Vb@z<&?j zoA4TrV^{At|KU|?q|1N*xBs?_;(`DC)SuBHb!C3%+&5^Ty0XXK^&CykuF7X#`3MU= z1uE7wj$I~TmSffFw+>ndCf*$x+WNMr8Y5Om;)}WdT^WD^~4Y=~*_TPnfl2kA%uYar$lI7tk<%3V9!r<~D zd}0)q*~+_i^TqAI3uC^pJ;C}e*&h?OhyK_z%AZW6yDooP?F+Ka1UWJDr9AHk`NE7J z$R;6IoK{}CNE2|KY!7k3zF?LYUJ6s@>b2cpuc$uqwR|VqUL0`u1x0IM{PCq)J(%-P z1Q$wlT8R%inR4;xa8@&%>v_xO>UnPeSyytnsq;vnu-z;YHW;5AK09Xm!pevO`lX;* z=h?1gJq90;%OM{=1>^CO54*t5XI$(jKp!HX`>CdnsUP)0pPZa6Pv>X-CN=|y&`p3( z!?bcZeNtlZ(M^XP19}SOYQPw5qjEs{LQ&48@fynk`5!Mo9n9yB9F<)05jY?1EEE~? zJocqHun)mup_r@W>!fq%Yi47SZDi%W z$7==$mp7njXL|l$Tqy9Y&CV_zIO6GXlZ5=Eo*J(S`44-#SSREk_Slc+ z5a0eG&o{ZD{6y%ZyazNN*Xx=r#YZqS5EpQJ8>NMYCh_B6I4>>Q0yasXrf2ADi_dH%3IYjA$ zHt{@OGdV=_L;Bed=a57{`}G_`IpqE=6xsjh(2job?vm+eKb`}|Zxnh)l0Ek8Ibc4F zRLYA>{;<(D{`nJr-=V_;{>f~9ub-_3m8zbO^*s3hzQOjq2;PTSxm&0o3hKPSz#(lr zvSX7T?|sr-Ll3m0PtE7XJT5*w9UMJ+>`?#Uv4;=$AGwep=s$LJ@Nj>SKRocr;L+*g z;Q=FJ8Epsi|IqZoVzF@HNPqDNp&XeGj`dFmk5CPdOb-k^Lb*qd8Ic)s@CwI@hYkft zg8qYpg=76k4(0RxgT-Uh{l|)j4-Z^8HaJi$k~ZmZ+hvb~iZ4LVbX9n07;gD4W z_nJCV@Dp&R0Oh8Jr2MiPapt`)Q4^&*<_i zJP)Sl-}H@2-j`vY2mK|#w;t3=`FZW2yH7t}p!XLjkMVX{c-Y!cdJpHOj>j_LaOmg* z;X~&d&w-?U>ML;26b*8ljjtwkD&~)?M_!Bh!!8f#pVN1sljhH$>Y-)rQD^?79@=e% zkTid;VzCu^8g)%rPU z)#6!UEB4)EncPXdWjWx^pN#f&>U6Zr;RE-aoNK5_ep9;n229O6lbs zMc$X`i*~3B?_2Ja1m36Tz|R6WAWllhxv%u+B>!9=C0~|?^y;4b!nv!fs_=UkjLf~u9NF4fU&F6Xf>=f3Yq51smQms_;VPFcn z+CRLCNLXPfjRNqlV_vAZ~*!Q(^jlPdjDV78SvqhK9^+ci_;*F85BqvAgaqxczIT?{`yo8vUJJ zl8+nejzK#=0eFbl?Js%Md=KGX+y>=)T^@YrS+RcPIolcy(!hN zNfH4)x;m9qVtb}p!4Y}WUfW848E(|@ij^|pw&>(sS^rYd>n+OSXS^9K|Ucs)FF3$V-jRdYcEq{J; zeEFfz^pZxANUv%5;uB6RU(S^0=vDPue`2Oo_}F|G;H{p-_mNl~-@6AXOs$DQ9UypHeN==fn} z6Uv(9IeA@Z;g2->zus|c=U;a$@zxk`L3R;bElbi;x9-aqInyXO%w#LWo||@aO(y{xo?QY54=b^y&blx1-nl z-No;&kuRf$V{vlB6(q<_jE5nNPtPCs{N+0BRBB#ya>fu6p4)Q2cm8i1<_jyR1ir+0 z8ipJ?S0);MQum`mX~jw+<#63{KZ8AxhLs)mPeub&HOI|*aGm2vY`D!-@0)A#_}%w* zp#m$MK+W@g&}78PwQYC6&m!xItPXft>Gu(Y3cOdDd@jHD(^7H<2%UIaalrL6E^F_v zJS#UzzqjlD&LGP*>mbYm=$Fy2NN~`#DL2KWx`Dc`@nbrujW7(J*V@PhPJd^UQ|%;uFVW^>d6D zgLQPZV%Tgwjfl=0$!&ff0CB{#fQ>!}h^)t!g+4^Dzdaq0#h%NSYqZCM{&8R90^}M6 z)BB-mpXa=|;c>H{=S1W=#>+}O@0;~rT6s?UJ6r#({J;t+qtraVlh=b5`&tdpB`qHy zE1Sj-s!(K6=1a04_utA7>_jK=L-b*szO&ES$b29V&X@U+o)6La-R^l&-*ZB*FHz^Z z%{Tx*Zc_UV{d@IuQARYL_v#N$G5 zhyQnt`aD^G-9xMapUivQ_5lTDTiSUm&v$Nb_`#LWNBQqULLK=NUvhJz@Th`Uz8p<= zA!v;~zvbpcVPC=J-;JjKv_Koz|Lc{ji+S$Fy>p%}x5S1&;vh;RtWIR&*W|YCZ zK9w=?@)ND&M!CnOoIz@FAv$>S;Ww>L(7g>0JMd!;eB6OE4m?CKufnK*gzj&*;K%8H zhXwPeuxyy;ij9AYU>l!5*l@~Wy^k*Z zFkTi|VPq*iKiuDG-(%|8{O41>zb(Q(C6Qj6_l=V6WB%=-sC^uIm1+B(^xdd-`z3p> z2;uOTv>Tmhn{dG0FX`2O-}p+D0h|4u8Jw?Od0yIiMceD~CQU*Yy$R4wf3#0usFo`D zIY0A#?S3kOd4uoG`Q;1#EPsnGDB|ZdYks~O__aFyvRu)puRjI{2yd3=-7N_>p@^TOBT^O1_)zM%X=`fDBccoow`tM!@p zB{5E;<&XRIvQNKET3Mjq=&jEL{&cxsFVFdcFg5AH0#q zmS^_be>c6Nev(gEVQ}@qTIap^iS$^#R4`BO(#l1Tmo-GRl3yM`$gj4<(pomsdr^K6 z+0aq*FILM76}BtE-^nfK@8u2i*Y-p8yU={(+Hg2Me?@b);xFsMME-(+V!odDNyXRv z1v>p*_2t9W2f*i0jvKI zujcO@TZ2I5LGM+yS6OD`g4iLsh8<$`b@(>9o-WYuqtjslZ6C)5JjemgZ)<)oq%ZpY zcZ{P*SsX?2X;{ya^mq7O>|{AQNL8c#B)!;7cc>$ovUdLK^%bEXc91}w>vrJ){8w2; z!mn^FzZB&F=E+F$VvrjP<}cP~%$yots6L&qFH{394ted1q9;OU==Y{_WBKV|R;H-H zxR8X)x4E8l4(b#90QSZ|W{4|>!SZ`ds( Date: Fri, 7 Jul 2023 14:07:30 +0200 Subject: [PATCH 2/9] Ingnore 1_ext files --- src/ansys/dpf/composites/data_sources.py | 13 +++++++++++-- .../assembly/Setup 3/ACPSolidModel_SM.1_ext.h5 | Bin 0 -> 73040 bytes .../Setup 4/ACPCompositeDefinitions.1_ext.h5 | Bin 0 -> 44128 bytes 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 tests/data/workflow_example/assembly/Setup 3/ACPSolidModel_SM.1_ext.h5 create mode 100644 tests/data/workflow_example/assembly/Setup 4/ACPCompositeDefinitions.1_ext.h5 diff --git a/src/ansys/dpf/composites/data_sources.py b/src/ansys/dpf/composites/data_sources.py index 72b8ccf4d..4be6446bd 100644 --- a/src/ansys/dpf/composites/data_sources.py +++ b/src/ansys/dpf/composites/data_sources.py @@ -23,6 +23,7 @@ _SHELL_COMPOSITE_DEFINITIONS_PREFIX = "ACPCompositeDefinitions" _SETUP_FOLDER_PREFIX = "Setup" _H5_SUFFIX = ".h5" +_1_EXT_SUFFIX = ".1_ext" _MATML_FILENAME = "MatML.xml" _RST_SUFFIX = ".rst" _RST_PREFIX = "file" @@ -154,16 +155,24 @@ def _is_matml_file(path: pathlib.Path) -> bool: return path.name == _MATML_FILENAME and path.is_file() +def _has_1_ext_suffix(path: pathlib.Path) -> bool: + if len(path.suffixes) == 2: + return path.suffixes[0] == _1_EXT_SUFFIX + return False + + 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_1_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_1_ext_suffix = _has_1_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_1_ext_suffix def _get_file_paths_with_predicate( 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 0000000000000000000000000000000000000000..55f9e402f84c18c3b715451238ebda8fdf8be53f GIT binary patch literal 73040 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 literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..7f0b392f64ecc76967f5c375ec7ce5882c97eae1 GIT binary patch literal 44128 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 D;>c>s literal 0 HcmV?d00001 From ac9f7e1a58848ca03c8cd3d5006cab0729186eb2 Mon Sep 17 00:00:00 2001 From: jvonrick Date: Fri, 7 Jul 2023 14:15:53 +0200 Subject: [PATCH 3/9] Fix docs link --- examples/010_harmonic_example.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/010_harmonic_example.py b/examples/010_harmonic_example.py index 187e9a049..8792b1b78 100644 --- a/examples/010_harmonic_example.py +++ b/examples/010_harmonic_example.py @@ -6,7 +6,7 @@ .. note:: - When using a workbench project, use :func:`composite_files_from_workbench_harmonic_analysis` + When using a workbench project, use :func:`.composite_files_from_workbench_harmonic_analysis` to obtain the input files. This example shows how to evaluate failure criteria for a harmonic simulation. From 738521f01712ac64f70a73c3cf4fc974f3eb6206 Mon Sep 17 00:00:00 2001 From: jvonrick Date: Thu, 13 Jul 2023 09:41:10 +0200 Subject: [PATCH 4/9] Add doc string for 1_ext_suffix function --- src/ansys/dpf/composites/data_sources.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/ansys/dpf/composites/data_sources.py b/src/ansys/dpf/composites/data_sources.py index 0b506207c..0056aa876 100644 --- a/src/ansys/dpf/composites/data_sources.py +++ b/src/ansys/dpf/composites/data_sources.py @@ -172,6 +172,10 @@ def _is_matml_file(path: pathlib.Path) -> bool: def _has_1_ext_suffix(path: pathlib.Path) -> bool: + """Check if the path has exactly 2 suffixes and the first one is equal to 1_ext. + + Example: CompositeDefinitions.1_ext.h5 + """ if len(path.suffixes) == 2: return path.suffixes[0] == _1_EXT_SUFFIX return False From 59a7924eba7be18ec5828c454737abbc4f126c65 Mon Sep 17 00:00:00 2001 From: jvonrick Date: Tue, 18 Jul 2023 17:14:37 +0200 Subject: [PATCH 5/9] Fix extension filtering. --- src/ansys/dpf/composites/data_sources.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/ansys/dpf/composites/data_sources.py b/src/ansys/dpf/composites/data_sources.py index 0056aa876..b21b3d373 100644 --- a/src/ansys/dpf/composites/data_sources.py +++ b/src/ansys/dpf/composites/data_sources.py @@ -23,7 +23,7 @@ _SHELL_COMPOSITE_DEFINITIONS_PREFIX = "ACPCompositeDefinitions" _SETUP_FOLDER_PREFIX = "Setup" _H5_SUFFIX = ".h5" -_1_EXT_SUFFIX = ".1_ext" +_EXT_SUFFIX = "_ext" _MATML_FILENAME = "MatML.xml" _RST_SUFFIX = ".rst" _RST_PREFIX = "file" @@ -171,28 +171,26 @@ def _is_matml_file(path: pathlib.Path) -> bool: return path.name == _MATML_FILENAME and path.is_file() -def _has_1_ext_suffix(path: pathlib.Path) -> bool: - """Check if the path has exactly 2 suffixes and the first one is equal to 1_ext. +def _has_ext_suffix(path: pathlib.Path) -> bool: + """Check if them stem (filename without extension) ends with _ext. Example: CompositeDefinitions.1_ext.h5 """ - if len(path.suffixes) == 2: - return path.suffixes[0] == _1_EXT_SUFFIX - return False + return path.stem.endswith("_ext") def _is_composite_definition_file(path: pathlib.Path) -> bool: is_composite_def = path.name.startswith(_SHELL_COMPOSITE_DEFINITIONS_PREFIX) - no_ext_suffix = not _has_1_ext_suffix(path) + 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_1_ext_suffix = _has_1_ext_suffix(path) + 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 and not has_1_ext_suffix + return is_h5 and is_file and is_def and not has_ext_suffix def _get_file_paths_with_predicate( From 24e917b70eb5ee21a785517742fed8d20363296c Mon Sep 17 00:00:00 2001 From: janvonrickenbach Date: Wed, 19 Jul 2023 17:52:01 +0200 Subject: [PATCH 6/9] Update examples/010_harmonic_example.py Co-authored-by: Kathy Pippert <84872299+PipKat@users.noreply.github.com> --- examples/010_harmonic_example.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/010_harmonic_example.py b/examples/010_harmonic_example.py index 8792b1b78..e84bde918 100644 --- a/examples/010_harmonic_example.py +++ b/examples/010_harmonic_example.py @@ -6,8 +6,8 @@ .. note:: - When using a workbench project, use :func:`.composite_files_from_workbench_harmonic_analysis` - to obtain the input files. + 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 From bb7a9fcadf06182cd850e7486000034903c28c91 Mon Sep 17 00:00:00 2001 From: janvonrickenbach Date: Wed, 19 Jul 2023 17:52:08 +0200 Subject: [PATCH 7/9] Update src/ansys/dpf/composites/data_sources.py Co-authored-by: Kathy Pippert <84872299+PipKat@users.noreply.github.com> --- src/ansys/dpf/composites/data_sources.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ansys/dpf/composites/data_sources.py b/src/ansys/dpf/composites/data_sources.py index b21b3d373..a00e00cbf 100644 --- a/src/ansys/dpf/composites/data_sources.py +++ b/src/ansys/dpf/composites/data_sources.py @@ -280,14 +280,14 @@ def composite_files_from_workbench_harmonic_analysis( Parameters ---------- - result_folder_modal : - Result folder of the modal solution. - In the Modal System, Right-click the **solution** item in the Ansys Mechanical tree + 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 : + 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 + 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. """ From 487613c2e75d4220df1180d9454438bba285860e Mon Sep 17 00:00:00 2001 From: janvonrickenbach Date: Wed, 19 Jul 2023 17:52:20 +0200 Subject: [PATCH 8/9] Update src/ansys/dpf/composites/data_sources.py Co-authored-by: Kathy Pippert <84872299+PipKat@users.noreply.github.com> --- src/ansys/dpf/composites/data_sources.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ansys/dpf/composites/data_sources.py b/src/ansys/dpf/composites/data_sources.py index a00e00cbf..2beb0e2af 100644 --- a/src/ansys/dpf/composites/data_sources.py +++ b/src/ansys/dpf/composites/data_sources.py @@ -172,7 +172,7 @@ def _is_matml_file(path: pathlib.Path) -> bool: def _has_ext_suffix(path: pathlib.Path) -> bool: - """Check if them stem (filename without extension) ends with _ext. + """Check if the stem (filename without extension) ends with ``_ext``. Example: CompositeDefinitions.1_ext.h5 """ From e66115c9d0b2a60d6fac4cd3ff020d620a7a24a8 Mon Sep 17 00:00:00 2001 From: jvonrick Date: Thu, 20 Jul 2023 10:50:07 +0200 Subject: [PATCH 9/9] Fix line too long error --- examples/010_harmonic_example.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/010_harmonic_example.py b/examples/010_harmonic_example.py index e84bde918..6d1b6c3b7 100644 --- a/examples/010_harmonic_example.py +++ b/examples/010_harmonic_example.py @@ -6,7 +6,8 @@ .. note:: - When using a Workbench project, use the :func:`.composite_files_from_workbench_harmonic_analysis` + 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.