NaxToPy 2.2.3__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 (135) hide show
  1. {naxtopy-2.2.3/src/NaxToPy.egg-info → naxtopy-3.0.0}/PKG-INFO +20 -7
  2. {naxtopy-2.2.3 → naxtopy-3.0.0}/README.md +19 -6
  3. {naxtopy-2.2.3 → naxtopy-3.0.0}/pyproject.toml +1 -1
  4. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PComponent.py +127 -42
  5. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PElement.py +5 -2
  6. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PFreeBody.py +3 -2
  7. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PLoadCase.py +14 -13
  8. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PNastranInputData.py +200 -26
  9. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PProperty.py +185 -26
  10. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PResult.py +1 -10
  11. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Constants/Constants.py +9 -6
  12. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Errors/N2PLog.py +267 -91
  13. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/N2PModelContent.py +452 -95
  14. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +12 -2
  15. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/Joints/N2PAttachment.py +6 -0
  16. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/Joints/N2PBolt.py +14 -0
  17. naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/Joints/N2PFastenerSystem.py +357 -0
  18. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/Joints/N2PJoint.py +55 -1
  19. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/Joints/N2PPlate.py +38 -0
  20. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/N2PGetFasteners.py +26 -1
  21. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/N2PGetLoadFasteners.py +69 -31
  22. {naxtopy-2.2.3 → naxtopy-3.0.0/src/NaxToPy.egg-info}/PKG-INFO +20 -7
  23. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy.egg-info/SOURCES.txt +2 -16
  24. naxtopy-2.2.3/src/NaxToPy/Modules/N2PNeuber/N2PNeuber.py +0 -595
  25. naxtopy-2.2.3/src/NaxToPy/Modules/N2PNeuber/__init__.py +0 -0
  26. naxtopy-2.2.3/src/NaxToPy/Modules/common/__init__.py +0 -2
  27. naxtopy-2.2.3/src/NaxToPy/Modules/common/aux_funcitons.py +0 -31
  28. naxtopy-2.2.3/src/NaxToPy/Modules/common/aux_functions.py +0 -155
  29. naxtopy-2.2.3/src/NaxToPy/Modules/common/data_input_hdf5.py +0 -298
  30. naxtopy-2.2.3/src/NaxToPy/Modules/common/hdf5.py +0 -259
  31. naxtopy-2.2.3/src/NaxToPy/Modules/common/material.py +0 -1029
  32. naxtopy-2.2.3/src/NaxToPy/Modules/common/property.py +0 -9
  33. naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/__init__.py +0 -2
  34. naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/bruhn/__init__.py +0 -2
  35. naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/cmh/__init__.py +0 -2
  36. naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/esdu/__init__.py +0 -2
  37. naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/hsb/__init__.py +0 -2
  38. naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/nasa/__init__.py +0 -2
  39. {naxtopy-2.2.3 → naxtopy-3.0.0}/LICENSE +0 -0
  40. {naxtopy-2.2.3 → naxtopy-3.0.0}/setup.cfg +0 -0
  41. {naxtopy-2.2.3 → naxtopy-3.0.0}/setup.py +0 -0
  42. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntity.py +0 -0
  43. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityElement.py +0 -0
  44. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityNode.py +0 -0
  45. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityShell.py +0 -0
  46. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQEntities/__init__.py +0 -0
  47. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeyword.py +0 -0
  48. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordBEAMSECTION.py +0 -0
  49. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordCOUPLING.py +0 -0
  50. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDENSITY.py +0 -0
  51. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTING.py +0 -0
  52. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTINGCOUPLING.py +0 -0
  53. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELASTIC.py +0 -0
  54. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELEMENT.py +0 -0
  55. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELSET.py +0 -0
  56. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDINSTANCE.py +0 -0
  57. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDPART.py +0 -0
  58. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordINSTANCE.py +0 -0
  59. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATIC.py +0 -0
  60. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATICCOUPLING.py +0 -0
  61. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordMATERIAL.py +0 -0
  62. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNODE.py +0 -0
  63. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNSET.py +0 -0
  64. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordORIENTATION.py +0 -0
  65. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPART.py +0 -0
  66. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPLASTIC.py +0 -0
  67. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSHELLSECTION.py +0 -0
  68. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSOLIDSECTION.py +0 -0
  69. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSURFACE.py +0 -0
  70. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/__init__.py +0 -0
  71. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/AllClasses.py +0 -0
  72. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PAbaqusInputData.py +0 -0
  73. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PConnector.py +0 -0
  74. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PCoord.py +0 -0
  75. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PIncrement.py +0 -0
  76. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PMaterial.py +0 -0
  77. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PNode.py +0 -0
  78. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PReport.py +0 -0
  79. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PSection.py +0 -0
  80. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PSet.py +0 -0
  81. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ProgresBar.py +0 -0
  82. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/__init__.py +0 -0
  83. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Constants/__init__.py +0 -0
  84. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Constants/librerias.py +0 -0
  85. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Errors/N2PColors.py +0 -0
  86. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Errors/N2PFileHandler.py +0 -0
  87. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Errors/__init__.py +0 -0
  88. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Reference_Finder/__init__.py +0 -0
  89. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/_AuxFunc/_NetToPython.py +0 -0
  90. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/_AuxFunc/__init__.py +0 -0
  91. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/__init__.py +0 -0
  92. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/Joints/__init__.py +0 -0
  93. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/N2PFastenerAnalysis.py +0 -0
  94. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/N2PUpdateFastener.py +0 -0
  95. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetAttachments.py +0 -0
  96. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetResults.py +0 -0
  97. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PInterpolation.py +0 -0
  98. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PLoadModel.py +0 -0
  99. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +0 -0
  100. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/__init__.py +0 -0
  101. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/__init__.py +0 -0
  102. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/__init__.py +0 -0
  103. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Check/Validation.py +0 -0
  104. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/AR1DElement.py +0 -0
  105. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARAttachment.py +0 -0
  106. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARBolt.py +0 -0
  107. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlate.py +0 -0
  108. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlateElements.py +0 -0
  109. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/__init__.py +0 -0
  110. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARAuxiliarFunctions.py +0 -0
  111. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARBilinearInterpolation.py +0 -0
  112. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARConfigurationInput.py +0 -0
  113. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARDerivedLoadCases.py +0 -0
  114. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARFileInputRivetsIDs.py +0 -0
  115. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetAttachments.py +0 -0
  116. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetBolts.py +0 -0
  117. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARReadResultsFromFile.py +0 -0
  118. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARResults.py +0 -0
  119. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARRotation.py +0 -0
  120. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARSerialize.py +0 -0
  121. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/__init__.py +0 -0
  122. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/__init__.py +0 -0
  123. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/__init__.py +0 -0
  124. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/__init__.py +0 -0
  125. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/N2PEnvelope/N2PEnvelope.py +0 -0
  126. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/N2PEnvelope/__init__.py +0 -0
  127. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/N2PtoEXE/N2PtoEXE.py +0 -0
  128. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/N2PtoEXE/__init__.py +0 -0
  129. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/__init__.py +0 -0
  130. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/NaxToPy.ico +0 -0
  131. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/__init__.py +0 -0
  132. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/user_functions.txt +0 -0
  133. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy.egg-info/dependency_links.txt +0 -0
  134. {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy.egg-info/requires.txt +0 -0
  135. {naxtopy-2.2.3 → 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.3
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
@@ -127,7 +127,7 @@ Dynamic: home-page
127
127
 
128
128
  [![Idaero](https://img.shields.io/badge/powered%20by-Idaero%20Solutions-299797)](https://idaerosolutions.com)
129
129
  [![PyPi](https://img.shields.io/pypi/v/NaxToPy?color=ffd500)](https://pypi.org/project/NaxToPy/)
130
- [![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/)
131
131
  ![License](https://img.shields.io/badge/license-proprietary-red)
132
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)
133
133
  [![PyPi - Downloads](https://img.shields.io/pypi/dm/NaxToPy?color=dgreen)](https://pypi.org/project/NaxToPy/#files)
@@ -151,10 +151,10 @@ additional software beyond NaxTo (see the Download and Homepage links on the lef
151
151
  ---------------
152
152
 
153
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).
154
+ This version is compatible with **NaxTo 2025.0**.
155
155
  Check in _Programs and Features_ the NaxTo version that is installed.
156
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.
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.
158
158
 
159
159
 
160
160
  ## Installation
@@ -327,12 +327,22 @@ is redundant. The coordinate system will prevail.
327
327
  8. BugFix: The method get_elements_attached() is fixed so when there are MPC connectors with the same ID.
328
328
 
329
329
  ### v.2.2.3
330
- 1. Requirement: Now NaxToPy require the package [**h5py** ](https://pypi.org/project/h5py/).
330
+ 1. Requirement: Now NaxToPy require the package [**h5py**](https://pypi.org/project/h5py/).
331
331
  2. Feat: N2PGetLoadFastener now can use PAG method and display format.
332
332
  3. BugFix: Some bugs are solved in N2PGetFastener and N2PGetLoadFastener.
333
333
  4. Feat: N2PGetLoadFastener can export results in HDF5 format.
334
334
  5. BugFix: The filtering in the method get_result_by_LCs_Incr() in elements when results are in Corner Data is fixed.
335
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.
345
+
336
346
  # Documentation
337
347
 
338
348
  **NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
@@ -550,7 +560,10 @@ For more documentation visit https://idaerosolutions.com/Home/NaxToPy
550
560
 
551
561
  Reference Guide at: https://www.idaerosolutions.com/NaxToPyDoc/NaxToPy.html
552
562
 
553
-
554
563
  # License
555
564
 
556
- 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
@@ -200,12 +200,22 @@ is redundant. The coordinate system will prevail.
200
200
  8. BugFix: The method get_elements_attached() is fixed so when there are MPC connectors with the same ID.
201
201
 
202
202
  ### v.2.2.3
203
- 1. Requirement: Now NaxToPy require the package [**h5py** ](https://pypi.org/project/h5py/).
203
+ 1. Requirement: Now NaxToPy require the package [**h5py**](https://pypi.org/project/h5py/).
204
204
  2. Feat: N2PGetLoadFastener now can use PAG method and display format.
205
205
  3. BugFix: Some bugs are solved in N2PGetFastener and N2PGetLoadFastener.
206
206
  4. Feat: N2PGetLoadFastener can export results in HDF5 format.
207
207
  5. BugFix: The filtering in the method get_result_by_LCs_Incr() in elements when results are in Corner Data is fixed.
208
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.
218
+
209
219
  # Documentation
210
220
 
211
221
  **NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
@@ -423,7 +433,10 @@ For more documentation visit https://idaerosolutions.com/Home/NaxToPy
423
433
 
424
434
  Reference Guide at: https://www.idaerosolutions.com/NaxToPyDoc/NaxToPy.html
425
435
 
426
-
427
436
  # License
428
437
 
429
- 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,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "NaxToPy"
7
- version = "2.2.3"
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"
@@ -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,39 +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 and not cornerData:
420
- ii_map = [item.InternalID for item in filter_list]
421
- elif filter_list and cornerData:
422
- if isinstance(filter_list[0], N2PElement):
423
- ii_map = list(self._result_father._loadCase_father._modelFather.elementnodal(filter_list).keys())
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])
424
422
  else:
425
- N2PLog.Error.E234()
426
- else:
427
- ii_map = None
428
-
429
- py_dict = {(int(key.split(":")[0].replace("DoF_LCD", "-").replace("DoF_LC", "")),
430
- int(key.split(":")[1][2:])): self._filter_array(np.array(value, np.float64), filter_list, None, ii_map, cornerData)
431
- for key, value in dict(cs_dict[0]).items()}
432
-
433
- del cs_dict
434
- gc.collect()
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
435
480
 
436
481
  return py_dict
437
482
  # ------------------------------------------------------------------------------------------------------------------
@@ -457,7 +502,7 @@ class N2PComponent:
457
502
  # ------------------------------------------------------------------------------------------------------------------
458
503
 
459
504
  # Metodo que crea el N2ParamInputResult ----------------------------------------------------------------------------
460
- def _create_n2paraminputresult(self, sections, aveSections, cornerData, aveNodes, variation,
505
+ def _create_n2paraminputresult(self, component, sections, aveSections, cornerData, aveNodes, variation,
461
506
  realPolar, coordsys, v1, v2) -> N2ParamInputResults:
462
507
 
463
508
  # Aqui comprobamos que si queremos hacer una transformacion y si esta es posible:
@@ -483,19 +528,22 @@ class N2PComponent:
483
528
 
484
529
  else:
485
530
  # If coordsys doesn't match any known case, log an error and return failure
486
- N2PLog.Error.E220()
487
- return (-1, 'NO RESULTS')
531
+ msg = N2PLog.Error.E220()
532
+ raise Exception(msg)
488
533
 
489
534
  elif not self.IsTransformable and (coordsys != -1000 or (v1 != (1, 0, 0) or v2 != (0, 1, 0))):
490
- N2PLog.Error.E219()
491
- return (-1, 'NO RESULTS')
535
+ msg = N2PLog.Error.E219()
536
+ raise Exception(msg)
492
537
 
493
538
  else:
494
539
  # Initializer if it is no transformable
495
540
  resultsParameters = N2ParamInputResults.structResults(0)
496
541
 
497
542
  # Component Selected
498
- resultsParameters.Component = str(self.Name)
543
+ if component:
544
+ resultsParameters.Component = component
545
+ else:
546
+ resultsParameters.Component = str(self.Name)
499
547
 
500
548
  # Entity Selection (So Far 'ALL')
501
549
  resultsParameters.IdsEntities = ''
@@ -523,15 +571,25 @@ class N2PComponent:
523
571
  sectionParam += str(section.Name) + '#'
524
572
  else:
525
573
  if not isinstance(sections, list):
526
- N2PLog.Error.E218()
574
+ msg = N2PLog.Error.E218()
575
+ raise TypeError(msg)
576
+ actual_sections = {s.Name for s in self.Sections}
527
577
  for section in sections:
528
578
  if type(section) is N2PSection:
529
579
  sectionParam += str(section.Name) + '#'
530
580
  else:
531
- 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)
532
586
 
533
587
  resultsParameters.sectPoint = sectionParam
534
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)
535
593
  resultsParameters.aveSection = aveSections
536
594
 
537
595
  # CornerData Selection, Average & Variation
@@ -539,8 +597,8 @@ class N2PComponent:
539
597
 
540
598
  _aveIntraSupported = (0, -1, -2, -3, -6)
541
599
  if (aveNodes not in _aveIntraSupported):
542
- N2PLog.Error.E236(aveNodes, _aveIntraSupported)
543
- return (-1)
600
+ msg = N2PLog.Error.E236(aveNodes, _aveIntraSupported)
601
+ raise Exception(msg)
544
602
  else:
545
603
  resultsParameters.aveIntra = aveNodes
546
604
 
@@ -554,9 +612,10 @@ class N2PComponent:
554
612
  resultsParameters.variation = variation
555
613
 
556
614
  # Real/Imaginary or Magnitude/Phase
557
- __complexSupported__ = (0, 1, 2)
558
- if (realPolar not in __complexSupported__):
559
- return (-1)
615
+ __complexSupported = (0, 1, 2)
616
+ if (realPolar not in __complexSupported):
617
+ msg = N2PLog.Error.E239(realPolar, __complexSupported)
618
+ raise Exception(msg)
560
619
  else:
561
620
  resultsParameters.real_cartesian_polar = realPolar
562
621
 
@@ -615,3 +674,29 @@ def _get_axis(v1: Union[tuple, np.ndarray], v2: Union[tuple, np.ndarray]) -> np.
615
674
  y = np.cross(z, v1)
616
675
 
617
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