NaxToPy 1.5.6__tar.gz → 2.2.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. {NaxToPy-1.5.6 → naxtopy-2.2.3}/LICENSE +1 -1
  2. {NaxToPy-1.5.6/src/NaxToPy.egg-info → naxtopy-2.2.3}/PKG-INFO +100 -18
  3. {NaxToPy-1.5.6 → naxtopy-2.2.3}/README.md +93 -14
  4. {NaxToPy-1.5.6 → naxtopy-2.2.3}/pyproject.toml +3 -3
  5. {NaxToPy-1.5.6 → naxtopy-2.2.3}/setup.py +3 -1
  6. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQEntities/N2PEntity.py +28 -0
  7. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityElement.py +19 -0
  8. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityNode.py +46 -0
  9. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityShell.py +34 -0
  10. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQEntities/__init__.py +4 -0
  11. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeyword.py +43 -0
  12. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordBEAMSECTION.py +30 -0
  13. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordCOUPLING.py +40 -0
  14. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDENSITY.py +23 -0
  15. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTING.py +24 -0
  16. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTINGCOUPLING.py +17 -0
  17. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELASTIC.py +18 -0
  18. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELEMENT.py +20 -0
  19. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELSET.py +29 -0
  20. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDINSTANCE.py +9 -0
  21. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDPART.py +9 -0
  22. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordINSTANCE.py +27 -0
  23. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATIC.py +15 -0
  24. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATICCOUPLING.py +8 -0
  25. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordMATERIAL.py +13 -0
  26. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNODE.py +14 -0
  27. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNSET.py +40 -0
  28. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordORIENTATION.py +45 -0
  29. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPART.py +13 -0
  30. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPLASTIC.py +23 -0
  31. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSHELLSECTION.py +59 -0
  32. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSOLIDSECTION.py +30 -0
  33. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSURFACE.py +24 -0
  34. naxtopy-2.2.3/src/NaxToPy/Core/Classes/ABQKeywords/__init__.py +23 -0
  35. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/AllClasses.py +5 -2
  36. naxtopy-2.2.3/src/NaxToPy/Core/Classes/N2PAbaqusInputData.py +173 -0
  37. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PComponent.py +122 -58
  38. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PConnector.py +18 -13
  39. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PCoord.py +11 -2
  40. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PElement.py +43 -19
  41. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PFreeBody.py +18 -7
  42. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PIncrement.py +22 -30
  43. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PLoadCase.py +115 -64
  44. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PMaterial.py +32 -24
  45. NaxToPy-1.5.6/src/NaxToPy/Core/Classes/N2PModelInputData.py → naxtopy-2.2.3/src/NaxToPy/Core/Classes/N2PNastranInputData.py +277 -27
  46. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PNode.py +42 -22
  47. naxtopy-2.2.3/src/NaxToPy/Core/Classes/N2PProperty.py +808 -0
  48. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PReport.py +14 -1
  49. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PResult.py +72 -28
  50. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PSection.py +11 -6
  51. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PSet.py +11 -7
  52. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Constants/Constants.py +11 -9
  53. naxtopy-2.2.3/src/NaxToPy/Core/Errors/N2PLog.py +2168 -0
  54. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/N2PModelContent.py +695 -245
  55. naxtopy-2.2.3/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +225 -0
  56. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/Joints/N2PAttachment.py +112 -0
  57. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/Joints/N2PBolt.py +206 -0
  58. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/Joints/N2PJoint.py +1444 -0
  59. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/Joints/N2PPlate.py +887 -0
  60. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/N2PFastenerAnalysis.py +525 -0
  61. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/N2PGetFasteners.py +287 -0
  62. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/N2PGetLoadFasteners.py +1177 -0
  63. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/N2PUpdateFastener.py +38 -13
  64. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetAttachments.py +92 -0
  65. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetResults.py +152 -0
  66. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PInterpolation.py +149 -0
  67. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PLoadModel.py +63 -0
  68. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +406 -0
  69. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/__init__.py +0 -0
  70. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/__init__.py +0 -0
  71. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/__init__.py +0 -0
  72. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Check/Validation.py +74 -0
  73. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/AR1DElement.py +97 -0
  74. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARAttachment.py +736 -0
  75. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARBolt.py +1505 -0
  76. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlate.py +97 -0
  77. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlateElements.py +53 -0
  78. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARAuxiliarFunctions.py +193 -0
  79. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARBilinearInterpolation.py +148 -0
  80. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARConfigurationInput.py +76 -0
  81. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARDerivedLoadCases.py +143 -0
  82. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARFileInputRivetsIDs.py +148 -0
  83. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetAttachments.py +123 -0
  84. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetBolts.py +947 -0
  85. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARReadResultsFromFile.py +31 -0
  86. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARResults.py +206 -0
  87. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARRotation.py +223 -0
  88. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARSerialize.py +86 -0
  89. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/__init__.py +1 -0
  90. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/__init__.py +1 -0
  91. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/__init__.py +0 -0
  92. naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/__init__.py +0 -0
  93. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Modules/N2PEnvelope/N2PEnvelope.py +6 -5
  94. naxtopy-2.2.3/src/NaxToPy/Modules/N2PEnvelope/__init__.py +0 -0
  95. naxtopy-2.2.3/src/NaxToPy/Modules/N2PNeuber/N2PNeuber.py +595 -0
  96. naxtopy-2.2.3/src/NaxToPy/Modules/N2PNeuber/__init__.py +0 -0
  97. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Modules/N2PtoEXE/N2PtoEXE.py +47 -12
  98. naxtopy-2.2.3/src/NaxToPy/Modules/N2PtoEXE/__init__.py +1 -0
  99. naxtopy-2.2.3/src/NaxToPy/Modules/__init__.py +2 -0
  100. naxtopy-2.2.3/src/NaxToPy/Modules/common/__init__.py +2 -0
  101. naxtopy-2.2.3/src/NaxToPy/Modules/common/aux_funcitons.py +31 -0
  102. naxtopy-2.2.3/src/NaxToPy/Modules/common/aux_functions.py +155 -0
  103. naxtopy-2.2.3/src/NaxToPy/Modules/common/data_input_hdf5.py +298 -0
  104. naxtopy-2.2.3/src/NaxToPy/Modules/common/hdf5.py +259 -0
  105. naxtopy-2.2.3/src/NaxToPy/Modules/common/material.py +1029 -0
  106. naxtopy-2.2.3/src/NaxToPy/Modules/common/property.py +9 -0
  107. naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/__init__.py +2 -0
  108. naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/bruhn/__init__.py +2 -0
  109. naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/cmh/__init__.py +2 -0
  110. naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/esdu/__init__.py +2 -0
  111. naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/hsb/__init__.py +2 -0
  112. naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/nasa/__init__.py +2 -0
  113. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/user_functions.txt +2 -0
  114. {NaxToPy-1.5.6 → naxtopy-2.2.3/src/NaxToPy.egg-info}/PKG-INFO +100 -18
  115. naxtopy-2.2.3/src/NaxToPy.egg-info/SOURCES.txt +132 -0
  116. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy.egg-info/requires.txt +2 -1
  117. NaxToPy-1.5.6/src/NaxToPy/Core/Classes/N2PProperty.py +0 -352
  118. NaxToPy-1.5.6/src/NaxToPy/Core/Errors/N2PLog.py +0 -1175
  119. NaxToPy-1.5.6/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +0 -223
  120. NaxToPy-1.5.6/src/NaxToPy/Modules/Fasteners/__init__.py +0 -1
  121. NaxToPy-1.5.6/src/NaxToPy/Modules/__init__.py +0 -2
  122. NaxToPy-1.5.6/src/NaxToPy.egg-info/SOURCES.txt +0 -50
  123. {NaxToPy-1.5.6 → naxtopy-2.2.3}/setup.cfg +0 -0
  124. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ProgresBar.py +0 -0
  125. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/__init__.py +0 -0
  126. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Constants/__init__.py +0 -0
  127. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Constants/librerias.py +0 -0
  128. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Errors/N2PColors.py +0 -0
  129. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Errors/N2PFileHandler.py +0 -0
  130. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Errors/__init__.py +0 -0
  131. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/Reference_Finder/__init__.py +0 -0
  132. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/_AuxFunc/_NetToPython.py +0 -0
  133. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/_AuxFunc/__init__.py +0 -0
  134. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/Core/__init__.py +0 -0
  135. {NaxToPy-1.5.6/src/NaxToPy/Modules/N2PEnvelope → naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/Joints}/__init__.py +0 -0
  136. {NaxToPy-1.5.6/src/NaxToPy/Modules/N2PtoEXE → naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes}/__init__.py +0 -0
  137. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/NaxToPy.ico +0 -0
  138. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy/__init__.py +0 -0
  139. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy.egg-info/dependency_links.txt +0 -0
  140. {NaxToPy-1.5.6 → naxtopy-2.2.3}/src/NaxToPy.egg-info/top_level.txt +0 -0
