NaxToPy 2.2.2__tar.gz → 3.0.0__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 (132) hide show
  1. {naxtopy-2.2.2/src/NaxToPy.egg-info → naxtopy-3.0.0}/PKG-INFO +27 -6
  2. {naxtopy-2.2.2 → naxtopy-3.0.0}/README.md +25 -5
  3. {naxtopy-2.2.2 → naxtopy-3.0.0}/pyproject.toml +2 -2
  4. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PComponent.py +128 -38
  5. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PElement.py +5 -2
  6. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PFreeBody.py +3 -2
  7. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PLoadCase.py +14 -13
  8. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PNastranInputData.py +200 -26
  9. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PProperty.py +185 -26
  10. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PResult.py +1 -10
  11. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Constants/Constants.py +11 -7
  12. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Errors/N2PLog.py +502 -17
  13. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/N2PModelContent.py +462 -106
  14. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +12 -2
  15. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/Joints/N2PAttachment.py +24 -19
  16. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/Joints/N2PBolt.py +26 -12
  17. naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/Joints/N2PFastenerSystem.py +357 -0
  18. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/Joints/N2PJoint.py +567 -189
  19. naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/Joints/N2PPlate.py +925 -0
  20. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/N2PGetFasteners.py +94 -119
  21. naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/N2PGetLoadFasteners.py +1215 -0
  22. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetAttachments.py +8 -9
  23. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetResults.py +9 -21
  24. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PInterpolation.py +4 -7
  25. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PLoadModel.py +2 -2
  26. naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +406 -0
  27. {naxtopy-2.2.2 → naxtopy-3.0.0/src/NaxToPy.egg-info}/PKG-INFO +27 -6
  28. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy.egg-info/SOURCES.txt +2 -10
  29. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy.egg-info/requires.txt +1 -0
  30. naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/Joints/N2PPlate.py +0 -454
  31. naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/N2PGetLoadFasteners.py +0 -582
  32. naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +0 -182
  33. naxtopy-2.2.2/src/NaxToPy/Modules/common/__init__.py +0 -2
  34. naxtopy-2.2.2/src/NaxToPy/Modules/common/material.py +0 -9
  35. naxtopy-2.2.2/src/NaxToPy/Modules/common/property.py +0 -9
  36. naxtopy-2.2.2/src/NaxToPy/Modules/handbooks/__init__.py +0 -2
  37. naxtopy-2.2.2/src/NaxToPy/Modules/handbooks/bruhn/__init__.py +0 -2
  38. naxtopy-2.2.2/src/NaxToPy/Modules/handbooks/cmh/__init__.py +0 -2
  39. naxtopy-2.2.2/src/NaxToPy/Modules/handbooks/esdu/__init__.py +0 -2
  40. naxtopy-2.2.2/src/NaxToPy/Modules/handbooks/hsb/__init__.py +0 -2
  41. naxtopy-2.2.2/src/NaxToPy/Modules/handbooks/nasa/__init__.py +0 -2
  42. {naxtopy-2.2.2 → naxtopy-3.0.0}/LICENSE +0 -0
  43. {naxtopy-2.2.2 → naxtopy-3.0.0}/setup.cfg +0 -0
  44. {naxtopy-2.2.2 → naxtopy-3.0.0}/setup.py +0 -0
  45. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntity.py +0 -0
  46. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityElement.py +0 -0
  47. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityNode.py +0 -0
  48. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityShell.py +0 -0
  49. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQEntities/__init__.py +0 -0
  50. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeyword.py +0 -0
  51. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordBEAMSECTION.py +0 -0
  52. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordCOUPLING.py +0 -0
  53. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDENSITY.py +0 -0
  54. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTING.py +0 -0
  55. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTINGCOUPLING.py +0 -0
  56. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELASTIC.py +0 -0
  57. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELEMENT.py +0 -0
  58. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELSET.py +0 -0
  59. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDINSTANCE.py +0 -0
  60. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDPART.py +0 -0
  61. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordINSTANCE.py +0 -0
  62. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATIC.py +0 -0
  63. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATICCOUPLING.py +0 -0
  64. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordMATERIAL.py +0 -0
  65. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNODE.py +0 -0
  66. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNSET.py +0 -0
  67. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordORIENTATION.py +0 -0
  68. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPART.py +0 -0
  69. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPLASTIC.py +0 -0
  70. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSHELLSECTION.py +0 -0
  71. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSOLIDSECTION.py +0 -0
  72. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSURFACE.py +0 -0
  73. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/__init__.py +0 -0
  74. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/AllClasses.py +0 -0
  75. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PAbaqusInputData.py +0 -0
  76. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PConnector.py +0 -0
  77. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PCoord.py +0 -0
  78. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PIncrement.py +0 -0
  79. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PMaterial.py +0 -0
  80. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PNode.py +0 -0
  81. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PReport.py +0 -0
  82. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PSection.py +0 -0
  83. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PSet.py +0 -0
  84. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ProgresBar.py +0 -0
  85. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/__init__.py +0 -0
  86. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Constants/__init__.py +0 -0
  87. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Constants/librerias.py +0 -0
  88. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Errors/N2PColors.py +0 -0
  89. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Errors/N2PFileHandler.py +0 -0
  90. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Errors/__init__.py +0 -0
  91. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/Reference_Finder/__init__.py +0 -0
  92. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/_AuxFunc/_NetToPython.py +0 -0
  93. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/_AuxFunc/__init__.py +0 -0
  94. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Core/__init__.py +0 -0
  95. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/Joints/__init__.py +0 -0
  96. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/N2PFastenerAnalysis.py +0 -0
  97. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/N2PUpdateFastener.py +0 -0
  98. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/__init__.py +0 -0
  99. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/__init__.py +0 -0
  100. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/__init__.py +0 -0
  101. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Check/Validation.py +0 -0
  102. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/AR1DElement.py +0 -0
  103. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARAttachment.py +0 -0
  104. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARBolt.py +0 -0
  105. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlate.py +0 -0
  106. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlateElements.py +0 -0
  107. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/__init__.py +0 -0
  108. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARAuxiliarFunctions.py +0 -0
  109. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARBilinearInterpolation.py +0 -0
  110. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARConfigurationInput.py +0 -0
  111. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARDerivedLoadCases.py +0 -0
  112. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARFileInputRivetsIDs.py +0 -0
  113. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetAttachments.py +0 -0
  114. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetBolts.py +0 -0
  115. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARReadResultsFromFile.py +0 -0
  116. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARResults.py +0 -0
  117. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARRotation.py +0 -0
  118. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARSerialize.py +0 -0
  119. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/__init__.py +0 -0
  120. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/__init__.py +0 -0
  121. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/__init__.py +0 -0
  122. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/__init__.py +0 -0
  123. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/N2PEnvelope/N2PEnvelope.py +0 -0
  124. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/N2PEnvelope/__init__.py +0 -0
  125. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/N2PtoEXE/N2PtoEXE.py +0 -0
  126. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/N2PtoEXE/__init__.py +0 -0
  127. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/Modules/__init__.py +0 -0
  128. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/NaxToPy.ico +0 -0
  129. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/__init__.py +0 -0
  130. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy/user_functions.txt +0 -0
  131. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy.egg-info/dependency_links.txt +0 -0
  132. {naxtopy-2.2.2 → naxtopy-3.0.0}/src/NaxToPy.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: NaxToPy
