NaxToPy 2.2.3__tar.gz → 3.0.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.2.3/src/NaxToPy.egg-info → naxtopy-3.0.0}/PKG-INFO +20 -7
- {naxtopy-2.2.3 → naxtopy-3.0.0}/README.md +19 -6
- {naxtopy-2.2.3 → naxtopy-3.0.0}/pyproject.toml +1 -1
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PComponent.py +127 -42
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PElement.py +5 -2
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PFreeBody.py +3 -2
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PLoadCase.py +14 -13
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PNastranInputData.py +200 -26
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PProperty.py +185 -26
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PResult.py +1 -10
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Constants/Constants.py +9 -6
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Errors/N2PLog.py +267 -91
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/N2PModelContent.py +452 -95
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Reference_Finder/__Reference_Finder.py +12 -2
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/Joints/N2PAttachment.py +6 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/Joints/N2PBolt.py +14 -0
- naxtopy-3.0.0/src/NaxToPy/Modules/Fasteners/Joints/N2PFastenerSystem.py +357 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/Joints/N2PJoint.py +55 -1
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/Joints/N2PPlate.py +38 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/N2PGetFasteners.py +26 -1
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/N2PGetLoadFasteners.py +69 -31
- {naxtopy-2.2.3 → naxtopy-3.0.0/src/NaxToPy.egg-info}/PKG-INFO +20 -7
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy.egg-info/SOURCES.txt +2 -16
- naxtopy-2.2.3/src/NaxToPy/Modules/N2PNeuber/N2PNeuber.py +0 -595
- naxtopy-2.2.3/src/NaxToPy/Modules/N2PNeuber/__init__.py +0 -0
- naxtopy-2.2.3/src/NaxToPy/Modules/common/__init__.py +0 -2
- naxtopy-2.2.3/src/NaxToPy/Modules/common/aux_funcitons.py +0 -31
- naxtopy-2.2.3/src/NaxToPy/Modules/common/aux_functions.py +0 -155
- naxtopy-2.2.3/src/NaxToPy/Modules/common/data_input_hdf5.py +0 -298
- naxtopy-2.2.3/src/NaxToPy/Modules/common/hdf5.py +0 -259
- naxtopy-2.2.3/src/NaxToPy/Modules/common/material.py +0 -1029
- naxtopy-2.2.3/src/NaxToPy/Modules/common/property.py +0 -9
- naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/__init__.py +0 -2
- naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/bruhn/__init__.py +0 -2
- naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/cmh/__init__.py +0 -2
- naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/esdu/__init__.py +0 -2
- naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/hsb/__init__.py +0 -2
- naxtopy-2.2.3/src/NaxToPy/Modules/handbooks/nasa/__init__.py +0 -2
- {naxtopy-2.2.3 → naxtopy-3.0.0}/LICENSE +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/setup.cfg +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/setup.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntity.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityElement.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityNode.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQEntities/N2PEntityShell.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQEntities/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeyword.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordBEAMSECTION.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordCOUPLING.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDENSITY.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTING.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordDISTRIBUTINGCOUPLING.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELASTIC.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELEMENT.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordELSET.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDINSTANCE.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordENDPART.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordINSTANCE.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATIC.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordKINEMATICCOUPLING.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordMATERIAL.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNODE.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordNSET.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordORIENTATION.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPART.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordPLASTIC.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSHELLSECTION.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSOLIDSECTION.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/N2PKeywordSURFACE.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ABQKeywords/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/AllClasses.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PAbaqusInputData.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PConnector.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PCoord.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PIncrement.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PMaterial.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PNode.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PReport.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PSection.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/N2PSet.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/ProgresBar.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Classes/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Constants/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Constants/librerias.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Errors/N2PColors.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Errors/N2PFileHandler.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Errors/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/Reference_Finder/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/_AuxFunc/_NetToPython.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/_AuxFunc/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Core/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/Joints/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/N2PFastenerAnalysis.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/N2PUpdateFastener.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetAttachments.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PGetResults.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PInterpolation.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PLoadModel.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/N2PRotation.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/Functions/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/Core/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysis/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Check/Validation.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/AR1DElement.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARAttachment.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARBolt.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlate.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/ARPlateElements.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Classes/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARAuxiliarFunctions.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARBilinearInterpolation.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARConfigurationInput.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARDerivedLoadCases.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARFileInputRivetsIDs.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetAttachments.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARGetBolts.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARReadResultsFromFile.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARResults.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARRotation.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/ARSerialize.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/Functions/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/Core/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/_N2PFastenerAnalysisDeprecated/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/Fasteners/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/N2PEnvelope/N2PEnvelope.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/N2PEnvelope/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/N2PtoEXE/N2PtoEXE.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/N2PtoEXE/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/Modules/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/NaxToPy.ico +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/__init__.py +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy/user_functions.txt +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy.egg-info/dependency_links.txt +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/src/NaxToPy.egg-info/requires.txt +0 -0
- {naxtopy-2.2.3 → naxtopy-3.0.0}/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:
|
|
3
|
+
Version: 3.0.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
|
|
@@ -127,7 +127,7 @@ Dynamic: home-page
|
|
|
127
127
|
|
|
128
128
|
[](https://idaerosolutions.com)
|
|
129
129
|
[](https://pypi.org/project/NaxToPy/)
|
|
130
|
-
[](https://www.python.org/downloads/)
|
|
130
|
+
[](https://www.python.org/downloads/)
|
|
131
131
|

|
|
132
132
|
[](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US)
|
|
133
133
|
[](https://pypi.org/project/NaxToPy/#files)
|
|
@@ -151,10 +151,10 @@ additional software beyond NaxTo (see the Download and Homepage links on the lef
|
|
|
151
151
|
---------------
|
|
152
152
|
|
|
153
153
|
⚠️**Warning:** To use NaxToPy, [**NaxTo**](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US) must be installed.
|
|
154
|
-
This version is compatible with **NaxTo
|
|
154
|
+
This version is compatible with **NaxTo 2025.0**.
|
|
155
155
|
Check in _Programs and Features_ the NaxTo version that is installed.
|
|
156
156
|
|
|
157
|
-
📘**Note:** If a specific NaxTo version is installed, search the [**NaxToPy History**](https://pypi.org/project/NaxToPy/
|
|
157
|
+
📘**Note:** If a specific NaxTo version is installed, search the [**NaxToPy History**](https://pypi.org/project/NaxToPy/3.0.0/#history) to find which newer version is compatible with it.
|
|
158
158
|
|
|
159
159
|
|
|
160
160
|
## Installation
|
|
@@ -327,12 +327,22 @@ is redundant. The coordinate system will prevail.
|
|
|
327
327
|
8. BugFix: The method get_elements_attached() is fixed so when there are MPC connectors with the same ID.
|
|
328
328
|
|
|
329
329
|
### v.2.2.3
|
|
330
|
-
1. Requirement: Now NaxToPy require the package [**h5py**
|
|
330
|
+
1. Requirement: Now NaxToPy require the package [**h5py**](https://pypi.org/project/h5py/).
|
|
331
331
|
2. Feat: N2PGetLoadFastener now can use PAG method and display format.
|
|
332
332
|
3. BugFix: Some bugs are solved in N2PGetFastener and N2PGetLoadFastener.
|
|
333
333
|
4. Feat: N2PGetLoadFastener can export results in HDF5 format.
|
|
334
334
|
5. BugFix: The filtering in the method get_result_by_LCs_Incr() in elements when results are in Corner Data is fixed.
|
|
335
335
|
|
|
336
|
+
### v.3.0.0
|
|
337
|
+
1. Feat: Now it is supported more properties from Nastran: PBAR, PBARL, PBEAM, PBEAML, PBUSH, PWELD, PELAS, PFAST, PMASS, PGAP. They are kept as N2PBeam, N2PBeamL, N2PBush, N2PWeld, N2PElas, N2PFast, N2PMass, N2PGap.
|
|
338
|
+
2. Feat: Now it is supported more properties from Abaqus: *BEAM SECTION and *BEAM GENERAL SECTION as N2PBeamL and N2PBeam.
|
|
339
|
+
3. Feat: Overloaded `get_result_by_LCs_Incr()` to accept a list of components. It load multiple components and load cases of the same result in parallel, improving efficiency.
|
|
340
|
+
4. Feat: New property N2PComp.EqQBenMatrix that returns the equivalent stifness matrix for bending.
|
|
341
|
+
5. Feat: Added `N2PComp.EqMemProps` and `N2PComp.EqBenProps` properties to return equivalent engineering values (Ex, Ey, G, and ν) for membrane and bending behavior, respectively.
|
|
342
|
+
6. Feat: Added two new methods in `N2PModelContent`: `get_material()` and `get_property()` to search easelly for materials and properties.
|
|
343
|
+
7. Feat: new method in `N2PModelContent`: `get_elements_filtered()`. It returns a list of `N2PElement` that matches a material, property, part or type-element.
|
|
344
|
+
8. Feat: New checks in the results methods to avoid invalid parameters.
|
|
345
|
+
|
|
336
346
|
# Documentation
|
|
337
347
|
|
|
338
348
|
**NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
|
|
@@ -550,7 +560,10 @@ For more documentation visit https://idaerosolutions.com/Home/NaxToPy
|
|
|
550
560
|
|
|
551
561
|
Reference Guide at: https://www.idaerosolutions.com/NaxToPyDoc/NaxToPy.html
|
|
552
562
|
|
|
553
|
-
|
|
554
563
|
# License
|
|
555
564
|
|
|
556
|
-
|
|
565
|
+
See the license in Python\Lib\site-packages\NaxToPy-{version}.dist-info\LICENSE or executing the command `python -m pip show NaxToPy`
|
|
566
|
+
|
|
567
|
+
-------------
|
|
568
|
+
|
|
569
|
+
<p align="center"> <img src="https://www.idaerosolutions.com/images/web/Idaero.png" alt="Idaero Icon" width=200></p><div align="center">© 2025 Idaero Solutions S.L. All rights reserved.</div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[](https://idaerosolutions.com)
|
|
2
2
|
[](https://pypi.org/project/NaxToPy/)
|
|
3
|
-
[](https://www.python.org/downloads/)
|
|
3
|
+
[](https://www.python.org/downloads/)
|
|
4
4
|

|
|
5
5
|
[](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US)
|
|
6
6
|
[](https://pypi.org/project/NaxToPy/#files)
|
|
@@ -24,10 +24,10 @@ additional software beyond NaxTo (see the Download and Homepage links on the lef
|
|
|
24
24
|
---------------
|
|
25
25
|
|
|
26
26
|
⚠️**Warning:** To use NaxToPy, [**NaxTo**](https://apps.microsoft.com/detail/XP9MMH0KDKGRJN?hl=en-US&gl=US) must be installed.
|
|
27
|
-
This version is compatible with **NaxTo
|
|
27
|
+
This version is compatible with **NaxTo 2025.0**.
|
|
28
28
|
Check in _Programs and Features_ the NaxTo version that is installed.
|
|
29
29
|
|
|
30
|
-
📘**Note:** If a specific NaxTo version is installed, search the [**NaxToPy History**](https://pypi.org/project/NaxToPy/
|
|
30
|
+
📘**Note:** If a specific NaxTo version is installed, search the [**NaxToPy History**](https://pypi.org/project/NaxToPy/3.0.0/#history) to find which newer version is compatible with it.
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
## Installation
|
|
@@ -200,12 +200,22 @@ is redundant. The coordinate system will prevail.
|
|
|
200
200
|
8. BugFix: The method get_elements_attached() is fixed so when there are MPC connectors with the same ID.
|
|
201
201
|
|
|
202
202
|
### v.2.2.3
|
|
203
|
-
1. Requirement: Now NaxToPy require the package [**h5py**
|
|
203
|
+
1. Requirement: Now NaxToPy require the package [**h5py**](https://pypi.org/project/h5py/).
|
|
204
204
|
2. Feat: N2PGetLoadFastener now can use PAG method and display format.
|
|
205
205
|
3. BugFix: Some bugs are solved in N2PGetFastener and N2PGetLoadFastener.
|
|
206
206
|
4. Feat: N2PGetLoadFastener can export results in HDF5 format.
|
|
207
207
|
5. BugFix: The filtering in the method get_result_by_LCs_Incr() in elements when results are in Corner Data is fixed.
|
|
208
208
|
|
|
209
|
+
### v.3.0.0
|
|
210
|
+
1. Feat: Now it is supported more properties from Nastran: PBAR, PBARL, PBEAM, PBEAML, PBUSH, PWELD, PELAS, PFAST, PMASS, PGAP. They are kept as N2PBeam, N2PBeamL, N2PBush, N2PWeld, N2PElas, N2PFast, N2PMass, N2PGap.
|
|
211
|
+
2. Feat: Now it is supported more properties from Abaqus: *BEAM SECTION and *BEAM GENERAL SECTION as N2PBeamL and N2PBeam.
|
|
212
|
+
3. Feat: Overloaded `get_result_by_LCs_Incr()` to accept a list of components. It load multiple components and load cases of the same result in parallel, improving efficiency.
|
|
213
|
+
4. Feat: New property N2PComp.EqQBenMatrix that returns the equivalent stifness matrix for bending.
|
|
214
|
+
5. Feat: Added `N2PComp.EqMemProps` and `N2PComp.EqBenProps` properties to return equivalent engineering values (Ex, Ey, G, and ν) for membrane and bending behavior, respectively.
|
|
215
|
+
6. Feat: Added two new methods in `N2PModelContent`: `get_material()` and `get_property()` to search easelly for materials and properties.
|
|
216
|
+
7. Feat: new method in `N2PModelContent`: `get_elements_filtered()`. It returns a list of `N2PElement` that matches a material, property, part or type-element.
|
|
217
|
+
8. Feat: New checks in the results methods to avoid invalid parameters.
|
|
218
|
+
|
|
209
219
|
# Documentation
|
|
210
220
|
|
|
211
221
|
**NaxToPy** is a package developed by Idaero Solutions© as a part of the **NaxTo** software.
|
|
@@ -423,7 +433,10 @@ For more documentation visit https://idaerosolutions.com/Home/NaxToPy
|
|
|
423
433
|
|
|
424
434
|
Reference Guide at: https://www.idaerosolutions.com/NaxToPyDoc/NaxToPy.html
|
|
425
435
|
|
|
426
|
-
|
|
427
436
|
# License
|
|
428
437
|
|
|
429
|
-
|
|
438
|
+
See the license in Python\Lib\site-packages\NaxToPy-{version}.dist-info\LICENSE or executing the command `python -m pip show NaxToPy`
|
|
439
|
+
|
|
440
|
+
-------------
|
|
441
|
+
|
|
442
|
+
<p align="center"> <img src="https://www.idaerosolutions.com/images/web/Idaero.png" alt="Idaero Icon" width=200></p><div align="center">© 2025 Idaero Solutions S.L. All rights reserved.</div>
|
|
@@ -4,6 +4,7 @@ import gc
|
|
|
4
4
|
from array import array
|
|
5
5
|
import numpy as np
|
|
6
6
|
from typing import Union
|
|
7
|
+
import ctypes
|
|
7
8
|
|
|
8
9
|
from NaxToModel import N2ParamInputResults
|
|
9
10
|
from NaxToModel import N2TensorTransformation
|
|
@@ -162,7 +163,7 @@ class N2PComponent:
|
|
|
162
163
|
#resultsParameters.coordSys = -10
|
|
163
164
|
#orientationcoordinatesystem = algo
|
|
164
165
|
|
|
165
|
-
resultsParameters = self._create_n2paraminputresult(sections, aveSections, cornerData, aveNodes, variation,
|
|
166
|
+
resultsParameters = self._create_n2paraminputresult(None, sections, aveSections, cornerData, aveNodes, variation,
|
|
166
167
|
realPolar, coordsys, v1, v2)
|
|
167
168
|
results = list(
|
|
168
169
|
self._result_father._loadCase_father._modelFather._N2PModelContent__vzmodel.CalculateArrayLastResult(
|
|
@@ -254,7 +255,7 @@ class N2PComponent:
|
|
|
254
255
|
>>> # N2PComponent is a N2PLoadCase.get_results("STRESSES").get_component("XX")
|
|
255
256
|
>>> stress_array, where = N2PComponent.get_result_ndarray(v1=(-1, 0, 0), v2=(0, -1, 0))
|
|
256
257
|
"""
|
|
257
|
-
resultsParameters = self._create_n2paraminputresult(sections, aveSections, cornerData, aveNodes, variation,
|
|
258
|
+
resultsParameters = self._create_n2paraminputresult(None, sections, aveSections, cornerData, aveNodes, variation,
|
|
258
259
|
realPolar, coordsys, v1, v2)
|
|
259
260
|
|
|
260
261
|
results = \
|
|
@@ -399,39 +400,83 @@ class N2PComponent:
|
|
|
399
400
|
# # ------------------------------------------------------------------------------------------------------------------
|
|
400
401
|
|
|
401
402
|
# Método que devuelve un diccionario con la tupla (LC, Incr) como clave y una lista de resultados como valor -------
|
|
402
|
-
def _get_result_by_LCs_Incr(self, list_lc_incr: list[tuple["N2PLoadCase", "N2PIncrement"],...],
|
|
403
|
+
def _get_result_by_LCs_Incr(self, list_lc_incr: list[tuple["N2PLoadCase", "N2PIncrement"],...], components = None,
|
|
403
404
|
sections=None, aveSections=-1, cornerData=False, aveNodes=-1, variation=100,
|
|
404
405
|
realPolar=0, coordsys: int = -1000,
|
|
405
406
|
v1: tuple = (1,0,0), v2: tuple = (0,1,0),
|
|
406
|
-
filter_list: list = None) -> dict[tuple: list[float
|
|
407
|
+
filter_list: list = None) -> dict[tuple: list[float]]:
|
|
407
408
|
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
resultsParameters = self._create_n2paraminputresult(sections, aveSections, cornerData, aveNodes, variation,
|
|
414
|
-
realPolar, coordsys, v1, v2)
|
|
415
|
-
|
|
416
|
-
cs_dict = self._result_father._loadCase_father._modelFather._N2PModelContent__vzmodel.CalculateArrayLastResult(
|
|
417
|
-
formula, resultsParameters, 0)
|
|
409
|
+
py_dict = {} # Dictionary that is going to be returned.
|
|
410
|
+
first_shoot = True
|
|
411
|
+
i = 0
|
|
412
|
+
n_opt = 0
|
|
413
|
+
n_lcs = len(list_lc_incr)
|
|
418
414
|
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
415
|
+
# A first shoot with a block of 5 load cases is made. The memory used in the process wil be measured
|
|
416
|
+
# using the function _get_memory_usage(). Acording to de memory used, the optimum number of load cases
|
|
417
|
+
# per block will be claculated and the remain load cases will be launched in blocks.
|
|
418
|
+
while i < n_lcs:
|
|
419
|
+
|
|
420
|
+
if first_shoot:
|
|
421
|
+
formula = self._create_formula(list_lc_incr[0:5])
|
|
424
422
|
else:
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
423
|
+
formula = self._create_formula(list_lc_incr[i : i + n_opt])
|
|
424
|
+
|
|
425
|
+
if not formula:
|
|
426
|
+
return None
|
|
427
|
+
|
|
428
|
+
if components is None: components = [None]
|
|
429
|
+
for component in components:
|
|
430
|
+
resultsParameters = self._create_n2paraminputresult(component, sections, aveSections, cornerData, aveNodes, variation,
|
|
431
|
+
realPolar, coordsys, v1, v2)
|
|
432
|
+
|
|
433
|
+
if first_shoot:
|
|
434
|
+
_, available_memory, initial_memory = _get_memory_usage()
|
|
435
|
+
|
|
436
|
+
cs_dict = self._result_father._loadCase_father._modelFather._N2PModelContent__vzmodel.CalculateArrayLastResult(
|
|
437
|
+
formula, resultsParameters, 0)
|
|
438
|
+
|
|
439
|
+
if filter_list and not cornerData:
|
|
440
|
+
ii_map = [item.InternalID for item in filter_list]
|
|
441
|
+
elif filter_list and cornerData:
|
|
442
|
+
if isinstance(filter_list[0], N2PElement):
|
|
443
|
+
ii_map = list(self._result_father._loadCase_father._modelFather.elementnodal(filter_list).keys())
|
|
444
|
+
else:
|
|
445
|
+
N2PLog.Error.E234()
|
|
446
|
+
else:
|
|
447
|
+
ii_map = None
|
|
448
|
+
|
|
449
|
+
if not components[0]:
|
|
450
|
+
py_dict_aux = {
|
|
451
|
+
(int(key.split(":")[0].replace("DoF_LCD", "-").replace("DoF_LC", "")), int(key.split(":")[1][2:])) :
|
|
452
|
+
self._filter_array(np.array(value, np.float64), filter_list, None, ii_map, cornerData)
|
|
453
|
+
for key, value in dict(cs_dict[0]).items()
|
|
454
|
+
}
|
|
455
|
+
else:
|
|
456
|
+
py_dict_aux = {
|
|
457
|
+
(int(key.split(":")[0].replace("DoF_LCD", "-").replace("DoF_LC", "")), int(key.split(":")[1][2:]), component) :
|
|
458
|
+
self._filter_array(np.array(value, np.float64), filter_list, None, ii_map, cornerData)
|
|
459
|
+
for key, value in dict(cs_dict[0]).items()
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
del cs_dict
|
|
463
|
+
self._result_father._loadCase_father._modelFather.clear_results_memory()
|
|
464
|
+
py_dict.update(py_dict_aux)
|
|
465
|
+
|
|
466
|
+
# Clear memomry
|
|
467
|
+
py_dict_aux.clear()
|
|
468
|
+
gc.collect()
|
|
469
|
+
|
|
470
|
+
if first_shoot:
|
|
471
|
+
_, _, final_memory = _get_memory_usage()
|
|
472
|
+
used_memory = final_memory - initial_memory
|
|
473
|
+
# Minimum number is fixed to 100
|
|
474
|
+
used_memory = used_memory if used_memory > 100 else 100
|
|
475
|
+
n_opt = int(available_memory*0.9/used_memory*5)
|
|
476
|
+
i = 5
|
|
477
|
+
first_shoot = False
|
|
478
|
+
else:
|
|
479
|
+
i += n_opt
|
|
435
480
|
|
|
436
481
|
return py_dict
|
|
437
482
|
# ------------------------------------------------------------------------------------------------------------------
|
|
@@ -457,7 +502,7 @@ class N2PComponent:
|
|
|
457
502
|
# ------------------------------------------------------------------------------------------------------------------
|
|
458
503
|
|
|
459
504
|
# Metodo que crea el N2ParamInputResult ----------------------------------------------------------------------------
|
|
460
|
-
def _create_n2paraminputresult(self, sections, aveSections, cornerData, aveNodes, variation,
|
|
505
|
+
def _create_n2paraminputresult(self, component, sections, aveSections, cornerData, aveNodes, variation,
|
|
461
506
|
realPolar, coordsys, v1, v2) -> N2ParamInputResults:
|
|
462
507
|
|
|
463
508
|
# Aqui comprobamos que si queremos hacer una transformacion y si esta es posible:
|
|
@@ -483,19 +528,22 @@ class N2PComponent:
|
|
|
483
528
|
|
|
484
529
|
else:
|
|
485
530
|
# If coordsys doesn't match any known case, log an error and return failure
|
|
486
|
-
N2PLog.Error.E220()
|
|
487
|
-
|
|
531
|
+
msg = N2PLog.Error.E220()
|
|
532
|
+
raise Exception(msg)
|
|
488
533
|
|
|
489
534
|
elif not self.IsTransformable and (coordsys != -1000 or (v1 != (1, 0, 0) or v2 != (0, 1, 0))):
|
|
490
|
-
N2PLog.Error.E219()
|
|
491
|
-
|
|
535
|
+
msg = N2PLog.Error.E219()
|
|
536
|
+
raise Exception(msg)
|
|
492
537
|
|
|
493
538
|
else:
|
|
494
539
|
# Initializer if it is no transformable
|
|
495
540
|
resultsParameters = N2ParamInputResults.structResults(0)
|
|
496
541
|
|
|
497
542
|
# Component Selected
|
|
498
|
-
|
|
543
|
+
if component:
|
|
544
|
+
resultsParameters.Component = component
|
|
545
|
+
else:
|
|
546
|
+
resultsParameters.Component = str(self.Name)
|
|
499
547
|
|
|
500
548
|
# Entity Selection (So Far 'ALL')
|
|
501
549
|
resultsParameters.IdsEntities = ''
|
|
@@ -523,15 +571,25 @@ class N2PComponent:
|
|
|
523
571
|
sectionParam += str(section.Name) + '#'
|
|
524
572
|
else:
|
|
525
573
|
if not isinstance(sections, list):
|
|
526
|
-
N2PLog.Error.E218()
|
|
574
|
+
msg = N2PLog.Error.E218()
|
|
575
|
+
raise TypeError(msg)
|
|
576
|
+
actual_sections = {s.Name for s in self.Sections}
|
|
527
577
|
for section in sections:
|
|
528
578
|
if type(section) is N2PSection:
|
|
529
579
|
sectionParam += str(section.Name) + '#'
|
|
530
580
|
else:
|
|
531
|
-
|
|
581
|
+
if section in actual_sections:
|
|
582
|
+
sectionParam += str(section) + '#'
|
|
583
|
+
else:
|
|
584
|
+
msg = N2PLog.Error.E238(section, actual_sections)
|
|
585
|
+
raise Exception(msg)
|
|
532
586
|
|
|
533
587
|
resultsParameters.sectPoint = sectionParam
|
|
534
588
|
|
|
589
|
+
avasectionsupported = (-1, -2, -3, -4, -6)
|
|
590
|
+
if aveSections not in avasectionsupported:
|
|
591
|
+
msg = N2PLog.Error.E237(aveSections, avasectionsupported)
|
|
592
|
+
raise Exception(msg)
|
|
535
593
|
resultsParameters.aveSection = aveSections
|
|
536
594
|
|
|
537
595
|
# CornerData Selection, Average & Variation
|
|
@@ -539,8 +597,8 @@ class N2PComponent:
|
|
|
539
597
|
|
|
540
598
|
_aveIntraSupported = (0, -1, -2, -3, -6)
|
|
541
599
|
if (aveNodes not in _aveIntraSupported):
|
|
542
|
-
N2PLog.Error.E236(aveNodes, _aveIntraSupported)
|
|
543
|
-
|
|
600
|
+
msg = N2PLog.Error.E236(aveNodes, _aveIntraSupported)
|
|
601
|
+
raise Exception(msg)
|
|
544
602
|
else:
|
|
545
603
|
resultsParameters.aveIntra = aveNodes
|
|
546
604
|
|
|
@@ -554,9 +612,10 @@ class N2PComponent:
|
|
|
554
612
|
resultsParameters.variation = variation
|
|
555
613
|
|
|
556
614
|
# Real/Imaginary or Magnitude/Phase
|
|
557
|
-
|
|
558
|
-
if (realPolar not in
|
|
559
|
-
|
|
615
|
+
__complexSupported = (0, 1, 2)
|
|
616
|
+
if (realPolar not in __complexSupported):
|
|
617
|
+
msg = N2PLog.Error.E239(realPolar, __complexSupported)
|
|
618
|
+
raise Exception(msg)
|
|
560
619
|
else:
|
|
561
620
|
resultsParameters.real_cartesian_polar = realPolar
|
|
562
621
|
|
|
@@ -615,3 +674,29 @@ def _get_axis(v1: Union[tuple, np.ndarray], v2: Union[tuple, np.ndarray]) -> np.
|
|
|
615
674
|
y = np.cross(z, v1)
|
|
616
675
|
|
|
617
676
|
return np.vstack((v1, y, z))
|
|
677
|
+
|
|
678
|
+
def _get_memory_usage() -> tuple[float, float, float]:
|
|
679
|
+
"""Returns total_memory, available_memory, used_memory in MB"""
|
|
680
|
+
|
|
681
|
+
class MEMORYSTATUSEX(ctypes.Structure):
|
|
682
|
+
_fields_ = [
|
|
683
|
+
("dwLength", ctypes.c_ulong),
|
|
684
|
+
("dwMemoryLoad", ctypes.c_ulong),
|
|
685
|
+
("ullTotalPhys", ctypes.c_ulonglong),
|
|
686
|
+
("ullAvailPhys", ctypes.c_ulonglong),
|
|
687
|
+
("ullTotalPageFile", ctypes.c_ulonglong),
|
|
688
|
+
("ullAvailPageFile", ctypes.c_ulonglong),
|
|
689
|
+
("ullTotalVirtual", ctypes.c_ulonglong),
|
|
690
|
+
("ullAvailVirtual", ctypes.c_ulonglong),
|
|
691
|
+
("sullAvailExtendedVirtual", ctypes.c_ulonglong),
|
|
692
|
+
]
|
|
693
|
+
|
|
694
|
+
memory_status = MEMORYSTATUSEX()
|
|
695
|
+
memory_status.dwLength = ctypes.sizeof(MEMORYSTATUSEX)
|
|
696
|
+
ctypes.windll.kernel32.GlobalMemoryStatusEx(ctypes.byref(memory_status))
|
|
697
|
+
|
|
698
|
+
total_memory = memory_status.ullTotalPhys / (1024 ** 2) # Convert to MB
|
|
699
|
+
available_memory = memory_status.ullAvailPhys / (1024 ** 2) # Convert to MB
|
|
700
|
+
used_memory = total_memory - available_memory
|
|
701
|
+
|
|
702
|
+
return total_memory, available_memory, used_memory
|
|
@@ -59,11 +59,14 @@ class N2PElement:
|
|
|
59
59
|
|
|
60
60
|
# Metodo para obtener la propiedad del elemento --------------------------------------------------------------------------------
|
|
61
61
|
@property
|
|
62
|
-
def Prop(self) -> Union[int, str]:
|
|
62
|
+
def Prop(self) -> Union[tuple[int, str], tuple[str, str]]:
|
|
63
63
|
id_prop = int(self.__info.prop)
|
|
64
64
|
if self.__model.Solver == "Abaqus":
|
|
65
65
|
id_prop = self.__model._N2PModelContent__propertyIDtoStr.get(id_prop)
|
|
66
|
-
|
|
66
|
+
part = "ASSEMBLY"
|
|
67
|
+
else:
|
|
68
|
+
part = self.PartID
|
|
69
|
+
return (id_prop, part)
|
|
67
70
|
# ------------------------------------------------------------------------------------------------------------------
|
|
68
71
|
|
|
69
72
|
# Metodo para obtener el material del elemento ---------------------------------------------------------------------
|
|
@@ -74,6 +74,7 @@ class N2PFreeBody(object):
|
|
|
74
74
|
|
|
75
75
|
# Llamada al constructor de NaxToModel
|
|
76
76
|
n2fbdsection = N2FBDSection(self.__name)
|
|
77
|
+
n2fbdsection.OpenFile = self.__model._N2PModelContent__vzmodel
|
|
77
78
|
|
|
78
79
|
# Se incluye la parte:
|
|
79
80
|
n2fbdsection.NodesPartID = self.__model._N2PModelContent__StrPartToID.get(self.__nodelist[0].PartID, 0)
|
|
@@ -101,14 +102,14 @@ class N2PFreeBody(object):
|
|
|
101
102
|
n2fbdsection.ElementsId.Add(element.ID)
|
|
102
103
|
|
|
103
104
|
# Instancio un objeto de la clase N2FBD
|
|
104
|
-
n2fbd = N2FBD(
|
|
105
|
+
n2fbd = N2FBD(n2fbdsection)
|
|
105
106
|
|
|
106
107
|
# Le añado los casos de carga y los incrementos:
|
|
107
108
|
listacasos = System.Collections.Generic.List[System.Int32]()
|
|
108
109
|
listaframes = System.Collections.Generic.List[System.Int32]()
|
|
109
110
|
listacasos.Add(self.__loadcase.ID)
|
|
110
111
|
listaframes.Add(self.__increment.ID)
|
|
111
|
-
n2fbd.
|
|
112
|
+
n2fbd.GetGpforcesLcInc(listacasos, listaframes)
|
|
112
113
|
|
|
113
114
|
# Ejecuto el métedo que calcula las resultantes (por fin)
|
|
114
115
|
# tuple_lc_inc = System.Tuple[System.Int32](self.__loadcase.ID, self.__increment.ID)
|
|
@@ -17,7 +17,6 @@ class N2PLoadCase:
|
|
|
17
17
|
NumIncrements: int.
|
|
18
18
|
ActiveN2PIncrement: N2PIncrement.
|
|
19
19
|
TypeLC: int.
|
|
20
|
-
IsComplex: bool.
|
|
21
20
|
InternalID: int.
|
|
22
21
|
"""
|
|
23
22
|
|
|
@@ -26,7 +25,6 @@ class N2PLoadCase:
|
|
|
26
25
|
"__idoriginal",
|
|
27
26
|
"__increments",
|
|
28
27
|
"__incrementsnumberlist",
|
|
29
|
-
"__iscomplex",
|
|
30
28
|
"__lctype",
|
|
31
29
|
"__namelc",
|
|
32
30
|
"__results",
|
|
@@ -37,11 +35,12 @@ class N2PLoadCase:
|
|
|
37
35
|
"__n2loadcase",
|
|
38
36
|
"__increments_by_name",
|
|
39
37
|
"__increments_by_id",
|
|
38
|
+
"__ref_temp"
|
|
40
39
|
)
|
|
41
40
|
|
|
42
41
|
|
|
43
42
|
# Constructor de N2PLoadCase ---------------------------------------------------------------------------------------
|
|
44
|
-
def __init__(self, id_lc, id_original, increments, increments_number_list,
|
|
43
|
+
def __init__(self, id_lc, id_original, increments, increments_number_list, lc_type, name, results,
|
|
45
44
|
solution_type, solver, model_father, n2loadcase):
|
|
46
45
|
'''Python Load Case Constructor
|
|
47
46
|
Input:
|
|
@@ -49,7 +48,6 @@ class N2PLoadCase:
|
|
|
49
48
|
IDOriginal: int -> Original Identification Number of the Load Case
|
|
50
49
|
Increments: list[N2Increment] -> list with instances of N2Increment
|
|
51
50
|
IncrementsNumberList: list[int] -> list with the number associated to each increment
|
|
52
|
-
IsComplex: bool -> boolean value. True if the LC is associated to a complex LC
|
|
53
51
|
LCType: str -> Type of solution applied in the load case
|
|
54
52
|
Name : str -> Name of the load case
|
|
55
53
|
Solver : str -> Solver of the load case
|
|
@@ -64,7 +62,6 @@ class N2PLoadCase:
|
|
|
64
62
|
self.__increments = [N2PIncrement(increments[i]) for i in range(0, len(increments))]
|
|
65
63
|
|
|
66
64
|
self.__incrementsnumberlist = increments_number_list
|
|
67
|
-
self.__iscomplex = is_complex
|
|
68
65
|
self.__lctype = lc_type
|
|
69
66
|
self.__namelc = name
|
|
70
67
|
self.__results = {results[i].Name: N2PResult(
|
|
@@ -73,7 +70,6 @@ class N2PLoadCase:
|
|
|
73
70
|
results[i].derivedComps,
|
|
74
71
|
results[i].Description,
|
|
75
72
|
results[i].elemTypes,
|
|
76
|
-
results[i].fcode,
|
|
77
73
|
results[i].Name,
|
|
78
74
|
self) for i in range(0, len(results))}
|
|
79
75
|
|
|
@@ -85,6 +81,7 @@ class N2PLoadCase:
|
|
|
85
81
|
|
|
86
82
|
self.__increments_by_name = dict()
|
|
87
83
|
self.__increments_by_id = dict()
|
|
84
|
+
self.__ref_temp: float = None
|
|
88
85
|
# ------------------------------------------------------------------------------------------------------------------
|
|
89
86
|
|
|
90
87
|
# Metodo para obtener el numero de identificacion interno del caso de carga ----------------------------------------
|
|
@@ -114,13 +111,6 @@ class N2PLoadCase:
|
|
|
114
111
|
return self.__increments
|
|
115
112
|
# ------------------------------------------------------------------------------------------------------------------
|
|
116
113
|
|
|
117
|
-
# Metodo para obtener si un caso de carga esta asociado a una solucion compleja ------------------------------------
|
|
118
|
-
@property
|
|
119
|
-
def IsComplex(self) -> bool:
|
|
120
|
-
"""Returns a boolean indicating whether the load case is associated to a complex solution"""
|
|
121
|
-
return bool(self.__iscomplex)
|
|
122
|
-
# ------------------------------------------------------------------------------------------------------------------
|
|
123
|
-
|
|
124
114
|
# Metodo para obtener el tipo de caso de Carga ---------------------------------------------------------------------
|
|
125
115
|
@property
|
|
126
116
|
def TypeLC(self) -> str:
|
|
@@ -206,6 +196,17 @@ class N2PLoadCase:
|
|
|
206
196
|
return str(self.__n2loadcase.PathFile)
|
|
207
197
|
# ------------------------------------------------------------------------------------------------------------------
|
|
208
198
|
|
|
199
|
+
# Propiedad que devulve la temperatura de referencia ---------------------------------------------------------------
|
|
200
|
+
@property
|
|
201
|
+
def RefTemp(self) -> float:
|
|
202
|
+
"""Returns the reference temperature of the load case"""
|
|
203
|
+
return self.__ref_temp
|
|
204
|
+
|
|
205
|
+
@RefTemp.setter
|
|
206
|
+
def RefTemp(self, value) -> None:
|
|
207
|
+
self.__ref_temp = value
|
|
208
|
+
# ------------------------------------------------------------------------------------------------------------------
|
|
209
|
+
|
|
209
210
|
# Metodo para obtener los incrementos disponibles en el caso de carga ----------------------------------------------
|
|
210
211
|
def get_increments(self, id: Union[int, str]) -> N2PIncrement:
|
|
211
212
|
''' Returns the N2PIncrement object with the id=ID or the id=Name of the Increment
|