@@ -1,4 +1,4 @@
1
- Copyright (c) 2023 Idaero Solutions
1
+ Copyright (c) 2024 Idaero Solutions
2
2
 
3
3
  This freeware license agreement (“agreement”) is a legally binding contract
4
4
  between the individual who downloads the software (“you”) and the licensor,
@@ -1,11 +1,11 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: NaxToPy
3
- Version: 1.5.6
3
+ Version: 2.2.3
4
4
  Summary: Package for postprocessing FEM results in Python
5
5
  Home-page: https://www.idaerosolutions.com/Home/NaxToPy
6
6
  Download-URL: https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US
7
7
  Author-email: Idaero Solutions <manuel.sanchez@idaerosolutions.com>
8
- License: Copyright (c) 2023 Idaero Solutions
8
+ License: Copyright (c) 2024 Idaero Solutions
9
9
 
10
10
  This freeware license agreement (“agreement”) is a legally binding contract
11
11
  between the individual who downloads the software (“you”) and the licensor,
@@ -118,9 +118,12 @@ Classifier: Topic :: Scientific/Engineering
118
118
  Requires-Python: >=3.9
119
119
  Description-Content-Type: text/markdown
120
120
  License-File: LICENSE
121
- Requires-Dist: pythonnet>=3.0.1
121
+ Requires-Dist: pythonnet>=3.0.3
122
122
  Requires-Dist: numpy>=1.22.0
123
123
  Requires-Dist: setuptools>=67.8.0
124
+ Requires-Dist: h5py>=3.12.1
125
+ Dynamic: download-url
126
+ Dynamic: home-page
124
127
 
