NaxToPy 2.1.2__tar.gz → 2.2.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-2.1.2/src/NaxToPy.egg-info → naxtopy-2.2.0}/PKG-INFO +22 -12
- {naxtopy-2.1.2 → naxtopy-2.2.0}/README.md +20 -10
- {naxtopy-2.1.2 → naxtopy-2.2.0}/pyproject.toml +2 -2
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQEntities/N2PEntity.py +28 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityElement.py +19 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityNode.py +46 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityShell.py +34 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQEntities/__init__.py +4 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeyword.py +43 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordBEAMSECTION.py +30 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordCOUPLING.py +40 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDENSITY.py +23 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTING.py +24 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTINGCOUPLING.py +17 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELASTIC.py +18 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELEMENT.py +20 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELSET.py +29 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDINSTANCE.py +9 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDPART.py +9 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordINSTANCE.py +27 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATIC.py +15 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATICCOUPLING.py +8 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordMATERIAL.py +13 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNODE.py +14 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNSET.py +40 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordORIENTATION.py +45 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPART.py +13 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPLASTIC.py +23 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSHELLSECTION.py +59 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSOLIDSECTION.py +30 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSURFACE.py +24 -0
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/ABQKeywords/__init__.py +23 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/AllClasses.py +5 -2
- naxtopy-2.2.0/src/NaxToPy/Core/Classes/N2PAbaqusInputData.py +164 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/N2PComponent.py +6 -1
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/N2PLoadCase.py +3 -3
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/N2PMaterial.py +5 -5
- naxtopy-2.1.2/src/NaxToPy/Core/Classes/N2PModelInputData.py → naxtopy-2.2.0/src/NaxToPy/Core/Classes/N2PNastranInputData.py +80 -13
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/N2PProperty.py +108 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/N2PResult.py +2 -2
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Constants/Constants.py +6 -5
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Errors/N2PLog.py +182 -2
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/N2PModelContent.py +101 -45
- naxtopy-2.2.0/src/NaxToPy/Core/Reference_Finder/__New_Reference_finder.py +213 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +22 -6
- naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/Joints/N2PAttachment.py +113 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/Joints/N2PBolt.py +206 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/Joints/N2PJoint.py +1120 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/Joints/N2PPlate.py +454 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Modules/Fasteners/N2PFastenerAnalysis.py +6 -4
- naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/N2PGetFasteners.py +350 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/N2PGetLoadFasteners.py +603 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Modules/Fasteners/N2PUpdateFastener.py +4 -4
- naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetAttachments.py +93 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetResults.py +164 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PInterpolation.py +152 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PLoadModel.py +63 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +182 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/__init__.py +0 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/__init__.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Classes/ARBolt.py +5 -5
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Classes/ARPlate.py +1 -1
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Functions/ARFileInputRivetsIDs.py +1 -1
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Functions/ARGetAttachments.py +3 -3
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Functions/ARGetBolts.py +128 -15
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Functions/ARSerialize.py +2 -2
- naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/__init__.py +0 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/__init__.py +0 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/N2PEnvelope/__init__.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Modules/N2PtoEXE/N2PtoEXE.py +7 -1
- naxtopy-2.2.0/src/NaxToPy/Modules/__init__.py +2 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/common/__init__.py +2 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/common/material.py +9 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/common/property.py +9 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/handbooks/__init__.py +2 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/handbooks/bruhn/__init__.py +2 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/handbooks/cmh/__init__.py +2 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/handbooks/esdu/__init__.py +2 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/handbooks/hsb/__init__.py +2 -0
- naxtopy-2.2.0/src/NaxToPy/Modules/handbooks/nasa/__init__.py +2 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0/src/NaxToPy.egg-info}/PKG-INFO +22 -12
- naxtopy-2.2.0/src/NaxToPy.egg-info/SOURCES.txt +127 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy.egg-info/requires.txt +1 -1
- naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/__init__.py +0 -2
- naxtopy-2.1.2/src/NaxToPy/Modules/__init__.py +0 -2
- naxtopy-2.1.2/src/NaxToPy.egg-info/SOURCES.txt +0 -72
- {naxtopy-2.1.2 → naxtopy-2.2.0}/LICENSE +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/setup.cfg +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/setup.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/N2PConnector.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/N2PCoord.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/N2PElement.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/N2PFreeBody.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/N2PIncrement.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/N2PNode.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/N2PReport.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/N2PSection.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/N2PSet.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/ProgresBar.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Classes/__init__.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Constants/__init__.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Constants/librerias.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Errors/N2PColors.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Errors/N2PFileHandler.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Errors/__init__.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/Reference_Finder/__init__.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/_AuxFunc/_NetToPython.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/_AuxFunc/__init__.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Core/__init__.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/Joints}/__init__.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/N2PEnvelope → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions}/__init__.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Check/Validation.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Classes/AR1DElement.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Classes/ARAttachment.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Classes/ARPlateElements.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Classes/__init__.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Functions/ARAuxiliarFunctions.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Functions/ARBilinearInterpolation.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Functions/ARConfigurationInput.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Functions/ARDerivedLoadCases.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Functions/ARReadResultsFromFile.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Functions/ARResults.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Functions/ARRotation.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/Functions/__init__.py +0 -0
- {naxtopy-2.1.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis → naxtopy-2.2.0/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated}/Core/__init__.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Modules/N2PEnvelope/N2PEnvelope.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/Modules/N2PtoEXE/__init__.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/NaxToPy.ico +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/__init__.py +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy/user_functions.txt +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy.egg-info/dependency_links.txt +0 -0
- {naxtopy-2.1.2 → naxtopy-2.2.0}/src/NaxToPy.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: NaxToPy
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.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
|
|
@@ -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.3
|
|
122
122
|
Requires-Dist: numpy>=1.22.0
|
|
123
123
|
Requires-Dist: setuptools>=67.8.0
|
|
124
124
|
|
|
@@ -134,20 +134,19 @@ Requires-Dist: setuptools>=67.8.0
|
|
|
134
134
|
# NaxToPy
|
|
135
135
|
|
|
136
136
|
**NaxToPy** is the [**NaxTo**](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US)
|
|
137
|
-
library designed for Python,
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
137
|
+
library designed for Python, allowing users to read and manipulate FEM analysis
|
|
138
|
+
results files from the most common tools: Nastran (op2, xdb, h5), Abaqus (odb), Optistruct (h3d, op2),
|
|
139
|
+
and Ansys (rst). It stores these results in a user-friendly Python structure. Additionally, it can
|
|
140
|
+
read input files from Nastran (bdf/dat), Optistruct (fem) and Abaqus(inp) and modify their contents.
|
|
141
141
|
|
|
142
|
-
It
|
|
143
|
-
to
|
|
144
|
-
|
|
145
|
-
links on the left).
|
|
142
|
+
It can easily be combined with other Python packages, such as Matplotlib or Pandas, providing access
|
|
143
|
+
to Python's full coding power for interpreting and processing results without the need to install
|
|
144
|
+
additional software beyond NaxTo (see the Download and Homepage links on the left).
|
|
146
145
|
|
|
147
146
|
**NaxToPy** is a powerful tool for FEM analysis post-processing!
|
|
148
147
|
|
|
149
148
|
**CAUTION:** To use NaxToPy, [**NaxTo**](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US) must be installed.
|
|
150
|
-
This version is compatible with **NaxTo 2024.
|
|
149
|
+
This version is compatible with **NaxTo 2024.3**. It is compatible with all the steps of this version (2024.3.0).
|
|
151
150
|
Check in _Programs and Features_ the NaxTo version that is installed.
|
|
152
151
|
|
|
153
152
|
## Installation
|
|
@@ -290,6 +289,15 @@ when they are asked and not all at once.
|
|
|
290
289
|
3. The function import_results_from_files() checks if the file exist. If not, it prints an error
|
|
291
290
|
but the execution doesn't crash.
|
|
292
291
|
|
|
292
|
+
### v.2.2.0
|
|
293
|
+
1. Feat: New module for fastener analysis: N2PGetFasteners.
|
|
294
|
+
2. Feat: New module for fastener analysis: N2PGetLoadFasteners. Calculates forces in joints and bypass forces.
|
|
295
|
+
3. Bug fix: When a NaxToPy executable file is used on a machine where NaxTo is installed, the libraries are selected accordingly.
|
|
296
|
+
4. Feat: Hidden imports are now allowed in n2ptoexe.
|
|
297
|
+
5. Bug fix: Fixed the rotation of the FORCES tensor. Now the QX and QY components (transverse shears) are calculated correctly.
|
|
298
|
+
6. Refactor: The dictionary and list for Cards have been replaced with a lazy dictionary and a lazy list, improving execution efficiency.
|
|
299
|
+
7. Refactor: Reading the mesh from binary files is now executed in parallel by default, as this approach is more memory-safe.
|
|
300
|
+
|
|
293
301
|
# Documentation
|
|
294
302
|
|
|
295
303
|
**NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
|
|
@@ -308,7 +316,9 @@ NaxToPy only use three dependeces:
|
|
|
308
316
|
- **Ansys:** .rst, .rth(beta)
|
|
309
317
|
|
|
310
318
|
### Input files:
|
|
311
|
-
- **Nastran** (bdf)
|
|
319
|
+
- **Nastran** (.bdf)
|
|
320
|
+
- **Optistruct** (.fem)
|
|
321
|
+
- **Abaqus** (.inp)
|
|
312
322
|
|
|
313
323
|
## Initialize your model
|
|
314
324
|
|
|
@@ -10,20 +10,19 @@
|
|
|
10
10
|
# NaxToPy
|
|
11
11
|
|
|
12
12
|
**NaxToPy** is the [**NaxTo**](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US)
|
|
13
|
-
library designed for Python,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
library designed for Python, allowing users to read and manipulate FEM analysis
|
|
14
|
+
results files from the most common tools: Nastran (op2, xdb, h5), Abaqus (odb), Optistruct (h3d, op2),
|
|
15
|
+
and Ansys (rst). It stores these results in a user-friendly Python structure. Additionally, it can
|
|
16
|
+
read input files from Nastran (bdf/dat), Optistruct (fem) and Abaqus(inp) and modify their contents.
|
|
17
17
|
|
|
18
|
-
It
|
|
19
|
-
to
|
|
20
|
-
|
|
21
|
-
links on the left).
|
|
18
|
+
It can easily be combined with other Python packages, such as Matplotlib or Pandas, providing access
|
|
19
|
+
to Python's full coding power for interpreting and processing results without the need to install
|
|
20
|
+
additional software beyond NaxTo (see the Download and Homepage links on the left).
|
|
22
21
|
|
|
23
22
|
**NaxToPy** is a powerful tool for FEM analysis post-processing!
|
|
24
23
|
|
|
25
24
|
**CAUTION:** To use NaxToPy, [**NaxTo**](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US) must be installed.
|
|
26
|
-
This version is compatible with **NaxTo 2024.
|
|
25
|
+
This version is compatible with **NaxTo 2024.3**. It is compatible with all the steps of this version (2024.3.0).
|
|
27
26
|
Check in _Programs and Features_ the NaxTo version that is installed.
|
|
28
27
|
|
|
29
28
|
## Installation
|
|
@@ -166,6 +165,15 @@ when they are asked and not all at once.
|
|
|
166
165
|
3. The function import_results_from_files() checks if the file exist. If not, it prints an error
|
|
167
166
|
but the execution doesn't crash.
|
|
168
167
|
|
|
168
|
+
### v.2.2.0
|
|
169
|
+
1. Feat: New module for fastener analysis: N2PGetFasteners.
|
|
170
|
+
2. Feat: New module for fastener analysis: N2PGetLoadFasteners. Calculates forces in joints and bypass forces.
|
|
171
|
+
3. Bug fix: When a NaxToPy executable file is used on a machine where NaxTo is installed, the libraries are selected accordingly.
|
|
172
|
+
4. Feat: Hidden imports are now allowed in n2ptoexe.
|
|
173
|
+
5. Bug fix: Fixed the rotation of the FORCES tensor. Now the QX and QY components (transverse shears) are calculated correctly.
|
|
174
|
+
6. Refactor: The dictionary and list for Cards have been replaced with a lazy dictionary and a lazy list, improving execution efficiency.
|
|
175
|
+
7. Refactor: Reading the mesh from binary files is now executed in parallel by default, as this approach is more memory-safe.
|
|
176
|
+
|
|
169
177
|
# Documentation
|
|
170
178
|
|
|
171
179
|
**NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
|
|
@@ -184,7 +192,9 @@ NaxToPy only use three dependeces:
|
|
|
184
192
|
- **Ansys:** .rst, .rth(beta)
|
|
185
193
|
|
|
186
194
|
### Input files:
|
|
187
|
-
- **Nastran** (bdf)
|
|
195
|
+
- **Nastran** (.bdf)
|
|
196
|
+
- **Optistruct** (.fem)
|
|
197
|
+
- **Abaqus** (.inp)
|
|
188
198
|
|
|
189
199
|
## Initialize your model
|
|
190
200
|
|
|
@@ -4,11 +4,11 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "NaxToPy"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.2.0"
|
|
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.3",
|
|
12
12
|
"numpy>=1.22.0",
|
|
13
13
|
"setuptools>=67.8.0",
|
|
14
14
|
]
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class N2PEntity:
|
|
7
|
+
"""Class created to add information under a Keyword. There is not a similar concept in Abaqus. It is used to define
|
|
8
|
+
nodes, elements and shells."""
|
|
9
|
+
|
|
10
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
11
|
+
self.__info = info
|
|
12
|
+
self.__dictKeywordToN2P = dictKeywordToN2P
|
|
13
|
+
self.__dictEntityToN2P = dictEntityToN2P
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def KeywordParent(self) -> N2PKeyword:
|
|
17
|
+
"""Keyword the entity belongs to. It always belongs to a keyword"""
|
|
18
|
+
return self.__dictKeywordToN2P[self.__info.KeywordParent]
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def KeywordIndex(self) -> int:
|
|
22
|
+
"""Identification number of the Keyword ot belongs"""
|
|
23
|
+
return self.__info.KeywordIndex
|
|
24
|
+
|
|
25
|
+
@property
|
|
26
|
+
def Part(self) -> str:
|
|
27
|
+
"""The part of an entity is always the part of the KeywordParent"""
|
|
28
|
+
return self.KeywordParent.Part
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQEntities.N2PEntity import N2PEntity
|
|
4
|
+
from NaxToPy.Core.Classes.ABQEntities.N2PEntityNode import N2PEntityNode
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class N2PEntityElement(N2PEntity):
|
|
8
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
9
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
10
|
+
|
|
11
|
+
@property
|
|
12
|
+
def ID(self) -> int:
|
|
13
|
+
"""Element identification number"""
|
|
14
|
+
return self._N2PEntity__info.ID
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def NodeArray(self) -> list[N2PEntityNode, ]:
|
|
18
|
+
"""Element identification number"""
|
|
19
|
+
return [self._N2PEntity__dictEntityToN2P[node] for node in self._N2PEntity__info.NodeArray]
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQEntities.N2PEntity import N2PEntity
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class N2PEntityNode(N2PEntity):
|
|
7
|
+
|
|
8
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
9
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
10
|
+
|
|
11
|
+
@property
|
|
12
|
+
def ID(self) -> int:
|
|
13
|
+
"""Node identification number"""
|
|
14
|
+
return self._N2PEntity__info.ID
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def X1(self) -> float:
|
|
18
|
+
"""First coordinate"""
|
|
19
|
+
return self._N2PEntity__info.ID
|
|
20
|
+
|
|
21
|
+
@property
|
|
22
|
+
def X2(self) -> float:
|
|
23
|
+
"""Second coordinate"""
|
|
24
|
+
return self._N2PEntity__info.ID
|
|
25
|
+
|
|
26
|
+
@property
|
|
27
|
+
def X3(self) -> float:
|
|
28
|
+
"""Third coordinate"""
|
|
29
|
+
return self._N2PEntity__info.ID
|
|
30
|
+
|
|
31
|
+
@property
|
|
32
|
+
def DirectionCosine1(self) -> float:
|
|
33
|
+
"""First direction cosine of the normal at the node (Optional)"""
|
|
34
|
+
return self._N2PEntity__info.DirectionCosine1
|
|
35
|
+
|
|
36
|
+
@property
|
|
37
|
+
def DirectionCosine2(self) -> float:
|
|
38
|
+
""" Second direction cosine of the normal at the node (Optional)
|
|
39
|
+
For nodes entered a cylindrical or spherical system, this entry is an angle given in degrees."""
|
|
40
|
+
return self._N2PEntity__info.DirectionCosine2
|
|
41
|
+
|
|
42
|
+
@property
|
|
43
|
+
def DirectionCosine3(self) -> float:
|
|
44
|
+
""" Third direction cosine of the normal at the node (Optional)
|
|
45
|
+
For nodes entered a spherical system, this entry is an angle given in degrees."""
|
|
46
|
+
return self._N2PEntity__info.DirectionCosine3
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
4
|
+
from NaxToPy.Core.Classes.ABQEntities.N2PEntity import N2PEntity
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class N2PEntityShell(N2PEntity):
|
|
8
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
9
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
10
|
+
|
|
11
|
+
@property
|
|
12
|
+
def Name(self) -> str:
|
|
13
|
+
"""Name of the layer"""
|
|
14
|
+
return self._N2PEntity__info.Name
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def Thickness(self) -> float:
|
|
18
|
+
"""Shell thickness"""
|
|
19
|
+
return self._N2PEntity__info.Thickness
|
|
20
|
+
|
|
21
|
+
@property
|
|
22
|
+
def IntegrationPoints(self) -> int:
|
|
23
|
+
"""Number of integration points to be used through the shell section. Default: five for Simpson's rule and 3 for Gauss quadrature """
|
|
24
|
+
return self._N2PEntity__info.IntegrationPoints
|
|
25
|
+
|
|
26
|
+
@property
|
|
27
|
+
def Material(self) -> N2PKeyword:
|
|
28
|
+
"""Node identification number"""
|
|
29
|
+
return self._N2PEntity__dictKeywordToN2P[self._N2PEntity__info.Material]
|
|
30
|
+
|
|
31
|
+
@property
|
|
32
|
+
def Orientation(self) -> N2PKeyword:
|
|
33
|
+
"""Node identification number"""
|
|
34
|
+
return self._N2PEntity__dictKeywordToN2P.get(self._N2PEntity__info.Orientation)
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
from NaxToPy.Core.Classes.ABQEntities.N2PEntity import N2PEntity
|
|
2
|
+
from NaxToPy.Core.Classes.ABQEntities.N2PEntityNode import N2PEntityNode
|
|
3
|
+
from NaxToPy.Core.Classes.ABQEntities.N2PEntityElement import N2PEntityElement
|
|
4
|
+
from NaxToPy.Core.Classes.ABQEntities.N2PEntityShell import N2PEntityShell
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.N2PNastranInputData import N2PInputData
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class N2PKeyword(N2PInputData):
|
|
7
|
+
|
|
8
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
9
|
+
super().__init__(info)
|
|
10
|
+
self.__info = info
|
|
11
|
+
self.__dictKeywordToN2P = dictKeywordToN2P
|
|
12
|
+
self.__dictEntityToN2P = dictEntityToN2P
|
|
13
|
+
|
|
14
|
+
@property
|
|
15
|
+
def SuperKeyword(self) -> N2PKeyword:
|
|
16
|
+
"""Keyword that this one depends on"""
|
|
17
|
+
return self._N2PKeyword__dictKeywordToN2P.get(self._N2PKeyword__info.SuperKeyword)
|
|
18
|
+
|
|
19
|
+
@property
|
|
20
|
+
def SubKeywords(self) -> list[N2PKeyword, ]:
|
|
21
|
+
"""Keywords that depend on this one"""
|
|
22
|
+
if self._N2PKeyword__info.SubKeywords:
|
|
23
|
+
return [self._N2PKeyword__dictKeywordToN2P.get(keyword) for keyword in self._N2PKeyword__info.SubKeywords]
|
|
24
|
+
else:
|
|
25
|
+
return []
|
|
26
|
+
|
|
27
|
+
@property
|
|
28
|
+
def Part(self) -> str:
|
|
29
|
+
"""Part of the keyword"""
|
|
30
|
+
return self.__info.Part
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def KeywordType(self) -> str:
|
|
34
|
+
return self.__info.KeywordType.ToString()
|
|
35
|
+
|
|
36
|
+
@property
|
|
37
|
+
def KeywordCode(self) -> str:
|
|
38
|
+
"""Keyword code: the first field read from a keyword"""
|
|
39
|
+
return self.__info.KeywordCode
|
|
40
|
+
|
|
41
|
+
@property
|
|
42
|
+
def Parameters(self) -> dict:
|
|
43
|
+
return dict(self.__info.Parameters)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeywordELSET import N2PKeywordELSET
|
|
4
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
5
|
+
from NaxToPy.Core.Classes.ABQEntities.N2PEntity import N2PEntity
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class N2PKeywordBEAMSECTION(N2PKeyword):
|
|
9
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
10
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
11
|
+
|
|
12
|
+
@property
|
|
13
|
+
def Elset(self) -> N2PKeywordELSET:
|
|
14
|
+
"""Set to which the property is applied"""
|
|
15
|
+
return self._N2PKeyword__dictKeywordToN2P[self._N2PKeyword_N2PKeyword__info.Elset]
|
|
16
|
+
|
|
17
|
+
@property
|
|
18
|
+
def Material(self) -> str:
|
|
19
|
+
"""Material of the elements of the set"""
|
|
20
|
+
return self._N2PKeyword_N2PKeyword__info.Material
|
|
21
|
+
|
|
22
|
+
@property
|
|
23
|
+
def Name(self) -> str:
|
|
24
|
+
"""Name given to the section"""
|
|
25
|
+
return self._N2PKeyword__info.Name
|
|
26
|
+
|
|
27
|
+
@property
|
|
28
|
+
def Section(self) -> N2PEntity:
|
|
29
|
+
"""Description"""
|
|
30
|
+
return self._N2PKeyword__dictEntityToN2P[self._N2PKeyword__info.Section]
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
4
|
+
from NaxToPy.Core.Classes.ABQEntities.N2PEntityNode import N2PEntityNode
|
|
5
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeywordSURFACE import N2PKeywordSURFACE
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class N2PKeywordCOUPLING(N2PKeyword):
|
|
9
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
10
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
11
|
+
|
|
12
|
+
@property
|
|
13
|
+
def RefNode(self) -> N2PEntityNode:
|
|
14
|
+
"""Reference node of the coupling"""
|
|
15
|
+
return self._N2PKeyword__info.RefNode
|
|
16
|
+
|
|
17
|
+
@property
|
|
18
|
+
def Surface(self) -> N2PKeywordSURFACE:
|
|
19
|
+
"""Surface defining the constrained nodes"""
|
|
20
|
+
return self._N2PKeyword__dictKeywordToN2P[self._N2PKeyword__info.Surface]
|
|
21
|
+
|
|
22
|
+
@property
|
|
23
|
+
def ConstrainedSpareNodes(self) -> list[N2PEntityNode, ]:
|
|
24
|
+
"""Nodes defined in the coupling outside the surface"""
|
|
25
|
+
return list(self._N2PKeyword__info.ConstrainedSpareNodes)
|
|
26
|
+
|
|
27
|
+
@property
|
|
28
|
+
def ConstrainedNodes(self) -> list[N2PEntityNode, ]:
|
|
29
|
+
"""All the nodes defined in the coupling"""
|
|
30
|
+
return list(self._N2PKeyword__info.ConstrainedNodes)
|
|
31
|
+
|
|
32
|
+
@property
|
|
33
|
+
def Name(self) -> str:
|
|
34
|
+
"""Name of the Coupling"""
|
|
35
|
+
return self._N2PKeyword__info.Name
|
|
36
|
+
|
|
37
|
+
@property
|
|
38
|
+
def FreedomDegrees(self) -> list[str]:
|
|
39
|
+
"""List with the degrees of freedom"""
|
|
40
|
+
return self._N2PKeyword__info.FreedomDegrees
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class N2PKeywordDENSITY(N2PKeyword):
|
|
7
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
8
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
9
|
+
|
|
10
|
+
@property
|
|
11
|
+
def Density(self) -> float:
|
|
12
|
+
"""Mass density [ML^-3]"""
|
|
13
|
+
return self._N2PKeyword__info.Density
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def Temperature(self) -> float:
|
|
17
|
+
"""Temperature (optional)"""
|
|
18
|
+
return self._N2PKeyword__info.Temperature
|
|
19
|
+
|
|
20
|
+
@property
|
|
21
|
+
def FieldVariables(self) -> list[float]:
|
|
22
|
+
"""Field variables (optional)"""
|
|
23
|
+
return list(self._N2PKeyword__info.FieldVariables)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class N2PKeywordDISTRIBUTING(N2PKeyword):
|
|
7
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
8
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
9
|
+
|
|
10
|
+
@property
|
|
11
|
+
def FreedomDegrees(self) -> list:
|
|
12
|
+
"""Degrees of freedom of the constraint.
|
|
13
|
+
|
|
14
|
+
Format: 123456 for degrees 1-6 constrained; 134 for degrees 1, 3 and 4...
|
|
15
|
+
"""
|
|
16
|
+
return list(self._N2PKeyword__info.FreedomDegrees)
|
|
17
|
+
|
|
18
|
+
@property
|
|
19
|
+
def WeightingMethod(self) -> str:
|
|
20
|
+
"""Coupling method used to couple the displacement and rotation of the reference node to the average motion of
|
|
21
|
+
the surface nodes within the influence radius.
|
|
22
|
+
|
|
23
|
+
Default: UNIFORM (1.0)"""
|
|
24
|
+
return self._N2PKeyword__info.WeightingMethod
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class N2PKeywordDISTRIBUTINGCOUPLING(N2PKeyword):
|
|
7
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
8
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
9
|
+
|
|
10
|
+
# The method overrides the parent class method.
|
|
11
|
+
@property
|
|
12
|
+
def WeightingMethod(self) -> str:
|
|
13
|
+
"""Coupling method used to couple the displacement and rotation of the reference node to the average motion of
|
|
14
|
+
the surface nodes within the influence radius.
|
|
15
|
+
|
|
16
|
+
Default: UNIFORM (1.0)"""
|
|
17
|
+
return self._N2PKeyword__info.WeightingMethod
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class N2PKeywordELASTIC(N2PKeyword):
|
|
7
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
8
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
9
|
+
|
|
10
|
+
@property
|
|
11
|
+
def ElasticType(self) -> str:
|
|
12
|
+
"""Material type for elasticity (isotropic, orthotropic...)"""
|
|
13
|
+
return self._N2PKeyword__info.ElasticType
|
|
14
|
+
|
|
15
|
+
@property
|
|
16
|
+
def ElasticComponents(self) -> dict[str, float]:
|
|
17
|
+
"""Components of the tensor"""
|
|
18
|
+
return dict(self._N2PKeyword__info.ElasticComponents)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
4
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeywordELSET import N2PKeywordELSET
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class N2PKeywordELEMENT(N2PKeyword):
|
|
8
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
9
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
10
|
+
|
|
11
|
+
# When an ELEMENT keyword is used, an ELSET with all that elements is generated if a Name is used
|
|
12
|
+
@property
|
|
13
|
+
def ElementList(self) -> list:
|
|
14
|
+
"""List of elements within the keyword"""
|
|
15
|
+
return [self._N2PKeyword__dictEntityToN2P[element] for element in self._N2PKeyword__info.ElementList]
|
|
16
|
+
|
|
17
|
+
@property
|
|
18
|
+
def ElementType(self) -> str:
|
|
19
|
+
"""String with the type of the element"""
|
|
20
|
+
return self._N2PKeyword__info.ElementType
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
4
|
+
from NaxToPy.Core.Classes.ABQEntities.N2PEntityElement import N2PEntityElement
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class N2PKeywordELSET(N2PKeyword):
|
|
8
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
9
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
10
|
+
|
|
11
|
+
@property
|
|
12
|
+
def Name(self) -> str:
|
|
13
|
+
"""Set Name"""
|
|
14
|
+
return self._N2PKeyword__info.ELSET
|
|
15
|
+
|
|
16
|
+
@property
|
|
17
|
+
def Instance(self) -> str:
|
|
18
|
+
"""If the set is defined under an instance, it shows the name of the instance. It is None otherwise."""
|
|
19
|
+
return self._N2PKeyword__info.INSTANCE
|
|
20
|
+
|
|
21
|
+
@property
|
|
22
|
+
def Generate(self) -> bool:
|
|
23
|
+
"""Parameter generate (defines the data structure)"""
|
|
24
|
+
return self._N2PKeyword__info.GENERATE
|
|
25
|
+
|
|
26
|
+
@property
|
|
27
|
+
def ElementList(self) -> list[N2PEntityElement]:
|
|
28
|
+
"""List of elements of the set"""
|
|
29
|
+
return [self._N2PKeyword__dictEntityToN2P.get(element) for element in self._N2PKeyword__info.ElementList]
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class N2PKeywordENDINSTANCE(N2PKeyword):
|
|
7
|
+
"""Keyword tha defines the end of an instance"""
|
|
8
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
9
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class N2PKeywordENDPART(N2PKeyword):
|
|
7
|
+
"""Keyword tha defines the end of a part"""
|
|
8
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
9
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
import numpy as np
|
|
3
|
+
|
|
4
|
+
from NaxToPy.Core._AuxFunc._NetToPython import _nettonumpy
|
|
5
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class N2PKeywordINSTANCE(N2PKeyword):
|
|
9
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
10
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
11
|
+
|
|
12
|
+
@property
|
|
13
|
+
def Name(self) -> str:
|
|
14
|
+
"""Name of the instance"""
|
|
15
|
+
return self._N2PKeyword__info.Name
|
|
16
|
+
|
|
17
|
+
@property
|
|
18
|
+
def TranslationComponents(self) -> np.ndarray:
|
|
19
|
+
"""x, y, z values of the translation of the instance"""
|
|
20
|
+
return _nettonumpy(self._N2PKeyword__info.TranslationComponents)
|
|
21
|
+
|
|
22
|
+
@property
|
|
23
|
+
def RotationComponents(self) -> np.ndarray:
|
|
24
|
+
"""x1, y1, z1 components of the first node that defines the rotation axis;
|
|
25
|
+
x2, y2, z2 components of the second node that defines the rotation axis;
|
|
26
|
+
Angle of rotation"""
|
|
27
|
+
return _nettonumpy(self._N2PKeyword__info.RotationComponents)
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class N2PKeywordKINEMATIC(N2PKeyword):
|
|
7
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
8
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
9
|
+
|
|
10
|
+
@property
|
|
11
|
+
def FreedomDegrees(self) -> list[str, ]:
|
|
12
|
+
"""Degrees of freedom of the constraint.
|
|
13
|
+
|
|
14
|
+
Format: 123456 for degrees 1-6 constrained; 134 for degrees 1, 3 and 4..."""
|
|
15
|
+
return list(self._N2PKeyword__info.FreedomDegrees)
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class N2PKeywordKINEMATICCOUPLING(N2PKeyword):
|
|
7
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
8
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class N2PKeywordMATERIAL(N2PKeyword):
|
|
7
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
8
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
9
|
+
|
|
10
|
+
@property
|
|
11
|
+
def Name(self) -> str:
|
|
12
|
+
"""Material Name"""
|
|
13
|
+
return self._N2PKeyword__info.Name
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from __future__ import annotations # For compatibility with Python 3.9 or higher
|
|
2
|
+
|
|
3
|
+
from NaxToPy.Core.Classes.ABQKeywords.N2PKeyword import N2PKeyword
|
|
4
|
+
from NaxToPy.Core.Classes.ABQEntities.N2PEntityNode import N2PEntityNode
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class N2PKeywordNODE(N2PKeyword):
|
|
8
|
+
def __init__(self, info, dictKeywordToN2P, dictEntityToN2P):
|
|
9
|
+
super().__init__(info, dictKeywordToN2P, dictEntityToN2P)
|
|
10
|
+
|
|
11
|
+
@property
|
|
12
|
+
def NodeList(self) -> list[N2PEntityNode]:
|
|
13
|
+
"""List of nodes within the keyword"""
|
|
14
|
+
return [self._N2PKeyword__dictEntityToN2P[node] for node in self._N2PKeyword__info.NodeList]
|