NaxToPy 2.2.2__tar.gz → 2.2.3__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-2.2.2/src/NaxToPy.egg-info → naxtopy-2.2.3}/PKG-INFO +9 -1
- {naxtopy-2.2.2 → naxtopy-2.2.3}/README.md +7 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/pyproject.toml +2 -2
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PComponent.py +6 -1
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Constants/Constants.py +3 -2
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Errors/N2PLog.py +321 -12
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/N2PModelContent.py +10 -11
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/Joints/N2PAttachment.py +18 -19
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/Joints/N2PBolt.py +12 -12
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/Joints/N2PJoint.py +512 -188
- naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/Joints/N2PPlate.py +887 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/N2PGetFasteners.py +68 -118
- naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/N2PGetLoadFasteners.py +1177 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetAttachments.py +8 -9
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetResults.py +9 -21
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PInterpolation.py +4 -7
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PLoadModel.py +2 -2
- naxtopy-2.2.3/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +406 -0
- naxtopy-2.2.3/src/NaxToPy/Modules/N2PNeuber/N2PNeuber.py +595 -0
- naxtopy-2.2.3/src/NaxToPy/Modules/N2PNeuber/__init__.py +0 -0
- naxtopy-2.2.3/src/NaxToPy/Modules/common/aux_funcitons.py +31 -0
- naxtopy-2.2.3/src/NaxToPy/Modules/common/aux_functions.py +155 -0
- naxtopy-2.2.3/src/NaxToPy/Modules/common/data_input_hdf5.py +298 -0
- naxtopy-2.2.3/src/NaxToPy/Modules/common/hdf5.py +259 -0
- naxtopy-2.2.3/src/NaxToPy/Modules/common/material.py +1029 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3/src/NaxToPy.egg-info}/PKG-INFO +9 -1
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy.egg-info/SOURCES.txt +6 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy.egg-info/requires.txt +1 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/Joints/N2PPlate.py +0 -454
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/N2PGetLoadFasteners.py +0 -582
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +0 -182
- naxtopy-2.2.2/src/NaxToPy/Modules/common/material.py +0 -9
- {naxtopy-2.2.2 → naxtopy-2.2.3}/LICENSE +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/setup.cfg +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/setup.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntity.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityElement.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityNode.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityShell.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQEntities/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeyword.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordBEAMSECTION.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordCOUPLING.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDENSITY.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTING.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTINGCOUPLING.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELASTIC.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELEMENT.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELSET.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDINSTANCE.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDPART.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordINSTANCE.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATIC.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATICCOUPLING.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordMATERIAL.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNODE.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNSET.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordORIENTATION.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPART.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPLASTIC.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSHELLSECTION.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSOLIDSECTION.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSURFACE.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ABQKeywords/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/AllClasses.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PAbaqusInputData.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PConnector.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PCoord.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PElement.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PFreeBody.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PIncrement.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PLoadCase.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PMaterial.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PNastranInputData.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PNode.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PProperty.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PReport.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PResult.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PSection.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/N2PSet.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/ProgresBar.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Classes/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Constants/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Constants/librerias.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Errors/N2PColors.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Errors/N2PFileHandler.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Errors/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/Reference_Finder/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/_AuxFunc/_NetToPython.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/_AuxFunc/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Core/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/Joints/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/N2PFastenerAnalysis.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/N2PUpdateFastener.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Check/Validation.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/AR1DElement.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARAttachment.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARBolt.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlate.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlateElements.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARAuxiliarFunctions.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARBilinearInterpolation.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARConfigurationInput.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARDerivedLoadCases.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARFileInputRivetsIDs.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetAttachments.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetBolts.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARReadResultsFromFile.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARResults.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARRotation.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARSerialize.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/Fasteners/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/N2PEnvelope/N2PEnvelope.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/N2PEnvelope/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/N2PtoEXE/N2PtoEXE.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/N2PtoEXE/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/common/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/common/property.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/handbooks/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/handbooks/bruhn/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/handbooks/cmh/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/handbooks/esdu/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/handbooks/hsb/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/Modules/handbooks/nasa/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/NaxToPy.ico +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/__init__.py +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy/user_functions.txt +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy.egg-info/dependency_links.txt +0 -0
- {naxtopy-2.2.2 → naxtopy-2.2.3}/src/NaxToPy.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: NaxToPy
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.3
|
|
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
|
|
@@ -121,6 +121,7 @@ License-File: LICENSE
|
|
|
121
121
|
Requires-Dist: pythonnet>=3.0.3
|
|
122
122
|
Requires-Dist: numpy>=1.22.0
|
|
123
123
|
Requires-Dist: setuptools>=67.8.0
|
|
124
|
+
Requires-Dist: h5py>=3.12.1
|
|
124
125
|
Dynamic: download-url
|
|
125
126
|
Dynamic: home-page
|
|
126
127
|
|
|
@@ -325,6 +326,12 @@ is redundant. The coordinate system will prevail.
|
|
|
325
326
|
7. Feat: New properties supported: PBUSH, PFAST, PMASS, PELAS, PGAP, PWELD
|
|
326
327
|
8. BugFix: The method get_elements_attached() is fixed so when there are MPC connectors with the same ID.
|
|
327
328
|
|
|
329
|
+
### v.2.2.3
|
|
330
|
+
1. Requirement: Now NaxToPy require the package [**h5py** ](https://pypi.org/project/h5py/).
|
|
331
|
+
2. Feat: N2PGetLoadFastener now can use PAG method and display format.
|
|
332
|
+
3. BugFix: Some bugs are solved in N2PGetFastener and N2PGetLoadFastener.
|
|
333
|
+
4. Feat: N2PGetLoadFastener can export results in HDF5 format.
|
|
334
|
+
5. BugFix: The filtering in the method get_result_by_LCs_Incr() in elements when results are in Corner Data is fixed.
|
|
328
335
|
|
|
329
336
|
# Documentation
|
|
330
337
|
|
|
@@ -334,6 +341,7 @@ NaxToPy only use three dependeces:
|
|
|
334
341
|
- NumPy: https://numpy.org/
|
|
335
342
|
- PythonNET: https://pythonnet.github.io/
|
|
336
343
|
- Setuptools: https://setuptools.pypa.io/en/latest/index.html
|
|
344
|
+
- HDF5: https://www.h5py.org/
|
|
337
345
|
|
|
338
346
|
## Supported Files
|
|
339
347
|
|
|
@@ -199,6 +199,12 @@ is redundant. The coordinate system will prevail.
|
|
|
199
199
|
7. Feat: New properties supported: PBUSH, PFAST, PMASS, PELAS, PGAP, PWELD
|
|
200
200
|
8. BugFix: The method get_elements_attached() is fixed so when there are MPC connectors with the same ID.
|
|
201
201
|
|
|
202
|
+
### v.2.2.3
|
|
203
|
+
1. Requirement: Now NaxToPy require the package [**h5py** ](https://pypi.org/project/h5py/).
|
|
204
|
+
2. Feat: N2PGetLoadFastener now can use PAG method and display format.
|
|
205
|
+
3. BugFix: Some bugs are solved in N2PGetFastener and N2PGetLoadFastener.
|
|
206
|
+
4. Feat: N2PGetLoadFastener can export results in HDF5 format.
|
|
207
|
+
5. BugFix: The filtering in the method get_result_by_LCs_Incr() in elements when results are in Corner Data is fixed.
|
|
202
208
|
|
|
203
209
|
# Documentation
|
|
204
210
|
|
|
@@ -208,6 +214,7 @@ NaxToPy only use three dependeces:
|
|
|
208
214
|
- NumPy: https://numpy.org/
|
|
209
215
|
- PythonNET: https://pythonnet.github.io/
|
|
210
216
|
- Setuptools: https://setuptools.pypa.io/en/latest/index.html
|
|
217
|
+
- HDF5: https://www.h5py.org/
|
|
211
218
|
|
|
212
219
|
## Supported Files
|
|
213
220
|
|
|
@@ -4,14 +4,14 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "NaxToPy"
|
|
7
|
-
version = "2.2.
|
|
7
|
+
version = "2.2.3"
|
|
8
8
|
license = {file = "LICENSE"}
|
|
9
9
|
authors = [ { name = "Idaero Solutions", email = "manuel.sanchez@idaerosolutions.com" }, ]
|
|
10
10
|
requires-python = ">=3.9"
|
|
11
11
|
dependencies = ["pythonnet>=3.0.3",
|
|
12
12
|
"numpy>=1.22.0",
|
|
13
13
|
"setuptools>=67.8.0",
|
|
14
|
-
]
|
|
14
|
+
"h5py>=3.12.1"]
|
|
15
15
|
description = "Package for postprocessing FEM results in Python"
|
|
16
16
|
readme = "README.md"
|
|
17
17
|
classifiers = ["Intended Audience :: Science/Research",
|
|
@@ -416,8 +416,13 @@ class N2PComponent:
|
|
|
416
416
|
cs_dict = self._result_father._loadCase_father._modelFather._N2PModelContent__vzmodel.CalculateArrayLastResult(
|
|
417
417
|
formula, resultsParameters, 0)
|
|
418
418
|
|
|
419
|
-
if filter_list:
|
|
419
|
+
if filter_list and not cornerData:
|
|
420
420
|
ii_map = [item.InternalID for item in filter_list]
|
|
421
|
+
elif filter_list and cornerData:
|
|
422
|
+
if isinstance(filter_list[0], N2PElement):
|
|
423
|
+
ii_map = list(self._result_father._loadCase_father._modelFather.elementnodal(filter_list).keys())
|
|
424
|
+
else:
|
|
425
|
+
N2PLog.Error.E234()
|
|
421
426
|
else:
|
|
422
427
|
ii_map = None
|
|
423
428
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""Constants of the NaxToPy package"""
|
|
2
2
|
|
|
3
3
|
# NaxToPy Version
|
|
4
|
-
VERSION = "2.2.
|
|
4
|
+
VERSION = "2.2.3"
|
|
5
5
|
|
|
6
6
|
# Supported for Naxto:
|
|
7
7
|
NAXTO_VERSION = '2024R3'
|
|
@@ -21,7 +21,8 @@ EXTERNAL_LIBS_PYTHON = ['cffi',
|
|
|
21
21
|
'pycparser',
|
|
22
22
|
'pythonnet',
|
|
23
23
|
'numpy',
|
|
24
|
-
'setuptools'
|
|
24
|
+
'setuptools',
|
|
25
|
+
'h5py']
|
|
25
26
|
# -------------------------------------------------------------------------------------------------
|
|
26
27
|
|
|
27
28
|
# Binary extensions supported by NaxToPy ----------------------------------------------------------
|
|
@@ -769,8 +769,84 @@ own information message. Use the following structure as a standard message (I +
|
|
|
769
769
|
|
|
770
770
|
@staticmethod
|
|
771
771
|
def W525() -> None:
|
|
772
|
-
'''Warning raised when, in N2PGetLoadFasteners, the type_export attribute is not NAXTOPY
|
|
773
|
-
message = f"W525: Type of export not supported. The results will be exported in NAXTOPY style. Try <<NAXTOPY
|
|
772
|
+
'''Warning raised when, in N2PGetLoadFasteners, the type_export attribute is not NAXTOPY, PAG ALTAIR'''
|
|
773
|
+
message = f"W525: Type of export not supported. The results will be exported in NAXTOPY style. Try <<NAXTOPY>>, <<PAGTXT>>, <<<PAGCSV>>> or <<ALTAIR>>."
|
|
774
|
+
N2PLog._N2PLog__logger.warning(message)
|
|
775
|
+
|
|
776
|
+
@staticmethod
|
|
777
|
+
def W526(parameter) -> None:
|
|
778
|
+
'''Warning raised when the bypass parameters dictionary is not well defined'''
|
|
779
|
+
message = f"W526: Bypass parameter {parameter} is not well defined. The default value will be used."
|
|
780
|
+
N2PLog._N2PLog__logger.error(message)
|
|
781
|
+
|
|
782
|
+
@staticmethod
|
|
783
|
+
def W527(input, instance) -> None:
|
|
784
|
+
'''Warning raised when an input is of a wrong instance.'''
|
|
785
|
+
message = f"W537: Attribute {input} is not a {instance} instance. The default value will be used."
|
|
786
|
+
N2PLog._N2PLog__logger.error(message)
|
|
787
|
+
|
|
788
|
+
@staticmethod
|
|
789
|
+
def W528() -> None:
|
|
790
|
+
'''Warning raised when, in N2PGetLoadFasteners, the export_precison attribute is not 4 or 8'''
|
|
791
|
+
message = f"W528: Precission not supported. The default precission will be used. Try 4 or 8."
|
|
792
|
+
N2PLog._N2PLog__logger.warning(message)
|
|
793
|
+
|
|
794
|
+
|
|
795
|
+
@staticmethod
|
|
796
|
+
def W650() -> None:
|
|
797
|
+
''' Warning raised when specific arguments have been introduce to the plastic class.
|
|
798
|
+
'''
|
|
799
|
+
message = f"W650: For this choosen arguments the Yield Stress must be at zero plastic strain."
|
|
800
|
+
N2PLog._N2PLog__logger.warning(message)
|
|
801
|
+
|
|
802
|
+
@staticmethod
|
|
803
|
+
def W651(elemID) -> None:
|
|
804
|
+
''' Warning raised when a non ISOTROPIC/MAT1 asociated to the element has been chosen.
|
|
805
|
+
'''
|
|
806
|
+
message = f"W651: For the element {elemID} the module does not work because it has not a isotropic material"
|
|
807
|
+
N2PLog._N2PLog__logger.warning(message)
|
|
808
|
+
|
|
809
|
+
@staticmethod
|
|
810
|
+
def W652(elemID) -> None:
|
|
811
|
+
''' Warning raised when a non PSHELL asociated to the element has been chosen.
|
|
812
|
+
'''
|
|
813
|
+
message = f"W651: For the element {elemID} the module does not work because it has not a PSHELL asociated"
|
|
814
|
+
N2PLog._N2PLog__logger.warning(message)
|
|
815
|
+
|
|
816
|
+
@staticmethod
|
|
817
|
+
def W700() -> None:
|
|
818
|
+
''' Warning raised when a data entry does not have its compulsory information
|
|
819
|
+
'''
|
|
820
|
+
message = f"W700: A DataEntry does not have all of its necessary information. Its data is not written."
|
|
821
|
+
N2PLog._N2PLog__logger.warning(message)
|
|
822
|
+
|
|
823
|
+
@staticmethod
|
|
824
|
+
def W701(elementType) -> None:
|
|
825
|
+
''' Warning raised when, while writing an HDF5, the element type is not element, corner or node.
|
|
826
|
+
'''
|
|
827
|
+
message = f"W701: Element type {elementType} not accepted. Try <<ELEMENT>>, <<CORNER>> or <<NODE>>."
|
|
828
|
+
N2PLog._N2PLog__logger.warning(message)
|
|
829
|
+
|
|
830
|
+
|
|
831
|
+
@staticmethod
|
|
832
|
+
def W650() -> None:
|
|
833
|
+
''' Warning raised when specific arguments have been introduce to the plastic class.
|
|
834
|
+
'''
|
|
835
|
+
message = f"W650: For this choosen arguments the Yield Stress must be at zero plastic strain."
|
|
836
|
+
N2PLog._N2PLog__logger.warning(message)
|
|
837
|
+
|
|
838
|
+
@staticmethod
|
|
839
|
+
def W651(elemID) -> None:
|
|
840
|
+
''' Warning raised when a non ISOTROPIC/MAT1 asociated to the element has been chosen.
|
|
841
|
+
'''
|
|
842
|
+
message = f"W651: For the element {elemID} the module does not work because it does not have an isotropic material, so it will be removed"
|
|
843
|
+
N2PLog._N2PLog__logger.warning(message)
|
|
844
|
+
|
|
845
|
+
@staticmethod
|
|
846
|
+
def W652(elemID) -> None:
|
|
847
|
+
''' Warning raised when a non PSHELL asociated to the element has been chosen.
|
|
848
|
+
'''
|
|
849
|
+
message = f"W651: For the element {elemID} the module does not work because it does not have a PSHELL asociated, so it will be removed"
|
|
774
850
|
N2PLog._N2PLog__logger.warning(message)
|
|
775
851
|
# ------------------------------------------------------------------------------------------------------------------
|
|
776
852
|
|
|
@@ -1354,17 +1430,17 @@ own information message. Use the following structure as a standard message (I +
|
|
|
1354
1430
|
N2PLog._N2PLog__logger.error(message)
|
|
1355
1431
|
|
|
1356
1432
|
@staticmethod
|
|
1357
|
-
def E507(
|
|
1433
|
+
def E507(plate) -> None:
|
|
1358
1434
|
''' Error raised when iterations > max_iter.
|
|
1359
1435
|
'''
|
|
1360
|
-
message = f"E507: Unable to calculate bypass loads in
|
|
1436
|
+
message = f"E507: Unable to calculate bypass loads in plate {plate.SolverID} because iterations > Max Iterations."
|
|
1361
1437
|
N2PLog._N2PLog__logger.error(message)
|
|
1362
1438
|
|
|
1363
1439
|
@staticmethod
|
|
1364
|
-
def E508(
|
|
1365
|
-
''' Error raised when there is a problem with the geometry of the
|
|
1440
|
+
def E508(plate) -> None:
|
|
1441
|
+
''' Error raised when there is a problem with the geometry of the plate.
|
|
1366
1442
|
'''
|
|
1367
|
-
message = f"E508:
|
|
1443
|
+
message = f"E508: Plate {plate.SolverID} was not computed because there is a problem with its geometry."
|
|
1368
1444
|
N2PLog._N2PLog__logger.error(message)
|
|
1369
1445
|
|
|
1370
1446
|
@staticmethod
|
|
@@ -1484,11 +1560,11 @@ own information message. Use the following structure as a standard message (I +
|
|
|
1484
1560
|
message = f"E527: Solver not supported. Try using a model with Nastran or the new N2PGetFasteners module."
|
|
1485
1561
|
N2PLog._N2PLog__logger.error(message)
|
|
1486
1562
|
|
|
1487
|
-
@staticmethod
|
|
1488
|
-
def E528(parameter) -> None:
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1563
|
+
# @staticmethod
|
|
1564
|
+
# def E528(parameter) -> None:
|
|
1565
|
+
# '''Error raised when the bypass parameters dictionary is not well defined'''
|
|
1566
|
+
# message = f"E528: Bypass parameter {parameter} is not well defined."
|
|
1567
|
+
# N2PLog._N2PLog__logger.error(message)
|
|
1492
1568
|
|
|
1493
1569
|
@staticmethod
|
|
1494
1570
|
def E529() -> None:
|
|
@@ -1507,6 +1583,239 @@ own information message. Use the following structure as a standard message (I +
|
|
|
1507
1583
|
'''Error raised when a loaded file does not exist or is not a file'''
|
|
1508
1584
|
message = f"E531: Path {path} does not exist or is not a file."
|
|
1509
1585
|
N2PLog._N2PLog__logger.error(message)
|
|
1586
|
+
|
|
1587
|
+
@staticmethod
|
|
1588
|
+
def E532(element) -> None:
|
|
1589
|
+
'''Error raised when one wants to determine if a point is in an element that is not supported.'''
|
|
1590
|
+
message = f"E532: Element with ID {element.ID} is not supported, as it is a {element.TypeElement}."
|
|
1591
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1592
|
+
|
|
1593
|
+
@staticmethod
|
|
1594
|
+
def E533(element) -> None:
|
|
1595
|
+
'''Error raised when one wants to project a point into an element with not enough nodes'''
|
|
1596
|
+
message = f"E532: The point cannot be projected into the element with ID {element.ID} because it does not have enough nodes."
|
|
1597
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1598
|
+
|
|
1599
|
+
@staticmethod
|
|
1600
|
+
def E534() -> None:
|
|
1601
|
+
'''Error raised when, in N2PGetLoadFasteners, no result files have been imported'''
|
|
1602
|
+
message = f"E534: No result files have been imported."
|
|
1603
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1604
|
+
|
|
1605
|
+
@staticmethod
|
|
1606
|
+
def E535(input, instance) -> None:
|
|
1607
|
+
'''Error raised when an input is of a wrong instance.'''
|
|
1608
|
+
message = f"E535: Attribute {input} is not a {instance} instance."
|
|
1609
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1610
|
+
|
|
1611
|
+
@staticmethod
|
|
1612
|
+
def E536(attribute, instance) -> None:
|
|
1613
|
+
'''Error raised when an input (as a list) has no valid elements inside.'''
|
|
1614
|
+
message = f"E536: Attribute {attribute} has no valid {instance} instances."
|
|
1615
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1616
|
+
|
|
1617
|
+
|
|
1618
|
+
|
|
1619
|
+
@staticmethod
|
|
1620
|
+
def E650() -> None:
|
|
1621
|
+
''' Error raised when trying to assign a non isotropic material to a isotropic one'''
|
|
1622
|
+
message = f"E650: Action not allowed because an attempt is being made to assign a non isotropic material to an isotropic one."
|
|
1623
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1624
|
+
|
|
1625
|
+
@staticmethod
|
|
1626
|
+
def E651() -> None:
|
|
1627
|
+
''' Error raised when trying to assign a non orthotropic material to a orthotropic one'''
|
|
1628
|
+
message = f"E651: Action not allowed because an attempt is being made to assign a non orthotropic material to an orthotropic one."
|
|
1629
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1630
|
+
|
|
1631
|
+
@staticmethod
|
|
1632
|
+
def E652() -> None:
|
|
1633
|
+
''' Error raised when trying to assign a wrong hardening to a plastic class'''
|
|
1634
|
+
message = f"E652: Action not allowed because an attempt is being made to assign wrong hardening to a plastic class."
|
|
1635
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1636
|
+
|
|
1637
|
+
# @staticmethod
|
|
1638
|
+
# def E653() -> None:
|
|
1639
|
+
# ''' Error raised when trying to assign a wrong dataType to a plastic class'''
|
|
1640
|
+
# message = f"E653: Action not allowed because an attempt is being made to assign wrong dataType to a plastic class."
|
|
1641
|
+
# N2PLog._N2PLog__logger.error(message)
|
|
1642
|
+
|
|
1643
|
+
@staticmethod
|
|
1644
|
+
def E654() -> None:
|
|
1645
|
+
''' Error raised when trying to assign wrong arguments to a plastic class'''
|
|
1646
|
+
message = f"E654: Action not allowed because an attempt is being made to assign wrong configuration to the plastic class."
|
|
1647
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1648
|
+
|
|
1649
|
+
@staticmethod
|
|
1650
|
+
def E655() -> None:
|
|
1651
|
+
''' Error raised when trying to assign wrong plastic class'''
|
|
1652
|
+
message = f"E655: Action not allowed because an attempt is being made to assign wrong plastic class."
|
|
1653
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1654
|
+
|
|
1655
|
+
@staticmethod
|
|
1656
|
+
def E656() -> None:
|
|
1657
|
+
''' Error raised when trying to assign a wrong N2PMaterial instance to a material subclass'''
|
|
1658
|
+
message = f"E656: Action not allowed because an attempt is being made to a wrong N2PMaterial instance to a material subclass."
|
|
1659
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1660
|
+
|
|
1661
|
+
@staticmethod
|
|
1662
|
+
def E657() -> None:
|
|
1663
|
+
''' Error raised when trying to get a Plastic instance which is not assigned'''
|
|
1664
|
+
message = f"E657: Action not allowed because an attempt is being made to get a Plastic instance which is not assigned."
|
|
1665
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1666
|
+
|
|
1667
|
+
@staticmethod
|
|
1668
|
+
def E658() -> None:
|
|
1669
|
+
''' Error raised when trying to set a non Plastic instance'''
|
|
1670
|
+
message = f"E658: Action not allowed because an attempt is being made to set a non Plastic instance."
|
|
1671
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1672
|
+
|
|
1673
|
+
@staticmethod
|
|
1674
|
+
def E659() -> None:
|
|
1675
|
+
''' Error raised when trying to get an Allowable instance which is not assigned'''
|
|
1676
|
+
message = f"E659: Action not allowed because an attempt is being made to get an Allowables instance which is not assigned."
|
|
1677
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1678
|
+
|
|
1679
|
+
@staticmethod
|
|
1680
|
+
def E660() -> None:
|
|
1681
|
+
''' Error raised when trying to set a non Plastic instance'''
|
|
1682
|
+
message = f"E660: Action not allowed because an attempt is being made to set a non Allowables instance."
|
|
1683
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1684
|
+
|
|
1685
|
+
@staticmethod
|
|
1686
|
+
def E700() -> None:
|
|
1687
|
+
''' Error raised when trying to write in a dataset that has different data types than the one in the data entry'''
|
|
1688
|
+
message = f"E700: The DataEntry has different data types than the ones in the data set."
|
|
1689
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1690
|
+
|
|
1691
|
+
@staticmethod
|
|
1692
|
+
def E701() -> None:
|
|
1693
|
+
''' Error raised when an entity ID is not of integer type'''
|
|
1694
|
+
message = f"E701: The entity ID is not an integer."
|
|
1695
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1696
|
+
|
|
1697
|
+
@staticmethod
|
|
1698
|
+
def E702(entityID) -> None:
|
|
1699
|
+
''' Error raised when, in a dataset, one tries to write a row whose entity ID is already in the dataset'''
|
|
1700
|
+
message = f"E702: The entity ID {entityID} is already in the dataset."
|
|
1701
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1702
|
+
|
|
1703
|
+
|
|
1704
|
+
@staticmethod
|
|
1705
|
+
def E650() -> None:
|
|
1706
|
+
''' Error raised when trying to assign a non isotropic material to a isotropic one'''
|
|
1707
|
+
message = f"E650: Action not allowed because an attempt is being made to assign a non isotropic material to an isotropic one."
|
|
1708
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1709
|
+
|
|
1710
|
+
@staticmethod
|
|
1711
|
+
def E651() -> None:
|
|
1712
|
+
''' Error raised when trying to assign a non orthotropic material to a orthotropic one'''
|
|
1713
|
+
message = f"E651: Action not allowed because an attempt is being made to assign a non orthotropic material to an orthotropic one."
|
|
1714
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1715
|
+
|
|
1716
|
+
@staticmethod
|
|
1717
|
+
def E652() -> None:
|
|
1718
|
+
''' Error raised when trying to assign a wrong hardening to a plastic class'''
|
|
1719
|
+
message = f"E652: Action not allowed because an attempt is being made to assign wrong hardening to a plastic class."
|
|
1720
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1721
|
+
|
|
1722
|
+
# @staticmethod
|
|
1723
|
+
# def E653() -> None:
|
|
1724
|
+
# ''' Error raised when trying to assign a wrong dataType to a plastic class'''
|
|
1725
|
+
# message = f"E653: Action not allowed because an attempt is being made to assign wrong dataType to a plastic class."
|
|
1726
|
+
# N2PLog._N2PLog__logger.error(message)
|
|
1727
|
+
|
|
1728
|
+
@staticmethod
|
|
1729
|
+
def E654() -> None:
|
|
1730
|
+
''' Error raised when trying to assign wrong arguments to a plastic class'''
|
|
1731
|
+
message = f"E654: Action not allowed because an attempt is being made to assign wrong configuration to the plastic class."
|
|
1732
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1733
|
+
|
|
1734
|
+
@staticmethod
|
|
1735
|
+
def E655() -> None:
|
|
1736
|
+
''' Error raised when trying to assign wrong plastic class'''
|
|
1737
|
+
message = f"E655: Action not allowed because an attempt is being made to assign wrong plastic class."
|
|
1738
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1739
|
+
|
|
1740
|
+
@staticmethod
|
|
1741
|
+
def E656() -> None:
|
|
1742
|
+
''' Error raised when trying to assign a wrong N2PMaterial instance to a material subclass'''
|
|
1743
|
+
message = f"E656: Action not allowed because an attempt is being made to a wrong N2PMaterial instance to a material subclass."
|
|
1744
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1745
|
+
|
|
1746
|
+
@staticmethod
|
|
1747
|
+
def E657() -> None:
|
|
1748
|
+
''' Error raised when trying to get a Plastic instance which is not assigned'''
|
|
1749
|
+
message = f"E657: Action not allowed because an attempt is being made to get a Plastic instance which is not assigned."
|
|
1750
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1751
|
+
|
|
1752
|
+
@staticmethod
|
|
1753
|
+
def E658() -> None:
|
|
1754
|
+
''' Error raised when trying to set a non Plastic instance'''
|
|
1755
|
+
message = f"E658: Action not allowed because an attempt is being made to set a non Plastic instance."
|
|
1756
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1757
|
+
|
|
1758
|
+
@staticmethod
|
|
1759
|
+
def E659() -> None:
|
|
1760
|
+
''' Error raised when trying to get an Allowable instance which is not assigned'''
|
|
1761
|
+
message = (f"E659: Action not allowed because an attempt is being made to get an Allowables instance which"
|
|
1762
|
+
" is not assigned.")
|
|
1763
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1764
|
+
|
|
1765
|
+
@staticmethod
|
|
1766
|
+
def E660() -> None:
|
|
1767
|
+
''' Error raised when trying to set a non Plastic instance'''
|
|
1768
|
+
message = f"E660: Action not allowed because an attempt is being made to set a non Allowables instance."
|
|
1769
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1770
|
+
|
|
1771
|
+
@staticmethod
|
|
1772
|
+
def E661(materialid) -> None:
|
|
1773
|
+
""" Error raised when trying to use the N2PNeuber module without assign a YieldStress to a material"""
|
|
1774
|
+
message = (f"E661: Action not allowed because an attempt is being made to use the neuber module without assign a Yield Stress to the material ID:{materialid}")
|
|
1775
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1776
|
+
|
|
1777
|
+
@staticmethod
|
|
1778
|
+
def E662(materialid) -> None:
|
|
1779
|
+
""" Error raised when trying to use the N2PNeuber module without assign a RO_exponent to a material"""
|
|
1780
|
+
message = (f"E662: Action not allowed because an attempt is being made to use the neuber module without assign a RO exponent to the material ID:{materialid}")
|
|
1781
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1782
|
+
|
|
1783
|
+
@staticmethod
|
|
1784
|
+
def E663() -> None:
|
|
1785
|
+
""" Error raised when trying to assign a non N2PElement list"""
|
|
1786
|
+
message = (f"E663: Action not allowed because an attempt is being made to assign a non N2PElement list")
|
|
1787
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1788
|
+
|
|
1789
|
+
@staticmethod
|
|
1790
|
+
def E664() -> None:
|
|
1791
|
+
""" Error raised when trying to assign a non N2PLoadCase list"""
|
|
1792
|
+
message = (f"E664: Action not allowed because an attempt is being made to assign a non N2PLoadCase list")
|
|
1793
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1794
|
+
|
|
1795
|
+
@staticmethod
|
|
1796
|
+
def E665(ele) -> None:
|
|
1797
|
+
""" Error raised when is not possible to find a Neuber solution"""
|
|
1798
|
+
message = (f"E665: Action not allowed is not possible to find a Neuber solution for the stress of the element{ele}")
|
|
1799
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1800
|
+
|
|
1801
|
+
@staticmethod
|
|
1802
|
+
def E670() -> None:
|
|
1803
|
+
''' Error raised when trying to get an Allowable Isotropic instance which is not assigned'''
|
|
1804
|
+
message = (f"E659: Action not allowed because an attempt is being made to get an Allowables Isotropic instance which"
|
|
1805
|
+
" is not assigned.")
|
|
1806
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1807
|
+
|
|
1808
|
+
@staticmethod
|
|
1809
|
+
def E670() -> None:
|
|
1810
|
+
''' Error raised when trying to get an Allowable Orthotropic instance which is not assigned'''
|
|
1811
|
+
message = (f"E659: Action not allowed because an attempt is being made to get an Allowables Orthotropic instance which"
|
|
1812
|
+
" is not assigned.")
|
|
1813
|
+
N2PLog._N2PLog__logger.error(message)
|
|
1814
|
+
|
|
1815
|
+
|
|
1816
|
+
|
|
1817
|
+
|
|
1818
|
+
|
|
1510
1819
|
########################################### CRITICAL #############################################################
|
|
1511
1820
|
class Critical:
|
|
1512
1821
|
"""Class with all the critical errors.
|
|
@@ -23,6 +23,7 @@ from NaxToPy.Core.Classes.N2PNastranInputData import N2PNastranInputData, CONSTR
|
|
|
23
23
|
from NaxToPy.Core.Constants.Constants import BINARY_EXTENSIONS
|
|
24
24
|
from NaxToPy.Core.Classes.N2PReport import N2PReport
|
|
25
25
|
from NaxToPy.Core.Classes.N2PAbaqusInputData import N2PAbaqusInputData
|
|
26
|
+
from NaxToPy.Core._AuxFunc._NetToPython import _numpytonet
|
|
26
27
|
|
|
27
28
|
import time
|
|
28
29
|
import numpy as np
|
|
@@ -1140,14 +1141,12 @@ class N2PModelContent:
|
|
|
1140
1141
|
if not domain:
|
|
1141
1142
|
adjacent_ids = N2AdjacencyFunctions.GetAttached(self.__vzmodel.UMesh, inernal_ids)
|
|
1142
1143
|
else:
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
adjacent_ids = N2AdjacencyFunctions.GetAttached(self.__vzmodel.UMesh, inernal_ids, csharp_bool_array)
|
|
1144
|
+
|
|
1145
|
+
mesh_len = self.__vzmodel.UMesh.GetNumberOfCells()
|
|
1146
|
+
bool_array = np.zeros((mesh_len,), bool)
|
|
1147
|
+
domain_id = [ele.InternalID for ele in domain]
|
|
1148
|
+
bool_array[domain_id] = True
|
|
1149
|
+
adjacent_ids = N2AdjacencyFunctions.GetAttached(self.__vzmodel.UMesh, inernal_ids, _numpytonet(bool_array))
|
|
1151
1150
|
|
|
1152
1151
|
cell_list = self.__cells_list
|
|
1153
1152
|
|
|
@@ -1231,11 +1230,11 @@ class N2PModelContent:
|
|
|
1231
1230
|
list[tuple[N2PElement, N2PNode, N2PNode], ...]
|
|
1232
1231
|
"""
|
|
1233
1232
|
|
|
1234
|
-
|
|
1235
|
-
|
|
1233
|
+
mesh_len = self.__vzmodel.UMesh.GetNumberOfCells()
|
|
1234
|
+
csharp_bool_array = System.Array.CreateInstance(System.Boolean, mesh_len)
|
|
1236
1235
|
|
|
1237
1236
|
if not domain:
|
|
1238
|
-
for i in range(
|
|
1237
|
+
for i in range(mesh_len):
|
|
1239
1238
|
csharp_bool_array[i] = True
|
|
1240
1239
|
else:
|
|
1241
1240
|
for elem in domain:
|
|
@@ -12,18 +12,18 @@ class N2PAttachment:
|
|
|
12
12
|
|
|
13
13
|
Attributes:
|
|
14
14
|
id: int
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
attached_plates_id_list: list[int] -> list of the attached N2PPlates' ID.
|
|
16
|
+
attached_plates_list: list[N2PPlate] -> list of the attached N2PPlates.
|
|
17
|
+
joints_list: list[N2PJoint] -> list of the attached N2PJoints.
|
|
18
18
|
pitch: float -> minimum distance from an N2PJoint to its neighbours.
|
|
19
19
|
"""
|
|
20
20
|
|
|
21
21
|
# N2PAttachment constructor ----------------------------------------------------------------------------------------
|
|
22
22
|
def __init__(self, id):
|
|
23
23
|
self._id: int = id
|
|
24
|
-
self.
|
|
25
|
-
self.
|
|
26
|
-
self.
|
|
24
|
+
self._attached_plates_id_list: list[int] = None
|
|
25
|
+
self._attached_plates_list: list[N2PPlate] = None
|
|
26
|
+
self._joints_list: list[N2PJoint] = []
|
|
27
27
|
self._pitch: float = None
|
|
28
28
|
# ------------------------------------------------------------------------------------------------------------------
|
|
29
29
|
|
|
@@ -39,33 +39,33 @@ class N2PAttachment:
|
|
|
39
39
|
# ------------------------------------------------------------------------------------------------------------------
|
|
40
40
|
|
|
41
41
|
@property
|
|
42
|
-
def
|
|
42
|
+
def AttachedPlatesIDList(self) -> list[int]:
|
|
43
43
|
|
|
44
44
|
"""
|
|
45
|
-
Property that returns the
|
|
45
|
+
Property that returns the attached_plates_id_list attribute, that is, the list of the IDs of all attached N2PPlates.
|
|
46
46
|
"""
|
|
47
47
|
|
|
48
|
-
return self.
|
|
48
|
+
return self._attached_plates_id_list
|
|
49
49
|
# ------------------------------------------------------------------------------------------------------------------
|
|
50
50
|
|
|
51
51
|
@property
|
|
52
|
-
def
|
|
52
|
+
def AttachedPlateList(self) -> list[N2PPlate]:
|
|
53
53
|
|
|
54
54
|
"""
|
|
55
|
-
Property that returns the
|
|
55
|
+
Property that returns the attached_plates_list attribute, that is, the list of all attached N2PPlates.
|
|
56
56
|
"""
|
|
57
57
|
|
|
58
|
-
return self.
|
|
58
|
+
return self._attached_plates_list
|
|
59
59
|
# ------------------------------------------------------------------------------------------------------------------
|
|
60
60
|
|
|
61
61
|
@property
|
|
62
|
-
def
|
|
62
|
+
def JointsList(self) -> list[N2PJoint]:
|
|
63
63
|
|
|
64
64
|
"""
|
|
65
65
|
Property that returns the joints attribute, that is, the list of all N2PJoints.
|
|
66
66
|
"""
|
|
67
67
|
|
|
68
|
-
return self.
|
|
68
|
+
return self._joints_list
|
|
69
69
|
# ------------------------------------------------------------------------------------------------------------------
|
|
70
70
|
|
|
71
71
|
@property
|
|
@@ -86,14 +86,13 @@ class N2PAttachment:
|
|
|
86
86
|
Method used to obtain the attachment's pitch, that is, the minimum distance from an N2PJoint to its neighbours.
|
|
87
87
|
|
|
88
88
|
Calling example:
|
|
89
|
-
>>> from NaxToPy.Modules.Fasteners.Joints.N2PAttachment import N2PAttachment
|
|
90
89
|
>>> jointPitch = myAttachment.get_pitch()
|
|
91
90
|
"""
|
|
92
91
|
|
|
93
92
|
intersectionPoints = []
|
|
94
|
-
plateID = self.
|
|
95
|
-
for i in self.
|
|
96
|
-
plate = [p for p in i.
|
|
93
|
+
plateID = self.JointsList[0].PlateList[0].AttachmentID
|
|
94
|
+
for i in self._joints_list:
|
|
95
|
+
plate = [p for p in i.PlateList if p.AttachmentID == plateID][0]
|
|
97
96
|
intersectionPoints.append(np.array(plate.Intersection))
|
|
98
97
|
|
|
99
98
|
numPoints = len(intersectionPoints)
|
|
@@ -107,7 +106,7 @@ class N2PAttachment:
|
|
|
107
106
|
np.fill_diagonal(distances, np.inf)
|
|
108
107
|
|
|
109
108
|
distances = np.min(distances, axis = 0)
|
|
110
|
-
for i, j in enumerate(self.
|
|
109
|
+
for i, j in enumerate(self._joints_list):
|
|
111
110
|
j._pitch = float(distances[i])
|
|
112
111
|
self._pitch = float(np.min(distances))
|
|
113
112
|
# -------------------------------------------------------------------------------------------------------------------
|