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