NaxToPy 3.0.0__tar.gz → 3.1.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 (172) hide show
  1. {naxtopy-3.0.0/src/NaxToPy.egg-info → naxtopy-3.1.0}/PKG-INFO +20 -5
  2. {naxtopy-3.0.0 → naxtopy-3.1.0}/README.md +16 -2
  3. {naxtopy-3.0.0 → naxtopy-3.1.0}/pyproject.toml +2 -2
  4. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/N2PAbaqusInputData.py +59 -17
  5. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/N2PComponent.py +58 -45
  6. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/N2PConnector.py +30 -13
  7. naxtopy-3.1.0/src/NaxToPy/Core/Classes/N2PCoord.py +122 -0
  8. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/N2PElement.py +40 -20
  9. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/N2PFreeBody.py +61 -22
  10. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/N2PIncrement.py +3 -1
  11. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/N2PLoadCase.py +59 -29
  12. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/N2PMaterial.py +20 -58
  13. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/N2PNastranInputData.py +18 -28
  14. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/N2PNode.py +25 -33
  15. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/N2PProperty.py +48 -8
  16. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/N2PReport.py +17 -8
  17. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/N2PResult.py +14 -12
  18. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/N2PSection.py +1 -1
  19. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Constants/Constants.py +4 -4
  20. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Errors/N2PLog.py +819 -170
  21. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/N2PModelContent.py +235 -159
  22. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +6 -2
  23. naxtopy-3.1.0/src/NaxToPy/Modules/common/__init__.py +2 -0
  24. naxtopy-3.1.0/src/NaxToPy/Modules/common/data_input_hdf5.py +356 -0
  25. naxtopy-3.1.0/src/NaxToPy/Modules/common/hdf5.py +313 -0
  26. naxtopy-3.1.0/src/NaxToPy/Modules/common/material.py +1281 -0
  27. naxtopy-3.1.0/src/NaxToPy/Modules/common/model_processor.py +294 -0
  28. naxtopy-3.1.0/src/NaxToPy/Modules/common/property.py +1521 -0
  29. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/__init__.py +2 -0
  30. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/airbus/__init__.py +2 -0
  31. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/airbus/core_shear_crimping_airbus.py +5 -0
  32. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/airbus/dimpling_airbus.py +31 -0
  33. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/airbus/wrinkling_airbus.py +45 -0
  34. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/bruhn/__init__.py +2 -0
  35. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/cmh/__init__.py +2 -0
  36. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/cmh/core_shear_crimping_cmh.py +4 -0
  37. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/cmh/dimpling_cmh.py +31 -0
  38. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/cmh/wrinkling_cmh.py +29 -0
  39. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/esdu/__init__.py +2 -0
  40. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/hsb/__init__.py +2 -0
  41. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/hsb/wrinkling_hsb.py +11 -0
  42. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/hypersizer/__init__.py +2 -0
  43. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/hypersizer/crimping_hypersizer.py +32 -0
  44. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/hypersizer/dimpling_hypersizer.py +54 -0
  45. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/hypersizer/wrinkling_hypersizer.py +62 -0
  46. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/nasa/__init__.py +2 -0
  47. naxtopy-3.1.0/src/NaxToPy/Modules/handbooks/nasa/wrinkling_nasa.py +14 -0
  48. naxtopy-3.1.0/src/NaxToPy/Modules/static/composite/__init__.py +2 -0
  49. naxtopy-3.1.0/src/NaxToPy/Modules/static/composite/delamination/N2PEdgeDelamination.py +1390 -0
  50. naxtopy-3.1.0/src/NaxToPy/Modules/static/composite/failure_analysis/N2PCompositeFailure.py +2065 -0
  51. naxtopy-3.1.0/src/NaxToPy/Modules/static/composite/sandwich/N2PSandwich.py +1860 -0
  52. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/N2PCalculatorRFJoints.py +1186 -0
  53. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/N2PCompRF.py +975 -0
  54. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/N2PGetFasteners.py +492 -0
  55. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/N2PGetLoadFasteners.py +2305 -0
  56. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/N2PMetalRF.py +680 -0
  57. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/N2PRivetRF.py +625 -0
  58. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/N2PUpdateFastener.py +131 -168
  59. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetAttachments.py +113 -0
  60. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetResults.py +151 -0
  61. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PInterpolation.py +134 -0
  62. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysis/Core/Functions/N2PLoadModel.py +22 -4
  63. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +330 -0
  64. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/__init__.py +0 -0
  65. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Core/Classes/ARBolt.py +5 -5
  66. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlate.py +1 -1
  67. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Core/Functions/ARFileInputRivetsIDs.py +1 -1
  68. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetAttachments.py +3 -3
  69. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetBolts.py +5 -5
  70. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Core/Functions/ARSerialize.py +2 -2
  71. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/__init__.py +0 -0
  72. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/__init__.py +4 -0
  73. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/Joints → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/joints}/N2PAttachment.py +54 -31
  74. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/Joints → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/joints}/N2PBolt.py +44 -38
  75. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/Joints → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/joints}/N2PFastenerSystem.py +103 -68
  76. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/joints/N2PJoint.py +560 -0
  77. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/joints/N2PJointAnalysisParameters.py +860 -0
  78. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/joints/N2PPlate.py +1025 -0
  79. naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/joints/__init__.py +0 -0
  80. naxtopy-3.1.0/src/NaxToPy/Modules/static/metallic/__init__.py +2 -0
  81. naxtopy-3.1.0/src/NaxToPy/Modules/static/metallic/neuber/N2PNeuber.py +1036 -0
  82. naxtopy-3.1.0/src/NaxToPy/Modules/static/metallic/neuber/__init__.py +0 -0
  83. naxtopy-3.1.0/src/NaxToPy/__init__.py +9 -0
  84. {naxtopy-3.0.0 → naxtopy-3.1.0/src/NaxToPy.egg-info}/PKG-INFO +20 -5
  85. naxtopy-3.1.0/src/NaxToPy.egg-info/SOURCES.txt +159 -0
  86. naxtopy-3.0.0/src/NaxToPy/Core/Classes/N2PCoord.py +0 -82
  87. naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/Joints/N2PJoint.py +0 -1498
  88. naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/Joints/N2PPlate.py +0 -925
  89. naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/N2PGetFasteners.py +0 -312
  90. naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/N2PGetLoadFasteners.py +0 -1215
  91. naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetAttachments.py +0 -92
  92. naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetResults.py +0 -152
  93. naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PInterpolation.py +0 -149
  94. naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +0 -406
  95. naxtopy-3.0.0/src/NaxToPy/__init__.py +0 -10
  96. naxtopy-3.0.0/src/NaxToPy.egg-info/SOURCES.txt +0 -118
  97. {naxtopy-3.0.0 → naxtopy-3.1.0}/LICENSE +0 -0
  98. {naxtopy-3.0.0 → naxtopy-3.1.0}/setup.cfg +0 -0
  99. {naxtopy-3.0.0 → naxtopy-3.1.0}/setup.py +0 -0
  100. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntity.py +0 -0
  101. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityElement.py +0 -0
  102. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityNode.py +0 -0
  103. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityShell.py +0 -0
  104. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQEntities/__init__.py +0 -0
  105. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeyword.py +0 -0
  106. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordBEAMSECTION.py +0 -0
  107. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordCOUPLING.py +0 -0
  108. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDENSITY.py +0 -0
  109. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTING.py +0 -0
  110. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTINGCOUPLING.py +0 -0
  111. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELASTIC.py +0 -0
  112. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELEMENT.py +0 -0
  113. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELSET.py +0 -0
  114. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDINSTANCE.py +0 -0
  115. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDPART.py +0 -0
  116. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordINSTANCE.py +0 -0
  117. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATIC.py +0 -0
  118. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATICCOUPLING.py +0 -0
  119. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordMATERIAL.py +0 -0
  120. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNODE.py +0 -0
  121. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNSET.py +0 -0
  122. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordORIENTATION.py +0 -0
  123. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPART.py +0 -0
  124. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPLASTIC.py +0 -0
  125. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSHELLSECTION.py +0 -0
  126. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSOLIDSECTION.py +0 -0
  127. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSURFACE.py +0 -0
  128. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ABQKeywords/__init__.py +0 -0
  129. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/AllClasses.py +0 -0
  130. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/N2PSet.py +0 -0
  131. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/ProgresBar.py +0 -0
  132. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Classes/__init__.py +0 -0
  133. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Constants/__init__.py +0 -0
  134. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Constants/librerias.py +0 -0
  135. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Errors/N2PColors.py +0 -0
  136. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Errors/N2PFileHandler.py +0 -0
  137. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Errors/__init__.py +0 -0
  138. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/Reference_Finder/__init__.py +0 -0
  139. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/_AuxFunc/_NetToPython.py +0 -0
  140. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/_AuxFunc/__init__.py +0 -0
  141. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Core/__init__.py +0 -0
  142. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/Modules/__init__.py +0 -0
  143. {naxtopy-3.0.0/src/NaxToPy/Modules/N2PEnvelope → naxtopy-3.1.0/src/NaxToPy/Modules/envelope}/N2PEnvelope.py +0 -0
  144. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/Joints → naxtopy-3.1.0/src/NaxToPy/Modules/envelope}/__init__.py +0 -0
  145. {naxtopy-3.0.0/src/NaxToPy/Modules/N2PtoEXE → naxtopy-3.1.0/src/NaxToPy/Modules/n2ptoexe}/N2PtoEXE.py +0 -0
  146. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes → naxtopy-3.1.0/src/NaxToPy/Modules/n2ptoexe}/__init__.py +0 -0
  147. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions → naxtopy-3.1.0/src/NaxToPy/Modules/static}/__init__.py +0 -0
  148. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core → naxtopy-3.1.0/src/NaxToPy/Modules/static/composite/delamination}/__init__.py +0 -0
  149. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-3.1.0/src/NaxToPy/Modules/static/composite/failure_analysis}/__init__.py +0 -0
  150. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated → naxtopy-3.1.0/src/NaxToPy/Modules/static/composite/sandwich}/__init__.py +0 -0
  151. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/N2PFastenerAnalysis.py +0 -0
  152. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions}/__init__.py +0 -0
  153. {naxtopy-3.0.0/src/NaxToPy/Modules/N2PEnvelope → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core}/__init__.py +0 -0
  154. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Check/Validation.py +0 -0
  155. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Core/Classes/AR1DElement.py +0 -0
  156. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Core/Classes/ARAttachment.py +0 -0
  157. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlateElements.py +0 -0
  158. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes}/__init__.py +0 -0
  159. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Core/Functions/ARAuxiliarFunctions.py +0 -0
  160. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Core/Functions/ARBilinearInterpolation.py +0 -0
  161. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Core/Functions/ARConfigurationInput.py +0 -0
  162. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Core/Functions/ARDerivedLoadCases.py +0 -0
  163. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Core/Functions/ARReadResultsFromFile.py +0 -0
  164. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Core/Functions/ARResults.py +0 -0
  165. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners}/_N2PFastenerAnalysisDeprecated/Core/Functions/ARRotation.py +0 -0
  166. {naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions}/__init__.py +0 -0
  167. {naxtopy-3.0.0/src/NaxToPy/Modules/N2PtoEXE → naxtopy-3.1.0/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core}/__init__.py +0 -0
  168. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/NaxToPy.ico +0 -0
  169. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy/user_functions.txt +0 -0
  170. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy.egg-info/dependency_links.txt +0 -0
  171. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy.egg-info/requires.txt +0 -0
  172. {naxtopy-3.0.0 → naxtopy-3.1.0}/src/NaxToPy.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.2
