NaxToPy 1.5.6__tar.gz → 2.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/LICENSE +1 -1
- {NaxToPy-1.5.6/src/NaxToPy.egg-info → naxtopy-2.2.2}/PKG-INFO +92 -18
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/README.md +86 -14
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/pyproject.toml +2 -2
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/setup.py +3 -1
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQEntities/N2PEntity.py +28 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityElement.py +19 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityNode.py +46 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityShell.py +34 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQEntities/__init__.py +4 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeyword.py +43 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordBEAMSECTION.py +30 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordCOUPLING.py +40 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDENSITY.py +23 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTING.py +24 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTINGCOUPLING.py +17 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELASTIC.py +18 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELEMENT.py +20 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELSET.py +29 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDINSTANCE.py +9 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDPART.py +9 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordINSTANCE.py +27 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATIC.py +15 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATICCOUPLING.py +8 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordMATERIAL.py +13 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNODE.py +14 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNSET.py +40 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordORIENTATION.py +45 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPART.py +13 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPLASTIC.py +23 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSHELLSECTION.py +59 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSOLIDSECTION.py +30 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSURFACE.py +24 -0
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/ABQKeywords/__init__.py +23 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Classes/AllClasses.py +5 -2
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/N2PAbaqusInputData.py +173 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Classes/N2PComponent.py +117 -58
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Classes/N2PConnector.py +18 -13
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Classes/N2PCoord.py +11 -2
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Classes/N2PElement.py +43 -19
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Classes/N2PFreeBody.py +18 -7
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Classes/N2PIncrement.py +22 -30
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Classes/N2PLoadCase.py +115 -64
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Classes/N2PMaterial.py +32 -24
- NaxToPy-1.5.6/src/NaxToPy/Core/Classes/N2PModelInputData.py → naxtopy-2.2.2/src/NaxToPy/Core/Classes/N2PNastranInputData.py +277 -27
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Classes/N2PNode.py +42 -22
- naxtopy-2.2.2/src/NaxToPy/Core/Classes/N2PProperty.py +808 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Classes/N2PReport.py +14 -1
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Classes/N2PResult.py +72 -28
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Classes/N2PSection.py +11 -6
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Classes/N2PSet.py +11 -7
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Constants/Constants.py +9 -8
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Errors/N2PLog.py +720 -36
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/N2PModelContent.py +689 -238
- naxtopy-2.2.2/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +225 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/Joints/N2PAttachment.py +113 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/Joints/N2PBolt.py +206 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/Joints/N2PJoint.py +1120 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/Joints/N2PPlate.py +454 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/N2PFastenerAnalysis.py +525 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/N2PGetFasteners.py +337 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/N2PGetLoadFasteners.py +582 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Modules/Fasteners/N2PUpdateFastener.py +38 -13
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetAttachments.py +93 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetResults.py +164 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PInterpolation.py +152 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PLoadModel.py +63 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +182 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/__init__.py +0 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/__init__.py +0 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/__init__.py +0 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Check/Validation.py +74 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/AR1DElement.py +97 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARAttachment.py +736 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARBolt.py +1505 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlate.py +97 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlateElements.py +53 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARAuxiliarFunctions.py +193 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARBilinearInterpolation.py +148 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARConfigurationInput.py +76 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARDerivedLoadCases.py +143 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARFileInputRivetsIDs.py +148 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetAttachments.py +123 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetBolts.py +947 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARReadResultsFromFile.py +31 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARResults.py +206 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARRotation.py +223 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARSerialize.py +86 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/__init__.py +1 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/__init__.py +1 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/__init__.py +0 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/__init__.py +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Modules/N2PEnvelope/N2PEnvelope.py +6 -5
- naxtopy-2.2.2/src/NaxToPy/Modules/N2PEnvelope/__init__.py +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Modules/N2PtoEXE/N2PtoEXE.py +47 -12
- naxtopy-2.2.2/src/NaxToPy/Modules/N2PtoEXE/__init__.py +1 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/__init__.py +2 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/common/__init__.py +2 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/common/material.py +9 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/common/property.py +9 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/handbooks/__init__.py +2 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/handbooks/bruhn/__init__.py +2 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/handbooks/cmh/__init__.py +2 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/handbooks/esdu/__init__.py +2 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/handbooks/hsb/__init__.py +2 -0
- naxtopy-2.2.2/src/NaxToPy/Modules/handbooks/nasa/__init__.py +2 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/user_functions.txt +2 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2/src/NaxToPy.egg-info}/PKG-INFO +92 -18
- naxtopy-2.2.2/src/NaxToPy.egg-info/SOURCES.txt +126 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy.egg-info/requires.txt +1 -1
- NaxToPy-1.5.6/src/NaxToPy/Core/Classes/N2PProperty.py +0 -352
- NaxToPy-1.5.6/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +0 -223
- NaxToPy-1.5.6/src/NaxToPy/Modules/Fasteners/__init__.py +0 -1
- NaxToPy-1.5.6/src/NaxToPy/Modules/__init__.py +0 -2
- NaxToPy-1.5.6/src/NaxToPy.egg-info/SOURCES.txt +0 -50
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/setup.cfg +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Classes/ProgresBar.py +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Classes/__init__.py +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Constants/__init__.py +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Constants/librerias.py +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Errors/N2PColors.py +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Errors/N2PFileHandler.py +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Errors/__init__.py +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/Reference_Finder/__init__.py +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/_AuxFunc/_NetToPython.py +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/_AuxFunc/__init__.py +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/Core/__init__.py +0 -0
- {NaxToPy-1.5.6/src/NaxToPy/Modules/N2PEnvelope → naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/Joints}/__init__.py +0 -0
- {NaxToPy-1.5.6/src/NaxToPy/Modules/N2PtoEXE → naxtopy-2.2.2/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes}/__init__.py +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/NaxToPy.ico +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy/__init__.py +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy.egg-info/dependency_links.txt +0 -0
- {NaxToPy-1.5.6 → naxtopy-2.2.2}/src/NaxToPy.egg-info/top_level.txt +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: NaxToPy
|
|
3
|
-
Version:
|
|
3
|
+
Version: 2.2.2
|
|
4
4
|
Summary: Package for postprocessing FEM results in Python
|
|
5
5
|
Home-page: https://www.idaerosolutions.com/Home/NaxToPy
|
|
6
6
|
Download-URL: https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US
|
|
7
7
|
Author-email: Idaero Solutions <manuel.sanchez@idaerosolutions.com>
|
|
8
|
-
License: Copyright (c)
|
|
8
|
+
License: Copyright (c) 2024 Idaero Solutions
|
|
9
9
|
|
|
10
10
|
This freeware license agreement (“agreement”) is a legally binding contract
|
|
11
11
|
between the individual who downloads the software (“you”) and the licensor,
|
|
@@ -118,9 +118,11 @@ 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
|
+
Dynamic: download-url
|
|
125
|
+
Dynamic: home-page
|
|
124
126
|
|
|
125
127
|
[](https://idaerosolutions.com)
|
|
126
128
|
[](https://pypi.org/project/NaxToPy/)
|
|
@@ -134,27 +136,35 @@ Requires-Dist: setuptools>=67.8.0
|
|
|
134
136
|
# NaxToPy
|
|
135
137
|
|
|
136
138
|
**NaxToPy** is the [**NaxTo**](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US)
|
|
137
|
-
library designed for Python,
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
139
|
+
library designed for Python, allowing users to read and manipulate FEM analysis
|
|
140
|
+
results files from the most common tools: Nastran (op2, xdb, h5), Abaqus (odb), Optistruct (h3d, op2),
|
|
141
|
+
and Ansys (rst). It stores these results in a user-friendly Python structure. Additionally, it can
|
|
142
|
+
read input files from Nastran (bdf/dat), Optistruct (fem) and Abaqus(inp) and modify their contents.
|
|
141
143
|
|
|
142
|
-
It
|
|
143
|
-
to
|
|
144
|
-
|
|
145
|
-
links on the left).
|
|
144
|
+
It can easily be combined with other Python packages, such as Matplotlib or Pandas, providing access
|
|
145
|
+
to Python's full coding power for interpreting and processing results without the need to install
|
|
146
|
+
additional software beyond NaxTo (see the Download and Homepage links on the left).
|
|
146
147
|
|
|
147
148
|
**NaxToPy** is a powerful tool for FEM analysis post-processing!
|
|
148
149
|
|
|
149
|
-
|
|
150
|
+
---------------
|
|
151
|
+
|
|
152
|
+
⚠️**Warning:** To use NaxToPy, [**NaxTo**](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US) must be installed.
|
|
153
|
+
This version is compatible with **NaxTo 2024.3**. It is compatible with all the steps of this version (2024.3.0, 2024.3.1).
|
|
150
154
|
Check in _Programs and Features_ the NaxTo version that is installed.
|
|
151
155
|
|
|
156
|
+
📘**Note:** If a specific NaxTo version is installed, search the [**NaxToPy History**](https://pypi.org/project/NaxToPy/2.2.1/#history) to find which newer version is compatible with it.
|
|
157
|
+
|
|
158
|
+
|
|
152
159
|
## Installation
|
|
153
160
|
|
|
161
|
+
If python is installed and `pip` is added to the PATH:
|
|
154
162
|
|
|
155
|
-
|
|
163
|
+
`pip install NaxToPy`
|
|
156
164
|
|
|
157
|
-
|
|
165
|
+
An alternative, if Python is callable from the command line:
|
|
166
|
+
|
|
167
|
+
`python -m pip install NaxToPy`
|
|
158
168
|
|
|
159
169
|
For **Visual Studio** users:
|
|
160
170
|
- Open "Python Environments" window
|
|
@@ -178,7 +188,7 @@ same directory. When ever you want to use the NaxToPy package add the following
|
|
|
178
188
|
|
|
179
189
|
If python is callable from the command line:
|
|
180
190
|
|
|
181
|
-
`
|
|
191
|
+
`python -m pip install -U NaxToPy`
|
|
182
192
|
|
|
183
193
|
For Visual Studio users:
|
|
184
194
|
- Open "Python Environments" window
|
|
@@ -254,6 +264,68 @@ To see previous version see the pre-release versions in https://test.pypi.org/pr
|
|
|
254
264
|
1. The method new_envelope_loadcase() now has the option to choose the envelope group. Which means the user can ask for
|
|
255
265
|
the LoadCases that are critical or the Increment that is critical instead of the value.
|
|
256
266
|
|
|
267
|
+
### v.2.0.0
|
|
268
|
+
1. Changes made to align the library with updates in lower-level dependencies.
|
|
269
|
+
2. New internal methods to look for the compatibility with low-level dependencies.
|
|
270
|
+
3. The name of the .log is now NaxToPy_Year-Month-Day.log.
|
|
271
|
+
|
|
272
|
+
### v.2.0.1
|
|
273
|
+
1. The compatibility is extended to all NaxTo steps of the same version.
|
|
274
|
+
2. The property N2PLoadCase.ActiveIncrement is subtitued by N2PLoadCase.ActiveN2PIncrement.
|
|
275
|
+
It uses an object instaed of an int.
|
|
276
|
+
3. Update of the examples of some docstrings.
|
|
277
|
+
|
|
278
|
+
### v.2.1.0
|
|
279
|
+
1. Reading a Natran Input File: SPC and SCP1 are now supported.
|
|
280
|
+
2. Bug fix. The order in the components in new_report() does not affect now.
|
|
281
|
+
3. Formula check in new_derived_loadcase(), new_enevelope_loadcase() and new_derived_component().
|
|
282
|
+
4. New optional arguments if n2ptoexe() to add extra libaries, packages or files.
|
|
283
|
+
|
|
284
|
+
### v.2.1.1
|
|
285
|
+
1. Two new methods in N2PModelContent: load_user_coord_sys_from_csv() and set_user_coord_sys().
|
|
286
|
+
Also, there is a new property for N2PElement and N2PNode: UserSystemArray. This update allow the
|
|
287
|
+
user to define a different coordinate system for each element or node. To ask for the results
|
|
288
|
+
in this system, the optional argument `coordsys` must be equal to `-20`.
|
|
289
|
+
2. Bug fix: The checking for component and section in new_report() has been fixed. If a comma
|
|
290
|
+
appeared in the component or section name, the method failed.
|
|
291
|
+
|
|
292
|
+
### v.2.1.2
|
|
293
|
+
1. Internal change for speeding up the read of NastranInputFiles. Now the Nastran Cards are loaded
|
|
294
|
+
when they are asked and not all at once.
|
|
295
|
+
2. Improvement in error handling and log writing.
|
|
296
|
+
3. The function import_results_from_files() checks if the file exist. If not, it prints an error
|
|
297
|
+
but the execution doesn't crash.
|
|
298
|
+
|
|
299
|
+
### v.2.2.0
|
|
300
|
+
1. Feat: New module for fastener analysis: N2PGetFasteners.
|
|
301
|
+
2. Feat: New module for fastener analysis: N2PGetLoadFasteners. Calculates forces in joints and bypass forces.
|
|
302
|
+
3. Bug fix: When a NaxToPy executable file is used on a machine where NaxTo is installed, the libraries are selected accordingly.
|
|
303
|
+
4. Feat: Hidden imports are now allowed in n2ptoexe.
|
|
304
|
+
5. Bug fix: Fixed the rotation of the FORCES tensor. Now the QX and QY components (transverse shears) are calculated correctly.
|
|
305
|
+
6. Refactor: The dictionary and list for Cards have been replaced with a lazy dictionary and a lazy list, improving execution efficiency.
|
|
306
|
+
7. Refactor: Reading the mesh from binary files is now executed in parallel by default, as this approach is more memory-safe.
|
|
307
|
+
|
|
308
|
+
### v.2.2.1
|
|
309
|
+
1. BugFix: The method set_increment() is fixed.
|
|
310
|
+
2. BugFix: Several bugfix (not in the result accuracy) are fixed in modules N2PGetFastener and N2PGetLoadsFastener. Several optimizations are included.
|
|
311
|
+
3. Feat: Now the method get_load_case() admits a list of int and a list of string and return a list of N2PLoadCase.
|
|
312
|
+
4. Refactor: N2P classes use __slots__ for security and optimization.
|
|
313
|
+
5. Refactor: Complete refactor of the module that loads the NaxTo libraries.
|
|
314
|
+
6. BugFix: in parallel mesh load with a small mesh and lot of results.
|
|
315
|
+
7. BugFix: in sequential mesh load in op2.
|
|
316
|
+
|
|
317
|
+
### v.2.2.2
|
|
318
|
+
1. BugFix: Solved an issue in the Nastran Cards Dictionary
|
|
319
|
+
2. BugFix: Solved the Prop atribute of an N2PElement in Abaqus
|
|
320
|
+
3. Feat: Now is possible to create `N2PCoord` by the user with the `new_coordinate_system()` method.
|
|
321
|
+
4. Feat: Now is possible to add to `element_nodal()` a list of N2PElement to unshew only the nodes of these elements.
|
|
322
|
+
5. Feat: Now is possible to ask for results in a list of elements or nodes using the optional argument `filter_list`.
|
|
323
|
+
6. Feat: When the user provides a coordinate system and two vectors (v1, v2) to specify the output results, the information
|
|
324
|
+
is redundant. The coordinate system will prevail.
|
|
325
|
+
7. Feat: New properties supported: PBUSH, PFAST, PMASS, PELAS, PGAP, PWELD
|
|
326
|
+
8. BugFix: The method get_elements_attached() is fixed so when there are MPC connectors with the same ID.
|
|
327
|
+
|
|
328
|
+
|
|
257
329
|
# Documentation
|
|
258
330
|
|
|
259
331
|
**NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
|
|
@@ -272,7 +344,9 @@ NaxToPy only use three dependeces:
|
|
|
272
344
|
- **Ansys:** .rst, .rth(beta)
|
|
273
345
|
|
|
274
346
|
### Input files:
|
|
275
|
-
- **Nastran** (bdf)
|
|
347
|
+
- **Nastran** (.bdf)
|
|
348
|
+
- **Optistruct** (.fem)
|
|
349
|
+
- **Abaqus** (.inp)
|
|
276
350
|
|
|
277
351
|
## Initialize your model
|
|
278
352
|
|
|
@@ -333,7 +407,7 @@ loadcaseslist = model.LoadCases
|
|
|
333
407
|
pressure_lc = model.get_load_case("pressure")
|
|
334
408
|
|
|
335
409
|
# Change the active increment (by default is the last one):
|
|
336
|
-
pressure_lc.
|
|
410
|
+
pressure_lc.ActiveN2PIncrement = pressure_lc.get_increment(10)
|
|
337
411
|
|
|
338
412
|
# Look for all results
|
|
339
413
|
all_results = pressure_lc.Results
|
|
@@ -10,27 +10,35 @@
|
|
|
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
|
+
---------------
|
|
25
|
+
|
|
26
|
+
⚠️**Warning:** To use NaxToPy, [**NaxTo**](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US) must be installed.
|
|
27
|
+
This version is compatible with **NaxTo 2024.3**. It is compatible with all the steps of this version (2024.3.0, 2024.3.1).
|
|
26
28
|
Check in _Programs and Features_ the NaxTo version that is installed.
|
|
27
29
|
|
|
30
|
+
📘**Note:** If a specific NaxTo version is installed, search the [**NaxToPy History**](https://pypi.org/project/NaxToPy/2.2.1/#history) to find which newer version is compatible with it.
|
|
31
|
+
|
|
32
|
+
|
|
28
33
|
## Installation
|
|
29
34
|
|
|
35
|
+
If python is installed and `pip` is added to the PATH:
|
|
30
36
|
|
|
31
|
-
|
|
37
|
+
`pip install NaxToPy`
|
|
32
38
|
|
|
33
|
-
|
|
39
|
+
An alternative, if Python is callable from the command line:
|
|
40
|
+
|
|
41
|
+
`python -m pip install NaxToPy`
|
|
34
42
|
|
|
35
43
|
For **Visual Studio** users:
|
|
36
44
|
- Open "Python Environments" window
|
|
@@ -54,7 +62,7 @@ same directory. When ever you want to use the NaxToPy package add the following
|
|
|
54
62
|
|
|
55
63
|
If python is callable from the command line:
|
|
56
64
|
|
|
57
|
-
`
|
|
65
|
+
`python -m pip install -U NaxToPy`
|
|
58
66
|
|
|
59
67
|
For Visual Studio users:
|
|
60
68
|
- Open "Python Environments" window
|
|
@@ -130,6 +138,68 @@ To see previous version see the pre-release versions in https://test.pypi.org/pr
|
|
|
130
138
|
1. The method new_envelope_loadcase() now has the option to choose the envelope group. Which means the user can ask for
|
|
131
139
|
the LoadCases that are critical or the Increment that is critical instead of the value.
|
|
132
140
|
|
|
141
|
+
### v.2.0.0
|
|
142
|
+
1. Changes made to align the library with updates in lower-level dependencies.
|
|
143
|
+
2. New internal methods to look for the compatibility with low-level dependencies.
|
|
144
|
+
3. The name of the .log is now NaxToPy_Year-Month-Day.log.
|
|
145
|
+
|
|
146
|
+
### v.2.0.1
|
|
147
|
+
1. The compatibility is extended to all NaxTo steps of the same version.
|
|
148
|
+
2. The property N2PLoadCase.ActiveIncrement is subtitued by N2PLoadCase.ActiveN2PIncrement.
|
|
149
|
+
It uses an object instaed of an int.
|
|
150
|
+
3. Update of the examples of some docstrings.
|
|
151
|
+
|
|
152
|
+
### v.2.1.0
|
|
153
|
+
1. Reading a Natran Input File: SPC and SCP1 are now supported.
|
|
154
|
+
2. Bug fix. The order in the components in new_report() does not affect now.
|
|
155
|
+
3. Formula check in new_derived_loadcase(), new_enevelope_loadcase() and new_derived_component().
|
|
156
|
+
4. New optional arguments if n2ptoexe() to add extra libaries, packages or files.
|
|
157
|
+
|
|
158
|
+
### v.2.1.1
|
|
159
|
+
1. Two new methods in N2PModelContent: load_user_coord_sys_from_csv() and set_user_coord_sys().
|
|
160
|
+
Also, there is a new property for N2PElement and N2PNode: UserSystemArray. This update allow the
|
|
161
|
+
user to define a different coordinate system for each element or node. To ask for the results
|
|
162
|
+
in this system, the optional argument `coordsys` must be equal to `-20`.
|
|
163
|
+
2. Bug fix: The checking for component and section in new_report() has been fixed. If a comma
|
|
164
|
+
appeared in the component or section name, the method failed.
|
|
165
|
+
|
|
166
|
+
### v.2.1.2
|
|
167
|
+
1. Internal change for speeding up the read of NastranInputFiles. Now the Nastran Cards are loaded
|
|
168
|
+
when they are asked and not all at once.
|
|
169
|
+
2. Improvement in error handling and log writing.
|
|
170
|
+
3. The function import_results_from_files() checks if the file exist. If not, it prints an error
|
|
171
|
+
but the execution doesn't crash.
|
|
172
|
+
|
|
173
|
+
### v.2.2.0
|
|
174
|
+
1. Feat: New module for fastener analysis: N2PGetFasteners.
|
|
175
|
+
2. Feat: New module for fastener analysis: N2PGetLoadFasteners. Calculates forces in joints and bypass forces.
|
|
176
|
+
3. Bug fix: When a NaxToPy executable file is used on a machine where NaxTo is installed, the libraries are selected accordingly.
|
|
177
|
+
4. Feat: Hidden imports are now allowed in n2ptoexe.
|
|
178
|
+
5. Bug fix: Fixed the rotation of the FORCES tensor. Now the QX and QY components (transverse shears) are calculated correctly.
|
|
179
|
+
6. Refactor: The dictionary and list for Cards have been replaced with a lazy dictionary and a lazy list, improving execution efficiency.
|
|
180
|
+
7. Refactor: Reading the mesh from binary files is now executed in parallel by default, as this approach is more memory-safe.
|
|
181
|
+
|
|
182
|
+
### v.2.2.1
|
|
183
|
+
1. BugFix: The method set_increment() is fixed.
|
|
184
|
+
2. BugFix: Several bugfix (not in the result accuracy) are fixed in modules N2PGetFastener and N2PGetLoadsFastener. Several optimizations are included.
|
|
185
|
+
3. Feat: Now the method get_load_case() admits a list of int and a list of string and return a list of N2PLoadCase.
|
|
186
|
+
4. Refactor: N2P classes use __slots__ for security and optimization.
|
|
187
|
+
5. Refactor: Complete refactor of the module that loads the NaxTo libraries.
|
|
188
|
+
6. BugFix: in parallel mesh load with a small mesh and lot of results.
|
|
189
|
+
7. BugFix: in sequential mesh load in op2.
|
|
190
|
+
|
|
191
|
+
### v.2.2.2
|
|
192
|
+
1. BugFix: Solved an issue in the Nastran Cards Dictionary
|
|
193
|
+
2. BugFix: Solved the Prop atribute of an N2PElement in Abaqus
|
|
194
|
+
3. Feat: Now is possible to create `N2PCoord` by the user with the `new_coordinate_system()` method.
|
|
195
|
+
4. Feat: Now is possible to add to `element_nodal()` a list of N2PElement to unshew only the nodes of these elements.
|
|
196
|
+
5. Feat: Now is possible to ask for results in a list of elements or nodes using the optional argument `filter_list`.
|
|
197
|
+
6. Feat: When the user provides a coordinate system and two vectors (v1, v2) to specify the output results, the information
|
|
198
|
+
is redundant. The coordinate system will prevail.
|
|
199
|
+
7. Feat: New properties supported: PBUSH, PFAST, PMASS, PELAS, PGAP, PWELD
|
|
200
|
+
8. BugFix: The method get_elements_attached() is fixed so when there are MPC connectors with the same ID.
|
|
201
|
+
|
|
202
|
+
|
|
133
203
|
# Documentation
|
|
134
204
|
|
|
135
205
|
**NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
|
|
@@ -148,7 +218,9 @@ NaxToPy only use three dependeces:
|
|
|
148
218
|
- **Ansys:** .rst, .rth(beta)
|
|
149
219
|
|
|
150
220
|
### Input files:
|
|
151
|
-
- **Nastran** (bdf)
|
|
221
|
+
- **Nastran** (.bdf)
|
|
222
|
+
- **Optistruct** (.fem)
|
|
223
|
+
- **Abaqus** (.inp)
|
|
152
224
|
|
|
153
225
|
## Initialize your model
|
|
154
226
|
|
|
@@ -209,7 +281,7 @@ loadcaseslist = model.LoadCases
|
|
|
209
281
|
pressure_lc = model.get_load_case("pressure")
|
|
210
282
|
|
|
211
283
|
# Change the active increment (by default is the last one):
|
|
212
|
-
pressure_lc.
|
|
284
|
+
pressure_lc.ActiveN2PIncrement = pressure_lc.get_increment(10)
|
|
213
285
|
|
|
214
286
|
# Look for all results
|
|
215
287
|
all_results = pressure_lc.Results
|
|
@@ -4,11 +4,11 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "NaxToPy"
|
|
7
|
-
version = "
|
|
7
|
+
version = "2.2.2"
|
|
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
|
]
|
|
@@ -7,7 +7,9 @@ setup(
|
|
|
7
7
|
packages = find_packages(where="src"),
|
|
8
8
|
package_dir = {"": "src"},
|
|
9
9
|
include_package_data=True,
|
|
10
|
-
|
|
10
|
+
package_data={
|
|
11
|
+
"NaxToPy": ["NaxToPy.ico", "user_functions.txt"]
|
|
12
|
+
},
|
|
11
13
|
url="https://www.idaerosolutions.com/Home/NaxToPy",
|
|
12
14
|
download_url="https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US"
|
|
13
15
|
)
|
|
@@ -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
|