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.
- {naxtopy-3.2.0/src/NaxToPy.egg-info → naxtopy-3.2.2}/PKG-INFO +12 -1
- {naxtopy-3.2.0 → naxtopy-3.2.2}/README.md +11 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/pyproject.toml +1 -1
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PComponent.py +13 -11
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PNastranInputData.py +29 -3
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Constants/Constants.py +4 -4
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Errors/N2PLog.py +17 -1
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/N2PModelContent.py +47 -19
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/data_input_hdf5.py +20 -1
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/hdf5.py +3 -3
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/property.py +13 -11
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PCalculatorRFJoints.py +3 -3
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PGetFasteners.py +3 -3
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PGetLoadFasteners.py +4 -32
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PJoint.py +2 -4
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/metallic/neuber/N2PNeuber.py +215 -74
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/__init__.py +1 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2/src/NaxToPy.egg-info}/PKG-INFO +12 -1
- {naxtopy-3.2.0 → naxtopy-3.2.2}/LICENSE +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/setup.cfg +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/setup.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntity.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityElement.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityNode.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityShell.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQEntities/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeyword.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordBEAMSECTION.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordCOUPLING.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDENSITY.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTING.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTINGCOUPLING.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELASTIC.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELEMENT.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELSET.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDINSTANCE.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDPART.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordINSTANCE.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATIC.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATICCOUPLING.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordMATERIAL.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNODE.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNSET.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordORIENTATION.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPART.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPLASTIC.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSHELLSECTION.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSOLIDSECTION.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSURFACE.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ABQKeywords/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/AllClasses.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PAbaqusInputData.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PConnector.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PCoord.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PElement.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PFreeBody.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PIncrement.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PLoadCase.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PMaterial.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PNode.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PProperty.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PReport.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PResult.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PSection.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/N2PSet.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/ProgresBar.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Classes/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Constants/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Constants/librerias.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Errors/N2PColors.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Errors/N2PFileHandler.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Errors/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/Reference_Finder/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/_AuxFunc/_NetToPython.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/_AuxFunc/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Core/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/material.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/common/model_processor.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/envelope/N2PEnvelope.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/envelope/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/airbus/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/airbus/core_shear_crimping_airbus.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/airbus/dimpling_airbus.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/airbus/wrinkling_airbus.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/bruhn/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/cmh/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/cmh/core_shear_crimping_cmh.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/cmh/dimpling_cmh.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/cmh/wrinkling_cmh.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/esdu/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hsb/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hsb/wrinkling_hsb.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hypersizer/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hypersizer/crimping_hypersizer.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hypersizer/dimpling_hypersizer.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/hypersizer/wrinkling_hypersizer.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/nasa/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/handbooks/nasa/wrinkling_nasa.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/n2ptoexe/N2PtoEXE.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/n2ptoexe/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/numericaltools/N2PCoefficientsFinder.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/numericaltools/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/delamination/N2PEdgeDelamination.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/delamination/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/failure_analysis/N2PCompositeFailure.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/failure_analysis/N2PFailureComposite_Backupy.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/failure_analysis/N2PFailureComposite_Vectorisation.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/failure_analysis/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/sandwich/N2PSandwich.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/composite/sandwich/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PCompRF.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PFastenerAnalysis.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PMetalRF.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PRivetRF.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/N2PUpdateFastener.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetAttachments.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetResults.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PInterpolation.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PLoadModel.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Check/Validation.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/AR1DElement.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARAttachment.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARBolt.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlate.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlateElements.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARAuxiliarFunctions.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARBilinearInterpolation.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARConfigurationInput.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARDerivedLoadCases.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARFileInputRivetsIDs.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetAttachments.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetBolts.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARReadResultsFromFile.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARResults.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARRotation.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARSerialize.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PAttachment.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PBolt.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PFastenerSystem.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PJointAnalysisParameters.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/N2PPlate.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/fasteners/joints/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/metallic/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/Modules/static/metallic/neuber/__init__.py +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/NaxToPy.ico +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy/user_functions.txt +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy.egg-info/SOURCES.txt +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy.egg-info/dependency_links.txt +0 -0
- {naxtopy-3.2.0 → naxtopy-3.2.2}/src/NaxToPy.egg-info/requires.txt +0 -0
- {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.
|
|
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.
|
|
@@ -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
|
|
|
@@ -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
|
-
|
|
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,
|
|
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
|
####################################################################################################################
|
|
@@ -2199,7 +2223,8 @@ class N2PModelContent:
|
|
|
2199
2223
|
break
|
|
2200
2224
|
|
|
2201
2225
|
if isinstance(component, list) and isinstance(component[0], str):
|
|
2202
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.0 → 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
|