N2PNeuber User Manual#
Overview#
The N2PNeuber Module is designed to interpolate local stress concentrations from linear Finite Element Analysis (FEA) results using the Neuber method, as outlined in HSB Standard 34201-01. See [Ref-1]. This module enables the efficient extraction and processing of FEM results to calculate stresses and provide insights into the structural integrity of components under various loading conditions.
If a stress-strain law according to the Ramberg-Osgood equation is assumed, then the equation which is used by this module is:


Example Usage#
1. Importing the module#
import NaxToPy as n2p
from NaxToPy.Modules.static.metallic import N2PNeuber
2. Load the model#
model = n2p.load_model(r"file path")
3. Define Elements and Load Cases#
element_list = [(24581218, '0')] # List of element-part tuples
n2pelem = model.get_elements(element_list)
load_case_id = [68195, 68196] # List of ID of Load Cases
n2plc = model.get_load_case(load_case_id)
4. Create and Configure N2PNeuber#
neuber = N2PNeuber()
neuber.Model = model # Assign the model
neuber.ElementList = n2pelem # Assign elements
neuber.LoadCaseList = n2plc # Assign load cases
5. Yield Stress and Ramberg-Osgood Parameter assignment#
neuber.Materials[(110,'0')].Allowables.Yield_stress = 400
neuber.Materials[(110,'0')].Allowables.RO_exponent = 15
Note
The material ID created and the material ID provided by the model are the same.
6. Run Calculations#
neuber.HDF5.FilePath = "output.h5"
neuber.calculate()
More information and addvance usage, like HDF5 export, in Module Inputs.
Setup#
Mandatory Prerequisites#
Python Environment: Ensure you have a compatible Python environment with the following libraries:
numpy
NaxToPy modules
matplotlib
NaxToPy Framework: The module integrates with the NaxToPy library, which must be installed and configured in your environment.
Optional Prerequisites#
Python Environment: The use of the following libraries will improve the calculation accuracy and the module’s execution time. (Strongly recommended):
scipy
joblib
matplotlib - If Ramberg_Osgood_curve method is going to be used.
Module Inputs#
The N2PNeuber class provides methods and attributes for defining the model, associating materials, and calculating Neuber stresses.
Mandatory Inputs#
Property |
Type |
Description |
---|---|---|
.Model |
|
FEM model to be analyzed |
.ElementList |
|
List of elements to analyze |
.LoadCaseList |
|
List of load cases to consider |
.Material[Material ID].Allowables.RO_exponent |
|
Ramberg Osgood exponent of the materials asociated, which characterizes the material’s strain hardening behavior. |
FEM Requirements#
For this module to function properly, the FEM model must include stress linear or non linear static in the output requests. Additionally, the model should accurately represent all elements and load cases where Neuber’s rule is expected to be applied. This is module is avaible for Nastran, Optistruct and Abaqus.
Supported Type Files#
Solver |
File Extension |
---|---|
Nastran |
.op2 |
Nastran |
.xdb |
Nastran |
.h5 |
Optistruct |
.op2 |
Optistruct |
.h3d |
Abaqus |
.odb |
Conditional Inputs#
Property |
Type |
Description |
---|---|---|
.Material[Material ID].Allowables.Yield_stress |
|
Yield Stress of the materials associated. This input is conditional because it is sometimes defined in the model cards. This value can be overwritten if necessary. |
.HDF5.export_to_HDF5 |
|
Convert an HDF5 file that has been created in memory to an HDF5 file in disk |
Optional Inputs#
Property |
Type |
Description |
---|---|---|
.HDF5.FilePath |
|
Path to specify the location of the created HDF5 file. If no path is provided, the file is created in memory. |
.Ramberg_Osgood_curve |
Method |
Method that creates a diagram of the Ramberg-Osgood curves for the selected elements. |
To export the data into a HDF5 file set the path in the property HDF5
:
neuber.HDF5.FilePath = "output.h5"
Warning
For FEM models with many load cases and elements to analyze, the option to export results to HDF5 must be enabled; otherwise, an exception will be raised due to memory overflow.
If you wish to view the Ramberg-Osgood curves of some elements, you can do it as shown below:
neuber.Ramberg_Osgood_curve([(24581218, '0')])
Tip
For the Ramberg-Osgood method, selecting only one material will result in a clearer diagram.
Output Description#
This module calculates all the stresses for which results have been explicitly requested, provided that the application of Neuber’s rule is meaningful. The expected output includes the Neuber stresses calculated for elements and load cases where the stress component values:
Are different from 0
Exceed the Yield Stress.
Any components for which Neuber’s rule is not applicable are automatically excluded from the results to ensure the accuracy and relevance of the calculations. If a path is given the results will be export in a HDF5 with NaxTo format.
Material Associaton#
Materials are automatically associated with elements.
Warning
Ensure materials have defined Yield Stress and Ramberg-Osgood parameters for accurate calculations.
Common Warnings#
W651: An ISOTROPIC/MAT1 associated with an element has been chosen.
Common Errors#
E674: Error raised when Neuber method can not be applicated in the element {ele ID}.
E675: Error raised when a Neuber method can not be applicated in an element.
Common Critical#
C661: The Neuber module is attempting to be used without assign a YieldStress to a material.
C662: The Neuber module is attempting to be used without assign a RO_exponent to a material.
C663: The Neuber module is attempting to be used without assign a N2PElement list.
C664: The Neuber module is attempting to be used without assign a N2PLoadCase list.
C860: The Neuber module is not avaible for a given solver.
Methodology#
Background Theory#
The methodology is based on the structural calculations outlined the HSB. See [Ref-1]
Implementation#
The main function of this method is the extraction of results using the new_report method from N2PModelContent. These results are processed with ndarray, and to solve the equation provided by the HSB standard, fsolve from the scipy.optimize library is used, which solves the iterative process with an error below 1e-5 and a maximum of 1000 iterations. The main calculation process is divided into batches of load cases. If a file path is provided, memory will be released as it iterates through the load cases.
Advanced Features#
In this section, the possible advanced uses of the module are described.
Property |
Description |
---|---|
.Ramberg_Osgood_curve |
Method that creates a diagram of the Ramberg-Osgood curves for the selected elements. |
Extra Examples#
import NaxToPy as n2p
from NaxToPy.Modules.static.metallic import N2PNeuber
model = n2p.load_model(r"C:\my_directory\my_model.odb")
element_list = [ele for ele in elements if ele.TypeElement == "CQUAD4"]
n2pelem = model.get_elements(element_list)
all_lcs = model.get_load_case()
neuber = N2PNeuber()
neuber.Model = model # Assign the model
neuber.ElementList = n2pelem # Assign elements
neuber.LoadCaseList = all_lcs # Assign load cases
# All the materials used must have the Yield_stress and RO setted
for mat in neuber.Materials.values():
mat.Allowables.Yield_stress = 420
mat.Allowables.RO_exponent = 14
neuber.HDF5.FilePath = "output.h5" # Optional
neuber.calculate()
neuber.Ramberg_Osgood_curve([*Introduce an element*]) # Optional
References#
This guide serves as a comprehensive reference for using the N2PNeuber Module in structural analysis tasks. For further information, refer to the source code comments and examples provided.
All rights reserved. This document is licensed under the terms of the LICENSE of the NaxToPy package.