NaxToPy 3.1.0__tar.gz → 3.1.2__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 (164) hide show
  1. {naxtopy-3.1.0/src/NaxToPy.egg-info → naxtopy-3.1.2}/PKG-INFO +20 -5
  2. {naxtopy-3.1.0 → naxtopy-3.1.2}/README.md +18 -3
  3. {naxtopy-3.1.0 → naxtopy-3.1.2}/pyproject.toml +2 -2
  4. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSURFACE.py +1 -1
  5. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/N2PComponent.py +175 -138
  6. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/N2PElement.py +3 -0
  7. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/N2PMaterial.py +2 -2
  8. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/N2PProperty.py +43 -15
  9. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Constants/Constants.py +4 -4
  10. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Errors/N2PLog.py +5 -14
  11. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/N2PModelContent.py +360 -225
  12. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +22 -1
  13. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/common/material.py +65 -1
  14. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/common/property.py +46 -1
  15. naxtopy-3.1.2/src/NaxToPy/Modules/static/composite/__init__.py +3 -0
  16. naxtopy-3.1.2/src/NaxToPy/Modules/static/composite/failure_analysis/N2PCompositeFailure.py +2043 -0
  17. naxtopy-3.1.0/src/NaxToPy/Modules/static/composite/failure_analysis/N2PCompositeFailure.py → naxtopy-3.1.2/src/NaxToPy/Modules/static/composite/failure_analysis/N2PFailureComposite_Backupy.py +407 -472
  18. naxtopy-3.1.2/src/NaxToPy/Modules/static/composite/failure_analysis/N2PFailureComposite_Vectorisation.py +2742 -0
  19. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/N2PGetFasteners.py +4 -2
  20. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PJoint.py +77 -17
  21. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/__init__.py +1 -0
  22. {naxtopy-3.1.0 → naxtopy-3.1.2/src/NaxToPy.egg-info}/PKG-INFO +20 -5
  23. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy.egg-info/SOURCES.txt +2 -0
  24. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy.egg-info/requires.txt +1 -1
  25. naxtopy-3.1.0/src/NaxToPy/Modules/static/composite/__init__.py +0 -2
  26. {naxtopy-3.1.0 → naxtopy-3.1.2}/LICENSE +0 -0
  27. {naxtopy-3.1.0 → naxtopy-3.1.2}/setup.cfg +0 -0
  28. {naxtopy-3.1.0 → naxtopy-3.1.2}/setup.py +0 -0
  29. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntity.py +0 -0
  30. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityElement.py +0 -0
  31. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityNode.py +0 -0
  32. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityShell.py +0 -0
  33. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQEntities/__init__.py +0 -0
  34. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeyword.py +0 -0
  35. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordBEAMSECTION.py +0 -0
  36. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordCOUPLING.py +0 -0
  37. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDENSITY.py +0 -0
  38. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTING.py +0 -0
  39. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTINGCOUPLING.py +0 -0
  40. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELASTIC.py +0 -0
  41. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELEMENT.py +0 -0
  42. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELSET.py +0 -0
  43. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDINSTANCE.py +0 -0
  44. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDPART.py +0 -0
  45. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordINSTANCE.py +0 -0
  46. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATIC.py +0 -0
  47. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATICCOUPLING.py +0 -0
  48. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordMATERIAL.py +0 -0
  49. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNODE.py +0 -0
  50. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNSET.py +0 -0
  51. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordORIENTATION.py +0 -0
  52. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPART.py +0 -0
  53. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPLASTIC.py +0 -0
  54. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSHELLSECTION.py +0 -0
  55. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSOLIDSECTION.py +0 -0
  56. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ABQKeywords/__init__.py +0 -0
  57. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/AllClasses.py +0 -0
  58. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/N2PAbaqusInputData.py +0 -0
  59. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/N2PConnector.py +0 -0
  60. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/N2PCoord.py +0 -0
  61. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/N2PFreeBody.py +0 -0
  62. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/N2PIncrement.py +0 -0
  63. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/N2PLoadCase.py +0 -0
  64. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/N2PNastranInputData.py +0 -0
  65. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/N2PNode.py +0 -0
  66. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/N2PReport.py +0 -0
  67. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/N2PResult.py +0 -0
  68. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/N2PSection.py +0 -0
  69. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/N2PSet.py +0 -0
  70. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/ProgresBar.py +0 -0
  71. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Classes/__init__.py +0 -0
  72. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Constants/__init__.py +0 -0
  73. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Constants/librerias.py +0 -0
  74. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Errors/N2PColors.py +0 -0
  75. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Errors/N2PFileHandler.py +0 -0
  76. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Errors/__init__.py +0 -0
  77. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/Reference_Finder/__init__.py +0 -0
  78. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/_AuxFunc/_NetToPython.py +0 -0
  79. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/_AuxFunc/__init__.py +0 -0
  80. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Core/__init__.py +0 -0
  81. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/__init__.py +0 -0
  82. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/common/__init__.py +0 -0
  83. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/common/data_input_hdf5.py +0 -0
  84. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/common/hdf5.py +0 -0
  85. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/common/model_processor.py +0 -0
  86. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/envelope/N2PEnvelope.py +0 -0
  87. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/envelope/__init__.py +0 -0
  88. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/__init__.py +0 -0
  89. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/airbus/__init__.py +0 -0
  90. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/airbus/core_shear_crimping_airbus.py +0 -0
  91. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/airbus/dimpling_airbus.py +0 -0
  92. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/airbus/wrinkling_airbus.py +0 -0
  93. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/bruhn/__init__.py +0 -0
  94. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/cmh/__init__.py +0 -0
  95. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/cmh/core_shear_crimping_cmh.py +0 -0
  96. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/cmh/dimpling_cmh.py +0 -0
  97. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/cmh/wrinkling_cmh.py +0 -0
  98. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/esdu/__init__.py +0 -0
  99. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/hsb/__init__.py +0 -0
  100. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/hsb/wrinkling_hsb.py +0 -0
  101. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/hypersizer/__init__.py +0 -0
  102. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/hypersizer/crimping_hypersizer.py +0 -0
  103. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/hypersizer/dimpling_hypersizer.py +0 -0
  104. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/hypersizer/wrinkling_hypersizer.py +0 -0
  105. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/nasa/__init__.py +0 -0
  106. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/handbooks/nasa/wrinkling_nasa.py +0 -0
  107. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/n2ptoexe/N2PtoEXE.py +0 -0
  108. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/n2ptoexe/__init__.py +0 -0
  109. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/__init__.py +0 -0
  110. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/composite/delamination/N2PEdgeDelamination.py +0 -0
  111. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/composite/delamination/__init__.py +0 -0
  112. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/composite/failure_analysis/__init__.py +0 -0
  113. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/composite/sandwich/N2PSandwich.py +0 -0
  114. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/composite/sandwich/__init__.py +0 -0
  115. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/N2PCalculatorRFJoints.py +0 -0
  116. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/N2PCompRF.py +0 -0
  117. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/N2PFastenerAnalysis.py +0 -0
  118. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/N2PGetLoadFasteners.py +0 -0
  119. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/N2PMetalRF.py +0 -0
  120. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/N2PRivetRF.py +0 -0
  121. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/N2PUpdateFastener.py +0 -0
  122. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetAttachments.py +0 -0
  123. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetResults.py +0 -0
  124. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PInterpolation.py +0 -0
  125. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PLoadModel.py +0 -0
  126. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +0 -0
  127. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/__init__.py +0 -0
  128. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/__init__.py +0 -0
  129. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/__init__.py +0 -0
  130. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Check/Validation.py +0 -0
  131. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/AR1DElement.py +0 -0
  132. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARAttachment.py +0 -0
  133. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARBolt.py +0 -0
  134. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlate.py +0 -0
  135. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlateElements.py +0 -0
  136. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/__init__.py +0 -0
  137. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARAuxiliarFunctions.py +0 -0
  138. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARBilinearInterpolation.py +0 -0
  139. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARConfigurationInput.py +0 -0
  140. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARDerivedLoadCases.py +0 -0
  141. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARFileInputRivetsIDs.py +0 -0
  142. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetAttachments.py +0 -0
  143. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetBolts.py +0 -0
  144. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARReadResultsFromFile.py +0 -0
  145. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARResults.py +0 -0
  146. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARRotation.py +0 -0
  147. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARSerialize.py +0 -0
  148. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/__init__.py +0 -0
  149. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/__init__.py +0 -0
  150. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/__init__.py +0 -0
  151. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/__init__.py +0 -0
  152. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PAttachment.py +0 -0
  153. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PBolt.py +0 -0
  154. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PFastenerSystem.py +0 -0
  155. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PJointAnalysisParameters.py +0 -0
  156. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PPlate.py +0 -0
  157. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/fasteners/joints/__init__.py +0 -0
  158. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/metallic/__init__.py +0 -0
  159. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/metallic/neuber/N2PNeuber.py +0 -0
  160. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/Modules/static/metallic/neuber/__init__.py +0 -0
  161. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/NaxToPy.ico +0 -0
  162. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy/user_functions.txt +0 -0
  163. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy.egg-info/dependency_links.txt +0 -0
  164. {naxtopy-3.1.0 → naxtopy-3.1.2}/src/NaxToPy.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: NaxToPy