125
128
  [![Idaero](https://img.shields.io/badge/powered%20by-Idaero%20Solutions-299797)](https://idaerosolutions.com)
126
129
  [![PyPi](https://img.shields.io/pypi/v/NaxToPy?color=ffd500)](https://pypi.org/project/NaxToPy/)
@@ -134,27 +137,35 @@ Requires-Dist: setuptools>=67.8.0
134
137
  # NaxToPy
135
138
 
136
139
  **NaxToPy** is the [**NaxTo**](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US)
137
- library designed for Python, which allows reading and manipulating FEM
138
- analysis results files from the most common tools: Nastran (op2, xdb, h5), Abaqus (odb), Optistruct
139
- (h3d, op2) and Ansys (rst); and stores them in a user-friendly Python structure. Additionally, it
140
- can read input files from Nastran (bdf, fem) and change it contents.
140
+ library designed for Python, allowing users to read and manipulate FEM analysis
141
+ results files from the most common tools: Nastran (op2, xdb, h5), Abaqus (odb), Optistruct (h3d, op2),
142
+ and Ansys (rst). It stores these results in a user-friendly Python structure. Additionally, it can
143
+ read input files from Nastran (bdf/dat), Optistruct (fem) and Abaqus(inp) and modify their contents.
141
144
 
142
- It could be easily combined with other Python packages as Matplotlib or Pandas. This provides access
143
- to the full coding power of Python to interpret and process the results, without the need to install
144
- any additional software other than having NaxTo already installed (see the _Download_ and _Homepage_
145
- links on the left).
145
+ It can easily be combined with other Python packages, such as Matplotlib or Pandas, providing access
146
+ to Python's full coding power for interpreting and processing results without the need to install
147
+ additional software beyond NaxTo (see the Download and Homepage links on the left).
146
148
 
147
149
  **NaxToPy** is a powerful tool for FEM analysis post-processing!
148
150
 
149
- **CAUTION:** This version is only compatible with **NaxTo 2024.0.5**.
151
+ ---------------
152
+
153
+ ⚠️**Warning:** To use NaxToPy, [**NaxTo**](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US) must be installed.
154
+ This version is compatible with **NaxTo 2024.3**. It is compatible with all the steps of this version (2024.3.0, 2024.3.1).
150
155
  Check in _Programs and Features_ the NaxTo version that is installed.
151
156
 
157
+ 📘**Note:** If a specific NaxTo version is installed, search the [**NaxToPy History**](https://pypi.org/project/NaxToPy/2.2.1/#history) to find which newer version is compatible with it.
158
+
159
+
152
160
  ## Installation
153
161
 
162
+ If python is installed and `pip` is added to the PATH:
154
163
 
155
- If python is callable from the command line:
164
+ `pip install NaxToPy`
165
+
166
+ An alternative, if Python is callable from the command line:
156
167
 
157
- `py -m pip install NaxToPy`
168
+ `python -m pip install NaxToPy`
158
169
 
159
170
  For **Visual Studio** users:
160
171
  - Open "Python Environments" window
@@ -178,7 +189,7 @@ same directory. When ever you want to use the NaxToPy package add the following
178
189
 
179
190
  If python is callable from the command line:
180
191
 
181
- `py -m pip install -U NaxToPy`
192
+ `python -m pip install -U NaxToPy`
182
193
 
183
194
  For Visual Studio users:
184
195
  - Open "Python Environments" window
@@ -254,6 +265,74 @@ To see previous version see the pre-release versions in https://test.pypi.org/pr
254
265
  1. The method new_envelope_loadcase() now has the option to choose the envelope group. Which means the user can ask for
255
266
  the LoadCases that are critical or the Increment that is critical instead of the value.
256
267
 
268
+ ### v.2.0.0
269
+ 1. Changes made to align the library with updates in lower-level dependencies.
270
+ 2. New internal methods to look for the compatibility with low-level dependencies.
271
+ 3. The name of the .log is now NaxToPy_Year-Month-Day.log.
272
+
273
+ ### v.2.0.1
274
+ 1. The compatibility is extended to all NaxTo steps of the same version.
275
+ 2. The property N2PLoadCase.ActiveIncrement is subtitued by N2PLoadCase.ActiveN2PIncrement.
276
+ It uses an object instaed of an int.
277
+ 3. Update of the examples of some docstrings.
278
+
279
+ ### v.2.1.0
280
+ 1. Reading a Natran Input File: SPC and SCP1 are now supported.
281
+ 2. Bug fix. The order in the components in new_report() does not affect now.
282
+ 3. Formula check in new_derived_loadcase(), new_enevelope_loadcase() and new_derived_component().
283
+ 4. New optional arguments if n2ptoexe() to add extra libaries, packages or files.
284
+
285
+ ### v.2.1.1
286
+ 1. Two new methods in N2PModelContent: load_user_coord_sys_from_csv() and set_user_coord_sys().
287
+ Also, there is a new property for N2PElement and N2PNode: UserSystemArray. This update allow the
288
+ user to define a different coordinate system for each element or node. To ask for the results
289
+ in this system, the optional argument `coordsys` must be equal to `-20`.
290
+ 2. Bug fix: The checking for component and section in new_report() has been fixed. If a comma
291
+ appeared in the component or section name, the method failed.
292
+
293
+ ### v.2.1.2
294
+ 1. Internal change for speeding up the read of NastranInputFiles. Now the Nastran Cards are loaded
295
+ when they are asked and not all at once.
296
+ 2. Improvement in error handling and log writing.
297
+ 3. The function import_results_from_files() checks if the file exist. If not, it prints an error
298
+ but the execution doesn't crash.
299
+
300
+ ### v.2.2.0
301
+ 1. Feat: New module for fastener analysis: N2PGetFasteners.
302
+ 2. Feat: New module for fastener analysis: N2PGetLoadFasteners. Calculates forces in joints and bypass forces.
303
+ 3. Bug fix: When a NaxToPy executable file is used on a machine where NaxTo is installed, the libraries are selected accordingly.
304
+ 4. Feat: Hidden imports are now allowed in n2ptoexe.
305
+ 5. Bug fix: Fixed the rotation of the FORCES tensor. Now the QX and QY components (transverse shears) are calculated correctly.
306
+ 6. Refactor: The dictionary and list for Cards have been replaced with a lazy dictionary and a lazy list, improving execution efficiency.
307
+ 7. Refactor: Reading the mesh from binary files is now executed in parallel by default, as this approach is more memory-safe.
308
+
309
+ ### v.2.2.1
310
+ 1. BugFix: The method set_increment() is fixed.
311
+ 2. BugFix: Several bugfix (not in the result accuracy) are fixed in modules N2PGetFastener and N2PGetLoadsFastener. Several optimizations are included.
312
+ 3. Feat: Now the method get_load_case() admits a list of int and a list of string and return a list of N2PLoadCase.
313
+ 4. Refactor: N2P classes use __slots__ for security and optimization.
314
+ 5. Refactor: Complete refactor of the module that loads the NaxTo libraries.
315
+ 6. BugFix: in parallel mesh load with a small mesh and lot of results.
316
+ 7. BugFix: in sequential mesh load in op2.
317
+
318
+ ### v.2.2.2
319
+ 1. BugFix: Solved an issue in the Nastran Cards Dictionary
320
+ 2. BugFix: Solved the Prop atribute of an N2PElement in Abaqus
321
+ 3. Feat: Now is possible to create `N2PCoord` by the user with the `new_coordinate_system()` method.
322
+ 4. Feat: Now is possible to add to `element_nodal()` a list of N2PElement to unshew only the nodes of these elements.
323
+ 5. Feat: Now is possible to ask for results in a list of elements or nodes using the optional argument `filter_list`.
324
+ 6. Feat: When the user provides a coordinate system and two vectors (v1, v2) to specify the output results, the information
325
+ is redundant. The coordinate system will prevail.
326
+ 7. Feat: New properties supported: PBUSH, PFAST, PMASS, PELAS, PGAP, PWELD
327
+ 8. BugFix: The method get_elements_attached() is fixed so when there are MPC connectors with the same ID.
328
+
329
+ ### v.2.2.3
330
+ 1. Requirement: Now NaxToPy require the package [**h5py** ](https://pypi.org/project/h5py/).
331
+ 2. Feat: N2PGetLoadFastener now can use PAG method and display format.
332
+ 3. BugFix: Some bugs are solved in N2PGetFastener and N2PGetLoadFastener.
333
+ 4. Feat: N2PGetLoadFastener can export results in HDF5 format.
334
+ 5. BugFix: The filtering in the method get_result_by_LCs_Incr() in elements when results are in Corner Data is fixed.
335
+
257
336
  # Documentation
258
337
 
259
338
  **NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
@@ -262,6 +341,7 @@ NaxToPy only use three dependeces:
262
341
  - NumPy: https://numpy.org/
263
342
  - PythonNET: https://pythonnet.github.io/
264
343
  - Setuptools: https://setuptools.pypa.io/en/latest/index.html
344
+ - HDF5: https://www.h5py.org/
265
345
 
266
346
  ## Supported Files
267
347
 
@@ -272,7 +352,9 @@ NaxToPy only use three dependeces:
272
352
  - **Ansys:** .rst, .rth(beta)
273
353
 
274
354
  ### Input files:
275
- - **Nastran** (bdf)
355
+ - **Nastran** (.bdf)
356
+ - **Optistruct** (.fem)
357
+ - **Abaqus** (.inp)
276
358
 
277
359
  ## Initialize your model
278
360
 
@@ -333,7 +415,7 @@ loadcaseslist = model.LoadCases
333
415
  pressure_lc = model.get_load_case("pressure")
334
416
 
335
417
  # Change the active increment (by default is the last one):
336
- pressure_lc.ActiveIncrement = 10
418
+ pressure_lc.ActiveN2PIncrement = pressure_lc.get_increment(10)
337
419
 
338
420
  # Look for all results
339
421
  all_results = pressure_lc.Results
@@ -10,27 +10,35 @@
10
10
  # NaxToPy
11
11
 
12
12
  **NaxToPy** is the [**NaxTo**](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US)
13
- library designed for Python, which allows reading and manipulating FEM
14
- analysis results files from the most common tools: Nastran (op2, xdb, h5), Abaqus (odb), Optistruct
15
- (h3d, op2) and Ansys (rst); and stores them in a user-friendly Python structure. Additionally, it
16
- can read input files from Nastran (bdf, fem) and change it contents.
13
+ library designed for Python, allowing users to read and manipulate FEM analysis
14
+ results files from the most common tools: Nastran (op2, xdb, h5), Abaqus (odb), Optistruct (h3d, op2),
15
+ and Ansys (rst). It stores these results in a user-friendly Python structure. Additionally, it can
16
+ read input files from Nastran (bdf/dat), Optistruct (fem) and Abaqus(inp) and modify their contents.
17
17
 
18
- It could be easily combined with other Python packages as Matplotlib or Pandas. This provides access
19
- to the full coding power of Python to interpret and process the results, without the need to install
20
- any additional software other than having NaxTo already installed (see the _Download_ and _Homepage_
21
- links on the left).
18
+ It can easily be combined with other Python packages, such as Matplotlib or Pandas, providing access
19
+ to Python's full coding power for interpreting and processing results without the need to install
20
+ additional software beyond NaxTo (see the Download and Homepage links on the left).
22
21
 
23
22
  **NaxToPy** is a powerful tool for FEM analysis post-processing!
24
23
 
25
- **CAUTION:** This version is only compatible with **NaxTo 2024.0.5**.
24
+ ---------------
25
+
26
+ ⚠️**Warning:** To use NaxToPy, [**NaxTo**](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US) must be installed.
27
+ This version is compatible with **NaxTo 2024.3**. It is compatible with all the steps of this version (2024.3.0, 2024.3.1).
26
28
  Check in _Programs and Features_ the NaxTo version that is installed.
27
29
 
30
+ 📘**Note:** If a specific NaxTo version is installed, search the [**NaxToPy History**](https://pypi.org/project/NaxToPy/2.2.1/#history) to find which newer version is compatible with it.
31
+
32
+
28
33
  ## Installation
29
34
 
35
+ If python is installed and `pip` is added to the PATH:
30
36
 
31
- If python is callable from the command line:
37
+ `pip install NaxToPy`
38
+
39
+ An alternative, if Python is callable from the command line:
32
40
 
33
- `py -m pip install NaxToPy`
41
+ `python -m pip install NaxToPy`
34
42
 
35
43
  For **Visual Studio** users:
36
44
  - Open "Python Environments" window
@@ -54,7 +62,7 @@ same directory. When ever you want to use the NaxToPy package add the following
54
62
 
55
63
  If python is callable from the command line:
56
64
 
57
- `py -m pip install -U NaxToPy`
65
+ `python -m pip install -U NaxToPy`
58
66
 
59
67
  For Visual Studio users:
60
68
  - Open "Python Environments" window
@@ -130,6 +138,74 @@ To see previous version see the pre-release versions in https://test.pypi.org/pr
130
138
  1. The method new_envelope_loadcase() now has the option to choose the envelope group. Which means the user can ask for
131
139
  the LoadCases that are critical or the Increment that is critical instead of the value.
132
140
 
141
+ ### v.2.0.0
142
+ 1. Changes made to align the library with updates in lower-level dependencies.
143
+ 2. New internal methods to look for the compatibility with low-level dependencies.
144
+ 3. The name of the .log is now NaxToPy_Year-Month-Day.log.
145
+
146
+ ### v.2.0.1
147
+ 1. The compatibility is extended to all NaxTo steps of the same version.
148
+ 2. The property N2PLoadCase.ActiveIncrement is subtitued by N2PLoadCase.ActiveN2PIncrement.
149
+ It uses an object instaed of an int.
150
+ 3. Update of the examples of some docstrings.
151
+
152
+ ### v.2.1.0
153
+ 1. Reading a Natran Input File: SPC and SCP1 are now supported.
154
+ 2. Bug fix. The order in the components in new_report() does not affect now.
155
+ 3. Formula check in new_derived_loadcase(), new_enevelope_loadcase() and new_derived_component().
156
+ 4. New optional arguments if n2ptoexe() to add extra libaries, packages or files.
157
+
158
+ ### v.2.1.1
159
+ 1. Two new methods in N2PModelContent: load_user_coord_sys_from_csv() and set_user_coord_sys().
160
+ Also, there is a new property for N2PElement and N2PNode: UserSystemArray. This update allow the
161
+ user to define a different coordinate system for each element or node. To ask for the results
162
+ in this system, the optional argument `coordsys` must be equal to `-20`.
163
+ 2. Bug fix: The checking for component and section in new_report() has been fixed. If a comma
164
+ appeared in the component or section name, the method failed.
165
+
166
+ ### v.2.1.2
167
+ 1. Internal change for speeding up the read of NastranInputFiles. Now the Nastran Cards are loaded
168
+ when they are asked and not all at once.
169
+ 2. Improvement in error handling and log writing.
170
+ 3. The function import_results_from_files() checks if the file exist. If not, it prints an error
171
+ but the execution doesn't crash.
172
+
173
+ ### v.2.2.0
174
+ 1. Feat: New module for fastener analysis: N2PGetFasteners.
175
+ 2. Feat: New module for fastener analysis: N2PGetLoadFasteners. Calculates forces in joints and bypass forces.
176
+ 3. Bug fix: When a NaxToPy executable file is used on a machine where NaxTo is installed, the libraries are selected accordingly.
177
+ 4. Feat: Hidden imports are now allowed in n2ptoexe.
178
+ 5. Bug fix: Fixed the rotation of the FORCES tensor. Now the QX and QY components (transverse shears) are calculated correctly.
179
+ 6. Refactor: The dictionary and list for Cards have been replaced with a lazy dictionary and a lazy list, improving execution efficiency.
180
+ 7. Refactor: Reading the mesh from binary files is now executed in parallel by default, as this approach is more memory-safe.
181
+
182
+ ### v.2.2.1
183
+ 1. BugFix: The method set_increment() is fixed.
184
+ 2. BugFix: Several bugfix (not in the result accuracy) are fixed in modules N2PGetFastener and N2PGetLoadsFastener. Several optimizations are included.
185
+ 3. Feat: Now the method get_load_case() admits a list of int and a list of string and return a list of N2PLoadCase.
186
+ 4. Refactor: N2P classes use __slots__ for security and optimization.
187
+ 5. Refactor: Complete refactor of the module that loads the NaxTo libraries.
188
+ 6. BugFix: in parallel mesh load with a small mesh and lot of results.
189
+ 7. BugFix: in sequential mesh load in op2.
190
+
191
+ ### v.2.2.2
192
+ 1. BugFix: Solved an issue in the Nastran Cards Dictionary
193
+ 2. BugFix: Solved the Prop atribute of an N2PElement in Abaqus
194
+ 3. Feat: Now is possible to create `N2PCoord` by the user with the `new_coordinate_system()` method.
195
+ 4. Feat: Now is possible to add to `element_nodal()` a list of N2PElement to unshew only the nodes of these elements.
196
+ 5. Feat: Now is possible to ask for results in a list of elements or nodes using the optional argument `filter_list`.
197
+ 6. Feat: When the user provides a coordinate system and two vectors (v1, v2) to specify the output results, the information
198
+ is redundant. The coordinate system will prevail.
199
+ 7. Feat: New properties supported: PBUSH, PFAST, PMASS, PELAS, PGAP, PWELD
200
+ 8. BugFix: The method get_elements_attached() is fixed so when there are MPC connectors with the same ID.
201
+
202
+ ### v.2.2.3
203
+ 1. Requirement: Now NaxToPy require the package [**h5py** ](https://pypi.org/project/h5py/).
204
+ 2. Feat: N2PGetLoadFastener now can use PAG method and display format.
205
+ 3. BugFix: Some bugs are solved in N2PGetFastener and N2PGetLoadFastener.
206
+ 4. Feat: N2PGetLoadFastener can export results in HDF5 format.
207
+ 5. BugFix: The filtering in the method get_result_by_LCs_Incr() in elements when results are in Corner Data is fixed.
208
+
133
209
  # Documentation
134
210
 
135
211
  **NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
@@ -138,6 +214,7 @@ NaxToPy only use three dependeces:
138
214
  - NumPy: https://numpy.org/
139
215
  - PythonNET: https://pythonnet.github.io/
140
216
  - Setuptools: https://setuptools.pypa.io/en/latest/index.html
217
+ - HDF5: https://www.h5py.org/
141
218
 
142
219
  ## Supported Files
143
220
 
@@ -148,7 +225,9 @@ NaxToPy only use three dependeces:
148
225
  - **Ansys:** .rst, .rth(beta)
149
226
 
150
227
  ### Input files:
151
- - **Nastran** (bdf)
228
+ - **Nastran** (.bdf)
229
+ - **Optistruct** (.fem)
230
+ - **Abaqus** (.inp)
152
231
 
153
232
  ## Initialize your model
154
233
 
@@ -209,7 +288,7 @@ loadcaseslist = model.LoadCases
209
288
  pressure_lc = model.get_load_case("pressure")
210
289
 
211
290
  # Change the active increment (by default is the last one):
212
- pressure_lc.ActiveIncrement = 10
291
+ pressure_lc.ActiveN2PIncrement = pressure_lc.get_increment(10)
213
292
 
214
293
  # Look for all results
215
294
  all_results = pressure_lc.Results
@@ -4,14 +4,14 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "NaxToPy"
7
- version = "1.5.6"
7
+ version = "2.2.3"
8
8
  license = {file = "LICENSE"}
9
9
  authors = [ { name = "Idaero Solutions", email = "manuel.sanchez@idaerosolutions.com" }, ]
10
10
  requires-python = ">=3.9"
11
- dependencies = ["pythonnet>=3.0.1",
11
+ dependencies = ["pythonnet>=3.0.3",
12
12
  "numpy>=1.22.0",
13
13
  "setuptools>=67.8.0",
14
- ]
14
+ "h5py>=3.12.1"]
15
15
  description = "Package for postprocessing FEM results in Python"
16
16
  readme = "README.md"
17
17
  classifiers = ["Intended Audience :: Science/Research",
@@ -7,7 +7,9 @@ setup(
7
7
  packages = find_packages(where="src"),
8
8
  package_dir = {"": "src"},
9
9
  include_package_data=True,
10
- data_files=[("NaxToPy", ["src/NaxToPy/NaxToPy.ico", "src/NaxToPy/user_functions.txt"])],
10
+ package_data={
11
+ "NaxToPy": ["NaxToPy.ico", "user_functions.txt"]
12
+ },
11
13
  url="https://www.idaerosolutions.com/Home/NaxToPy",
12
14
  download_url="https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US"
13
15
  )
@@ -0,0 +1,28 @@
1
+ from __future__ import annotations # For compatibility with Python 3.9 or higher
2
+
3
+ from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
4
+
5
+
6
+ class N2PEntity:
7
+ """Class created to add information under a Keyword. There is not a similar concept in Abaqus. It is used to define
8
+ nodes, elements and shells."""
9
+
10
+ def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
11
+ self.__info = info
12
+ self.__dictKeywordToN2P = dictKeywordToN2P
13
+ self.__dictEntityToN2P = dictEntityToN2P
14
+
15
+ @property
16
+ def KeywordParent(self) -> N2PKeyword:
17
+ """Keyword the entity belongs to. It always belongs to a keyword"""
18
+ return self.__dictKeywordToN2P[self.__info.KeywordParent]
19
+
20
+ @property
21
+ def KeywordIndex(self) -> int:
22
+ """Identification number of the Keyword ot belongs"""
23
+ return self.__info.KeywordIndex
24
+
25
+ @property
26
+ def Part(self) -> str:
27
+ """The part of an entity is always the part of the KeywordParent"""
28
+ return self.KeywordParent.Part
@@ -0,0 +1,19 @@
1
+ from __future__ import annotations # For compatibility with Python 3.9 or higher
2
+
3
+ from NaxToPy.Core.Classes.ABQEntities.N2PEntity import N2PEntity
4
+ from NaxToPy.Core.Classes.ABQEntities.N2PEntityNode import N2PEntityNode
5
+
6
+
7
+ class N2PEntityElement(N2PEntity):
8
+ def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
9
+ super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
10
+
11
+ @property
12
+ def ID(self) -> int:
13
+ """Element identification number"""
14
+ return self._N2PEntity__info.ID
15
+
16
+ @property
17
+ def NodeArray(self) -> list[N2PEntityNode, ]:
18
+ """Element identification number"""
19
+ return [self._N2PEntity__dictEntityToN2P[node] for node in self._N2PEntity__info.NodeArray]
@@ -0,0 +1,46 @@
1
+ from __future__ import annotations # For compatibility with Python 3.9 or higher
2
+
3
+ from NaxToPy.Core.Classes.ABQEntities.N2PEntity import N2PEntity
4
+
5
+
6
+ class N2PEntityNode(N2PEntity):
7
+
8
+ def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
9
+ super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
10
+
11
+ @property
12
+ def ID(self) -> int:
13
+ """Node identification number"""
14
+ return self._N2PEntity__info.ID
15
+
16
+ @property
17
+ def X1(self) -> float:
18
+ """First coordinate"""
19
+ return self._N2PEntity__info.ID
20
+
21
+ @property
22
+ def X2(self) -> float:
23
+ """Second coordinate"""
24
+ return self._N2PEntity__info.ID
25
+
26
+ @property
27
+ def X3(self) -> float:
28
+ """Third coordinate"""
29
+ return self._N2PEntity__info.ID
30
+
31
+ @property
32
+ def DirectionCosine1(self) -> float:
33
+ """First direction cosine of the normal at the node (Optional)"""
34
+ return self._N2PEntity__info.DirectionCosine1
35
+
36
+ @property
37
+ def DirectionCosine2(self) -> float:
38
+ """ Second direction cosine of the normal at the node (Optional)
39
+ For nodes entered a cylindrical or spherical system, this entry is an angle given in degrees."""
40
+ return self._N2PEntity__info.DirectionCosine2
41
+
42
+ @property
43
+ def DirectionCosine3(self) -> float:
44
+ """ Third direction cosine of the normal at the node (Optional)
45
+ For nodes entered a spherical system, this entry is an angle given in degrees."""
46
+ return self._N2PEntity__info.DirectionCosine3
@@ -0,0 +1,34 @@
1
+ from __future__ import annotations # For compatibility with Python 3.9 or higher
2
+
3
+ from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
4
+ from NaxToPy.Core.Classes.ABQEntities.N2PEntity import N2PEntity
5
+
6
+
7
+ class N2PEntityShell(N2PEntity):
8
+ def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
9
+ super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
10
+
11
+ @property
12
+ def Name(self) -> str:
13
+ """Name of the layer"""
14
+ return self._N2PEntity__info.Name
15
+
16
+ @property
17
+ def Thickness(self) -> float:
18
+ """Shell thickness"""
19
+ return self._N2PEntity__info.Thickness
20
+
21
+ @property
22
+ def IntegrationPoints(self) -> int:
23
+ """Number of integration points to be used through the shell section. Default: five for Simpson's rule and 3 for Gauss quadrature """
24
+ return self._N2PEntity__info.IntegrationPoints
25
+
26
+ @property
27
+ def Material(self) -> N2PKeyword:
28
+ """Node identification number"""
29
+ return self._N2PEntity__dictKeywordToN2P[self._N2PEntity__info.Material]
30
+
31
+ @property
32
+ def Orientation(self) -> N2PKeyword:
33
+ """Node identification number"""
34
+ return self._N2PEntity__dictKeywordToN2P.get(self._N2PEntity__info.Orientation)
@@ -0,0 +1,4 @@
1
+ from NaxToPy.Core.Classes.ABQEntities.N2PEntity import N2PEntity
2
+ from NaxToPy.Core.Classes.ABQEntities.N2PEntityNode import N2PEntityNode
3
+ from NaxToPy.Core.Classes.ABQEntities.N2PEntityElement import N2PEntityElement
4
+ from NaxToPy.Core.Classes.ABQEntities.N2PEntityShell import N2PEntityShell
@@ -0,0 +1,43 @@
1
+ from __future__ import annotations # For compatibility with Python 3.9 or higher
2
+
3
+ from NaxToPy.Core.Classes.N2PNastranInputData import N2PInputData
4
+
5
+
6
+ class N2PKeyword(N2PInputData):
7
+
8
+ def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
9
+ super().__init__(info)
10
+ self.__info = info
11
+ self.__dictKeywordToN2P = dictKeywordToN2P
12
+ self.__dictEntityToN2P = dictEntityToN2P
13
+
14
+ @property
15
+ def SuperKeyword(self) -> N2PKeyword:
16
+ """Keyword that this one depends on"""
17
+ return self._N2PKeyword__dictKeywordToN2P.get(self._N2PKeyword__info.SuperKeyword)
18
+
19
+ @property
20
+ def SubKeywords(self) -> list[N2PKeyword, ]:
21
+ """Keywords that depend on this one"""
22
+ if self._N2PKeyword__info.SubKeywords:
23
+ return [self._N2PKeyword__dictKeywordToN2P.get(keyword) for keyword in self._N2PKeyword__info.SubKeywords]
24
+ else:
25
+ return []
26
+
27
+ @property
28
+ def Part(self) -> str:
29
+ """Part of the keyword"""
30
+ return self.__info.Part
31
+
32
+ @property
33
+ def KeywordType(self) -> str:
34
+ return self.__info.KeywordType.ToString()
35
+
36
+ @property
37
+ def KeywordCode(self) -> str:
38
+ """Keyword code: the first field read from a keyword"""
39
+ return self.__info.KeywordCode
40
+
41
+ @property
42
+ def Parameters(self) -> dict:
43
+ return dict(self.__info.Parameters)
@@ -0,0 +1,30 @@
1
+ from __future__ import annotations # For compatibility with Python 3.9 or higher
2
+
3
+ from NaxToPy.Core.Classes.ABQKeywords.N2PKeywordELSET import N2PKeywordELSET
4
+ from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
5
+ from NaxToPy.Core.Classes.ABQEntities.N2PEntity import N2PEntity
6
+
7
+
8
+ class N2PKeywordBEAMSECTION(N2PKeyword):
9
+ def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
10
+ super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
11
+
12
+ @property
13
+ def Elset(self) -> N2PKeywordELSET:
14
+ """Set to which the property is applied"""
15
+ return self._N2PKeyword__dictKeywordToN2P[self._N2PKeyword_N2PKeyword__info.Elset]
16
+
17
+ @property
18
+ def Material(self) -> str:
19
+ """Material of the elements of the set"""
20
+ return self._N2PKeyword_N2PKeyword__info.Material
21
+
22
+ @property
23
+ def Name(self) -> str:
24
+ """Name given to the section"""
25
+ return self._N2PKeyword__info.Name
26
+
27
+ @property
28
+ def Section(self) -> N2PEntity:
29
+ """Description"""
30
+ return self._N2PKeyword__dictEntityToN2P[self._N2PKeyword__info.Section]
@@ -0,0 +1,40 @@
1
+ from __future__ import annotations # For compatibility with Python 3.9 or higher
2
+
3
+ from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
4
+ from NaxToPy.Core.Classes.ABQEntities.N2PEntityNode import N2PEntityNode
5
+ from NaxToPy.Core.Classes.ABQKeywords.N2PKeywordSURFACE import N2PKeywordSURFACE
6
+
7
+
8
+ class N2PKeywordCOUPLING(N2PKeyword):
9
+ def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
10
+ super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
11
+
12
+ @property
13
+ def RefNode(self) -> N2PEntityNode:
14
+ """Reference node of the coupling"""
15
+ return self._N2PKeyword__info.RefNode
16
+
17
+ @property
18
+ def Surface(self) -> N2PKeywordSURFACE:
19
+ """Surface defining the constrained nodes"""
20
+ return self._N2PKeyword__dictKeywordToN2P[self._N2PKeyword__info.Surface]
21
+
22
+ @property
23
+ def ConstrainedSpareNodes(self) -> list[N2PEntityNode, ]:
24
+ """Nodes defined in the coupling outside the surface"""
25
+ return list(self._N2PKeyword__info.ConstrainedSpareNodes)
26
+
27
+ @property
28
+ def ConstrainedNodes(self) -> list[N2PEntityNode, ]:
29
+ """All the nodes defined in the coupling"""
30
+ return list(self._N2PKeyword__info.ConstrainedNodes)
31
+
32
+ @property
33
+ def Name(self) -> str:
34
+ """Name of the Coupling"""
35
+ return self._N2PKeyword__info.Name
36
+
37
+ @property
38
+ def FreedomDegrees(self) -> list[str]:
39
+ """List with the degrees of freedom"""
40
+ return self._N2PKeyword__info.FreedomDegrees
@@ -0,0 +1,23 @@
1
+ from __future__ import annotations # For compatibility with Python 3.9 or higher
2
+
3
+ from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
4
+
5
+
6
+ class N2PKeywordDENSITY(N2PKeyword):
7
+ def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
8
+ super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
9
+
10
+ @property
11
+ def Density(self) -> float:
12
+ """Mass density [ML^-3]"""
13
+ return self._N2PKeyword__info.Density
14
+
15
+ @property
16
+ def Temperature(self) -> float:
17
+ """Temperature (optional)"""
18
+ return self._N2PKeyword__info.Temperature
19
+
20
+ @property
21
+ def FieldVariables(self) -> list[float]:
22
+ """Field variables (optional)"""
23
+ return list(self._N2PKeyword__info.FieldVariables)