3
- Version: 2.2.2
3
+ Version: 3.0.0
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
@@ -121,12 +121,13 @@ License-File: LICENSE
121
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
124
125
  Dynamic: download-url
125
126
  Dynamic: home-page
126
127
 
127
128
  [![Idaero](https://img.shields.io/badge/powered%20by-Idaero%20Solutions-299797)](https://idaerosolutions.com)
128
129
  [![PyPi](https://img.shields.io/pypi/v/NaxToPy?color=ffd500)](https://pypi.org/project/NaxToPy/)
129
- [![Python](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12-00699d)](https://www.python.org/downloads/)
130
+ [![Python](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-00699d)](https://www.python.org/downloads/)
130
131
  ![License](https://img.shields.io/badge/license-proprietary-red)
131
132
  [![MicrosoftStore](https://img.shields.io/badge/Microsoft%20Store-NaxTo-blue?logo=microsoftstore&logoColor=blue&labelColor=lightgrey)](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US)
132
133
  [![PyPi - Downloads](https://img.shields.io/pypi/dm/NaxToPy?color=dgreen)](https://pypi.org/project/NaxToPy/#files)
@@ -150,10 +151,10 @@ additional software beyond NaxTo (see the Download and Homepage links on the lef
150
151
  ---------------
151
152
 
152
153
  ⚠️**Warning:** To use NaxToPy, [**NaxTo**](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US) must be installed.
153
- This version is compatible with **NaxTo 2024.3**. It is compatible with all the steps of this version (2024.3.0, 2024.3.1).
154
+ This version is compatible with **NaxTo 2025.0**.
154
155
  Check in _Programs and Features_ the NaxTo version that is installed.
155
156
 
156
- 📘**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.
157
+ 📘**Note:** If a specific NaxTo version is installed, search the [**NaxToPy History**](https://pypi.org/project/NaxToPy/3.0.0/#history) to find which newer version is compatible with it.
157
158
 
158
159
 
159
160
  ## Installation
@@ -325,6 +326,22 @@ is redundant. The coordinate system will prevail.
325
326
  7. Feat: New properties supported: PBUSH, PFAST, PMASS, PELAS, PGAP, PWELD
326
327
  8. BugFix: The method get_elements_attached() is fixed so when there are MPC connectors with the same ID.
327
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
+
336
+ ### v.3.0.0
337
+ 1. Feat: Now it is supported more properties from Nastran: PBAR, PBARL, PBEAM, PBEAML, PBUSH, PWELD, PELAS, PFAST, PMASS, PGAP. They are kept as N2PBeam, N2PBeamL, N2PBush, N2PWeld, N2PElas, N2PFast, N2PMass, N2PGap.
338
+ 2. Feat: Now it is supported more properties from Abaqus: *BEAM SECTION and *BEAM GENERAL SECTION as N2PBeamL and N2PBeam.
339
+ 3. Feat: Overloaded `get_result_by_LCs_Incr()` to accept a list of components. It load multiple components and load cases of the same result in parallel, improving efficiency.
340
+ 4. Feat: New property N2PComp.EqQBenMatrix that returns the equivalent stifness matrix for bending.
341
+ 5. Feat: Added `N2PComp.EqMemProps` and `N2PComp.EqBenProps` properties to return equivalent engineering values (Ex, Ey, G, and ν) for membrane and bending behavior, respectively.
342
+ 6. Feat: Added two new methods in `N2PModelContent`: `get_material()` and `get_property()` to search easelly for materials and properties.
343
+ 7. Feat: new method in `N2PModelContent`: `get_elements_filtered()`. It returns a list of `N2PElement` that matches a material, property, part or type-element.
344
+ 8. Feat: New checks in the results methods to avoid invalid parameters.
328
345
 
329
346
  # Documentation
330
347
 
@@ -334,6 +351,7 @@ NaxToPy only use three dependeces:
334
351
  - NumPy: https://numpy.org/
335
352
  - PythonNET: https://pythonnet.github.io/
336
353
  - Setuptools: https://setuptools.pypa.io/en/latest/index.html
354
+ - HDF5: https://www.h5py.org/
337
355
 
338
356
  ## Supported Files
339
357
 
@@ -542,7 +560,10 @@ For more documentation visit https://idaerosolutions.com/Home/NaxToPy
542
560
 
543
561
  Reference Guide at: https://www.idaerosolutions.com/NaxToPyDoc/NaxToPy.html
544
562
 
545
-
546
563
  # License
547
564
 
548
- Copyright is owned by Idaero Solutions©
565
+ See the license in Python\Lib\site-packages\NaxToPy-{version}.dist-info\LICENSE or executing the command `python -m pip show NaxToPy`
566
+
567
+ -------------
568
+
569
+ <p align="center"> <img src="https://www.idaerosolutions.com/images/web/Idaero.png" alt="Idaero Icon" width=200></p><div align="center">© 2025 Idaero Solutions S.L. All rights reserved.</div>
@@ -1,6 +1,6 @@
1
1
  [![Idaero](https://img.shields.io/badge/powered%20by-Idaero%20Solutions-299797)](https://idaerosolutions.com)
2
2
  [![PyPi](https://img.shields.io/pypi/v/NaxToPy?color=ffd500)](https://pypi.org/project/NaxToPy/)
3
- [![Python](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12-00699d)](https://www.python.org/downloads/)
3
+ [![Python](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-00699d)](https://www.python.org/downloads/)
4
4
  ![License](https://img.shields.io/badge/license-proprietary-red)
5
5
  [![MicrosoftStore](https://img.shields.io/badge/Microsoft%20Store-NaxTo-blue?logo=microsoftstore&logoColor=blue&labelColor=lightgrey)](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US)
6
6
  [![PyPi - Downloads](https://img.shields.io/pypi/dm/NaxToPy?color=dgreen)](https://pypi.org/project/NaxToPy/#files)
@@ -24,10 +24,10 @@ additional software beyond NaxTo (see the Download and Homepage links on the lef
24
24
  ---------------
25
25
 
26
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).
27
+ This version is compatible with **NaxTo 2025.0**.
28
28
  Check in _Programs and Features_ the NaxTo version that is installed.
29
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.
30
+ 📘**Note:** If a specific NaxTo version is installed, search the [**NaxToPy History**](https://pypi.org/project/NaxToPy/3.0.0/#history) to find which newer version is compatible with it.
31
31
 
32
32
 
33
33
  ## Installation
@@ -199,6 +199,22 @@ is redundant. The coordinate system will prevail.
199
199
  7. Feat: New properties supported: PBUSH, PFAST, PMASS, PELAS, PGAP, PWELD
200
200
  8. BugFix: The method get_elements_attached() is fixed so when there are MPC connectors with the same ID.
201
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
+
209
+ ### v.3.0.0
210
+ 1. Feat: Now it is supported more properties from Nastran: PBAR, PBARL, PBEAM, PBEAML, PBUSH, PWELD, PELAS, PFAST, PMASS, PGAP. They are kept as N2PBeam, N2PBeamL, N2PBush, N2PWeld, N2PElas, N2PFast, N2PMass, N2PGap.
211
+ 2. Feat: Now it is supported more properties from Abaqus: *BEAM SECTION and *BEAM GENERAL SECTION as N2PBeamL and N2PBeam.
212
+ 3. Feat: Overloaded `get_result_by_LCs_Incr()` to accept a list of components. It load multiple components and load cases of the same result in parallel, improving efficiency.
213
+ 4. Feat: New property N2PComp.EqQBenMatrix that returns the equivalent stifness matrix for bending.
214
+ 5. Feat: Added `N2PComp.EqMemProps` and `N2PComp.EqBenProps` properties to return equivalent engineering values (Ex, Ey, G, and ν) for membrane and bending behavior, respectively.
215
+ 6. Feat: Added two new methods in `N2PModelContent`: `get_material()` and `get_property()` to search easelly for materials and properties.
216
+ 7. Feat: new method in `N2PModelContent`: `get_elements_filtered()`. It returns a list of `N2PElement` that matches a material, property, part or type-element.
217
+ 8. Feat: New checks in the results methods to avoid invalid parameters.
202
218
 
203
219
  # Documentation
204
220
 
@@ -208,6 +224,7 @@ NaxToPy only use three dependeces:
208
224
  - NumPy: https://numpy.org/
209
225
  - PythonNET: https://pythonnet.github.io/
210
226
  - Setuptools: https://setuptools.pypa.io/en/latest/index.html
227
+ - HDF5: https://www.h5py.org/
211
228
 
212
229
  ## Supported Files
213
230
 
@@ -416,7 +433,10 @@ For more documentation visit https://idaerosolutions.com/Home/NaxToPy
416
433
 
417
434
  Reference Guide at: https://www.idaerosolutions.com/NaxToPyDoc/NaxToPy.html
418
435
 
419
-
420
436
  # License
421
437
 
422
- Copyright is owned by Idaero Solutions©
438
+ See the license in Python\Lib\site-packages\NaxToPy-{version}.dist-info\LICENSE or executing the command `python -m pip show NaxToPy`
439
+
440
+ -------------
441
+
442
+ <p align="center"> <img src="https://www.idaerosolutions.com/images/web/Idaero.png" alt="Idaero Icon" width=200></p><div align="center">© 2025 Idaero Solutions S.L. All rights reserved.</div>
@@ -4,14 +4,14 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "NaxToPy"
7
- version = "2.2.2"
7
+ version = "3.0.0"
8
8
  license = {file = "LICENSE"}
9
9
  authors = [ { name = "Idaero Solutions", email = "manuel.sanchez@idaerosolutions.com" }, ]
10
10
  requires-python = ">=3.9"
11
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",
@@ -4,6 +4,7 @@ import gc
4
4
  from array import array
5
5
  import numpy as np
6
6
  from typing import Union
7
+ import ctypes
7
8
 
8
9
  from NaxToModel import N2ParamInputResults
9
10
  from NaxToModel import N2TensorTransformation
@@ -162,7 +163,7 @@ class N2PComponent:
162
163
  #resultsParameters.coordSys = -10
163
164
  #orientationcoordinatesystem = algo
164
165
 
165
- resultsParameters = self._create_n2paraminputresult(sections, aveSections, cornerData, aveNodes, variation,
166
+ resultsParameters = self._create_n2paraminputresult(None, sections, aveSections, cornerData, aveNodes, variation,
166
167
  realPolar, coordsys, v1, v2)
167
168
  results = list(
168
169
  self._result_father._loadCase_father._modelFather._N2PModelContent__vzmodel.CalculateArrayLastResult(
@@ -254,7 +255,7 @@ class N2PComponent:
254
255
  >>> # N2PComponent is a N2PLoadCase.get_results("STRESSES").get_component("XX")
255
256
  >>> stress_array, where = N2PComponent.get_result_ndarray(v1=(-1, 0, 0), v2=(0, -1, 0))
256
257
  """
257
- resultsParameters = self._create_n2paraminputresult(sections, aveSections, cornerData, aveNodes, variation,
258
+ resultsParameters = self._create_n2paraminputresult(None, sections, aveSections, cornerData, aveNodes, variation,
258
259
  realPolar, coordsys, v1, v2)
259
260
 
260
261
  results = \
@@ -399,34 +400,83 @@ class N2PComponent:
399
400
  # # ------------------------------------------------------------------------------------------------------------------
400
401
 
401
402
  # Método que devuelve un diccionario con la tupla (LC, Incr) como clave y una lista de resultados como valor -------
402
- def _get_result_by_LCs_Incr(self, list_lc_incr: list[tuple["N2PLoadCase", "N2PIncrement"],...],
403
+ def _get_result_by_LCs_Incr(self, list_lc_incr: list[tuple["N2PLoadCase", "N2PIncrement"],...], components = None,
403
404
  sections=None, aveSections=-1, cornerData=False, aveNodes=-1, variation=100,
404
405
  realPolar=0, coordsys: int = -1000,
405
406
  v1: tuple = (1,0,0), v2: tuple = (0,1,0),
406
- filter_list: list = None) -> dict[tuple: list[float,...]]:
407
+ filter_list: list = None) -> dict[tuple: list[float]]:
407
408
 
408
- formula = self._create_formula(list_lc_incr)
409
-
410
- if not formula:
411
- return None
412
-
413
- resultsParameters = self._create_n2paraminputresult(sections, aveSections, cornerData, aveNodes, variation,
414
- realPolar, coordsys, v1, v2)
415
-
416
- cs_dict = self._result_father._loadCase_father._modelFather._N2PModelContent__vzmodel.CalculateArrayLastResult(
417
- formula, resultsParameters, 0)
409
+ py_dict = {} # Dictionary that is going to be returned.
410
+ first_shoot = True
411
+ i = 0
412
+ n_opt = 0
413
+ n_lcs = len(list_lc_incr)
418
414
 
419
- if filter_list:
420
- ii_map = [item.InternalID for item in filter_list]
421
- else:
422
- ii_map = None
423
-
424
- py_dict = {(int(key.split(":")[0].replace("DoF_LCD", "-").replace("DoF_LC", "")),
425
- int(key.split(":")[1][2:])): self._filter_array(np.array(value, np.float64), filter_list, None, ii_map, cornerData)
426
- for key, value in dict(cs_dict[0]).items()}
427
-
428
- del cs_dict
429
- gc.collect()
415
+ # A first shoot with a block of 5 load cases is made. The memory used in the process wil be measured
416
+ # using the function _get_memory_usage(). Acording to de memory used, the optimum number of load cases
417
+ # per block will be claculated and the remain load cases will be launched in blocks.
418
+ while i < n_lcs:
419
+
420
+ if first_shoot:
421
+ formula = self._create_formula(list_lc_incr[0:5])
422
+ else:
423
+ formula = self._create_formula(list_lc_incr[i : i + n_opt])
424
+
425
+ if not formula:
426
+ return None
427
+
428
+ if components is None: components = [None]
429
+ for component in components:
430
+ resultsParameters = self._create_n2paraminputresult(component, sections, aveSections, cornerData, aveNodes, variation,
431
+ realPolar, coordsys, v1, v2)
432
+
433
+ if first_shoot:
434
+ _, available_memory, initial_memory = _get_memory_usage()
435
+
436
+ cs_dict = self._result_father._loadCase_father._modelFather._N2PModelContent__vzmodel.CalculateArrayLastResult(
437
+ formula, resultsParameters, 0)
438
+
439
+ if filter_list and not cornerData:
440
+ ii_map = [item.InternalID for item in filter_list]
441
+ elif filter_list and cornerData:
442
+ if isinstance(filter_list[0], N2PElement):
443
+ ii_map = list(self._result_father._loadCase_father._modelFather.elementnodal(filter_list).keys())
444
+ else:
445
+ N2PLog.Error.E234()
446
+ else:
447
+ ii_map = None
448
+
449
+ if not components[0]:
450
+ py_dict_aux = {
451
+ (int(key.split(":")[0].replace("DoF_LCD", "-").replace("DoF_LC", "")), int(key.split(":")[1][2:])) :
452
+ self._filter_array(np.array(value, np.float64), filter_list, None, ii_map, cornerData)
453
+ for key, value in dict(cs_dict[0]).items()
454
+ }
455
+ else:
456
+ py_dict_aux = {
457
+ (int(key.split(":")[0].replace("DoF_LCD", "-").replace("DoF_LC", "")), int(key.split(":")[1][2:]), component) :
458
+ self._filter_array(np.array(value, np.float64), filter_list, None, ii_map, cornerData)
459
+ for key, value in dict(cs_dict[0]).items()
460
+ }
461
+
462
+ del cs_dict
463
+ self._result_father._loadCase_father._modelFather.clear_results_memory()
464
+ py_dict.update(py_dict_aux)
465
+
466
+ # Clear memomry
467
+ py_dict_aux.clear()
468
+ gc.collect()
469
+
470
+ if first_shoot:
471
+ _, _, final_memory = _get_memory_usage()
472
+ used_memory = final_memory - initial_memory
473
+ # Minimum number is fixed to 100
474
+ used_memory = used_memory if used_memory > 100 else 100
475
+ n_opt = int(available_memory*0.9/used_memory*5)
476
+ i = 5
477
+ first_shoot = False
478
+ else:
479
+ i += n_opt
430
480
 
431
481
  return py_dict
432
482
  # ------------------------------------------------------------------------------------------------------------------
@@ -452,7 +502,7 @@ class N2PComponent:
452
502
  # ------------------------------------------------------------------------------------------------------------------
453
503
 
454
504
  # Metodo que crea el N2ParamInputResult ----------------------------------------------------------------------------
455
- def _create_n2paraminputresult(self, sections, aveSections, cornerData, aveNodes, variation,
505
+ def _create_n2paraminputresult(self, component, sections, aveSections, cornerData, aveNodes, variation,
456
506
  realPolar, coordsys, v1, v2) -> N2ParamInputResults:
457
507
 
458
508
  # Aqui comprobamos que si queremos hacer una transformacion y si esta es posible:
@@ -478,19 +528,22 @@ class N2PComponent:
478
528
 
479
529
  else:
480
530
  # If coordsys doesn't match any known case, log an error and return failure
481
- N2PLog.Error.E220()
482
- return (-1, 'NO RESULTS')
531
+ msg = N2PLog.Error.E220()
532
+ raise Exception(msg)
483
533
 
484
534
  elif not self.IsTransformable and (coordsys != -1000 or (v1 != (1, 0, 0) or v2 != (0, 1, 0))):
485
- N2PLog.Error.E219()
486
- return (-1, 'NO RESULTS')
535
+ msg = N2PLog.Error.E219()
536
+ raise Exception(msg)
487
537
 
488
538
  else:
489
539
  # Initializer if it is no transformable
490
540
  resultsParameters = N2ParamInputResults.structResults(0)
491
541
 
492
542
  # Component Selected
493
- resultsParameters.Component = str(self.Name)
543
+ if component:
544
+ resultsParameters.Component = component
545
+ else:
546
+ resultsParameters.Component = str(self.Name)
494
547
 
495
548
  # Entity Selection (So Far 'ALL')
496
549
  resultsParameters.IdsEntities = ''
@@ -518,15 +571,25 @@ class N2PComponent:
518
571
  sectionParam += str(section.Name) + '#'
519
572
  else:
520
573
  if not isinstance(sections, list):
521
- N2PLog.Error.E218()
574
+ msg = N2PLog.Error.E218()
575
+ raise TypeError(msg)
576
+ actual_sections = {s.Name for s in self.Sections}
522
577
  for section in sections:
523
578
  if type(section) is N2PSection:
524
579
  sectionParam += str(section.Name) + '#'
525
580
  else:
526
- sectionParam += str(section) + '#'
581
+ if section in actual_sections:
582
+ sectionParam += str(section) + '#'
583
+ else:
584
+ msg = N2PLog.Error.E238(section, actual_sections)
585
+ raise Exception(msg)
527
586
 
528
587
  resultsParameters.sectPoint = sectionParam
529
588
 
589
+ avasectionsupported = (-1, -2, -3, -4, -6)
590
+ if aveSections not in avasectionsupported:
591
+ msg = N2PLog.Error.E237(aveSections, avasectionsupported)
592
+ raise Exception(msg)
530
593
  resultsParameters.aveSection = aveSections
531
594
 
532
595
  # CornerData Selection, Average & Variation
@@ -534,8 +597,8 @@ class N2PComponent:
534
597
 
535
598
  _aveIntraSupported = (0, -1, -2, -3, -6)
536
599
  if (aveNodes not in _aveIntraSupported):
537
- N2PLog.Error.E236(aveNodes, _aveIntraSupported)
538
- return (-1)
600
+ msg = N2PLog.Error.E236(aveNodes, _aveIntraSupported)
601
+ raise Exception(msg)
539
602
  else:
540
603
  resultsParameters.aveIntra = aveNodes
541
604
 
@@ -549,9 +612,10 @@ class N2PComponent:
549
612
  resultsParameters.variation = variation
550
613
 
551
614
  # Real/Imaginary or Magnitude/Phase
552
- __complexSupported__ = (0, 1, 2)
553
- if (realPolar not in __complexSupported__):
554
- return (-1)
615
+ __complexSupported = (0, 1, 2)
616
+ if (realPolar not in __complexSupported):
617
+ msg = N2PLog.Error.E239(realPolar, __complexSupported)
618
+ raise Exception(msg)
555
619
  else:
556
620
  resultsParameters.real_cartesian_polar = realPolar
557
621
 
@@ -610,3 +674,29 @@ def _get_axis(v1: Union[tuple, np.ndarray], v2: Union[tuple, np.ndarray]) -> np.
610
674
  y = np.cross(z, v1)
611
675
 
612
676
  return np.vstack((v1, y, z))
677
+
678
+ def _get_memory_usage() -> tuple[float, float, float]:
679
+ """Returns total_memory, available_memory, used_memory in MB"""
680
+
681
+ class MEMORYSTATUSEX(ctypes.Structure):
682
+ _fields_ = [
683
+ ("dwLength", ctypes.c_ulong),
684
+ ("dwMemoryLoad", ctypes.c_ulong),
685
+ ("ullTotalPhys", ctypes.c_ulonglong),
686
+ ("ullAvailPhys", ctypes.c_ulonglong),
687
+ ("ullTotalPageFile", ctypes.c_ulonglong),
688
+ ("ullAvailPageFile", ctypes.c_ulonglong),
689
+ ("ullTotalVirtual", ctypes.c_ulonglong),
690
+ ("ullAvailVirtual", ctypes.c_ulonglong),
691
+ ("sullAvailExtendedVirtual", ctypes.c_ulonglong),
692
+ ]
693
+
694
+ memory_status = MEMORYSTATUSEX()
695
+ memory_status.dwLength = ctypes.sizeof(MEMORYSTATUSEX)
696
+ ctypes.windll.kernel32.GlobalMemoryStatusEx(ctypes.byref(memory_status))
697
+
698
+ total_memory = memory_status.ullTotalPhys / (1024 ** 2) # Convert to MB
699
+ available_memory = memory_status.ullAvailPhys / (1024 ** 2) # Convert to MB
700
+ used_memory = total_memory - available_memory
701
+
702
+ return total_memory, available_memory, used_memory
@@ -59,11 +59,14 @@ class N2PElement:
59
59
 
60
60
  # Metodo para obtener la propiedad del elemento --------------------------------------------------------------------------------
61
61
  @property
62
- def Prop(self) -> Union[int, str]:
62
+ def Prop(self) -> Union[tuple[int, str], tuple[str, str]]:
63
63
  id_prop = int(self.__info.prop)
64
64
  if self.__model.Solver == "Abaqus":
65
65
  id_prop = self.__model._N2PModelContent__propertyIDtoStr.get(id_prop)
66
- return id_prop
66
+ part = "ASSEMBLY"
67
+ else:
68
+ part = self.PartID
69
+ return (id_prop, part)
67
70
  # ------------------------------------------------------------------------------------------------------------------
68
71
 
69
72
  # Metodo para obtener el material del elemento ---------------------------------------------------------------------
@@ -74,6 +74,7 @@ class N2PFreeBody(object):
74
74
 
75
75
  # Llamada al constructor de NaxToModel
76
76
  n2fbdsection = N2FBDSection(self.__name)
77
+ n2fbdsection.OpenFile = self.__model._N2PModelContent__vzmodel
77
78
 
78
79
  # Se incluye la parte:
79
80
  n2fbdsection.NodesPartID = self.__model._N2PModelContent__StrPartToID.get(self.__nodelist[0].PartID, 0)
@@ -101,14 +102,14 @@ class N2PFreeBody(object):
101
102
  n2fbdsection.ElementsId.Add(element.ID)
102
103
 
103
104
  # Instancio un objeto de la clase N2FBD
104
- n2fbd = N2FBD(self.__model._N2PModelContent__vzmodel, n2fbdsection)
105
+ n2fbd = N2FBD(n2fbdsection)
105
106
 
106
107
  # Le añado los casos de carga y los incrementos:
107
108
  listacasos = System.Collections.Generic.List[System.Int32]()
108
109
  listaframes = System.Collections.Generic.List[System.Int32]()
109
110
  listacasos.Add(self.__loadcase.ID)
110
111
  listaframes.Add(self.__increment.ID)
111
- n2fbd.AddLCandFrame(listacasos, listaframes, 0)
112
+ n2fbd.GetGpforcesLcInc(listacasos, listaframes)
112
113
 
113
114
  # Ejecuto el métedo que calcula las resultantes (por fin)
114
115
  # tuple_lc_inc = System.Tuple[System.Int32](self.__loadcase.ID, self.__increment.ID)
@@ -17,7 +17,6 @@ class N2PLoadCase:
17
17
  NumIncrements: int.
18
18
  ActiveN2PIncrement: N2PIncrement.
19
19
  TypeLC: int.
20
- IsComplex: bool.
21
20
  InternalID: int.
22
21
  """
23
22
 
@@ -26,7 +25,6 @@ class N2PLoadCase:
26
25
  "__idoriginal",
27
26
  "__increments",
28
27
  "__incrementsnumberlist",
29
- "__iscomplex",
30
28
  "__lctype",
31
29
  "__namelc",
32
30
  "__results",
@@ -37,11 +35,12 @@ class N2PLoadCase:
37
35
  "__n2loadcase",
38
36
  "__increments_by_name",
39
37
  "__increments_by_id",
38
+ "__ref_temp"
40
39
  )
41
40
 
42
41
 
43
42
  # Constructor de N2PLoadCase ---------------------------------------------------------------------------------------
44
- def __init__(self, id_lc, id_original, increments, increments_number_list, is_complex, lc_type, name, results,
43
+ def __init__(self, id_lc, id_original, increments, increments_number_list, lc_type, name, results,
45
44
  solution_type, solver, model_father, n2loadcase):
46
45
  '''Python Load Case Constructor
47
46
  Input:
@@ -49,7 +48,6 @@ class N2PLoadCase:
49
48
  IDOriginal: int -> Original Identification Number of the Load Case
50
49
  Increments: list[N2Increment] -> list with instances of N2Increment
51
50
  IncrementsNumberList: list[int] -> list with the number associated to each increment
52
- IsComplex: bool -> boolean value. True if the LC is associated to a complex LC
53
51
  LCType: str -> Type of solution applied in the load case
54
52
  Name : str -> Name of the load case
55
53
  Solver : str -> Solver of the load case
@@ -64,7 +62,6 @@ class N2PLoadCase:
64
62
  self.__increments = [N2PIncrement(increments[i]) for i in range(0, len(increments))]
65
63
 
66
64
  self.__incrementsnumberlist = increments_number_list
67
- self.__iscomplex = is_complex
68
65
  self.__lctype = lc_type
69
66
  self.__namelc = name
70
67
  self.__results = {results[i].Name: N2PResult(
@@ -73,7 +70,6 @@ class N2PLoadCase:
73
70
  results[i].derivedComps,
74
71
  results[i].Description,
75
72
  results[i].elemTypes,
76
- results[i].fcode,
77
73
  results[i].Name,
78
74
  self) for i in range(0, len(results))}
79
75
 
@@ -85,6 +81,7 @@ class N2PLoadCase:
85
81
 
86
82
  self.__increments_by_name = dict()
87
83
  self.__increments_by_id = dict()
84
+ self.__ref_temp: float = None
88
85
  # ------------------------------------------------------------------------------------------------------------------
89
86
 
90
87
  # Metodo para obtener el numero de identificacion interno del caso de carga ----------------------------------------
@@ -114,13 +111,6 @@ class N2PLoadCase:
114
111
  return self.__increments
115
112
  # ------------------------------------------------------------------------------------------------------------------
116
113
 
117
- # Metodo para obtener si un caso de carga esta asociado a una solucion compleja ------------------------------------
118
- @property
119
- def IsComplex(self) -> bool:
120
- """Returns a boolean indicating whether the load case is associated to a complex solution"""
121
- return bool(self.__iscomplex)
122
- # ------------------------------------------------------------------------------------------------------------------
123
-
124
114
  # Metodo para obtener el tipo de caso de Carga ---------------------------------------------------------------------
125
115
  @property
126
116
  def TypeLC(self) -> str:
@@ -206,6 +196,17 @@ class N2PLoadCase:
206
196
  return str(self.__n2loadcase.PathFile)
207
197
  # ------------------------------------------------------------------------------------------------------------------
208
198
 
199
+ # Propiedad que devulve la temperatura de referencia ---------------------------------------------------------------
200
+ @property
201
+ def RefTemp(self) -> float:
202
+ """Returns the reference temperature of the load case"""
203
+ return self.__ref_temp
204
+
205
+ @RefTemp.setter
206
+ def RefTemp(self, value) -> None:
207
+ self.__ref_temp = value
208
+ # ------------------------------------------------------------------------------------------------------------------
209
+
209
210
  # Metodo para obtener los incrementos disponibles en el caso de carga ----------------------------------------------
210
211
  def get_increments(self, id: Union[int, str]) -> N2PIncrement:
211
212
  ''' Returns the N2PIncrement object with the id=ID or the id=Name of the Increment