NaxToPy 3.1.0__tar.gz → 3.1.1__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.1.0/src/NaxToPy.egg-info → naxtopy-3.1.1}/PKG-INFO +13 -4
- {naxtopy-3.1.0 → naxtopy-3.1.1}/README.md +11 -2
- {naxtopy-3.1.0 → naxtopy-3.1.1}/pyproject.toml +2 -2
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSURFACE.py +1 -1
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/N2PElement.py +3 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/N2PMaterial.py +2 -2
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/N2PProperty.py +43 -15
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Constants/Constants.py +4 -4
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Errors/N2PLog.py +5 -14
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/N2PModelContent.py +7 -2
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +22 -1
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/common/material.py +49 -1
- naxtopy-3.1.1/src/NaxToPy/Modules/static/composite/failure_analysis/N2PCompositeFailure.py +2235 -0
- naxtopy-3.1.1/src/NaxToPy/Modules/static/composite/failure_analysis/N2PFailureComposite_Backupy.py +2000 -0
- naxtopy-3.1.0/src/NaxToPy/Modules/static/composite/failure_analysis/N2PCompositeFailure.py → naxtopy-3.1.1/src/NaxToPy/Modules/static/composite/failure_analysis/N2PFailureComposite_Vectorisation.py +63 -88
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/N2PGetFasteners.py +4 -2
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/joints/N2PJoint.py +77 -17
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/__init__.py +1 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1/src/NaxToPy.egg-info}/PKG-INFO +13 -4
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy.egg-info/SOURCES.txt +2 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy.egg-info/requires.txt +1 -1
- {naxtopy-3.1.0 → naxtopy-3.1.1}/LICENSE +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/setup.cfg +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/setup.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntity.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityElement.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityNode.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityShell.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQEntities/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeyword.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordBEAMSECTION.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordCOUPLING.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDENSITY.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTING.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTINGCOUPLING.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELASTIC.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELEMENT.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELSET.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDINSTANCE.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDPART.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordINSTANCE.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATIC.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATICCOUPLING.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordMATERIAL.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNODE.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNSET.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordORIENTATION.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPART.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPLASTIC.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSHELLSECTION.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSOLIDSECTION.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ABQKeywords/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/AllClasses.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/N2PAbaqusInputData.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/N2PComponent.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/N2PConnector.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/N2PCoord.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/N2PFreeBody.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/N2PIncrement.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/N2PLoadCase.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/N2PNastranInputData.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/N2PNode.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/N2PReport.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/N2PResult.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/N2PSection.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/N2PSet.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/ProgresBar.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Classes/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Constants/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Constants/librerias.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Errors/N2PColors.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Errors/N2PFileHandler.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Errors/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/Reference_Finder/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/_AuxFunc/_NetToPython.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/_AuxFunc/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Core/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/common/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/common/data_input_hdf5.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/common/hdf5.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/common/model_processor.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/common/property.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/envelope/N2PEnvelope.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/envelope/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/airbus/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/airbus/core_shear_crimping_airbus.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/airbus/dimpling_airbus.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/airbus/wrinkling_airbus.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/bruhn/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/cmh/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/cmh/core_shear_crimping_cmh.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/cmh/dimpling_cmh.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/cmh/wrinkling_cmh.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/esdu/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/hsb/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/hsb/wrinkling_hsb.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/hypersizer/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/hypersizer/crimping_hypersizer.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/hypersizer/dimpling_hypersizer.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/hypersizer/wrinkling_hypersizer.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/nasa/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/handbooks/nasa/wrinkling_nasa.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/n2ptoexe/N2PtoEXE.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/n2ptoexe/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/composite/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/composite/delamination/N2PEdgeDelamination.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/composite/delamination/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/composite/failure_analysis/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/composite/sandwich/N2PSandwich.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/composite/sandwich/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/N2PCalculatorRFJoints.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/N2PCompRF.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/N2PFastenerAnalysis.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/N2PGetLoadFasteners.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/N2PMetalRF.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/N2PRivetRF.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/N2PUpdateFastener.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetAttachments.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetResults.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PInterpolation.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PLoadModel.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/Functions/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/Core/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysis/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Check/Validation.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/AR1DElement.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARAttachment.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARBolt.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlate.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlateElements.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARAuxiliarFunctions.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARBilinearInterpolation.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARConfigurationInput.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARDerivedLoadCases.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARFileInputRivetsIDs.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetAttachments.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetBolts.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARReadResultsFromFile.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARResults.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARRotation.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARSerialize.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/Core/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/_N2PFastenerAnalysisDeprecated/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/joints/N2PAttachment.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/joints/N2PBolt.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/joints/N2PFastenerSystem.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/joints/N2PJointAnalysisParameters.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/joints/N2PPlate.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/fasteners/joints/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/metallic/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/metallic/neuber/N2PNeuber.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/Modules/static/metallic/neuber/__init__.py +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/NaxToPy.ico +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy/user_functions.txt +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy.egg-info/dependency_links.txt +0 -0
- {naxtopy-3.1.0 → naxtopy-3.1.1}/src/NaxToPy.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: NaxToPy
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.1
|
|
4
4
|
Summary: Package for postprocessing FEM results in Python
|
|
5
5
|
Home-page: https://www.idaerosolutions.com/Home/NaxToPy
|
|
6
6
|
Download-URL: https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US
|
|
@@ -118,7 +118,7 @@ Classifier: Topic :: Scientific/Engineering
|
|
|
118
118
|
Requires-Python: >=3.9
|
|
119
119
|
Description-Content-Type: text/markdown
|
|
120
120
|
License-File: LICENSE
|
|
121
|
-
Requires-Dist: pythonnet>=3.0.
|
|
121
|
+
Requires-Dist: pythonnet>=3.0.4
|
|
122
122
|
Requires-Dist: numpy>=1.22.0
|
|
123
123
|
Requires-Dist: setuptools>=67.8.0
|
|
124
124
|
Requires-Dist: h5py>=3.12.1
|
|
@@ -357,12 +357,21 @@ is redundant. The coordinate system will prevail.
|
|
|
357
357
|
10. Feat: `N2PLoadModelContent.SetList` is now an encapsulated property.
|
|
358
358
|
11. Refactor: the method `N2PLoadModelContent.get_result_by_LCs_Incr()` is optimized.
|
|
359
359
|
|
|
360
|
+
### v.3.1.1
|
|
361
|
+
1. BugFix: Small error fixed in `N2PNeuber`.
|
|
362
|
+
2. Feat: New Failure criteria in `N2PCompositeFailure` -> Fiber Mode Concept
|
|
363
|
+
3. BugFix: The property `LevelList` of the abstract class `N2PLog` is now an attribute to be compatible with Python 3.13.
|
|
364
|
+
4. Feat: New class `N2PropMisc` for properties that are not supported.
|
|
365
|
+
5. BugFix: Small errors in `N2PGetFasteners`.
|
|
366
|
+
6. BugFix: Several errors are fixed for properties and materials when reading **InputFileAbaqus** (inp) and **Abaqus** (odb).
|
|
367
|
+
7. Feat: Now, when a executable is created, if the version of NaxTo of the exe matches the instaled, it will use the **installed** NaxTo libraries. If the version doesn't match or NaxTo is not installed, **exe** NaxTo libraries will be used.
|
|
368
|
+
8. BugFix: the keyword `THRU` is now supported in the bulk data card `SPC1` when reading from a Nastran Input File.
|
|
360
369
|
|
|
361
370
|
# Documentation
|
|
362
371
|
|
|
363
372
|
**NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
|
|
364
373
|
|
|
365
|
-
NaxToPy only use
|
|
374
|
+
NaxToPy only use four dependeces:
|
|
366
375
|
- NumPy: https://numpy.org/
|
|
367
376
|
- PythonNET: https://pythonnet.github.io/
|
|
368
377
|
- Setuptools: https://setuptools.pypa.io/en/latest/index.html
|
|
@@ -573,7 +582,7 @@ def dataframe_results(model: "N2PModelContent", result: "N2PResult", sections=No
|
|
|
573
582
|
##
|
|
574
583
|
For more documentation visit https://idaerosolutions.com/Home/NaxToPy
|
|
575
584
|
|
|
576
|
-
|
|
585
|
+
Complete NaxToPy documentation at: https://www.idaerosolutions.com/NaxToDocumentation/NaxToPy/3.1.0/index.html
|
|
577
586
|
|
|
578
587
|
# License
|
|
579
588
|
|
|
@@ -229,12 +229,21 @@ is redundant. The coordinate system will prevail.
|
|
|
229
229
|
10. Feat: `N2PLoadModelContent.SetList` is now an encapsulated property.
|
|
230
230
|
11. Refactor: the method `N2PLoadModelContent.get_result_by_LCs_Incr()` is optimized.
|
|
231
231
|
|
|
232
|
+
### v.3.1.1
|
|
233
|
+
1. BugFix: Small error fixed in `N2PNeuber`.
|
|
234
|
+
2. Feat: New Failure criteria in `N2PCompositeFailure` -> Fiber Mode Concept
|
|
235
|
+
3. BugFix: The property `LevelList` of the abstract class `N2PLog` is now an attribute to be compatible with Python 3.13.
|
|
236
|
+
4. Feat: New class `N2PropMisc` for properties that are not supported.
|
|
237
|
+
5. BugFix: Small errors in `N2PGetFasteners`.
|
|
238
|
+
6. BugFix: Several errors are fixed for properties and materials when reading **InputFileAbaqus** (inp) and **Abaqus** (odb).
|
|
239
|
+
7. Feat: Now, when a executable is created, if the version of NaxTo of the exe matches the instaled, it will use the **installed** NaxTo libraries. If the version doesn't match or NaxTo is not installed, **exe** NaxTo libraries will be used.
|
|
240
|
+
8. BugFix: the keyword `THRU` is now supported in the bulk data card `SPC1` when reading from a Nastran Input File.
|
|
232
241
|
|
|
233
242
|
# Documentation
|
|
234
243
|
|
|
235
244
|
**NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
|
|
236
245
|
|
|
237
|
-
NaxToPy only use
|
|
246
|
+
NaxToPy only use four dependeces:
|
|
238
247
|
- NumPy: https://numpy.org/
|
|
239
248
|
- PythonNET: https://pythonnet.github.io/
|
|
240
249
|
- Setuptools: https://setuptools.pypa.io/en/latest/index.html
|
|
@@ -445,7 +454,7 @@ def dataframe_results(model: "N2PModelContent", result: "N2PResult", sections=No
|
|
|
445
454
|
##
|
|
446
455
|
For more documentation visit https://idaerosolutions.com/Home/NaxToPy
|
|
447
456
|
|
|
448
|
-
|
|
457
|
+
Complete NaxToPy documentation at: https://www.idaerosolutions.com/NaxToDocumentation/NaxToPy/3.1.0/index.html
|
|
449
458
|
|
|
450
459
|
# License
|
|
451
460
|
|
|
@@ -4,11 +4,11 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "NaxToPy"
|
|
7
|
-
version = "3.1.
|
|
7
|
+
version = "3.1.1"
|
|
8
8
|
license = {file = "LICENSE"}
|
|
9
9
|
authors = [ { name = "Idaero Solutions", email = "manuel.sanchez@idaerosolutions.com" }, ]
|
|
10
10
|
requires-python = ">=3.9"
|
|
11
|
-
dependencies = ["pythonnet>=3.0.
|
|
11
|
+
dependencies = ["pythonnet>=3.0.4",
|
|
12
12
|
"numpy>=1.22.0",
|
|
13
13
|
"setuptools>=67.8.0",
|
|
14
14
|
"h5py>=3.12.1"]
|
|
@@ -21,4 +21,4 @@ class N2PKeywordSURFACE(N2PKeyword):
|
|
|
21
21
|
@property
|
|
22
22
|
def EntityList(self) -> list[N2PEntity, ]:
|
|
23
23
|
"""List of entities (based on Type)"""
|
|
24
|
-
return
|
|
24
|
+
return [self._N2PKeyword__dictEntityToN2P[i] for i in self._N2PKeyword__info.EntityList]
|
|
@@ -69,6 +69,9 @@ class N2PElement:
|
|
|
69
69
|
if self.__model.Solver == "Abaqus":
|
|
70
70
|
id_prop = self.__model._N2PModelContent__propertyIDtoStr.get(id_prop)
|
|
71
71
|
part = "ASSEMBLY"
|
|
72
|
+
elif self.__model.Solver == "InputFileAbaqus":
|
|
73
|
+
id_prop = self.__model._N2PModelContent__propertyIDtoStr.get(id_prop)
|
|
74
|
+
part = self.PartID
|
|
72
75
|
else:
|
|
73
76
|
part = self.PartID
|
|
74
77
|
return (id_prop, part)
|
|
@@ -28,7 +28,7 @@ class N2PMaterial(ABC):
|
|
|
28
28
|
"""
|
|
29
29
|
ID of the material.
|
|
30
30
|
"""
|
|
31
|
-
if self.__model__.Solver == "Abaqus":
|
|
31
|
+
if self.__model__.Solver == "Abaqus" or self.__model__.Solver == "InputFileAbaqus":
|
|
32
32
|
return self.__info__.Name
|
|
33
33
|
else:
|
|
34
34
|
return self.__info__.ID
|
|
@@ -63,7 +63,7 @@ class N2PMaterial(ABC):
|
|
|
63
63
|
|
|
64
64
|
# Special Method for Object Representation -------------------------------------------------------------------------
|
|
65
65
|
def __repr__(self):
|
|
66
|
-
if self.__model__.Solver == "Abaqus":
|
|
66
|
+
if self.__model__.Solver == "Abaqus" or self.__model__.Solver == "InputFileAbaqus":
|
|
67
67
|
reprs = f"N2PMaterial(\'{self.ID}\', \'{self.MatType}\')"
|
|
68
68
|
else:
|
|
69
69
|
reprs = f"N2PMaterial({self.ID}, \'{self.MatType}\')"
|
|
@@ -66,7 +66,7 @@ class N2PProperty(ABC):
|
|
|
66
66
|
|
|
67
67
|
# Special Method for Object Representation -------------------------------------------------------------------------
|
|
68
68
|
def __repr__(self):
|
|
69
|
-
if self.__model.Solver == "Abaqus":
|
|
69
|
+
if self.__model.Solver == "Abaqus" or self.__model.Solver == "InputFileAbaqus":
|
|
70
70
|
reprs = f"N2PProperty(\'{self.Name}\', \'{self.PropertyType}\')"
|
|
71
71
|
else:
|
|
72
72
|
reprs = f"N2PProperty({self.ID}, \'{self.PropertyType}\')"
|
|
@@ -123,6 +123,8 @@ class N2PComp(N2PProperty):
|
|
|
123
123
|
def MatID(self) -> tuple[tuple[int, str]]:
|
|
124
124
|
"""Tuple with the solver tuple of thr id and part of the material for each ply of the laminate"""
|
|
125
125
|
part = self.PartID
|
|
126
|
+
if self.__model__.Solver == "Abaqus" or self.__model__.Solver == "InputFileAbaqus":
|
|
127
|
+
return tuple((self.__model__._N2PModelContent__materialsID[mat], part) for mat in self.__info__.Mat)
|
|
126
128
|
return tuple((mat, part) for mat in self.__info__.Mat)
|
|
127
129
|
|
|
128
130
|
@property
|
|
@@ -386,16 +388,22 @@ class N2PShell(N2PProperty):
|
|
|
386
388
|
@property
|
|
387
389
|
def MatMemID(self) -> Union[tuple[int, str], tuple[str, str]]:
|
|
388
390
|
"""Material index for the membrane behavior"""
|
|
391
|
+
if self.__model__.Solver == "Abaqus" or self.__model__.Solver == "InputFileAbaqus":
|
|
392
|
+
return (self.__model__._N2PModelContent__materialsID[self.__info__.MatMemID], "ASSEMBLY")
|
|
389
393
|
return (self.__info__.MatMemID, self.PartID)
|
|
390
394
|
|
|
391
395
|
@property
|
|
392
396
|
def MatBenID(self) -> Union[tuple[int, str], tuple[str, str]]:
|
|
393
397
|
"""Material index for the bending behavior"""
|
|
398
|
+
if self.__model__.Solver == "Abaqus" or self.__model__.Solver == "InputFileAbaqus":
|
|
399
|
+
return (self.__model__._N2PModelContent__materialsID[self.__info__.MatBenID], "ASSEMBLY")
|
|
394
400
|
return (self.__info__.MatBenID, self.PartID)
|
|
395
401
|
|
|
396
402
|
@property
|
|
397
403
|
def MatSheID(self) -> Union[tuple[int, str], tuple[str, str]]:
|
|
398
404
|
"""Material index for the shell behavior"""
|
|
405
|
+
if self.__model__.Solver == "Abaqus" or self.__model__.Solver == "InputFileAbaqus":
|
|
406
|
+
return (self.__model__._N2PModelContent__materialsID[self.__info__.MatSheID], "ASSEMBLY")
|
|
399
407
|
return (self.__info__.MatSheID, self.PartID)
|
|
400
408
|
|
|
401
409
|
@property
|
|
@@ -427,6 +435,8 @@ class N2PShell(N2PProperty):
|
|
|
427
435
|
@property
|
|
428
436
|
def MatCouplID(self) -> Union[tuple[int, str], tuple[str, str]]:
|
|
429
437
|
"""Material identification number for membrane-bending coupling"""
|
|
438
|
+
if self.__model__.Solver == "Abaqus" or self.__model__.Solver == "InputFileAbaqus":
|
|
439
|
+
return (self.__model__._N2PModelContent__materialsID[self.__info__.MatCoupl], "ASSEMBLY")
|
|
430
440
|
return (self.__info__.MatCoupl, self.PartID)
|
|
431
441
|
# ----------------------------------------------------------------------------------------------------------------------
|
|
432
442
|
|
|
@@ -448,6 +458,8 @@ class N2PSolid(N2PProperty):
|
|
|
448
458
|
@property
|
|
449
459
|
def MatID(self) -> Union[tuple[int, str], tuple[str, str]]:
|
|
450
460
|
"""Index of the material of the solid property"""
|
|
461
|
+
if self.__model__.Solver == "Abaqus" or self.__model__.Solver == "InputFileAbaqus":
|
|
462
|
+
return (self.__model__._N2PModelContent__materialsID[self.__info__.MatID], "ASSEMBLY")
|
|
451
463
|
return (self.__info__.MatID, self.PartID)
|
|
452
464
|
|
|
453
465
|
@property
|
|
@@ -492,10 +504,9 @@ class N2PRod(N2PProperty):
|
|
|
492
504
|
@property
|
|
493
505
|
def MatID(self) -> Union[tuple[int, str], tuple[str, str]]:
|
|
494
506
|
"""Material identification number."""
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
return (mat_id, self.PartID)
|
|
507
|
+
if self.__model__.Solver == "Abaqus" or self.__model__.Solver == "InputFileAbaqus":
|
|
508
|
+
return (self.__model__._N2PModelContent__materialsID[self.__info__.MatID], "ASSEMBLY")
|
|
509
|
+
return (self.__info__.MatID, self.PartID)
|
|
499
510
|
|
|
500
511
|
@property
|
|
501
512
|
def Area(self) -> float:
|
|
@@ -534,8 +545,8 @@ class N2PBeam(N2PProperty):
|
|
|
534
545
|
def MatID(self) -> Union[tuple[int, str], tuple[str, str]]:
|
|
535
546
|
"""Material identification number."""
|
|
536
547
|
mat_id = self.__info__.MatID
|
|
537
|
-
if self.__model__.Solver == "Abaqus"
|
|
538
|
-
|
|
548
|
+
if self.__model__.Solver == "Abaqus" or self.__model__.Solver == "InputFileAbaqus":
|
|
549
|
+
return (self.__model__._N2PModelContent__materialsID[mat_id], "ASSEMBLY")
|
|
539
550
|
elif mat_id == -1:
|
|
540
551
|
return N2PLog.Warning.W702()
|
|
541
552
|
return (mat_id, self.PartID)
|
|
@@ -899,10 +910,9 @@ class N2PWeld(N2PProperty):
|
|
|
899
910
|
"""
|
|
900
911
|
Material identification number.
|
|
901
912
|
"""
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
return (mat_id, self.PartID)
|
|
913
|
+
if self.__model__.Solver == "Abaqus" or self.__model__.Solver == "InputFileAbaqus":
|
|
914
|
+
return (self.__model__._N2PModelContent__materialsID[self.__info__.MatID], "ASSEMBLY")
|
|
915
|
+
return (self.__info__.MatID, self.PartID)
|
|
906
916
|
|
|
907
917
|
@property
|
|
908
918
|
def Diameter(self) -> float:
|
|
@@ -957,10 +967,9 @@ class N2PBeamL(N2PProperty):
|
|
|
957
967
|
"""
|
|
958
968
|
Material identification number.
|
|
959
969
|
"""
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
return (mat_id, self.PartID)
|
|
970
|
+
if self.__model__.Solver == "Abaqus" or self.__model__.Solver == "InputFileAbaqus":
|
|
971
|
+
return (self.__model__._N2PModelContent__materialsID[self.__info__.MatID], "ASSEMBLY")
|
|
972
|
+
return (self.__info__.MatID, self.PartID)
|
|
964
973
|
|
|
965
974
|
@property
|
|
966
975
|
def Group(self) -> str:
|
|
@@ -1005,3 +1014,22 @@ class N2PBeamL(N2PProperty):
|
|
|
1005
1014
|
return self.__info__.FractionalDistance
|
|
1006
1015
|
|
|
1007
1016
|
|
|
1017
|
+
class N2PPropMisc(N2PProperty):
|
|
1018
|
+
"""
|
|
1019
|
+
Class representing the undefined properties (equivalent to N2MatMisc in C#).
|
|
1020
|
+
It derives from N2PProperty.
|
|
1021
|
+
"""
|
|
1022
|
+
def __init__(self, information, model_father):
|
|
1023
|
+
"""
|
|
1024
|
+
Constructor for N2PMatMisc, mapping the properties from the C# class.
|
|
1025
|
+
"""
|
|
1026
|
+
super().__init__(information, model_father)
|
|
1027
|
+
self.__info__ = information
|
|
1028
|
+
self.__model__ = model_father
|
|
1029
|
+
|
|
1030
|
+
@property
|
|
1031
|
+
def QualitiesDict(self) -> dict[str, float]:
|
|
1032
|
+
"""
|
|
1033
|
+
Dictionary with the material properties and their values.
|
|
1034
|
+
"""
|
|
1035
|
+
return self.__info__.QualitiesDict
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"""Constants of the NaxToPy package"""
|
|
2
2
|
|
|
3
3
|
# NaxToPy Version
|
|
4
|
-
VERSION = "3.1.
|
|
4
|
+
VERSION = "3.1.1"
|
|
5
5
|
|
|
6
6
|
# Supported for Naxto:
|
|
7
7
|
NAXTO_VERSION = '2025R1'
|
|
8
|
-
NAXTO_STEP = "
|
|
9
|
-
NAXTO_ADVANCED_INSTALLER = "2025.1.
|
|
8
|
+
NAXTO_STEP = "1"
|
|
9
|
+
NAXTO_ADVANCED_INSTALLER = "2025.1.1"
|
|
10
10
|
|
|
11
11
|
# Assembly version of NaxToModel.dll
|
|
12
|
-
VIZZER_COMPATIBILITY = ("5.1.0.
|
|
12
|
+
VIZZER_COMPATIBILITY = ("5.1.0.1")
|
|
13
13
|
"""Tuple with the compatible versions of NaxToModel.dll"""
|
|
14
14
|
|
|
15
15
|
# PYTHON EXTERNO ----------------------------------------------------------------------------------
|
|
@@ -24,7 +24,7 @@ class N2PLog(ABC):
|
|
|
24
24
|
flv = "INFO"
|
|
25
25
|
clv = "WARNING"
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
LevelList = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]
|
|
28
28
|
|
|
29
29
|
# Nivel de registro del archivo .log
|
|
30
30
|
if flv == "DEBUG":
|
|
@@ -397,7 +397,7 @@ own information message. Use the following structure as a standard message (I +
|
|
|
397
397
|
def I109() -> None:
|
|
398
398
|
""" Information given when the NaxToModel library is load correctly.
|
|
399
399
|
"""
|
|
400
|
-
message = f"I109:
|
|
400
|
+
message = f"I109: Library NaxToModel.dll loaded successfully."
|
|
401
401
|
N2PLog._N2PLog__logger.info(message)
|
|
402
402
|
|
|
403
403
|
@staticmethod
|
|
@@ -861,7 +861,7 @@ own information message. Use the following structure as a standard message (I +
|
|
|
861
861
|
@staticmethod
|
|
862
862
|
def W527(input, instance) -> None:
|
|
863
863
|
'''Warning raised when an input is of a wrong instance.'''
|
|
864
|
-
message = f"
|
|
864
|
+
message = f"W527: Attribute {input} is not a {instance} instance. The default value will be used."
|
|
865
865
|
N2PLog._N2PLog__logger.warning(message)
|
|
866
866
|
|
|
867
867
|
@staticmethod
|
|
@@ -2042,14 +2042,14 @@ own information message. Use the following structure as a standard message (I +
|
|
|
2042
2042
|
|
|
2043
2043
|
@staticmethod
|
|
2044
2044
|
def E674(ele) -> None:
|
|
2045
|
-
''' Error raised when
|
|
2045
|
+
''' Error raised when Neuber method can not be applicated in an element.
|
|
2046
2046
|
'''
|
|
2047
2047
|
message = "E674: Error raised when a Neuber method can not be applicated to the ele" + str(ele)
|
|
2048
2048
|
N2PLog._N2PLog__logger.error(message)
|
|
2049
2049
|
|
|
2050
2050
|
@staticmethod
|
|
2051
2051
|
def E675() -> None:
|
|
2052
|
-
''' Error raised when a Neuber method can not be applicated
|
|
2052
|
+
''' Error raised when a Neuber method can not be applicated in an element.
|
|
2053
2053
|
'''
|
|
2054
2054
|
message = "E674: Error raised when a Neuber method can not be applicated to the ele"
|
|
2055
2055
|
N2PLog._N2PLog__logger.error(message)
|
|
@@ -2827,15 +2827,6 @@ own information message. Use the following structure as a standard message (I +
|
|
|
2827
2827
|
# Nota: Estos metodos cambian los atributos del objeto que se ha instanciado como clase N2PLog y que se
|
|
2828
2828
|
# ha guardado dentro del atributo _ De ahí que estos metodos no vayan como propiedades.
|
|
2829
2829
|
|
|
2830
|
-
# Metodo para obtener la lista de niveles del registro -------------------------------------------------------------
|
|
2831
|
-
@classmethod
|
|
2832
|
-
@property
|
|
2833
|
-
def LevelList(cls) -> list[str]:
|
|
2834
|
-
"""Property that retuns the list with the message levels in the log"""
|
|
2835
|
-
return cls.__levellist
|
|
2836
|
-
|
|
2837
|
-
# ------------------------------------------------------------------------------------------------------------------
|
|
2838
|
-
|
|
2839
2830
|
# Metodo para obtener directorio donde se guarda el archivo.log ----------------------------------------------------
|
|
2840
2831
|
@classmethod
|
|
2841
2832
|
def get_directory(cls) -> str:
|
|
@@ -18,7 +18,7 @@ from NaxToPy.Core.Classes.N2PCoord import N2PCoord
|
|
|
18
18
|
from NaxToPy.Core.Classes.N2PConnector import N2PConnector
|
|
19
19
|
from NaxToPy.Core.Classes.N2PFreeBody import N2PFreeBody
|
|
20
20
|
from NaxToPy.Core.Classes.N2PMaterial import N2PMaterial, N2PMatE, N2PMatMisc, N2PMatI
|
|
21
|
-
from NaxToPy.Core.Classes.N2PProperty import N2PProperty, N2PComp, N2PShell, N2PSolid, N2PBeam, N2PRod, N2PBush, N2PFast, N2PMass, N2PElas, N2PGap, N2PWeld, N2PBeamL
|
|
21
|
+
from NaxToPy.Core.Classes.N2PProperty import N2PProperty, N2PComp, N2PShell, N2PSolid, N2PBeam, N2PRod, N2PBush, N2PFast, N2PMass, N2PElas, N2PGap, N2PWeld, N2PBeamL, N2PPropMisc
|
|
22
22
|
from NaxToPy.Core.Classes.N2PSet import N2PSet
|
|
23
23
|
from NaxToPy.Core.Classes.N2PNastranInputData import N2PNastranInputData, CONSTRUCTDICT, N2PCard
|
|
24
24
|
from NaxToPy.Core.Constants.Constants import BINARY_EXTENSIONS
|
|
@@ -180,7 +180,7 @@ class N2PModelContent:
|
|
|
180
180
|
self.__elementTypeStrtoID = dict(self.__vzmodel.elementTypeID)
|
|
181
181
|
self.__propertiesID = dict(self.__vzmodel.propertiesID)
|
|
182
182
|
self.__StrPartToID = dict(self.__vzmodel.partID)
|
|
183
|
-
self.__materialsID =
|
|
183
|
+
self.__materialsID = None
|
|
184
184
|
self.__ConnectorsID = dict(self.__vzmodel.ConnectorsID)
|
|
185
185
|
# --------------------------------------------------------------------------------------------------------------
|
|
186
186
|
|
|
@@ -456,6 +456,9 @@ class N2PModelContent:
|
|
|
456
456
|
if not self.__material_dict:
|
|
457
457
|
|
|
458
458
|
dictmateriales = dict(self.__vzmodel.N2MatDict)
|
|
459
|
+
if self.Solver == "Abaqus" or self.Solver == "InputFileAbaqus":
|
|
460
|
+
# For Abaqus, the materials are stored as a dict with str keys
|
|
461
|
+
self.__materialsID = list(self.__vzmodel.DictMatToStr)
|
|
459
462
|
|
|
460
463
|
for key, value in dictmateriales.items():
|
|
461
464
|
if self.Solver == "Nastran" or self.Solver == "H3DOptistruct" or self.Solver == "InputFileNastran" or self.Solver == "InputFileH3DOptistruct":
|
|
@@ -553,6 +556,8 @@ class N2PModelContent:
|
|
|
553
556
|
|
|
554
557
|
elif value.GetType().ToString() == 'NaxToModel.N2BeamL':
|
|
555
558
|
self.__property_dict[key] = N2PBeamL(value, self)
|
|
559
|
+
elif value.GetType().ToString() == 'NaxToModel.N2PropMisc':
|
|
560
|
+
self.__property_dict[key] = N2PPropMisc(value, self)
|
|
556
561
|
|
|
557
562
|
t2 = time.time()
|
|
558
563
|
N2PLog.Debug.D100("N2PProperty Dictionary", t2 - t1)
|
|
@@ -145,6 +145,21 @@ def _write_register() -> None:
|
|
|
145
145
|
finally:
|
|
146
146
|
naxto_key.Close()
|
|
147
147
|
|
|
148
|
+
def _check_naxto_version() -> bool:
|
|
149
|
+
"""Returns true if the NaxTo version is compible with NaxToPy checking the windows register"""
|
|
150
|
+
try:
|
|
151
|
+
naxto_paths = _read_register(winreg.HKEY_LOCAL_MACHINE) or _read_register(winreg.HKEY_CURRENT_USER)
|
|
152
|
+
if naxto_paths is None:
|
|
153
|
+
return False
|
|
154
|
+
|
|
155
|
+
compatible_path = _check_compatibility(naxto_paths)
|
|
156
|
+
if compatible_path is None:
|
|
157
|
+
return False
|
|
158
|
+
|
|
159
|
+
return True
|
|
160
|
+
|
|
161
|
+
except Exception as e:
|
|
162
|
+
return False
|
|
148
163
|
|
|
149
164
|
def _clean_register() -> None:
|
|
150
165
|
"""Removes temporary registry entries created during EXE runtimes."""
|
|
@@ -211,6 +226,11 @@ def __reference_finder() -> None:
|
|
|
211
226
|
naxtomodel_path = sys._MEIPASS + "\\bin\\NaxToModel.dll"
|
|
212
227
|
_write_register()
|
|
213
228
|
N2PLog.Info.I115()
|
|
229
|
+
elif not _check_naxto_version():
|
|
230
|
+
_clean_register()
|
|
231
|
+
naxtomodel_path = sys._MEIPASS + "\\bin\\NaxToModel.dll"
|
|
232
|
+
_write_register()
|
|
233
|
+
N2PLog.Info.I115()
|
|
214
234
|
else:
|
|
215
235
|
N2PLog.Info.I116()
|
|
216
236
|
|
|
@@ -236,4 +256,5 @@ def __reference_finder() -> None:
|
|
|
236
256
|
else:
|
|
237
257
|
N2PLog.Info.I109()
|
|
238
258
|
N2PLog.Debug.D101(naxtomodel_path)
|
|
239
|
-
|
|
259
|
+
|
|
260
|
+
N2PLog.Info.I100()
|
|
@@ -738,6 +738,10 @@ class Orthotropic(Material):
|
|
|
738
738
|
'_tref',
|
|
739
739
|
'_ge',
|
|
740
740
|
'_allowableORTO',
|
|
741
|
+
'_mu21',
|
|
742
|
+
'_mu2',
|
|
743
|
+
'_b21',
|
|
744
|
+
'_b2',
|
|
741
745
|
)
|
|
742
746
|
|
|
743
747
|
|
|
@@ -764,6 +768,10 @@ class Orthotropic(Material):
|
|
|
764
768
|
self._youngz = None
|
|
765
769
|
self._poissonyz = None
|
|
766
770
|
self._poissonxz = None
|
|
771
|
+
self._mu21 = None
|
|
772
|
+
self._mu2 = None
|
|
773
|
+
self._b21 = None
|
|
774
|
+
self._b2 = None
|
|
767
775
|
self._allowableORTO = AllowablesORTO()
|
|
768
776
|
self._allowableORTO._shared_xcompressive = n2p_material.Xc
|
|
769
777
|
self._allowableORTO._shared_ycompressive = n2p_material.Yc
|
|
@@ -903,6 +911,39 @@ class Orthotropic(Material):
|
|
|
903
911
|
return self._ge
|
|
904
912
|
# ------------------------------------------------------------------------------------------------------------------
|
|
905
913
|
|
|
914
|
+
# Method to obtain the inter fiber friction property in transverse-longitudinal direction (fiber-wise) -----------------------------------------------------
|
|
915
|
+
@property
|
|
916
|
+
def mu21(self) -> float:
|
|
917
|
+
""" Returns inter fiber friction property in transverse-longitudinal direction. """
|
|
918
|
+
return self._mu21
|
|
919
|
+
# ------------------------------------------------------------------------------------------------------------------
|
|
920
|
+
|
|
921
|
+
# Method to obtain the inter fiber friction property in transverse direction (fiber-wise) -----------------------------------------------------
|
|
922
|
+
@property
|
|
923
|
+
def mu2(self) -> float:
|
|
924
|
+
""" Returns inter fiber friction property in transverse direction.
|
|
925
|
+
"""
|
|
926
|
+
return self._mu2
|
|
927
|
+
# ------------------------------------------------------------------------------------------------------------------
|
|
928
|
+
|
|
929
|
+
# Method to obtain the inter fiber friction coefficient in transverse-longitudinal direction (fiber-wise) -----------------------------------------------------
|
|
930
|
+
@property
|
|
931
|
+
def b21(self) -> float:
|
|
932
|
+
""" Returns inter fiber friction coefficient in transverse-longitudinal direction.
|
|
933
|
+
"""
|
|
934
|
+
self._b21 = self.mu21
|
|
935
|
+
return self._b21
|
|
936
|
+
# ------------------------------------------------------------------------------------------------------------------
|
|
937
|
+
|
|
938
|
+
# Method to obtain the inter fiber friction coefficient in transverse direction (fiber-wise) -----------------------------------------------------
|
|
939
|
+
@property
|
|
940
|
+
def b2(self) -> float:
|
|
941
|
+
""" Returns inter fiber friction coefficient in transverse-longitudinal direction.
|
|
942
|
+
"""
|
|
943
|
+
self._b2 = 1/(1-self.mu2)
|
|
944
|
+
return self._b2
|
|
945
|
+
|
|
946
|
+
|
|
906
947
|
# Setters ----------------------------------------------------------------------------------------------------------
|
|
907
948
|
@YoungX.setter
|
|
908
949
|
def YoungX(self, value: float) -> None:
|
|
@@ -985,7 +1026,14 @@ class Orthotropic(Material):
|
|
|
985
1026
|
return (f"Orthotropic({self.ID},'0')")
|
|
986
1027
|
# ------------------------------------------------------------------------------------------------------------------
|
|
987
1028
|
|
|
988
|
-
|
|
1029
|
+
@mu21.setter
|
|
1030
|
+
def mu21(self, value) -> None:
|
|
1031
|
+
self._mu21 = value
|
|
1032
|
+
# ------------------------------------------------------------------------------------------------------------------
|
|
1033
|
+
|
|
1034
|
+
@mu2.setter
|
|
1035
|
+
def mu2(self, value) -> None:
|
|
1036
|
+
self._mu2 = value
|
|
989
1037
|
|
|
990
1038
|
|
|
991
1039
|
|