1
+ Metadata-Version: 2.4
2
2
  Name: NaxToPy
3
- Version: 3.0.0
3
+ Version: 3.1.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
@@ -107,7 +107,7 @@ License: Copyright (c) 2024 Idaero Solutions
107
107
 
108
108
  The above copyright notice and this permission notice shall be included in all
109
109
  copies or substantial portions of the Software.
110
- Project-URL: Documentation, https://www.idaerosolutions.com/NaxToPyDoc/index.html
110
+ Project-URL: Documentation, https://www.idaerosolutions.com/NaxToDocumentation/NaxToPy/3.1.0/index.html
111
111
  Project-URL: LinkedIn, https://www.linkedin.com/company/idaero/
112
112
  Keywords: NaxTo,Postprocessing,FEM
113
113
  Classifier: Intended Audience :: Science/Research
@@ -124,6 +124,7 @@ Requires-Dist: setuptools>=67.8.0
124
124
  Requires-Dist: h5py>=3.12.1
125
125
  Dynamic: download-url
126
126
  Dynamic: home-page
127
+ Dynamic: license-file
127
128
 
128
129
  [![Idaero](https://img.shields.io/badge/powered%20by-Idaero%20Solutions-299797)](https://idaerosolutions.com)
129
130
  [![PyPi](https://img.shields.io/pypi/v/NaxToPy?color=ffd500)](https://pypi.org/project/NaxToPy/)
@@ -151,10 +152,10 @@ additional software beyond NaxTo (see the Download and Homepage links on the lef
151
152
  ---------------
152
153
 
153
154
  ⚠️**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 2025.0**.
155
+ This version is compatible with **NaxTo 2025.1**.
155
156
  Check in _Programs and Features_ the NaxTo version that is installed.
156
157
 
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
+ 📘**Note:** If a specific NaxTo version is installed, search the [**NaxToPy History**](https://pypi.org/project/NaxToPy/3.1.0/#history) to find which newer version is compatible with it.
158
159
 
159
160
 
160
161
  ## Installation
@@ -343,6 +344,20 @@ is redundant. The coordinate system will prevail.
343
344
  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
345
  8. Feat: New checks in the results methods to avoid invalid parameters.
345
346
 
347
+ ### v.3.1.0
348
+ 1. Feat: New optional argument in `load_model()` called **loadconnectors**. True by default.
349
+ 2. Feat: New module N2PNeuber to obtain stresses using the Neuber method.
350
+ 3. Feat: New module N2PSandwich to calculate sandwich structures failure modes.
351
+ 4. Feat: New module N2PCompositeFailure for evaluating structural failure in laminates.
352
+ 5. Feat: New module N2PEdgeDelamination to obtain interlaminar stresses and RF from edge delamination.
353
+ 6. Feat: New module N2PCalculatorRFJoints manages the Reserve Factor (RF) calculation process of the joints obtained through the modules N2PGetFasteners and N2PGetLoadFasteners.
354
+ 7. Feat: New module N2PUpdateFastener provides methods to update rivet and bolt stiffness and generate a new FEM Input File (.bdf, .fem, .dat, etc.) file with the updated data.
355
+ 8. BugFix: Several bugs are fixed in N2PGetFastener and N2PGetLoadFastener modules.
356
+ 9. Feat: Extra information in the log when the NaxToPy is running from a executable.
357
+ 10. Feat: `N2PLoadModelContent.SetList` is now an encapsulated property.
358
+ 11. Refactor: the method `N2PLoadModelContent.get_result_by_LCs_Incr()` is optimized.
359
+
360
+
346
361
  # Documentation
347
362
 
348
363
  **NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
@@ -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 2025.0**.
27
+ This version is compatible with **NaxTo 2025.1**.
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/3.0.0/#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.1.0/#history) to find which newer version is compatible with it.
31
31
 
32
32
 
33
33
  ## Installation
@@ -216,6 +216,20 @@ is redundant. The coordinate system will prevail.
216
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
217
  8. Feat: New checks in the results methods to avoid invalid parameters.
218
218
 
219
+ ### v.3.1.0
220
+ 1. Feat: New optional argument in `load_model()` called **loadconnectors**. True by default.
221
+ 2. Feat: New module N2PNeuber to obtain stresses using the Neuber method.
222
+ 3. Feat: New module N2PSandwich to calculate sandwich structures failure modes.
223
+ 4. Feat: New module N2PCompositeFailure for evaluating structural failure in laminates.
224
+ 5. Feat: New module N2PEdgeDelamination to obtain interlaminar stresses and RF from edge delamination.
225
+ 6. Feat: New module N2PCalculatorRFJoints manages the Reserve Factor (RF) calculation process of the joints obtained through the modules N2PGetFasteners and N2PGetLoadFasteners.
226
+ 7. Feat: New module N2PUpdateFastener provides methods to update rivet and bolt stiffness and generate a new FEM Input File (.bdf, .fem, .dat, etc.) file with the updated data.
227
+ 8. BugFix: Several bugs are fixed in N2PGetFastener and N2PGetLoadFastener modules.
228
+ 9. Feat: Extra information in the log when the NaxToPy is running from a executable.
229
+ 10. Feat: `N2PLoadModelContent.SetList` is now an encapsulated property.
230
+ 11. Refactor: the method `N2PLoadModelContent.get_result_by_LCs_Incr()` is optimized.
231
+
232
+
219
233
  # Documentation
220
234
 
221
235
  **NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "NaxToPy"
7
- version = "3.0.0"
7
+ version = "3.1.0"
8
8
  license = {file = "LICENSE"}
9
9
  authors = [ { name = "Idaero Solutions", email = "manuel.sanchez@idaerosolutions.com" }, ]
10
10
  requires-python = ">=3.9"
@@ -25,7 +25,7 @@ keywords = ["NaxTo",
25
25
  "FEM"]
26
26
 
27
27
  [project.urls]
28
- "Documentation" = "https://www.idaerosolutions.com/NaxToPyDoc/index.html"
28
+ "Documentation" = "https://www.idaerosolutions.com/NaxToDocumentation/NaxToPy/3.1.0/index.html"
29
29
  "LinkedIn" = "https://www.linkedin.com/company/idaero/"
30
30
 
31
31
  [tool.setuptools]
@@ -1,7 +1,7 @@
1
1
  """This module contains classes related with a Abaqus Input File (.inp files). The parent classes are similar but not
2
- the same as the Nastran Input File. Child classes of N2PKeyword are based on Abaqus Keywords Reference Guide"""
2
+ the same as the Nastran Input File. Child classes of N2PKeyword are based on Abaqus Keywords Reference Guide."""
3
3
  from __future__ import annotations # For compatibility with Python 3.9 or higher
4
- from typing import Literal
4
+ from typing import Literal, overload
5
5
 
6
6
  from NaxToPy.Core.Errors.N2PLog import N2PLog
7
7
  from NaxToPy.Core.Classes.N2PNastranInputData import N2PInputData
@@ -10,7 +10,8 @@ from NaxToPy.Core.Classes.ABQEntities import *
10
10
 
11
11
 
12
12
  class N2PAbaqusInputData:
13
- """Class with the complete data of an Abaqus MEF input file (text file usually with the extension .inp).
13
+ """
14
+ Class with the complete data of an Abaqus MEF input file (text file usually with the extension .inp).
14
15
  """
15
16
 
16
17
  __slots__ = (
@@ -48,34 +49,58 @@ class N2PAbaqusInputData:
48
49
  {entityelement: N2PEntityElement(entityelement, self.__dictKeywordToN2P, self.__dictEntityToN2P)
49
50
  for entityelement in inputfiledata.StructuredInfo.ModelElements})
50
51
 
52
+ # Método para optener los objetos N2PCard del Input File -----------------------------------------------------------
51
53
  @property
52
54
  def ListBulkDataKeywords(self) -> list[N2PKeyword, ...]:
53
- """List with the N2PCard objects of the input FEM file. It has all bulk data cards of the model"""
55
+ """
56
+ List with the N2PCard objects of the input FEM file. It has all bulk data cards of the model.
57
+ """
54
58
  return self.__listbulkdatakeywords
59
+ # ------------------------------------------------------------------------------------------------------------------
55
60
 
61
+ # Método para obtener el diccionaro de IDs a FilePaths -------------------------------------------------------------
56
62
  @property
57
63
  def DictionaryIDsFiles(self) -> dict:
64
+ """
65
+ Dictionary with ID (`int`) as keys and FilePaths (`string`) as values.
66
+ """
58
67
  return dict(self.__inputfiledata.DictionaryIDsFiles)
68
+ # ------------------------------------------------------------------------------------------------------------------
59
69
 
70
+ # Método para obtener el diccionario de FilePaths a IDs ------------------------------------------------------------
60
71
  @property
61
72
  def DictionaryFilesIDs(self) -> dict:
73
+ """
74
+ Dictionary FilePaths (`string`) as keys and with ID (`int`) as values.
75
+ """
62
76
  return dict(self.__dictionary_files_ids)
77
+ # ------------------------------------------------------------------------------------------------------------------
63
78
 
79
+ # Método para obtener el tipo de Input File ------------------------------------------------------------------------
64
80
  @property
65
81
  def TypeOfFile(self) -> str:
82
+ """
83
+ Type of Input File.
84
+ """
66
85
  return "ABAQUS"
86
+ # ------------------------------------------------------------------------------------------------------------------
67
87
 
88
+ # Método para obtener la lista de comentarios en el Input File -----------------------------------------------------
68
89
  @property
69
90
  def ListComments(self) -> list[N2PInputData, ]:
70
- """List with all the comments in the FEM Input File"""
91
+ """
92
+ List with all the comments in the FEM Input File.
93
+ """
71
94
  if self.__listcomments:
72
95
  return self.__listcomments
73
96
  else:
74
97
  self.__listcomments = [N2PInputData(i) for i in self.__inputfiledata.StructuredInfo.ModelComments]
75
98
  return self.__listcomments
99
+ # ------------------------------------------------------------------------------------------------------------------
76
100
 
77
101
  def get_keywords_by_type(self, field: KeyWordType) -> list[N2PKeyword,]:
78
- """Method that returns a list with the N2PKeyword objects of the input FEM file asked.
102
+ """
103
+ Method that returns a list with the :class:`N2PKeyword` objects of the input FEM file asked. They can be uppercase or lowecase indistinctly.
79
104
 
80
105
  Args:
81
106
  field: str
@@ -85,36 +110,53 @@ class N2PAbaqusInputData:
85
110
  """
86
111
  if not isinstance(field, str):
87
112
  Exception(N2PLog.Critical.C201())
88
- elif field not in CONSTRUCTABQDICT:
113
+ elif field.upper() not in CONSTRUCTABQDICT:
89
114
  N2PLog.Error.E205()
90
115
  return []
91
116
  else:
92
117
  return [self.__dictKeywordToN2P[keyword] for keyword in self.__inputfiledata.GetKeywordsByType(field)]
93
-
94
- def get_entity_by_key_and_id(self, entitytype: EntityType, entitityid: int) -> list[N2PEntity, ]:
95
- """Method that returns a list with the N2Entities objects of the input FEM file asked. There can be several
96
- Entities with the same ID and EntityType as they can belong to different part.
118
+
119
+ @overload
120
+ def get_entity_by_key_and_id(self, entitytype: EntityType, entitityid: int, part: str) -> N2PEntity: ...
121
+ @overload
122
+ def get_entity_by_key_and_id(self, entitytype: EntityType, entitityid: int) -> list[N2PEntity, ]: ...
123
+ # Actual implementation
124
+ def get_entity_by_key_and_id(self, entitytype, entitityid, part=None):
125
+ """
126
+ Method that returns a list with the :class:`N2PEntities` objects of the input FEM file asked. There can be
127
+ several Entities with the same ID and EntityType as they can belong to different part. If the part is given,
128
+ only a :class:`N2PEntity` will be returned.
97
129
 
98
130
  Args:
99
131
  entitytype: str
100
132
  entitityid: int
133
+ part: str (optional)
101
134
 
102
135
  Returns:
103
- list[N2PKeyword, ]
136
+ N2PEntity || list[N2PEntity, ]
104
137
  """
105
138
  if not isinstance(entitytype, str):
106
139
  Exception(N2PLog.Critical.C201())
107
140
  elif not isinstance(entitityid, int):
108
141
  Exception(N2PLog.Critical.C201())
109
- elif entitytype not in ["NODE", "ELEMENT"]:
110
- N2PLog.Error.E205()
111
- return []
112
- else:
142
+ elif part:
143
+ entity_error = self.__inputfiledata.GetEntitiesByTypeAndId(entitytype, entitityid, part)
144
+ if entity_error.Item2 == 0:
145
+ return self.__dictEntityToN2P[entity_error.Item1]
146
+ elif entity_error.Item2 == -1:
147
+ N2PLog.Error.E205(entitytype)
148
+ elif entity_error.Item2 == -2:
149
+ N2PLog.Error.E241(part)
150
+ elif entity_error.Item2 == -3:
151
+ N2PLog.Error.E242(part, entitityid)
152
+ return None
153
+ else:
113
154
  return [self.__dictEntityToN2P[entitytype]
114
155
  for entitytype in self.__inputfiledata.GetEntitiesByTypeAndId(entitytype, entitityid)]
115
156
 
116
157
  def rebuild_file(self, folder: str) -> None:
117
- """Method that writes the solver input file with the same file structure that was read in the folder is specified
158
+ """
159
+ Method that writes the solver input file with the same file structure that was read in the folder is specified.
118
160
 
119
161
  Args:
120
162
  folder: str -> Path of the folder where the file or files will be writen
@@ -21,13 +21,9 @@ from NaxToPy.Core.Classes.N2PNode import N2PNode
21
21
  # Clase Component de Python
22
22
  # -----------------------------------------------------------------------
23
23
  class N2PComponent:
24
- '''Class which contains the information associated to a component of a N2PResult instance.
25
-
26
- Attributes:
27
- Name: str.
28
- Sections: list[N2PSection].
29
- IsTransformable: bool.
30
- '''
24
+ """
25
+ Class which contains the information associated to a component of a :class:`N2PResult` instance.
26
+ """
31
27
 
32
28
  __slots__ = (
33
29
  "_name",
@@ -35,10 +31,10 @@ class N2PComponent:
35
31
  "_result_father",
36
32
  )
37
33
 
38
- # Constructor de N2PComponent
39
- # -----------------------------------------------------------------
34
+ # Constructor de N2PComponent --------------------------------------------------------------------------------------
40
35
  def __init__(self, name, sections, result_father):
41
- """ Python Component Constructor
36
+ """
37
+ Python Component Constructor.
42
38
 
43
39
  Args:
44
40
  name: str -> name of the component
@@ -49,26 +45,31 @@ class N2PComponent:
49
45
  self._sections = [N2PSection(sections[i].Name,
50
46
  sections[i].Number) for i in range(0, len(sections))]
51
47
  self._result_father = result_father
52
- # ---------------------------------------------------------------------------------------------
48
+ # ------------------------------------------------------------------------------------------------------------------
53
49
 
54
- # Metodo para Obtener el Nombre de la Componente
55
- # ----------------------------------------------
50
+ # Metodo para obtener el Nombre de la Componente -------------------------------------------------------------------
56
51
  @property
57
52
  def Name(self) -> str:
53
+ """
54
+ Name of the component.
55
+ """
58
56
  return(str(self._name))
59
- # ---------------------------------------------------------------------------------------------
57
+ # ------------------------------------------------------------------------------------------------------------------
60
58
 
61
- # Metodo para Obtener una lista con las secciones de la componente ----------------------------
59
+ # Metodo para obtener una lista con las secciones de la componente -------------------------------------------------
62
60
  @property
63
61
  def Sections(self) -> list[N2PSection, ...]:
64
- """ Returns a list of N2PSection objects with all the sections contained in the component
62
+ """
63
+ Returns a list of N2PSection objects with all the sections contained in the component.
65
64
  """
66
65
  return(self._sections)
67
- # ---------------------------------------------------------------------------------------------
66
+ # ------------------------------------------------------------------------------------------------------------------
68
67
 
68
+ # Método para comprobar si el resultado es transformable en otro sistema de coordenadas ----------------------------
69
69
  @property
70
70
  def IsTransformable(self) -> bool:
71
- """Property that keeps if the component of a result is transformable in other coordinate system.
71
+ """
72
+ Property that keeps if the component of a result is transformable in other coordinate system.
72
73
  """
73
74
  # No se guarda como atributo privado durante la instanciacion de un objeto porque algunas variables
74
75
  # aun no se han construido. Por eso el metodo de la propiedad es la que busca los argumentos y llama
@@ -77,23 +78,27 @@ class N2PComponent:
77
78
  result = self._result_father.Name
78
79
  component = self.Name
79
80
  return bool(N2TensorTransformation.IsResultSupported(solver, result, component))
81
+ # ------------------------------------------------------------------------------------------------------------------
80
82
 
81
- # Metodo para llamar a la funcion de NaxToModel que devueleve el array de resultados-----------------------------
83
+ # Metodo para llamar a la funcion de NaxToModel que devueleve el array de resultados--------------------------------
82
84
  def get_result_array(self, sections=None, aveSections=-1, cornerData=False, aveNodes=-1, variation=100,
83
85
  realPolar=0, coordsys: int = -1000,
84
86
  v1: tuple = (1, 0, 0), v2: tuple = (0, 1, 0)) -> tuple[list, str]:
85
- """Deprecated method. Please, use get_result_list instead for asking the results as a list. If a numpy array is
86
- preferred, use get_result_ndarray"""
87
+ """
88
+ Deprecated method. Please, use get_result_list instead for asking the results as a list. If a numpy array is
89
+ preferred, use get_result_ndarray.
90
+ """
87
91
  return self.get_result_list(sections, aveSections, cornerData, aveNodes, variation,
88
92
  realPolar, coordsys, v1, v2)
89
93
  # ------------------------------------------------------------------------------------------------------------------
90
94
 
91
- # Metodo para llamar a la funcion de NaxToModel que devueleve el array de resultados como lista------------------
95
+ # Metodo para llamar a la funcion de NaxToModel que devueleve el array de resultados como lista --------------------
92
96
  def get_result_list(self, sections=None, aveSections=-1, cornerData=False, aveNodes=-1, variation=100,
93
97
  realPolar=0, coordsys: int = -1000,
94
98
  v1: Union[tuple, np.ndarray] = (1,0,0), v2: Union[tuple, np.ndarray] = (0,1,0)) -> tuple[list, str]:
95
- """ Returns a tuple with the list of floats with the result array asked and a str with the position of the
96
- results
99
+ """
100
+ Returns a tuple with the list of floats with the result array asked and a str with the position of the
101
+ results.
97
102
 
98
103
  Args:
99
104
 
@@ -180,13 +185,14 @@ class N2PComponent:
180
185
  return(-1, 'NO RESULTS')
181
186
  # ------------------------------------------------------------------------------------------------------------------
182
187
 
183
- # Metodo para llamar a la funcion de NaxToModel que devuelve el array de resultados como array de numpy----------
188
+ # Metodo para llamar a la funcion de NaxToModel que devuelve el array de resultados como array de numpy ------------
184
189
  def get_result_ndarray(self, sections=None, aveSections=-1, cornerData=False, aveNodes=-1, variation=100,
185
190
  realPolar=0, coordsys: int = -1000,
186
191
  v1: Union[tuple, np.ndarray ] = (1,0,0), v2: Union[tuple, np.ndarray ] = (0,1,0),
187
192
  filter_list: list = None) -> tuple[np.array, str]:
188
- """ Returns a tuple with the numpy array of floats with the result array asked and a str with the position of
189
- the results
193
+ """
194
+ Returns a tuple with the numpy array of floats with the result array asked and a str with the position of
195
+ the results.
190
196
 
191
197
  Args:
192
198
 
@@ -275,7 +281,7 @@ class N2PComponent:
275
281
  return (self._filter_array(np.array(results[0], np.float64), filter_list, where, None, cornerData), where)
276
282
  # ------------------------------------------------------------------------------------------------------------------
277
283
 
278
- # # Metodo que devulve un dataframe con los resulados tras llamar a la funcion de NaxToModel--
284
+ # # Metodo que devulve un dataframe con los resulados tras llamar a la funcion de NaxToModel------------------------
279
285
  # def get_result_dataframe(self, sections=None, aveSections=-1, cornerData=False, aveNodes=-1,
280
286
  # variation=100, realPolar=0, coordsys: int = -1000,
281
287
  # v1: tuple = (1,0,0), v2: tuple = (0,1,0)) -> DataFrame:
@@ -397,7 +403,7 @@ class N2PComponent:
397
403
  # df = df.rename_axis(indexname, axis='index')
398
404
  #
399
405
  # return df
400
- # # ------------------------------------------------------------------------------------------------------------------
406
+ # # ----------------------------------------------------------------------------------------------------------------
401
407
 
402
408
  # Método que devuelve un diccionario con la tupla (LC, Incr) como clave y una lista de resultados como valor -------
403
409
  def _get_result_by_LCs_Incr(self, list_lc_incr: list[tuple["N2PLoadCase", "N2PIncrement"],...], components = None,
@@ -447,25 +453,20 @@ class N2PComponent:
447
453
  ii_map = None
448
454
 
449
455
  if not components[0]:
450
- py_dict_aux = {
456
+ py_dict.update({
451
457
  (int(key.split(":")[0].replace("DoF_LCD", "-").replace("DoF_LC", "")), int(key.split(":")[1][2:])) :
452
458
  self._filter_array(np.array(value, np.float64), filter_list, None, ii_map, cornerData)
453
459
  for key, value in dict(cs_dict[0]).items()
454
- }
460
+ })
455
461
  else:
456
- py_dict_aux = {
462
+ py_dict.update({
457
463
  (int(key.split(":")[0].replace("DoF_LCD", "-").replace("DoF_LC", "")), int(key.split(":")[1][2:]), component) :
458
464
  self._filter_array(np.array(value, np.float64), filter_list, None, ii_map, cornerData)
459
465
  for key, value in dict(cs_dict[0]).items()
460
- }
466
+ })
461
467
 
462
468
  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
+ # endfor
469
470
 
470
471
  if first_shoot:
471
472
  _, _, final_memory = _get_memory_usage()
@@ -477,11 +478,15 @@ class N2PComponent:
477
478
  first_shoot = False
478
479
  else:
479
480
  i += n_opt
481
+
482
+ # Limpiamos memoria antes de pasar al siguiente bloque de casos de carga
483
+ self._result_father._loadCase_father._modelFather.clear_results_memory()
484
+ # endwhile
480
485
 
481
486
  return py_dict
482
487
  # ------------------------------------------------------------------------------------------------------------------
483
488
 
484
- # Metodo que crea la formula que necesita la funcion de NaxToModel ----------------------------------------------
489
+ # Metodo que crea la formula que necesita la funcion de NaxToModel -------------------------------------------------
485
490
  def _create_formula(self, list_lc_incr: list[tuple["N2PLoadCase", "N2PIncrement"],...]) -> str:
486
491
 
487
492
  if isinstance(list_lc_incr, tuple):
@@ -532,8 +537,12 @@ class N2PComponent:
532
537
  raise Exception(msg)
533
538
 
534
539
  elif not self.IsTransformable and (coordsys != -1000 or (v1 != (1, 0, 0) or v2 != (0, 1, 0))):
535
- msg = N2PLog.Error.E219()
536
- raise Exception(msg)
540
+ if component:
541
+ comp = component
542
+ else:
543
+ comp = str(self.Name)
544
+ N2PLog.Warning.W210(comp)
545
+ resultsParameters = N2ParamInputResults.structResults(0)
537
546
 
538
547
  else:
539
548
  # Initializer if it is no transformable
@@ -622,7 +631,8 @@ class N2PComponent:
622
631
  return resultsParameters
623
632
  # ------------------------------------------------------------------------------------------------------------------
624
633
 
625
- def _filter_array(self, array: np.ndarray, filter_list: list[Union[N2PElement, N2PNode]], where=None, ii_map=None, cornerData=False) -> np.ndarray:
634
+ def _filter_array(self, array: np.ndarray, filter_list: list[Union[N2PElement, N2PNode]],
635
+ where=None, ii_map=None, cornerData=False) -> np.ndarray:
626
636
 
627
637
  if not filter_list:
628
638
  return array
@@ -655,7 +665,8 @@ class N2PComponent:
655
665
 
656
666
 
657
667
  def _get_axis(v1: Union[tuple, np.ndarray], v2: Union[tuple, np.ndarray]) -> np.ndarray:
658
- """Function that returns the components of the three vectors of a rectangular coordinate system
668
+ """
669
+ Function that returns the components of the three vectors of a rectangular coordinate system.
659
670
 
660
671
  Args:
661
672
  v1: tuple|ndarray
@@ -676,7 +687,9 @@ def _get_axis(v1: Union[tuple, np.ndarray], v2: Union[tuple, np.ndarray]) -> np.
676
687
  return np.vstack((v1, y, z))
677
688
 
678
689
  def _get_memory_usage() -> tuple[float, float, float]:
679
- """Returns total_memory, available_memory, used_memory in MB"""
690
+ """
691
+ Returns total_memory, available_memory, used_memory in MB.
692
+ """
680
693
 
681
694
  class MEMORYSTATUSEX(ctypes.Structure):
682
695
  _fields_ = [
@@ -2,17 +2,8 @@ from NaxToPy.Core.Classes.N2PNode import N2PNode
2
2
 
3
3
 
4
4
  class N2PConnector:
5
- """Class of Connectors for NaxToPy. In the module, elements and connectors are separate classes
6
-
7
- Attributes:
8
- ID: int.
9
- PartID: str.
10
- TypeConnector: str.
11
- FreeNodes: list[N2PNode].
12
- SlaveNodes: list[N2PNode].
13
- Grids: list[N2PNode].
14
- InternalID: int.
15
- RefGrid: N2PNode.
5
+ """
6
+ Class of Connectors for NaxToPy. In the module, elements and connectors are separate classes.
16
7
  """
17
8
 
18
9
  __slots__ = (
@@ -21,7 +12,9 @@ class N2PConnector:
21
12
  )
22
13
 
23
14
  def __init__(self, info, model_father):
24
- """Python Connector constructor"""
15
+ """
16
+ Python Connector constructor
17
+ """
25
18
  self.__info = info
26
19
  self.__model = model_father
27
20
 
@@ -30,24 +23,36 @@ class N2PConnector:
30
23
  # Metodo para obtener el ID conector -------------------------------------------------------------------------------
31
24
  @property
32
25
  def ID(self) -> int:
26
+ """
27
+ ID of the connector.
28
+ """
33
29
  return(int(self.__info.ID))
34
30
  # ------------------------------------------------------------------------------------------------------------------
35
31
 
36
32
  # Metodo para obtener el ID de la parte del conector ---------------------------------------------------------------
37
33
  @property
38
34
  def PartID(self) -> str:
35
+ """
36
+ Part ID of the connector.
37
+ """
39
38
  return(self.__model._N2PModelContent__partIDtoStr.get(self.__info.Part, -1))
40
39
  # ------------------------------------------------------------------------------------------------------------------
41
40
 
42
- # Metodo para obtener el tipo de conector conector -----------------------------------------------------------------
41
+ # Metodo para obtener el tipo de conector --------------------------------------------------------------------------
43
42
  @property
44
43
  def TypeConnector(self) -> str:
44
+ """
45
+ Connector type.
46
+ """
45
47
  return str(self.__info.tipo)
46
48
  # ------------------------------------------------------------------------------------------------------------------
47
49
 
48
50
  # Metodo para obtener los nodos (N2PNode) libres/independientes conector -------------------------------------------
49
51
  @property
50
52
  def FreeNodes(self) -> list[N2PNode]:
53
+ """
54
+ Free Nodes of the connector.
55
+ """
51
56
  # Devuelve el ID interno (el de VTK) de los nodos, no el solver. Entro con ese id en el diccionario de VTK a
52
57
  # Solver(ID, partID). Con la tupla entro en el diccionario de nodos para sacar el objeto N2PNode.
53
58
  # Todo dentro de una comprension de lista.
@@ -59,6 +64,9 @@ class N2PConnector:
59
64
  # Metodo para obtener los nodos (N2PNode) esclavos/dependientes del conector ---------------------------------------
60
65
  @property
61
66
  def SlaveNodes(self) -> list[N2PNode]:
67
+ """
68
+ Slaves Nodes of the connector.
69
+ """
62
70
  listaobjetos = [list(self.__model._N2PModelContent__node_dict)[node]
63
71
  for node in list(self.__info.pointsDep)]
64
72
  return listaobjetos
@@ -67,6 +75,9 @@ class N2PConnector:
67
75
  # Metodo para obtener los nodos (N2PNode) del conector en caso de ser del tipo MPC o RSPLINE -----------------------
68
76
  @property
69
77
  def GridIDs(self) -> list[N2PNode]:
78
+ """
79
+ Nodes (:class:`N2PNode`) of the connector in case it is of type MPC or RSPLINE.
80
+ """
70
81
  listaobjetos = [ list(self.__model._N2PModelContent__node_dict)[node]
71
82
  for node in list(self.__info.gridIDs) ]
72
83
  return listaobjetos
@@ -75,12 +86,18 @@ class N2PConnector:
75
86
  # Metodo para obtener el id interno (o VTK) del conector -----------------------------------------------------------
76
87
  @property
77
88
  def InternalID(self) -> int:
89
+ """
90
+ Internal ID of the connector.
91
+ """
78
92
  return (int(self.__info.VTKindice))
79
93
  # ------------------------------------------------------------------------------------------------------------------
80
94
 
81
95
  # Metodo para obtener el id del nodo de referencia en caso de que el conector sea RBE3 o COUPLING
82
96
  @property
83
97
  def RefGrid(self) -> N2PNode:
98
+ """
99
+ Reference node ID in case the connector is of type RBE3 or COUPLING.
100
+ """
84
101
  return list(self.__model._N2PModelContent__node_dict)[int(self.__info.refGrid)]
85
102
  # ------------------------------------------------------------------------------------------------------------------
86
103