NaxToPy 3.2.1__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.
- {naxtopy-3.2.1/src/NaxToPy.egg-info → naxtopy-3.2.2}/PKG-INFO +8 -2
- {naxtopy-3.2.1 → naxtopy-3.2.2}/README.md +7 -1
- {naxtopy-3.2.1 → naxtopy-3.2.2}/pyproject.toml +1 -1
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PComponent.py +2 -2
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PNastranInputData.py +29 -3
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Constants/Constants.py +4 -4
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Errors/N2PLog.py +17 -1
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/N2PModelContent.py +45 -18
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/data_input_hdf5.py +20 -1
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/hdf5.py +3 -3
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/property.py +13 -11
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PCalculatorRFJoints.py +3 -3
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PGetFasteners.py +3 -3
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PGetLoadFasteners.py +4 -32
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PJoint.py +2 -4
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/metallic/neuber/N2PNeuber.py +215 -74
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/__init__.py +1 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2/src/NaxToPy.egg-info}/PKG-INFO +8 -2
- {naxtopy-3.2.1 → naxtopy-3.2.2}/LICENSE +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/setup.cfg +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/setup.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntity.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityElement.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityNode.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityShell.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQEntities/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeyword.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordBEAMSECTION.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordCOUPLING.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDENSITY.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTING.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTINGCOUPLING.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELASTIC.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELEMENT.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELSET.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDINSTANCE.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDPART.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordINSTANCE.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATIC.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATICCOUPLING.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordMATERIAL.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNODE.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNSET.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordORIENTATION.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPART.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPLASTIC.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSHELLSECTION.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSOLIDSECTION.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSURFACE.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/AllClasses.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PAbaqusInputData.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PConnector.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PCoord.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PElement.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PFreeBody.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PIncrement.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PLoadCase.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PMaterial.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PNode.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PProperty.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PReport.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PResult.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PSection.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PSet.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ProgresBar.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Constants/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Constants/librerias.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Errors/N2PColors.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Errors/N2PFileHandler.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Errors/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/Reference_Finder/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/_AuxFunc/_NetToPython.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/_AuxFunc/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Core/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/material.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/model_processor.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/envelope/N2PEnvelope.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/envelope/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/airbus/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/airbus/core_shear_crimping_airbus.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/airbus/dimpling_airbus.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/airbus/wrinkling_airbus.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/bruhn/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/cmh/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/cmh/core_shear_crimping_cmh.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/cmh/dimpling_cmh.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/cmh/wrinkling_cmh.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/esdu/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hsb/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hsb/wrinkling_hsb.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hypersizer/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hypersizer/crimping_hypersizer.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hypersizer/dimpling_hypersizer.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hypersizer/wrinkling_hypersizer.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/nasa/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/nasa/wrinkling_nasa.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/n2ptoexe/N2PtoEXE.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/n2ptoexe/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/numericaltools/N2PCoefficientsFinder.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/numericaltools/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/delamination/N2PEdgeDelamination.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/delamination/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/failure_analysis/N2PCompositeFailure.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/failure_analysis/N2PFailureComposite_Backupy.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/failure_analysis/N2PFailureComposite_Vectorisation.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/failure_analysis/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/sandwich/N2PSandwich.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/sandwich/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PCompRF.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PFastenerAnalysis.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PMetalRF.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PRivetRF.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PUpdateFastener.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetAttachments.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetResults.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PInterpolation.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PLoadModel.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Check/Validation.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/AR1DElement.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARAttachment.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARBolt.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlate.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlateElements.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARAuxiliarFunctions.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARBilinearInterpolation.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARConfigurationInput.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARDerivedLoadCases.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARFileInputRivetsIDs.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetAttachments.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetBolts.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARReadResultsFromFile.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARResults.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARRotation.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARSerialize.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PAttachment.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PBolt.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PFastenerSystem.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PJointAnalysisParameters.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PPlate.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/metallic/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/metallic/neuber/__init__.py +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/NaxToPy.ico +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/user_functions.txt +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy.egg-info/SOURCES.txt +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy.egg-info/dependency_links.txt +0 -0
- {naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy.egg-info/requires.txt +0 -0
- {naxtopy-3.2.1 → 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.
|
|
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
|
|
@@ -285,9 +285,15 @@ is redundant. The coordinate system will prevail.
|
|
|
285
285
|
|
|
286
286
|
### v.3.2.1
|
|
287
287
|
1. BugFix: Derived components are now founded right while using `get_result_by_LCs_Incr()`.
|
|
288
|
-
|
|
288
|
+
2. BugFix: All sections are now founded right while using `get_result_by_LCs_Incr()`.
|
|
289
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
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
|
+
|
|
291
297
|
# Documentation
|
|
292
298
|
|
|
293
299
|
**NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
|
|
@@ -258,9 +258,15 @@ is redundant. The coordinate system will prevail.
|
|
|
258
258
|
|
|
259
259
|
### v.3.2.1
|
|
260
260
|
1. BugFix: Derived components are now founded right while using `get_result_by_LCs_Incr()`.
|
|
261
|
-
|
|
261
|
+
2. BugFix: All sections are now founded right while using `get_result_by_LCs_Incr()`.
|
|
262
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
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
|
+
|
|
264
270
|
# Documentation
|
|
265
271
|
|
|
266
272
|
**NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
|
|
@@ -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
|
-
*
|
|
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
|
-
*
|
|
254
|
+
* >0: Solver ID of predefined coordinate system
|
|
255
255
|
|
|
256
256
|
.. note::
|
|
257
257
|
|
|
@@ -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,
|
|
421
|
-
"""Method that creates a new card of the type specified.
|
|
422
|
-
|
|
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.
|
|
4
|
+
VERSION = "3.2.2"
|
|
5
5
|
|
|
6
6
|
# Supported for Naxto:
|
|
7
7
|
NAXTO_VERSION = '2025R2'
|
|
8
|
-
NAXTO_STEP = "
|
|
9
|
-
NAXTO_ADVANCED_INSTALLER = "2025.2.
|
|
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.
|
|
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.
|
|
70
|
-
|
|
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
|
-
|
|
319
|
-
# hash is used.
|
|
321
|
+
|
|
320
322
|
hash = RuntimeHelpers.GetHashCode(cs_ref)
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
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
|
-
|
|
331
|
-
|
|
332
|
-
return
|
|
333
|
-
return
|
|
352
|
+
constructed = value(cs_ref)
|
|
353
|
+
self[key] = constructed
|
|
354
|
+
return constructed
|
|
355
|
+
return None
|
|
334
356
|
else:
|
|
335
|
-
return self.get(
|
|
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
|
####################################################################################################################
|
|
@@ -2422,7 +2446,7 @@ def load_model(path: str, parallelprocessing: bool = True,
|
|
|
2422
2446
|
("InputFileAbaqus") or binary result file ("Binary").
|
|
2423
2447
|
filter: str.
|
|
2424
2448
|
Optional. It specifies what to load in dict_gen (elements, properties, parts or nodes)
|
|
2425
|
-
|
|
2449
|
+
dict_gen: dict.
|
|
2426
2450
|
Optional. Dictionary that represents what elements/properties/parts/nodes to load. For
|
|
2427
2451
|
elements and nodes, the dictionary is in the form {Part ID (str): [Elements ID/Nodes ID]}. For parts or
|
|
2428
2452
|
properties, the dictionary could simply be in the form {Part ID (str) / Property ID (str): []}.
|
|
@@ -2451,6 +2475,9 @@ def load_model(path: str, parallelprocessing: bool = True,
|
|
|
2451
2475
|
if path.split(".")[-1] in BINARY_EXTENSIONS and file_type == "InputFileNastran":
|
|
2452
2476
|
N2PLog.Error.E111()
|
|
2453
2477
|
|
|
2478
|
+
if dict_gen and not filter:
|
|
2479
|
+
N2PLog.Error.E115()
|
|
2480
|
+
|
|
2454
2481
|
return N2PModelContent(path, parallelprocessing, file_type, __transform_dict(dict_gen), filter, loadconnectors=loadconnectors)
|
|
2455
2482
|
# ----------------------------------------------------------------------------------------------------------------------
|
|
2456
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
|
-
|
|
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
|
-
|
|
104
|
-
laminate
|
|
105
|
-
laminate.
|
|
106
|
-
laminate.
|
|
107
|
-
laminate.
|
|
108
|
-
laminate.
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
laminate.
|
|
112
|
-
|
|
113
|
-
|
|
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',
|
{naxtopy-3.2.1 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PCalculatorRFJoints.py
RENAMED
|
@@ -23,9 +23,9 @@ class N2PCalculatorRFJoints:
|
|
|
23
23
|
|
|
24
24
|
Example:
|
|
25
25
|
>>> import NaxToPy as n2p
|
|
26
|
-
>>> from NaxToPy.Modules.
|
|
27
|
-
>>> from NaxToPy.Modules.
|
|
28
|
-
>>> from NaxToPy.Modules.
|
|
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
|
|
71
|
-
>>> from NaxToPy.Modules.
|
|
72
|
-
>>> model1 =
|
|
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
|
|
@@ -79,10 +79,10 @@ class N2PGetLoadFasteners:
|
|
|
79
79
|
The constructor creates an empty N2PGetLoadFasteners instance. Its attributes must be added as properties.
|
|
80
80
|
|
|
81
81
|
Calling example:
|
|
82
|
-
>>> import NaxToPy as
|
|
83
|
-
>>> from NaxToPy.Modules.
|
|
84
|
-
>>> from NaxToPy.Modules.
|
|
85
|
-
>>> model1 =
|
|
82
|
+
>>> import NaxToPy as n2p
|
|
83
|
+
>>> from NaxToPy.Modules.static.fasteners.N2PGetFasteners import N2PGetFasteners
|
|
84
|
+
>>> from NaxToPy.Modules.static.fasteners.N2PGetLoadFasteners import N2PGetLoadFasteners
|
|
85
|
+
>>> model1 = n2p.get_model(r"route.fem") # model loaded
|
|
86
86
|
>>> fasteners = N2PGetFasteners()
|
|
87
87
|
>>> fasteners.Model = model1 # compulsory input
|
|
88
88
|
>>> fasteners.ElementList = model1.get_elements([10, 11, 12, 13, 14]) # joints to be analysed
|
|
@@ -552,7 +552,6 @@ class N2PGetLoadFasteners:
|
|
|
552
552
|
|
|
553
553
|
# Method used to obtain the load cases' results --------------------------------------------------------------------
|
|
554
554
|
def get_results(self, loadCaseList: list[N2PLoadCase] = None):
|
|
555
|
-
|
|
556
555
|
"""
|
|
557
556
|
Method used to obtain the results of the model.
|
|
558
557
|
|
|
@@ -627,7 +626,6 @@ class N2PGetLoadFasteners:
|
|
|
627
626
|
|
|
628
627
|
# Method used to obtain the results from a h5 file -----------------------------------------------------------------
|
|
629
628
|
def get_results_h5(self, loadCaseList: list[N2PLoadCase] = None):
|
|
630
|
-
|
|
631
629
|
"""
|
|
632
630
|
Method used to obtain the results of the model from a .h5 file and assign them to plates and bolts.
|
|
633
631
|
|
|
@@ -669,7 +667,6 @@ class N2PGetLoadFasteners:
|
|
|
669
667
|
|
|
670
668
|
# Method used to obtain the joint's forces -------------------------------------------------------------------------
|
|
671
669
|
def get_forces(self, loadCaseList: list[N2PLoadCase] = None):
|
|
672
|
-
|
|
673
670
|
"""
|
|
674
671
|
Method used to obtain the 1D forces of each joint. In order to work, the results attribute must have been
|
|
675
672
|
previously filled (by having called get_results()). If it has not, an error will occur.
|
|
@@ -697,7 +694,6 @@ class N2PGetLoadFasteners:
|
|
|
697
694
|
|
|
698
695
|
# Method used to obtain the joint's bypass loads -------------------------------------------------------------------
|
|
699
696
|
def get_bypass_loads(self, loadCaseList: list[N2PLoadCase] = None):
|
|
700
|
-
|
|
701
697
|
"""
|
|
702
698
|
Method used to obtain the bypass loads of each joint. If an N2PJoint has no diameter, the default diameter is
|
|
703
699
|
assigned (in case it has been defined by the user). In order to work, the results attribute must have been
|
|
@@ -748,7 +744,6 @@ class N2PGetLoadFasteners:
|
|
|
748
744
|
|
|
749
745
|
# Method used to export the obtained results to a CSV file ---------------------------------------------------------
|
|
750
746
|
def export_results(self):
|
|
751
|
-
|
|
752
747
|
"""
|
|
753
748
|
Method used to export the obtained results to a CSV file.
|
|
754
749
|
|
|
@@ -775,7 +770,6 @@ class N2PGetLoadFasteners:
|
|
|
775
770
|
|
|
776
771
|
# Method used to obtain the main fastener analysis -----------------------------------------------------------------
|
|
777
772
|
def get_analysis(self, loadCaseList: list[N2PLoadCase] = None):
|
|
778
|
-
|
|
779
773
|
"""
|
|
780
774
|
Method used to do the previous analysis and, optionally, export the results.
|
|
781
775
|
|
|
@@ -802,7 +796,6 @@ class N2PGetLoadFasteners:
|
|
|
802
796
|
|
|
803
797
|
# Method used to do the entire analysis ----------------------------------------------------------------------------
|
|
804
798
|
def calculate(self):
|
|
805
|
-
|
|
806
799
|
"""
|
|
807
800
|
Method used to do all the previous calculations and, optionally, export the results.
|
|
808
801
|
|
|
@@ -841,7 +834,6 @@ class N2PGetLoadFasteners:
|
|
|
841
834
|
|
|
842
835
|
# Method used to load results from a .h5 file ----------------------------------------------------------------------
|
|
843
836
|
def load_h5(self):
|
|
844
|
-
|
|
845
837
|
"""
|
|
846
838
|
Method used to load the results obtained from a previous N2PGetLoadFastener analysis from a .h5 file.
|
|
847
839
|
|
|
@@ -885,7 +877,6 @@ class N2PGetLoadFasteners:
|
|
|
885
877
|
|
|
886
878
|
# Method used to sort plates ---------------------------------------------------------------------------------------
|
|
887
879
|
def __sort_plates(self, plateList: list[N2PPlate]) -> None:
|
|
888
|
-
|
|
889
880
|
"""
|
|
890
881
|
Method used to sort plates by its central element's ID, so results are exported in order.
|
|
891
882
|
|
|
@@ -908,7 +899,6 @@ class N2PGetLoadFasteners:
|
|
|
908
899
|
|
|
909
900
|
# Method used to export the obtained PAG results as a txt file -----------------------------------------------------
|
|
910
901
|
def __export_txt(self):
|
|
911
|
-
|
|
912
902
|
"""
|
|
913
903
|
Method used to export the obtained results, if they are in PAG style, in a txt. It works similarly as the other
|
|
914
904
|
export options but, in order to follow the same methodology as the one followed in PAG, this method cannot be
|
|
@@ -1729,7 +1719,6 @@ class N2PGetLoadFasteners:
|
|
|
1729
1719
|
|
|
1730
1720
|
# Method used to create the model ----------------------------------------------------------------------------------
|
|
1731
1721
|
def __create_model(self):
|
|
1732
|
-
|
|
1733
1722
|
"""
|
|
1734
1723
|
Method used to create a new model and import its results. It fires when the model, joints_list (they may have
|
|
1735
1724
|
been filled with get_fasteners) and results_files attributes have been filled in. It also assigns certain
|
|
@@ -1768,7 +1757,6 @@ class N2PGetLoadFasteners:
|
|
|
1768
1757
|
|
|
1769
1758
|
# Method used to create the model ----------------------------------------------------------------------------------
|
|
1770
1759
|
def __create_model_2(self, elementList: list[N2PElement]):
|
|
1771
|
-
|
|
1772
1760
|
"""
|
|
1773
1761
|
Method used to create a new model and import its results. It fires when the model, joints_list (they may have
|
|
1774
1762
|
been filled with get_fasteners) and results_files attributes have been filled in. It also assigns certain
|
|
@@ -1919,7 +1907,6 @@ class N2PGetLoadFasteners:
|
|
|
1919
1907
|
# region OptionalAttributes
|
|
1920
1908
|
|
|
1921
1909
|
class _N2POptionalAttributes:
|
|
1922
|
-
|
|
1923
1910
|
"""
|
|
1924
1911
|
The _N2POptionalAttributes class is used to save all optional attributes of N2PGetLoadFasteners.
|
|
1925
1912
|
|
|
@@ -1963,7 +1950,6 @@ class _N2POptionalAttributes:
|
|
|
1963
1950
|
"_shear_as_is")
|
|
1964
1951
|
|
|
1965
1952
|
def __init__(self, loads):
|
|
1966
|
-
|
|
1967
1953
|
"""
|
|
1968
1954
|
The constructor creates an empty _N2POptionalAttributes instance. Its attributes must be added as properties.
|
|
1969
1955
|
|
|
@@ -2017,7 +2003,6 @@ class _N2POptionalAttributes:
|
|
|
2017
2003
|
|
|
2018
2004
|
@property
|
|
2019
2005
|
def AdjacencyLevel(self) -> int:
|
|
2020
|
-
|
|
2021
2006
|
"""
|
|
2022
2007
|
Property that returns the adjacency_level attribute, that is, the number of times the get_elements_attached()
|
|
2023
2008
|
function will be called when loading the new model.
|
|
@@ -2028,7 +2013,6 @@ class _N2POptionalAttributes:
|
|
|
2028
2013
|
|
|
2029
2014
|
@property
|
|
2030
2015
|
def LoadSecondModel(self) -> bool:
|
|
2031
|
-
|
|
2032
2016
|
"""
|
|
2033
2017
|
Property that returns the load_second_model attribute, that is, whether or not a second model will be loaded
|
|
2034
2018
|
to obtain results in that model.
|
|
@@ -2039,7 +2023,6 @@ class _N2POptionalAttributes:
|
|
|
2039
2023
|
|
|
2040
2024
|
@property
|
|
2041
2025
|
def CornerData(self) -> bool:
|
|
2042
|
-
|
|
2043
2026
|
"""
|
|
2044
2027
|
Property that returns the corner_data attribute, that is, whether or not there are results in the corners.
|
|
2045
2028
|
"""
|
|
@@ -2049,7 +2032,6 @@ class _N2POptionalAttributes:
|
|
|
2049
2032
|
|
|
2050
2033
|
@property
|
|
2051
2034
|
def MaterialFactorMetal(self) -> float:
|
|
2052
|
-
|
|
2053
2035
|
"""
|
|
2054
2036
|
Property that returns the material_factor_metal attribute, that is, the material factor used to create the
|
|
2055
2037
|
bypass box for metallic plates.
|
|
@@ -2060,7 +2042,6 @@ class _N2POptionalAttributes:
|
|
|
2060
2042
|
|
|
2061
2043
|
@property
|
|
2062
2044
|
def MaterialFactorComposite(self) -> float:
|
|
2063
|
-
|
|
2064
2045
|
"""
|
|
2065
2046
|
Property that returns the material_factor_composite attribute, that is, the material factor used to create the
|
|
2066
2047
|
bypass box for composite plates.
|
|
@@ -2071,7 +2052,6 @@ class _N2POptionalAttributes:
|
|
|
2071
2052
|
|
|
2072
2053
|
@property
|
|
2073
2054
|
def AreaFactor(self) -> float:
|
|
2074
|
-
|
|
2075
2055
|
"""
|
|
2076
2056
|
Property that returns the area_factor attribute, that is, the area factor used to create the bypass box.
|
|
2077
2057
|
"""
|
|
@@ -2081,7 +2061,6 @@ class _N2POptionalAttributes:
|
|
|
2081
2061
|
|
|
2082
2062
|
@property
|
|
2083
2063
|
def MaxIterations(self) -> int:
|
|
2084
|
-
|
|
2085
2064
|
"""
|
|
2086
2065
|
Property that returns the max_iterations attribute, that is, the maximum number of iterations allowed to create
|
|
2087
2066
|
the bypass boxes.
|
|
@@ -2092,7 +2071,6 @@ class _N2POptionalAttributes:
|
|
|
2092
2071
|
|
|
2093
2072
|
@property
|
|
2094
2073
|
def ProjectionTolerance(self) -> float:
|
|
2095
|
-
|
|
2096
2074
|
"""
|
|
2097
2075
|
Property that returns the projection_tolerance attribute, that is, the tolerance used when determining if a
|
|
2098
2076
|
point lies within an element.
|
|
@@ -2103,7 +2081,6 @@ class _N2POptionalAttributes:
|
|
|
2103
2081
|
|
|
2104
2082
|
@property
|
|
2105
2083
|
def DefaultDiameter(self) -> float:
|
|
2106
|
-
|
|
2107
2084
|
"""
|
|
2108
2085
|
Property that returns the default_diameter attribute, that is, the diameter that will be assigned to joints
|
|
2109
2086
|
with no diameter.
|
|
@@ -2114,7 +2091,6 @@ class _N2POptionalAttributes:
|
|
|
2114
2091
|
|
|
2115
2092
|
@property
|
|
2116
2093
|
def ExportPrecision(self) -> int:
|
|
2117
|
-
|
|
2118
2094
|
"""
|
|
2119
2095
|
Property that returns the export_precision atribute, that is, the precision used when exporting the results to
|
|
2120
2096
|
a HDF5 file. It can be either 4 or 8.
|
|
@@ -2125,7 +2101,6 @@ class _N2POptionalAttributes:
|
|
|
2125
2101
|
|
|
2126
2102
|
@property
|
|
2127
2103
|
def LoadCaseNumber(self) -> int:
|
|
2128
|
-
|
|
2129
2104
|
"""
|
|
2130
2105
|
Property that returns the load_case_number attribute, that is, the number of load cases that are analyzed at
|
|
2131
2106
|
the same time.
|
|
@@ -2136,7 +2111,6 @@ class _N2POptionalAttributes:
|
|
|
2136
2111
|
|
|
2137
2112
|
@property
|
|
2138
2113
|
def CompressionEqualsZero(self) -> bool:
|
|
2139
|
-
|
|
2140
2114
|
"""
|
|
2141
2115
|
Property that returns the compression_equals_zero attribute, that is, whether or not the pullthrough force
|
|
2142
2116
|
will be set to zero when the fastener is compressed.
|
|
@@ -2147,7 +2121,6 @@ class _N2POptionalAttributes:
|
|
|
2147
2121
|
|
|
2148
2122
|
@property
|
|
2149
2123
|
def PullThroughAsIs(self) -> bool:
|
|
2150
|
-
|
|
2151
2124
|
"""
|
|
2152
2125
|
Property that returns the pullthrough_as_is attribute, that is, whether or not the pullthrough force will be
|
|
2153
2126
|
set to the value found in the results files.
|
|
@@ -2158,7 +2131,6 @@ class _N2POptionalAttributes:
|
|
|
2158
2131
|
|
|
2159
2132
|
@property
|
|
2160
2133
|
def ShearAsIs(self) -> bool:
|
|
2161
|
-
|
|
2162
2134
|
"""
|
|
2163
2135
|
Property that returns the shear_as_is attribute, that is, whether or not the shear force will be set to the
|
|
2164
2136
|
value found in the results files or not.
|