3
- Version: 3.1.0
3
+ Version: 3.1.2
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
@@ -118,7 +118,7 @@ Classifier: Topic :: Scientific/Engineering
118
118
  Requires-Python: >=3.9
119
119
  Description-Content-Type: text/markdown
120
120
  License-File: LICENSE
121
- Requires-Dist: pythonnet>=3.0.3
121
+ Requires-Dist: pythonnet>=3.0.4
122
122
  Requires-Dist: numpy>=1.22.0
123
123
  Requires-Dist: setuptools>=67.8.0
124
124
  Requires-Dist: h5py>=3.12.1
@@ -155,7 +155,7 @@ additional software beyond NaxTo (see the Download and Homepage links on the lef
155
155
  This version is compatible with **NaxTo 2025.1**.
156
156
  Check in _Programs and Features_ the NaxTo version that is installed.
157
157
 
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
+ 📘**Note:** If a specific NaxTo version is installed, search the [**NaxToPy History**](https://pypi.org/project/NaxToPy/3.1.2/#history) to find which newer version is compatible with it.
159
159
 
160
160
 
161
161
  ## Installation
@@ -186,6 +186,7 @@ same directory. When ever you want to use the NaxToPy package add the following
186
186
  import sys
187
187
  sys.path.append("...\directory")
188
188
  import NaxToPy as n2p
189
+
189
190
  ## Updating NaxToPy
190
191
 
191
192
  If python is callable from the command line:
@@ -357,12 +358,26 @@ is redundant. The coordinate system will prevail.
357
358
  10. Feat: `N2PLoadModelContent.SetList` is now an encapsulated property.
358
359
  11. Refactor: the method `N2PLoadModelContent.get_result_by_LCs_Incr()` is optimized.
359
360
 
361
+ ### v.3.1.1
362
+ 1. BugFix: Small error fixed in `N2PNeuber`.
363
+ 2. Feat: New Failure criteria in `N2PCompositeFailure` -> Fiber Mode Concept
364
+ 3. BugFix: The property `LevelList` of the abstract class `N2PLog` is now an attribute to be compatible with Python 3.13.
365
+ 4. Feat: New class `N2PropMisc` for properties that are not supported.
366
+ 5. BugFix: Small errors in `N2PGetFasteners`.
367
+ 6. BugFix: Several errors are fixed for properties and materials when reading **InputFileAbaqus** (inp) and **Abaqus** (odb).
368
+ 7. Feat: Now, when a executable is created, if the version of NaxTo of the exe matches the instaled, it will use the **installed** NaxTo libraries. If the version doesn't match or NaxTo is not installed, **exe** NaxTo libraries will be used.
369
+ 8. BugFix: the keyword `THRU` is now supported in the bulk data card `SPC1` when reading from a Nastran Input File.
370
+
371
+ ### v.3.1.2
372
+ 1. BugFix: Changes to fix the Mat IDs attributes in N2Property from Abaqus files.
373
+ 2. Refactor: Updated vectorised method for N2PCompositeFailure module.
374
+ 3. Docs: Improved documentation in some methods.
360
375
 
361
376
  # Documentation
362
377
 
363
378
  **NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
364
379
 
365
- NaxToPy only use three dependeces:
380
+ NaxToPy only use four dependeces:
366
381
  - NumPy: https://numpy.org/
367
382
  - PythonNET: https://pythonnet.github.io/
368
383
  - Setuptools: https://setuptools.pypa.io/en/latest/index.html
@@ -573,7 +588,7 @@ def dataframe_results(model: "N2PModelContent", result: "N2PResult", sections=No
573
588
  ##
574
589
  For more documentation visit https://idaerosolutions.com/Home/NaxToPy
575
590
 
576
- Reference Guide at: https://www.idaerosolutions.com/NaxToPyDoc/NaxToPy.html
591
+ Complete NaxToPy documentation at: https://www.idaerosolutions.com/NaxToDocumentation/NaxToPy/3.1.0/index.html
577
592
 
578
593
  # License
579
594
 
@@ -27,7 +27,7 @@ additional software beyond NaxTo (see the Download and Homepage links on the lef
27
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.1.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.2/#history) to find which newer version is compatible with it.
31
31
 
32
32
 
33
33
  ## Installation
@@ -58,6 +58,7 @@ same directory. When ever you want to use the NaxToPy package add the following
58
58
  import sys
59
59
  sys.path.append("...\directory")
60
60
  import NaxToPy as n2p
61
+
61
62
  ## Updating NaxToPy
62
63
 
63
64
  If python is callable from the command line:
@@ -229,12 +230,26 @@ is redundant. The coordinate system will prevail.
229
230
  10. Feat: `N2PLoadModelContent.SetList` is now an encapsulated property.
230
231
  11. Refactor: the method `N2PLoadModelContent.get_result_by_LCs_Incr()` is optimized.
231
232
 
233
+ ### v.3.1.1
234
+ 1. BugFix: Small error fixed in `N2PNeuber`.
235
+ 2. Feat: New Failure criteria in `N2PCompositeFailure` -> Fiber Mode Concept
236
+ 3. BugFix: The property `LevelList` of the abstract class `N2PLog` is now an attribute to be compatible with Python 3.13.
237
+ 4. Feat: New class `N2PropMisc` for properties that are not supported.
238
+ 5. BugFix: Small errors in `N2PGetFasteners`.
239
+ 6. BugFix: Several errors are fixed for properties and materials when reading **InputFileAbaqus** (inp) and **Abaqus** (odb).
240
+ 7. Feat: Now, when a executable is created, if the version of NaxTo of the exe matches the instaled, it will use the **installed** NaxTo libraries. If the version doesn't match or NaxTo is not installed, **exe** NaxTo libraries will be used.
241
+ 8. BugFix: the keyword `THRU` is now supported in the bulk data card `SPC1` when reading from a Nastran Input File.
242
+
243
+ ### v.3.1.2
244
+ 1. BugFix: Changes to fix the Mat IDs attributes in N2Property from Abaqus files.
245
+ 2. Refactor: Updated vectorised method for N2PCompositeFailure module.
246
+ 3. Docs: Improved documentation in some methods.
232
247
 
233
248
  # Documentation
234
249
 
235
250
  **NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
236
251
 
237
- NaxToPy only use three dependeces:
252
+ NaxToPy only use four dependeces:
238
253
  - NumPy: https://numpy.org/
239
254
  - PythonNET: https://pythonnet.github.io/
240
255
  - Setuptools: https://setuptools.pypa.io/en/latest/index.html
@@ -445,7 +460,7 @@ def dataframe_results(model: "N2PModelContent", result: "N2PResult", sections=No
445
460
  ##
446
461
  For more documentation visit https://idaerosolutions.com/Home/NaxToPy
447
462
 
448
- Reference Guide at: https://www.idaerosolutions.com/NaxToPyDoc/NaxToPy.html
463
+ Complete NaxToPy documentation at: https://www.idaerosolutions.com/NaxToDocumentation/NaxToPy/3.1.0/index.html
449
464
 
450
465
  # License
451
466
 
@@ -4,11 +4,11 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "NaxToPy"
7
- version = "3.1.0"
7
+ version = "3.1.2"
8
8
  license = {file = "LICENSE"}
9
9
  authors = [ { name = "Idaero Solutions", email = "manuel.sanchez@idaerosolutions.com" }, ]
10
10
  requires-python = ">=3.9"
11
- dependencies = ["pythonnet>=3.0.3",
11
+ dependencies = ["pythonnet>=3.0.4",
12
12
  "numpy>=1.22.0",
13
13
  "setuptools>=67.8.0",
14
14
  "h5py>=3.12.1"]
@@ -21,4 +21,4 @@ class N2PKeywordSURFACE(N2PKeyword):
21
21
  @property
22
22
  def EntityList(self) -> list[N2PEntity, ]:
23
23
  """List of entities (based on Type)"""
24
- return list(self._N2PKeyword__info.EntityList)
24
+ return [self._N2PKeyword__dictEntityToN2P[i] for i in self._N2PKeyword__info.EntityList]
@@ -96,77 +96,84 @@ class N2PComponent:
96
96
  def get_result_list(self, sections=None, aveSections=-1, cornerData=False, aveNodes=-1, variation=100,
97
97
  realPolar=0, coordsys: int = -1000,
98
98
  v1: Union[tuple, np.ndarray] = (1,0,0), v2: Union[tuple, np.ndarray] = (0,1,0)) -> tuple[list, str]:
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.
102
-
103
- Args:
99
+ """Get the result array as a list with position information.
100
+
101
+ Returns a tuple containing the list of floats with the requested results
102
+ and a string indicating the position/location of the results.
104
103
 
105
- sections: list[str] | list[N2PSection] -> Optional. Sections which operations are done.
106
- None (Default) = All Sections
107
-
108
- aveSections: int -> Optional. Operation Among Sections.
109
-
110
- -1 : Maximum (Default),
111
- -2 : Minimum,
112
- -3 : Average,
113
- -4 : Extreme,
114
- -6 : Difference.
115
-
116
- cornerData: bool -> Optional. Flag to get results in element nodal.
117
-
118
- True : Results in Element-Nodal,
119
- False : Results in centroid (Default).
120
-
121
- aveNodes: int -> Optional. Operation among nodes when cornerData is selected.
122
-
123
- 0 : None,
124
- -1 : Maximum (Default),
125
- -2 : Minimum,
126
- -3 : Average,
127
- -6 : Difference.
128
-
129
- variation: int -> Optional. Integer between 0 & 100 to select.
130
-
131
- 0 : No average between nodes,
132
- 100 : Total average between nodes (Default).
133
-
134
- realPolar: int -> Optional. Data type when complex result.
135
-
136
- 1 : Real / Imaginary,
137
- 2 : Magnitude / Phase.
138
-
139
- coordsys: int -> Optional. Coordinate System where the result_array will be represented. By default,
140
- the output is in element system:
141
-
142
- 0 : Global,
143
- -1 : Material Coordinate System,
144
- -10 : User defined,
145
- -20 : Element/Node User Defined,
146
- >0 : Solver ID of the Predefined Coordinate System.
147
-
148
- v1: tuple -> Optional.
149
-
150
- v2: tuple -> Optional. Directions vectors that generate the coordinate system axis:
151
-
152
- x=v1,
153
- z=v1^v2,
154
- y=z^x.
155
-
156
- Returns:
157
- results: tuple(list[float], str)
158
-
104
+ Parameters
105
+ ----------
106
+ sections : ``list[str] | list[N2PSection]``
107
+ Optional. Sections on which to perform operations. If None (default), operations
108
+ are performed on all sections.
109
+ aveSections : ``int``, default -1
110
+ Optional. Operation to perform among sections:
111
+
112
+ * -1: Maximum (default)
113
+ * -2: Minimum
114
+ * -3: Average
115
+ * -4: Extreme
116
+ * -6: Difference
117
+
118
+ cornerData : ``bool``, default False
119
+ Optional. Flag to control result location:
120
+
121
+ * True: Results at element nodes
122
+ * False: Results at element centroid (default)
123
+
124
+ aveNodes : ``int``, default -1
125
+ Optional. Operation among nodes when ``cornerData=True``:
126
+
127
+ * 0: None
128
+ * -1: Maximum (default)
129
+ * -2: Minimum
130
+ * -3: Average
131
+ * -6: Difference
132
+
133
+ variation : ``int``, default 100
134
+ Optional. Averaging parameter between nodes (0-100):
135
+
136
+ * 0: No averaging between nodes
137
+ * 100: Total averaging between nodes (default)
138
+
139
+ realPolar : ``int``, default 0
140
+ Optional. Data type for complex results:
141
+
142
+ * 1: Real/Imaginary
143
+ * 2: Magnitude/Phase
144
+
145
+ coordsys : ``int``, default -1000
146
+ Optional. Coordinate system for result representation:
147
+
148
+ * 0: Global coordinate system
149
+ * -1: Material coordinate system
150
+ * -10: User defined coordinate system
151
+ * -20: Element/Node user defined coordinate system
152
+ * -1000: Analysis coordinate system (default)
153
+ * \>0: Solver ID of predefined coordinate system
154
+
155
+ .. note::
156
+
157
+ In Nastran > 2021 the results in the OP2 could be in material coordinate
158
+ system if the user requested it.
159
+
160
+ v1 : ``tuple[float] | numpy.ndarray``, default (1, 0, 0)
161
+ Optional. 3D vector defining the x-axis of the coordinate system.
162
+ v2 : ``tuple[float] | numpy.ndarray``, default (0, 1, 0)
163
+ Optional. 3D vector defining the xy-plane. The coordinate system axes are generated as:
164
+
165
+ * x = v1
166
+ * z = v1 ^ v2 (cross product)
167
+ * y = z ^ x (cross product)
168
+
169
+ Returns
170
+ -------
171
+ tuple[list[float], str]
172
+ Tuple containing:
173
+
174
+ * **results list**: list of floats with the requested results
175
+ * **position**: string indicating the location/position of the results
159
176
  """
160
- # Aquí se prepara la llamada a la funcion de NaxToModel.N2PModelContent.getArraytoPlot(). Esta usa como
161
- # argumento un objeto de la clase N2ParamImputResults. Por se instancia y se modifican sus propiedades antes
162
- # de hacer la llamada a la funcion.
163
-
164
- # Aqui se mete el sistema de coordenadas en el que queremos que nos saque la informacion.
165
- # Para ello primero comprobamos que es viable hacer la tansformacion (puede que aun no este implementada o que
166
- # la componente simplemente no la admita al ser un escalar a secas)
167
-
168
- #resultsParameters.coordSys = -10
169
- #orientationcoordinatesystem = algo
170
177
 
171
178
  resultsParameters = self._create_n2paraminputresult(None, sections, aveSections, cornerData, aveNodes, variation,
172
179
  realPolar, coordsys, v1, v2)
@@ -190,76 +197,106 @@ class N2PComponent:
190
197
  realPolar=0, coordsys: int = -1000,
191
198
  v1: Union[tuple, np.ndarray ] = (1,0,0), v2: Union[tuple, np.ndarray ] = (0,1,0),
192
199
  filter_list: list = None) -> tuple[np.array, str]:
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.
196
-
197
- Args:
198
-
199
- sections: list[str] | list[N2PSection] -> Optional. Sections which operations are done.
200
- None (Default) = All Sections
201
-
202
- aveSections: int -> Optional. Operation Among Sections.
203
-
204
- -1 : Maximum (Default),
205
- -2 : Minimum,
206
- -3 : Average,
207
- -4 : Extreme,
208
- -6 : Difference.
209
-
210
- cornerData: bool -> Optional. Flag to get results in element nodal.
211
-
212
- True : Results in Element-Nodal,
213
- False : Results in centroid (Default).
214
-
215
- aveNodes: int -> Optional. Operation among nodes when cornerData is selected.
216
-
217
- 0 : None,
218
- -1 : Maximum (Default),
219
- -2 : Minimum,
220
- -3 : Average,
221
- -6 : Difference.
222
-
223
- variation: int -> Optional. Integer between 0 & 100 to select.
224
-
225
- 0 : No average between nodes,
226
- 100 : Total average between nodes (Default).
227
-
228
- realPolar: int -> Optional. Data type when complex result.
229
-
230
- 1 : Real / Imaginary,
231
- 2 : Magnitude / Phase.
232
-
233
- coordsys: int -> Optional. Coordinate System where the result_array will be represented. By default,
234
- the output is in element system:
235
-
236
- 0 : Global,
237
- -1 : Material Coordinate System,
238
- -10 : User defined,
239
- -20 : Element/Node User Defined,
240
- >0 : Solver ID of the Predefined Coordinate System.
241
-
242
- v1: tuple -> Optional.
243
-
244
- v2: tuple -> Optional. Directions vectors that generate the coordinate system axis:
245
-
246
- x=v1,
247
- z=v1^v2,
248
- y=z^x.
249
-
250
- filter_n2p: list[N2PElement|N2PNode] (optional)
251
- List with the N2PElement or N2PNode where the results are asked. Filtering the results slows
252
- the result extraction. If the results are needed in two separate list of itmes (nodes or elements)
253
- ask first for both and filter them later.
254
-
255
- Returns:
256
- results: tuple(np.array, str)
257
-
200
+ """Get the result array as a numpy array with position information.
201
+
202
+ Returns a tuple containing the numpy array of floats with the requested results
203
+ and a string indicating the position/location of the results.
204
+
205
+ Parameters
206
+ ----------
207
+ sections : ``list[str] | list[N2PSection]``
208
+ Optional. Sections on which to perform operations. If None (default), operations
209
+ are performed on all sections.
210
+ aveSections : ``int``, default -1
211
+ Optional. Operation to perform among sections:
212
+
213
+ * -1: Maximum (default)
214
+ * -2: Minimum
215
+ * -3: Average
216
+ * -4: Extreme
217
+ * -6: Difference
218
+
219
+ cornerData : ``bool``, default False
220
+ Optional. Flag to control result location:
221
+
222
+ * True: Results at element nodes
223
+ * False: Results at element centroid (default)
224
+
225
+ aveNodes : ``int``, default -1
226
+ Optional. Operation among nodes when ``cornerData=True``:
227
+
228
+ * 0: None
229
+ * -1: Maximum (default)
230
+ * -2: Minimum
231
+ * -3: Average
232
+ * -6: Difference
233
+
234
+ variation : ``int``, default 100
235
+ Optional. Averaging parameter between nodes (0-100):
236
+
237
+ * 0: No averaging between nodes
238
+ * 100: Total averaging between nodes (default)
239
+
240
+ realPolar : ``int``, default 0
241
+ Optional. Data type for complex results:
242
+
243
+ * 1: Real/Imaginary
244
+ * 2: Magnitude/Phase
245
+
246
+ coordsys : ``int``, default -1000
247
+ Optional. Coordinate system for result representation:
248
+
249
+ * 0: Global coordinate system
250
+ * -1: Material coordinate system
251
+ * -10: User defined coordinate system
252
+ * -20: Element/Node user defined coordinate system
253
+ * -1000: Analysis coordinate system (default)
254
+ * \>0: Solver ID of predefined coordinate system
255
+
256
+ .. note::
257
+
258
+ In Nastran > 2021 the results in the OP2 could be in material coordinate
259
+ system if the user requested it.
260
+
261
+ v1 : ``tuple[float] | numpy.ndarray``, default (1, 0, 0)
262
+ Optional. 3D vector defining the x-axis of the coordinate system.
263
+ v2 : ``tuple[float] | numpy.ndarray``, default (0, 1, 0)
264
+ Optional. 3D vector defining the xy-plane. The coordinate system axes are generated as:
265
+
266
+ * x = v1
267
+ * z = v1 ^ v2 (cross product)
268
+ * y = z ^ x (cross product)
269
+
270
+ filter_list : ``list[N2PElement] | list[N2PNode]``
271
+ Optional. List of elements or nodes where results are requested. If None, results
272
+ for all elements/nodes are returned.
273
+
274
+ .. warning::
275
+
276
+ Filtering results can slow down extraction. If results are needed for multiple
277
+ separate lists, extract all results first and filter afterward.
278
+
279
+ Returns
280
+ -------
281
+ tuple[numpy.ndarray, str]
282
+ Tuple containing:
283
+
284
+ * **results array**: numpy array of floats with the requested results
285
+ * **position**: string indicating the location/position of the results
286
+
258
287
  Examples
259
- >>> # N2PComponent is a N2PLoadCase.get_results("DISPLACEMENTS").get_component("X")
260
- >>> displ_X_array, where = N2PComponent.get_result_ndarray(aveSections=-3, coordsys=-1)
261
- >>> # N2PComponent is a N2PLoadCase.get_results("STRESSES").get_component("XX")
262
- >>> stress_array, where = N2PComponent.get_result_ndarray(v1=(-1, 0, 0), v2=(0, -1, 0))
288
+ --------
289
+ >>> # N2PComponent is a N2PLoadCase.get_results("DISPLACEMENTS").get_component("X")
290
+ >>> displ_X_array, where = N2PComponent.get_result_ndarray(
291
+ ... aveSections=-3,
292
+ ... coordsys=-1
293
+ ... )
294
+
295
+ >>> # N2PComponent is a N2PLoadCase.get_results("STRESSES").get_component("XX")
296
+ >>> stress_array, where = N2PComponent.get_result_ndarray(
297
+ ... v1=(-1, 0, 0),
298
+ ... v2=(0, -1, 0)
299
+ ... )
263
300
  """
264
301
  resultsParameters = self._create_n2paraminputresult(None, sections, aveSections, cornerData, aveNodes, variation,
265
302
  realPolar, coordsys, v1, v2)
@@ -69,6 +69,9 @@ class N2PElement:
69
69
  if self.__model.Solver == "Abaqus":
70
70
  id_prop = self.__model._N2PModelContent__propertyIDtoStr.get(id_prop)
71
71
  part = "ASSEMBLY"
72
+ elif self.__model.Solver == "InputFileAbaqus":
73
+ id_prop = self.__model._N2PModelContent__propertyIDtoStr.get(id_prop)
74
+ part = self.PartID
72
75
  else:
73
76
  part = self.PartID
74
77
  return (id_prop, part)
@@ -28,7 +28,7 @@ class N2PMaterial(ABC):
28
28
  """
29
29
  ID of the material.
30
30
  """
31
- if self.__model__.Solver == "Abaqus":
31
+ if self.__model__.Solver == "Abaqus" or self.__model__.Solver == "InputFileAbaqus":
32
32
  return self.__info__.Name
33
33
  else:
34
34
  return self.__info__.ID
@@ -63,7 +63,7 @@ class N2PMaterial(ABC):
63
63
 
64
64
  # Special Method for Object Representation -------------------------------------------------------------------------
65
65
  def __repr__(self):
66
- if self.__model__.Solver == "Abaqus":
66
+ if self.__model__.Solver == "Abaqus" or self.__model__.Solver == "InputFileAbaqus":
67
67
  reprs = f"N2PMaterial(\'{self.ID}\', \'{self.MatType}\')"
68
68
  else:
69
69
  reprs = f"N2PMaterial({self.ID}, \'{self.MatType}\')"
@@ -66,7 +66,7 @@ class N2PProperty(ABC):
66
66
 
67
67
  # Special Method for Object Representation -------------------------------------------------------------------------
68
68
  def __repr__(self):
69
- if self.__model.Solver == "Abaqus":
69
+ if self.__model.Solver == "Abaqus" or self.__model.Solver == "InputFileAbaqus":
70
70
  reprs = f"N2PProperty(\'{self.Name}\', \'{self.PropertyType}\')"
71
71
  else:
72
72
  reprs = f"N2PProperty({self.ID}, \'{self.PropertyType}\')"
@@ -123,6 +123,8 @@ class N2PComp(N2PProperty):
123
123
  def MatID(self) -> tuple[tuple[int, str]]:
124
124
  """Tuple with the solver tuple of thr id and part of the material for each ply of the laminate"""
125
125
  part = self.PartID
126
+ if self.__model__.Solver == "InputFileAbaqus":
127
+ return tuple((self.__model__._N2PModelContent__materialsID[mat], part) for mat in self.__info__.Mat)
126
128
  return tuple((mat, part) for mat in self.__info__.Mat)
127
129
 
128
130
  @property
@@ -386,16 +388,22 @@ class N2PShell(N2PProperty):
386
388
  @property
387
389
  def MatMemID(self) -> Union[tuple[int, str], tuple[str, str]]:
388
390
  """Material index for the membrane behavior"""
391
+ if self.__model__.Solver == "InputFileAbaqus":
392
+ return (self.__model__._N2PModelContent__materialsID[self.__info__.MatMemID], "ASSEMBLY")
389
393
  return (self.__info__.MatMemID, self.PartID)
390
394
 
391
395
  @property
392
396
  def MatBenID(self) -> Union[tuple[int, str], tuple[str, str]]:
393
397
  """Material index for the bending behavior"""
398
+ if self.__model__.Solver == "InputFileAbaqus":
399
+ return (self.__model__._N2PModelContent__materialsID[self.__info__.MatBenID], "ASSEMBLY")
394
400
  return (self.__info__.MatBenID, self.PartID)
395
401
 
396
402
  @property
397
403
  def MatSheID(self) -> Union[tuple[int, str], tuple[str, str]]:
398
404
  """Material index for the shell behavior"""
405
+ if self.__model__.Solver == "InputFileAbaqus":
406
+ return (self.__model__._N2PModelContent__materialsID[self.__info__.MatSheID], "ASSEMBLY")
399
407
  return (self.__info__.MatSheID, self.PartID)
400
408
 
401
409
  @property
@@ -427,6 +435,8 @@ class N2PShell(N2PProperty):
427
435
  @property
428
436
  def MatCouplID(self) -> Union[tuple[int, str], tuple[str, str]]:
429
437
  """Material identification number for membrane-bending coupling"""
438
+ if self.__model__.Solver == "InputFileAbaqus":
439
+ return (self.__model__._N2PModelContent__materialsID[self.__info__.MatCoupl], "ASSEMBLY")
430
440
  return (self.__info__.MatCoupl, self.PartID)
431
441
  # ----------------------------------------------------------------------------------------------------------------------
432
442
 
@@ -448,6 +458,8 @@ class N2PSolid(N2PProperty):
448
458
  @property
449
459
  def MatID(self) -> Union[tuple[int, str], tuple[str, str]]:
450
460
  """Index of the material of the solid property"""
461
+ if self.__model__.Solver == "InputFileAbaqus":
462
+ return (self.__model__._N2PModelContent__materialsID[self.__info__.MatID], "ASSEMBLY")
451
463
  return (self.__info__.MatID, self.PartID)
452
464
 
453
465
  @property
@@ -492,10 +504,9 @@ class N2PRod(N2PProperty):
492
504
  @property
493
505
  def MatID(self) -> Union[tuple[int, str], tuple[str, str]]:
494
506
  """Material identification number."""
495
- mat_id = self.__info__.MatID
496
- if self.__model__.Solver == "Abaqus":
497
- mat_id = self.__model__.MaterialDict[(mat_id, "ASSEMBLY")].ID
498
- return (mat_id, self.PartID)
507
+ if self.__model__.Solver == "InputFileAbaqus":
508
+ return (self.__model__._N2PModelContent__materialsID[self.__info__.MatID], "ASSEMBLY")
509
+ return (self.__info__.MatID, self.PartID)
499
510
 
500
511
  @property
501
512
  def Area(self) -> float:
@@ -534,8 +545,8 @@ class N2PBeam(N2PProperty):
534
545
  def MatID(self) -> Union[tuple[int, str], tuple[str, str]]:
535
546
  """Material identification number."""
536
547
  mat_id = self.__info__.MatID
537
- if self.__model__.Solver == "Abaqus" and mat_id != -1:
538
- mat_id = self.__model__.MaterialDict[(mat_id, "ASSEMBLY")].ID
548
+ if self.__model__.Solver == "InputFileAbaqus":
549
+ return (self.__model__._N2PModelContent__materialsID[mat_id], "ASSEMBLY")
539
550
  elif mat_id == -1:
540
551
  return N2PLog.Warning.W702()
541
552
  return (mat_id, self.PartID)
@@ -899,10 +910,9 @@ class N2PWeld(N2PProperty):
899
910
  """
900
911
  Material identification number.
901
912
  """
902
- mat_id = self.__info__.MatID
903
- if self.__model__.Solver == "Abaqus":
904
- mat_id = self.__model__.MaterialDict[(mat_id, "ASSEMBLY")].ID
905
- return (mat_id, self.PartID)
913
+ if self.__model__.Solver == "InputFileAbaqus":
914
+ return (self.__model__._N2PModelContent__materialsID[self.__info__.MatID], "ASSEMBLY")
915
+ return (self.__info__.MatID, self.PartID)
906
916
 
907
917
  @property
908
918
  def Diameter(self) -> float:
@@ -957,10 +967,9 @@ class N2PBeamL(N2PProperty):
957
967
  """
958
968
  Material identification number.
959
969
  """
960
- mat_id = self.__info__.MatID
961
- if self.__model__.Solver == "Abaqus":
962
- mat_id = self.__model__.MaterialDict[(mat_id, "ASSEMBLY")].ID
963
- return (mat_id, self.PartID)
970
+ if self.__model__.Solver == "InputFileAbaqus":
971
+ return (self.__model__._N2PModelContent__materialsID[self.__info__.MatID], "ASSEMBLY")
972
+ return (self.__info__.MatID, self.PartID)
964
973
 
965
974
  @property
966
975
  def Group(self) -> str:
@@ -1005,3 +1014,22 @@ class N2PBeamL(N2PProperty):
1005
1014
  return self.__info__.FractionalDistance
1006
1015
 
1007
1016
 
1017
+ class N2PPropMisc(N2PProperty):
1018
+ """
1019
+ Class representing the undefined properties (equivalent to N2MatMisc in C#).
1020
+ It derives from N2PProperty.
1021
+ """
1022
+ def __init__(self, information, model_father):
1023
+ """
1024
+ Constructor for N2PMatMisc, mapping the properties from the C# class.
1025
+ """
1026
+ super().__init__(information, model_father)
1027
+ self.__info__ = information
1028
+ self.__model__ = model_father
1029
+
1030
+ @property
1031
+ def QualitiesDict(self) -> dict[str, float]:
1032
+ """
1033
+ Dictionary with the material properties and their values.
1034
+ """
1035
+ return self.__info__.QualitiesDict