NaxToPy 3.2.0__tar.gz → 3.2.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 (165) hide show
  1. {naxtopy-3.2.0/src/NaxToPy.egg-info → naxtopy-3.2.2}/PKG-INFO +12 -1
  2. {naxtopy-3.2.0 → naxtopy-3.2.2}/README.md +11 -0
  3. {naxtopy-3.2.0 → naxtopy-3.2.2}/pyproject.toml +1 -1
  4. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PComponent.py +13 -11
  5. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PNastranInputData.py +29 -3
  6. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Constants/Constants.py +4 -4
  7. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Errors/N2PLog.py +17 -1
  8. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/N2PModelContent.py +47 -19
  9. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/data_input_hdf5.py +20 -1
  10. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/hdf5.py +3 -3
  11. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/property.py +13 -11
  12. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PCalculatorRFJoints.py +3 -3
  13. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PGetFasteners.py +3 -3
  14. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PGetLoadFasteners.py +4 -32
  15. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PJoint.py +2 -4
  16. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/metallic/neuber/N2PNeuber.py +215 -74
  17. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/__init__.py +1 -0
  18. {naxtopy-3.2.0 → naxtopy-3.2.2/src/NaxToPy.egg-info}/PKG-INFO +12 -1
  19. {naxtopy-3.2.0 → naxtopy-3.2.2}/LICENSE +0 -0
  20. {naxtopy-3.2.0 → naxtopy-3.2.2}/setup.cfg +0 -0
  21. {naxtopy-3.2.0 → naxtopy-3.2.2}/setup.py +0 -0
  22. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntity.py +0 -0
  23. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityElement.py +0 -0
  24. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityNode.py +0 -0
  25. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityShell.py +0 -0
  26. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQEntities/__init__.py +0 -0
  27. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeyword.py +0 -0
  28. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordBEAMSECTION.py +0 -0
  29. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordCOUPLING.py +0 -0
  30. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDENSITY.py +0 -0
  31. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTING.py +0 -0
  32. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTINGCOUPLING.py +0 -0
  33. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELASTIC.py +0 -0
  34. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELEMENT.py +0 -0
  35. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELSET.py +0 -0
  36. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDINSTANCE.py +0 -0
  37. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDPART.py +0 -0
  38. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordINSTANCE.py +0 -0
  39. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATIC.py +0 -0
  40. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATICCOUPLING.py +0 -0
  41. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordMATERIAL.py +0 -0
  42. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNODE.py +0 -0
  43. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNSET.py +0 -0
  44. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordORIENTATION.py +0 -0
  45. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPART.py +0 -0
  46. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPLASTIC.py +0 -0
  47. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSHELLSECTION.py +0 -0
  48. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSOLIDSECTION.py +0 -0
  49. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSURFACE.py +0 -0
  50. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/__init__.py +0 -0
  51. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/AllClasses.py +0 -0
  52. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PAbaqusInputData.py +0 -0
  53. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PConnector.py +0 -0
  54. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PCoord.py +0 -0
  55. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PElement.py +0 -0
  56. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PFreeBody.py +0 -0
  57. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PIncrement.py +0 -0
  58. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PLoadCase.py +0 -0
  59. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PMaterial.py +0 -0
  60. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PNode.py +0 -0
  61. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PProperty.py +0 -0
  62. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PReport.py +0 -0
  63. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PResult.py +0 -0
  64. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PSection.py +0 -0
  65. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PSet.py +0 -0
  66. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ProgresBar.py +0 -0
  67. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/__init__.py +0 -0
  68. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Constants/__init__.py +0 -0
  69. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Constants/librerias.py +0 -0
  70. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Errors/N2PColors.py +0 -0
  71. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Errors/N2PFileHandler.py +0 -0
  72. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Errors/__init__.py +0 -0
  73. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +0 -0
  74. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Reference_Finder/__init__.py +0 -0
  75. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/_AuxFunc/_NetToPython.py +0 -0
  76. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/_AuxFunc/__init__.py +0 -0
  77. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/__init__.py +0 -0
  78. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/__init__.py +0 -0
  79. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/__init__.py +0 -0
  80. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/material.py +0 -0
  81. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/model_processor.py +0 -0
  82. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/envelope/N2PEnvelope.py +0 -0
  83. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/envelope/__init__.py +0 -0
  84. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/__init__.py +0 -0
  85. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/airbus/__init__.py +0 -0
  86. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/airbus/core_shear_crimping_airbus.py +0 -0
  87. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/airbus/dimpling_airbus.py +0 -0
  88. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/airbus/wrinkling_airbus.py +0 -0
  89. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/bruhn/__init__.py +0 -0
  90. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/cmh/__init__.py +0 -0
  91. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/cmh/core_shear_crimping_cmh.py +0 -0
  92. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/cmh/dimpling_cmh.py +0 -0
  93. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/cmh/wrinkling_cmh.py +0 -0
  94. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/esdu/__init__.py +0 -0
  95. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hsb/__init__.py +0 -0
  96. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hsb/wrinkling_hsb.py +0 -0
  97. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hypersizer/__init__.py +0 -0
  98. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hypersizer/crimping_hypersizer.py +0 -0
  99. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hypersizer/dimpling_hypersizer.py +0 -0
  100. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hypersizer/wrinkling_hypersizer.py +0 -0
  101. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/nasa/__init__.py +0 -0
  102. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/nasa/wrinkling_nasa.py +0 -0
  103. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/n2ptoexe/N2PtoEXE.py +0 -0
  104. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/n2ptoexe/__init__.py +0 -0
  105. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/numericaltools/N2PCoefficientsFinder.py +0 -0
  106. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/numericaltools/__init__.py +0 -0
  107. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/__init__.py +0 -0
  108. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/__init__.py +0 -0
  109. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/delamination/N2PEdgeDelamination.py +0 -0
  110. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/delamination/__init__.py +0 -0
  111. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/failure_analysis/N2PCompositeFailure.py +0 -0
  112. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/failure_analysis/N2PFailureComposite_Backupy.py +0 -0
  113. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/failure_analysis/N2PFailureComposite_Vectorisation.py +0 -0
  114. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/failure_analysis/__init__.py +0 -0
  115. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/sandwich/N2PSandwich.py +0 -0
  116. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/sandwich/__init__.py +0 -0
  117. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PCompRF.py +0 -0
  118. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PFastenerAnalysis.py +0 -0
  119. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PMetalRF.py +0 -0
  120. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PRivetRF.py +0 -0
  121. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PUpdateFastener.py +0 -0
  122. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetAttachments.py +0 -0
  123. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetResults.py +0 -0
  124. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PInterpolation.py +0 -0
  125. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PLoadModel.py +0 -0
  126. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +0 -0
  127. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/__init__.py +0 -0
  128. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/__init__.py +0 -0
  129. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/__init__.py +0 -0
  130. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Check/Validation.py +0 -0
  131. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/AR1DElement.py +0 -0
  132. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARAttachment.py +0 -0
  133. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARBolt.py +0 -0
  134. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlate.py +0 -0
  135. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlateElements.py +0 -0
  136. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/__init__.py +0 -0
  137. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARAuxiliarFunctions.py +0 -0
  138. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARBilinearInterpolation.py +0 -0
  139. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARConfigurationInput.py +0 -0
  140. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARDerivedLoadCases.py +0 -0
  141. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARFileInputRivetsIDs.py +0 -0
  142. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetAttachments.py +0 -0
  143. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetBolts.py +0 -0
  144. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARReadResultsFromFile.py +0 -0
  145. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARResults.py +0 -0
  146. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARRotation.py +0 -0
  147. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARSerialize.py +0 -0
  148. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/__init__.py +0 -0
  149. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/__init__.py +0 -0
  150. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/__init__.py +0 -0
  151. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/__init__.py +0 -0
  152. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PAttachment.py +0 -0
  153. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PBolt.py +0 -0
  154. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PFastenerSystem.py +0 -0
  155. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PJointAnalysisParameters.py +0 -0
  156. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PPlate.py +0 -0
  157. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/__init__.py +0 -0
  158. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/metallic/__init__.py +0 -0
  159. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/metallic/neuber/__init__.py +0 -0
  160. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/NaxToPy.ico +0 -0
  161. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/user_functions.txt +0 -0
  162. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy.egg-info/SOURCES.txt +0 -0
  163. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy.egg-info/dependency_links.txt +0 -0
  164. {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy.egg-info/requires.txt +0 -0
  165. {naxtopy-3.2.0 → naxtopy-3.2.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.2.0
3
+ Version: 3.2.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
@@ -283,6 +283,17 @@ is redundant. The coordinate system will prevail.
283
283
  8. Feat: `N2PNastranInputData.get_failed_cards()`: New method that allows retrieving cards that are poorly formatted or have reading errors when opening a Nastran input file (.bdf).
284
284
  9. Feat: `N2PNastranInputData.create_card()`: New method that allows creating Nastran cards completely from scratch, which will be added to the end of the Nastran input file once the `rebuild_file()` command is executed.
285
285
 
286
+ ### v.3.2.1
287
+ 1. BugFix: Derived components are now founded right while using `get_result_by_LCs_Incr()`.
288
+ 2. BugFix: All sections are now founded right while using `get_result_by_LCs_Incr()`.
289
+ 3. BugFix: Now symbols like "\" or "-" are supported as part of the name of Components and Load Cases while creating new derived Components and Derived Load Cases.
290
+
291
+ ### v.3.2.2
292
+ 1. BugFix: Logs message are not printed double when the buffer is called several times.
293
+ 2. BugFix: `get_load_case()` now returns correctly the load cases if it is called before and after calling `import_results_from_files()`.
294
+ 3. Refactor: New structure for the h5 files generated by N2PNeuber module.
295
+ 4. BugFix: MCID in CQUAD4 and CTRIA3 are now correctly readed from a bdf file.
296
+
286
297
  # Documentation
287
298
 
288
299
  **NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
@@ -256,6 +256,17 @@ is redundant. The coordinate system will prevail.
256
256
  8. Feat: `N2PNastranInputData.get_failed_cards()`: New method that allows retrieving cards that are poorly formatted or have reading errors when opening a Nastran input file (.bdf).
257
257
  9. Feat: `N2PNastranInputData.create_card()`: New method that allows creating Nastran cards completely from scratch, which will be added to the end of the Nastran input file once the `rebuild_file()` command is executed.
258
258
 
259
+ ### v.3.2.1
260
+ 1. BugFix: Derived components are now founded right while using `get_result_by_LCs_Incr()`.
261
+ 2. BugFix: All sections are now founded right while using `get_result_by_LCs_Incr()`.
262
+ 3. BugFix: Now symbols like "\" or "-" are supported as part of the name of Components and Load Cases while creating new derived Components and Derived Load Cases.
263
+
264
+ ### v.3.2.2
265
+ 1. BugFix: Logs message are not printed double when the buffer is called several times.
266
+ 2. BugFix: `get_load_case()` now returns correctly the load cases if it is called before and after calling `import_results_from_files()`.
267
+ 3. Refactor: New structure for the h5 files generated by N2PNeuber module.
268
+ 4. BugFix: MCID in CQUAD4 and CTRIA3 are now correctly readed from a bdf file.
269
+
259
270
  # Documentation
260
271
 
261
272
  **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.2.0"
7
+ version = "3.2.2"
8
8
  license = {text = "MIT"}
9
9
  authors = [ { name = "Idaero Solutions", email = "manuel.sanchez@idaerosolutions.com" }, ]
10
10
  requires-python = ">=3.9"
@@ -150,7 +150,7 @@ class N2PComponent:
150
150
  * -10: User defined coordinate system
151
151
  * -20: Element/Node user defined coordinate system
152
152
  * -1000: Analysis coordinate system (default)
153
- * \>0: Solver ID of predefined coordinate system
153
+ * >0: Solver ID of predefined coordinate system
154
154
 
155
155
  .. note::
156
156
 
@@ -251,7 +251,7 @@ class N2PComponent:
251
251
  * -10: User defined coordinate system
252
252
  * -20: Element/Node user defined coordinate system
253
253
  * -1000: Analysis coordinate system (default)
254
- * \>0: Solver ID of predefined coordinate system
254
+ * >0: Solver ID of predefined coordinate system
255
255
 
256
256
  .. note::
257
257
 
@@ -454,7 +454,14 @@ class N2PComponent:
454
454
  i = 0
455
455
  n_opt = 0
456
456
  n_lcs = len(list_lc_incr)
457
-
457
+
458
+ if not sections:
459
+ if isinstance(list_lc_incr[0][0], int):
460
+ sections = list({section.Name for lc, _ in list_lc_incr for component in self._result_father._loadCase_father._modelFather.get_load_case(lc).Results[self._result_father.Name].Components.values() for section in component.Sections})
461
+ else:
462
+ sections = list({section.Name for lc, _ in list_lc_incr for component in lc.Results[self._result_father.Name].Components.values() for section in component.Sections})
463
+
464
+
458
465
  # A first shoot with a block of 5 load cases is made. The memory used in the process wil be measured
459
466
  # using the function _get_memory_usage(). Acording to de memory used, the optimum number of load cases
460
467
  # per block will be claculated and the remain load cases will be launched in blocks.
@@ -491,13 +498,13 @@ class N2PComponent:
491
498
 
492
499
  if not components[0]:
493
500
  py_dict.update({
494
- (int(key.split(":")[0].replace("DoF_LCD", "-").replace("DoF_LC", "")), int(key.split(":")[1][2:])) :
501
+ (int(key.split(":")[0].replace("DoF_LCD", "-").replace("DoF_LC", "")), int(key.split(":")[1][2:].replace("_DoF", ""))) :
495
502
  self._filter_array(np.array(value, np.float64), filter_list, None, ii_map, cornerData)
496
503
  for key, value in dict(cs_dict[0]).items()
497
504
  })
498
505
  else:
499
506
  py_dict.update({
500
- (int(key.split(":")[0].replace("DoF_LCD", "-").replace("DoF_LC", "")), int(key.split(":")[1][2:]), component) :
507
+ (int(key.split(":")[0].replace("DoF_LCD", "-").replace("DoF_LC", "")), int(key.split(":")[1][2:].replace("_DoF", "")), component) :
501
508
  self._filter_array(np.array(value, np.float64), filter_list, None, ii_map, cornerData)
502
509
  for key, value in dict(cs_dict[0]).items()
503
510
  })
@@ -644,16 +651,11 @@ class N2PComponent:
644
651
  if not isinstance(sections, list):
645
652
  msg = N2PLog.Error.E218()
646
653
  raise TypeError(msg)
647
- actual_sections = {s.Name for s in self.Sections}
648
654
  for section in sections:
649
655
  if type(section) is N2PSection:
650
656
  sectionParam += str(section.Name) + '#'
651
657
  else:
652
- if section in actual_sections:
653
- sectionParam += str(section) + '#'
654
- else:
655
- msg = N2PLog.Error.E238(section, actual_sections)
656
- raise Exception(msg)
658
+ sectionParam += str(section) + '#'
657
659
 
658
660
  resultsParameters.sectPoint = sectionParam
659
661
 
@@ -230,6 +230,7 @@ class N2PNastranInputData:
230
230
  "__executivecontrolinstructions",
231
231
  "__listcomments",
232
232
  "__lazylist",
233
+ "__bdfFiles"
233
234
  )
234
235
 
235
236
  def __init__(self, dictcardscston2p: dict, inputfiledata):
@@ -239,6 +240,7 @@ class N2PNastranInputData:
239
240
  self.__executivecontrolinstructions = []
240
241
  self.__listcomments = []
241
242
  self.__lazylist = None
243
+ self.__bdfFiles = {bdf.BdfFilePath: bdf for bdf in inputfiledata.BdfFiles}
242
244
 
243
245
  @property
244
246
  def ListBulkDataCards(self) -> list[N2PCard]:
@@ -417,9 +419,33 @@ class N2PNastranInputData:
417
419
  N2PLog.Error.E100(error.StatusMessage)
418
420
  return failed_cards
419
421
 
420
- def create_card(self, card_type: str, parentBdfFile: object, rawContent: str = None, superElemntId:int = 0) -> N2PCard:
421
- """Method that creates a new card of the type specified."""
422
- card = self.__inputfiledata.CreateCard(card_type, parentBdfFile, rawContent, superElemntId)
422
+ def create_card(self, card_type: str, bdf_file: str, rawContent: str = None, superElemntId:int = 0) -> N2PCard:
423
+ """Method that creates a new card of the type specified. By default, the card is created empty, with small field format.
424
+
425
+ Example:
426
+ >>> new_cbar = model.ModelInputData.create_card("CBAR", "C:\\bdf\\mesh\\model.bdf")
427
+ >>> # new_cbar is now a N2PCard object of type CBAR empty. You can set its properties:
428
+ >>> new_cbar.EID = 1001
429
+ >>> new_cbar.PID = 2001
430
+ >>> new_cbar.GA = 10
431
+ >>> new_cbar.GB = 20
432
+ >>> new_cbar.X1 = 1.0
433
+ >>> new_cbar.X2 = 0.0
434
+ >>> new_cbar.X3 = 0.0
435
+
436
+ >>> # It is also possible to create a card with raw content and specifying the superelement id:
437
+ >>> raw_content = "CBAR 1002 2001 30 40 0.0 1.0 0.0"
438
+ >>> new_cbar2 = model.ModelInputData.create_card("CBAR", "C:\\bdf\\mesh\\model.bdf", rawContent=raw_content, superElemntId=0)
439
+
440
+ """
441
+ bdfFileObject = self.__bdfFiles.get(bdf_file, None)
442
+ if bdfFileObject is None:
443
+ N2PLog.Warning.W212(bdf_file)
444
+ bdfFileObject = self.__inputfiledata.BdfFiles[0]
445
+ card = self.__inputfiledata.BulkDataSection.CreateCard(card_type, bdfFileObject, rawContent, superElemntId)
446
+ card.CardType = card_type
447
+ card.FieldsFormat = "SMALL"
448
+
423
449
  return card
424
450
 
425
451
  class N2PModelInputData(N2PNastranInputData):
@@ -1,15 +1,15 @@
1
1
  """Constants of the NaxToPy package"""
2
2
 
3
3
  # NaxToPy Version
4
- VERSION = "3.2.0"
4
+ VERSION = "3.2.2"
5
5
 
6
6
  # Supported for Naxto:
7
7
  NAXTO_VERSION = '2025R2'
8
- NAXTO_STEP = "0"
9
- NAXTO_ADVANCED_INSTALLER = "2025.2.0"
8
+ NAXTO_STEP = "2"
9
+ NAXTO_ADVANCED_INSTALLER = "2025.2.2"
10
10
 
11
11
  # Assembly version of NaxToModel.dll
12
- VIZZER_COMPATIBILITY = ("5.2.0.0")
12
+ VIZZER_COMPATIBILITY = ("5.2.0.2")
13
13
  """Tuple with the compatible versions of NaxToModel.dll"""
14
14
 
15
15
  # PYTHON EXTERNO ----------------------------------------------------------------------------------
@@ -446,7 +446,7 @@ own information message. Use the following structure as a standard message (I +
446
446
  def I116() -> None:
447
447
  """ Working with the installed naxto libraries
448
448
  """
449
- message = "I116: Working with NaxTo installed libraries (in Program Files\IDAERO)"
449
+ message = r"I116: Working with NaxTo installed libraries (in Program Files\IDAERO)"
450
450
  N2PLog._N2PLog__logger.info(message)
451
451
 
452
452
  @staticmethod
@@ -676,6 +676,14 @@ own information message. Use the following structure as a standard message (I +
676
676
  message = f"W211: The result asked is not available in all the load cases selected"
677
677
  N2PLog._N2PLog__logger.warning(message)
678
678
 
679
+ @staticmethod
680
+ def W212(path) -> None:
681
+ """
682
+ Warning raised when the path for the new N2PCard is not in the include's tree.
683
+ """
684
+ message = f"W212: The path '{path}' for the new N2PCard is not in the include's tree. The card will be added in the launch bdf."
685
+ N2PLog._N2PLog__logger.warning(message)
686
+
679
687
  @staticmethod
680
688
  def W300() -> None:
681
689
  """ Warning raised when there are more dimensions than points in n2p.envelope
@@ -1259,6 +1267,14 @@ own information message. Use the following structure as a standard message (I +
1259
1267
  message = f"E114: THE FILE {file} IS A INPUT TEXT FILE BUT THE SOLVER IS UNKNOWN. SPECIFY THE 'file_type'."
1260
1268
  N2PLog._N2PLog__logger.error(message)
1261
1269
  return message
1270
+
1271
+ @staticmethod
1272
+ def E115() -> str:
1273
+ """ Error raised when a dictionary for filtering is passed but not where the filter is applied
1274
+ """
1275
+ message = f"E115: A DICTIONARY FOR FILTERING IS PASSED BUT NOT WHERE THE FILTER IS APPLIED. 'filter' MUST BE 'ELEMENTS', 'PROPERTIES', 'PARTS' OR 'NODES'"
1276
+ N2PLog._N2PLog__logger.error(message)
1277
+ return message
1262
1278
 
1263
1279
  @staticmethod
1264
1280
  def E201(*args) -> None:
@@ -66,8 +66,9 @@ class N2PModelContent:
66
66
  """
67
67
  # 0 ) Genera el archivo .log y añade los logs de la importación ------------------------------------------------
68
68
  # Configura el logger para que escriba automaticamente los logs ------------------------------------------------
69
- N2PLog._N2PLog__fh.write_buffered_records()
70
- N2PLog._N2PLog__fh.immediate_logging()
69
+ if not N2PLog._N2PLog__fh.immediate:
70
+ N2PLog._N2PLog__fh.write_buffered_records()
71
+ N2PLog._N2PLog__fh.immediate_logging()
71
72
 
72
73
  # 1) Extraer Toda la Informacion Principal de NaxTo ------------------------------------------------------------
73
74
  # Inicializador de atributos
@@ -312,27 +313,48 @@ class N2PModelContent:
312
313
  def __init__(self, keys_list: list):
313
314
  super().__init__()
314
315
  self._hash_to_cs = dict()
316
+ self._collision_counter = {} # Track collision index per hash
317
+
315
318
  for cs_ref in keys_list:
316
319
  if cs_ref.GetN2PCardType() not in CONSTRUCTDICT:
317
320
  continue
318
- # As the C# references can be moved by the CLR garbage collector, a dictionary using the
319
- # hash is used.
321
+
320
322
  hash = RuntimeHelpers.GetHashCode(cs_ref)
321
- self[hash] = None
322
- self._hash_to_cs[hash] = cs_ref
323
-
324
- def __getitem__(self, hash):
325
-
326
- if hash not in self or self.get(hash) is None:
327
- cs_ref = self._hash_to_cs.get(hash)
323
+
324
+ # Create unique key for collisions
325
+ if hash in self._collision_counter:
326
+ self._collision_counter[hash] += 1
327
+ unique_key = (hash, self._collision_counter[hash])
328
+ else:
329
+ self._collision_counter[hash] = 0
330
+ unique_key = (hash, 0)
331
+
332
+ self[unique_key] = None
333
+ self._hash_to_cs[unique_key] = cs_ref
334
+
335
+ def __getitem__(self, key):
336
+ # Handle both (hash, index) and plain hash lookups
337
+ if isinstance(key, tuple):
338
+ hash, index = key
339
+ else:
340
+ hash = key
341
+ index = 0
342
+ key = (hash, 0)
343
+
344
+ if key not in self or self.get(key) is None:
345
+ cs_ref = self._hash_to_cs.get(key)
346
+
347
+ if not cs_ref:
348
+ return None
349
+
328
350
  value = CONSTRUCTDICT.get(cs_ref.GetN2PCardType())
329
351
  if value:
330
- self[hash] = value(cs_ref)
331
- else:
332
- return value
333
- return value(cs_ref)
352
+ constructed = value(cs_ref)
353
+ self[key] = constructed
354
+ return constructed
355
+ return None
334
356
  else:
335
- return self.get(hash)
357
+ return self.get(key)
336
358
 
337
359
  cslistbulkdatacards = self.__vzmodel.NasOptInputReader.BulkDataSection.GetCardDataBaseList()
338
360
  self.__modelinputdata = N2PNastranInputData(
@@ -1427,11 +1449,13 @@ class N2PModelContent:
1427
1449
  for result_file in results_files:
1428
1450
  if os.path.isfile(result_file):
1429
1451
  self.__vzmodel.ImportResults(str(result_file))
1430
- self._import_load_cases()
1431
1452
  N2PLog.Debug.D201(str(result_file))
1432
1453
  else:
1433
1454
  N2PLog.Error.E232(str(result_file))
1434
1455
 
1456
+ self._import_load_cases()
1457
+ self.__LCs_by_ID__ = {lc.ID: lc for lc in self.LoadCases}
1458
+
1435
1459
  # ------------------------------------------------------------------------------------------------------------------
1436
1460
 
1437
1461
  ####################################################################################################################
@@ -2199,7 +2223,8 @@ class N2PModelContent:
2199
2223
  break
2200
2224
 
2201
2225
  if isinstance(component, list) and isinstance(component[0], str):
2202
- if not all(comp in aux_lc.get_result(result).Components for comp in component):
2226
+ n2_result = aux_lc.get_result(result)
2227
+ if not all(comp in n2_result.Components for comp in component) and not all(comp in n2_result.DerivedComponents for comp in component):
2203
2228
  N2PLog.Error.E319()
2204
2229
  return None
2205
2230
  n2pcomp = aux_lc.get_result(result).get_component(component[0])
@@ -2421,7 +2446,7 @@ def load_model(path: str, parallelprocessing: bool = True,
2421
2446
  ("InputFileAbaqus") or binary result file ("Binary").
2422
2447
  filter: str.
2423
2448
  Optional. It specifies what to load in dict_gen (elements, properties, parts or nodes)
2424
- dict_gem: dict.
2449
+ dict_gen: dict.
2425
2450
  Optional. Dictionary that represents what elements/properties/parts/nodes to load. For
2426
2451
  elements and nodes, the dictionary is in the form {Part ID (str): [Elements ID/Nodes ID]}. For parts or
2427
2452
  properties, the dictionary could simply be in the form {Part ID (str) / Property ID (str): []}.
@@ -2450,6 +2475,9 @@ def load_model(path: str, parallelprocessing: bool = True,
2450
2475
  if path.split(".")[-1] in BINARY_EXTENSIONS and file_type == "InputFileNastran":
2451
2476
  N2PLog.Error.E111()
2452
2477
 
2478
+ if dict_gen and not filter:
2479
+ N2PLog.Error.E115()
2480
+
2453
2481
  return N2PModelContent(path, parallelprocessing, file_type, __transform_dict(dict_gen), filter, loadconnectors=loadconnectors)
2454
2482
  # ----------------------------------------------------------------------------------------------------------------------
2455
2483
 
@@ -31,6 +31,7 @@ class DataEntry:
31
31
  self._loadcase: int = None
32
32
  self._loadcase_description: str = "LOAD CASE"
33
33
  self._loadcase_name: str = None
34
+ self._solution_type: int = 101
34
35
  self._increment: int = 1
35
36
  self._increment_description: str = "INCREMENT"
36
37
  self._increment_value: float = 0.0
@@ -38,6 +39,7 @@ class DataEntry:
38
39
  self._section_description: str = "SECTION"
39
40
  self._part: str = None
40
41
  self._data: np.ndarray = None
42
+
41
43
  self._data_input: np.ndarray = None
42
44
  self._data_input_name: str = None
43
45
  self._data_description: str = "Data"
@@ -217,7 +219,15 @@ class DataEntry:
217
219
 
218
220
  return self._loadcase_name
219
221
  #-------------------------------------------------------------------------------------------------------------------
220
-
222
+
223
+ # Method to obtain the Solution Type ------------------------------------------------------------------------------
224
+ @property
225
+ def SolutionType(self) -> int:
226
+ """
227
+ Returns the Solution Type ID (e.g., 101 for Nastran linear static).
228
+ """
229
+ return self._solution_type
230
+ # ------------------------------------------------------------------------------------------------------------------
221
231
 
222
232
 
223
233
  # Setters ----------------------------------------------------------------------------------------------------------
@@ -354,3 +364,12 @@ class DataEntry:
354
364
  N2PLog.Error.E535(value, str)
355
365
  # ------------------------------------------------------------------------------------------------------------------
356
366
 
367
+
368
+ @SolutionType.setter
369
+ def SolutionType(self, value: int) -> None:
370
+ if type(value) == int:
371
+ self._solution_type = value
372
+ else:
373
+ N2PLog.Error.E535(value, int)
374
+ # ------------------------------------------------------------------------------------------------------------------
375
+
@@ -80,10 +80,10 @@ class HDF5_NaxTo:
80
80
 
81
81
  # Method used to create an HDF5 file -------------------------------------------------------------------------------
82
82
  def create_hdf5(self) -> None:
83
-
84
83
  """
85
84
  Method used to create an HDF5 file, either in disk (if the FilePath attribute has been filled in), or in memory
86
- (if the FilePath boolean attribute has not been filled in). This file will have the following default attributes:
85
+ (if the FilePath boolean attribute has not been filled in). This file will have the following default attributes:
86
+
87
87
  - "SOFTWARE", which will always be "NAXTO".
88
88
  - "DESCRIPTION", which will be the FileDescription attribute (if it has been set).
89
89
  - "CREATION_DATE", which will be the exact date when this function is called. Its structure will be
@@ -142,7 +142,7 @@ class HDF5_NaxTo:
142
142
  section = resultsName.require_group(sectionName)
143
143
  firstEntry = dataEntry[0]
144
144
  loadCase.attrs.update({"DESCRIPTION": firstEntry.LoadCaseDescription, "ID": firstEntry.LoadCase,
145
- "SUBTITLE": firstEntry.LoadCaseName, "SOLUTION_TYPE": np.int32(1)})
145
+ "SUBTITLE": firstEntry.LoadCaseName, "SOLUTION_TYPE": np.int32(firstEntry.SolutionType)})
146
146
  increment.attrs.update({"DESCRIPTION": firstEntry.IncrementDescription,
147
147
  "VALUE": firstEntry.IncrementValue, "ID": firstEntry.Increment})
148
148
  resultsName.attrs.update({"DESCRIPTION": firstEntry.ResultsNameDescription,
@@ -100,18 +100,20 @@ class CompositeShell(Property):
100
100
  It is mandatory that NumPlies is set in first place. Other attributes might be set with no order.
101
101
 
102
102
  EXAMPLE
103
- laminate = CompositeShell()
104
- laminate.NumPlies = 6
105
- laminate.PartIDs = '0'
106
- laminate.MatIDs = [(11100000,'0'),(11100000,'0'),(11100000,'0'),(11100000,'0'),(11100000,'0'),(11100000,'0')]
107
- laminate.thicknesses = [0.1,0.1,0.1,0.1,0.1,0.1]
108
- laminate.theta = [0,45,0,90,0,-45]
109
- model = n2p.load_model(r"")
110
- laminate.MaterialDict = model.MaterialDict
111
- laminate.simmetry = True
112
-
113
- *** Every given list must have the same length as the number of plies of the laminate. Otherwise, instance will not be created.
103
+
104
+ >>> laminate = CompositeShell()
105
+ >>> laminate.NumPlies = 6
106
+ >>> laminate.PartIDs = '0'
107
+ >>> laminate.MatIDs = [(11100000,'0'),(11100000,'0'),(11100000,'0'),(11100000,'0'),(11100000,'0'),(11100000,'0')]
108
+ >>> laminate.thicknesses = [0.1,0.1,0.1,0.1,0.1,0.1]
109
+ >>> laminate.theta = [0,45,0,90,0,-45]
110
+ >>> model = n2p.load_model(r"")
111
+ >>> laminate.MaterialDict = model.MaterialDict
112
+ >>> laminate.simmetry = True
113
+
114
+ .. warning::
114
115
 
116
+ Every given list must have the same length as the number of plies of the laminate. Otherwise, instance will not be created.
115
117
  """
116
118
  __slots__ = (
117
119
  '_n2p_property',
@@ -23,9 +23,9 @@ class N2PCalculatorRFJoints:
23
23
 
24
24
  Example:
25
25
  >>> import NaxToPy as n2p
26
- >>> from NaxToPy.Modules.Fasteners.N2PGetFasteners import N2PGetFasteners
27
- >>> from NaxToPy.Modules.Fasteners.N2PGetLoadFasteners import N2PGetLoadFasteners
28
- >>> from NaxToPy.Modules.Fasteners.Joints.N2PFastenerSystem import N2PFastenerSystem
26
+ >>> from NaxToPy.Modules.static.fasteners.N2PGetFasteners import N2PGetFasteners
27
+ >>> from NaxToPy.Modules.static.fasteners.N2PGetLoadFasteners import N2PGetLoadFasteners
28
+ >>> from NaxToPy.Modules.static.fasteners.N2PFastenerSystem import N2PFastenerSystem
29
29
  >>> from N2PCalculatorRFJoints import N2PCalculatorRFJoints
30
30
  >>> model1 = n2p.get_model(route.fem) # model loaded
31
31
  >>> fasteners = N2PGetFasteners()
@@ -67,9 +67,9 @@ class N2PGetFasteners:
67
67
  The constructor creates an empty N2PGetFasteners instance. Its attributes must be added as properties.
68
68
 
69
69
  Calling example:
70
- >>> import NaxToPy as NP
71
- >>> from NaxToPy.Modules.Fasteners.N2PGetFasteners import N2PGetFasteners
72
- >>> model1 = NP.load_model(r"route.fem") # Model is loaded
70
+ >>> import NaxToPy as n2p
71
+ >>> from NaxToPy.Modules.static.fasteners.N2PGetFasteners import N2PGetFasteners
72
+ >>> model1 = n2p.load_model(r"route.fem") # Model is loaded
73
73
  >>> fasteners = N2PGetFasteners()
74
74
  >>> fasteners.Model = model1 # Compulsory input
75
75
  >>> fasteners.ElementList = model1.get_elements([10, 11, 12, 13, 14]) # Only some joints are to be