N2PSandwich User Manual#
Overview#
The N2PSandwichFailure
module is developed to evaluate the failure of sandwich structures by calculating stresses or displacements derived from linear Finite Element Analysis (FEA) results. Each analysis is conducted with a specific core type, either Honeycomb
or Continuous
. If the structure contains elements with different core types, separate analyses must be performed for each.
The module also computes the Reserve Factor (RF), which measures the structural safety margin by assessing the excess strength available beyond the required capacity to support the applied load. The RF is calculated for each N2PElement within the provided list (ElementList) (refer to the Mandatory Inputs section for more details). If results are provided for nodes instead of elements, the list of nodes is derived from all nodes contained within the elements specified in the ElementList.
Sandwich panels can fail in several modes, with each failure mode imposing a limit on their load-bearing capacity. The most critical failure mode depends on the panel’s geometry and the type of load applied. Structural failure may occur due to the strength limitations of the face sheet, core, or adhesive, or it may result from local instabilities like face sheet wrinkling or dimpling. Additionally, overall instability, such as shear crimping, can also lead to failure [Ref-2].
Failure modes covered by this module are the following:
Core shear (
CoreShear
) failure happens when the core material fractures due to shear stress. Since the core bears nearly all the transverse load while experiencing minimal in-plane load, it is primarily subjected to shear forces. In honeycomb cores, failure can also occur through cell wall buckling, which may not be immediately visible once the load is removed.
Core crushing (
CoreCrushing
) occurs when the face sheets are pushed toward each other due to bending or through-thickness loads. This type of failure happens when the core lacks adequate compressive strength to withstand the applied forces.
Face sheet wrinkling (
Wrinkling
) is a local instability that occurs when the face sheet buckles, often alongside core crushing, core tearing, or debonding between the face sheet and core. This failure is more common in structures with thin face sheets and low-density cores. Depending on the loading conditions, material properties, and thickness of the core and face sheets, one or both face sheets may experience wrinkling. Wrinkling may be symmetric and antisymmetric.
Face sheet dimpling, or intracell buckling (
Dimpling
), is a local instability in which the face sheet buckles inward or outward within the boundaries of a single cell. This failure is more likely to occur when the face sheets are thin and the cell size is large.
Shear crimping (
Crimping
) is an instability that arises when the buckle wavelength is comparable to the cell size. It is characterized by local core shear failure and the lateral displacement of the face sheets. Although it appears to be a local instability due to the short wavelengths, it is actually a form of general instability. This failure mode is more likely to occur when the core has a low shear modulus.
Facesheet failure (
FacesheetFailure
) occurs when the face sheets fail by yielding or fracture. The criterion for failure is that the face sheet material exceeds its allowable stress. In case of isotropic facesheet, failure will occur when load exceeds the allowable strength in any direction. When face sheets are composed of composite laminates, several modes of failure are possible due to the complexity of the composite structure. In this module are covered the failures by the following criteria: ‘Tsai-Wu’, ‘Tsai-Hill’ and ‘MaxStress’. (NOTE: For a more detailed analysis regarding failure of composite laminates,N2PFailureComposite
module should be used)
General buckling (
Buckling
) of a sandwich panel is similar to the traditional buckling of plates or columns. In this type of failure, the facesheets and core remain unaffected.
Flatwise tension (and compression) (
FlatwiseTension
): At the edges of most sandwich panels, one of the face sheets—typically the bag-side sheet in composite construction—transitions upward over the core, forming a ramp. At the beginning and end of this ramp, where the face sheet changes direction, interlaminar stresses (either flatwise tension or compression) develop at the bondline between the face sheet and the core. Flatwise tension stress may result in tensile core failure or debonding between the face sheet and the core, while flatwise compression stress can lead to core crushing.
Panel stiffness criteria (
PanelStiffness
) is characterized by the maximum allowable structural elastic deformation due to external thermo-mechanical loads.
Supported Failure Modes and Theories#
For each failure mode, there are different criteria according to different theories which are depicted in the following table (further information in Background Theory),
FailureTheory |
FailureMode |
Output Request (NASTRAN) |
---|---|---|
Airbus |
Wrinkling |
FORCES |
Airbus |
Dimpling |
FORCES |
Airbus |
Crimping |
FORCES |
Airbus |
CoreCrushing |
FORCES |
Airbus |
CoreShear |
FORCES |
Airbus |
FacesheetFailure |
FORCES |
Airbus |
Buckling |
EIGENVECTORS (SOL 105) |
Airbus |
PanelStiffness |
DISPLACEMENTS |
HyperSizer |
Wrinkling |
FORCES |
HyperSizer |
Dimpling |
FORCES |
HyperSizer |
Crimping |
FORCES |
HyperSizer |
CoreCrushing |
FORCES |
HyperSizer |
CoreShear |
FORCES |
CMH-17 |
Wrinkling |
FORCES |
CMH-17 |
Dimpling |
FORCES |
CMH-17 |
Crimping |
FORCES |
CMH-17 |
CoreCrushing |
FORCES |
CMH-17 |
CoreShear |
FORCES |
CMH-17 |
FacesheetFailure |
FORCES |
CMH-17 |
FlatwiseTension |
FORCES |
NASA |
Wrinkling |
FORCES |
HSB |
Wrinkling |
FORCES |
Example Usage#
1. Importing the module#
import NaxToPy as n2p
from NaxToPy.Modules.N2PSandwich.N2PSandwich import N2PSandwichFailure
2. Load the model#
model = n2p.load_model(r"file path")
3. Define Elements and Load Cases#
element_list = [3026292,3026293,3026294] # List of element
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 N2PSandwich#
sandwich = N2PSandwichFailure()
sandwich.Model = model
sandwich.FailureMode = 'Wrinkling'
sandwich.FailureTheory = 'HyperSizer'
sandwich.LoadCases = n2ploadcases
sandwich.ElementList = n2pelems
sandwich.CoreType = 'Honeycomb'
sandwich.Parameters['K1'] = 0.8
5. Run Calculations#
sandwich.HDF5.FilePath = r"file output"
sandwich.calculate()
Setup#
Prerequisites#
Python Environment: Ensure you have a compatible Python environment with the following libraries:
NaxToPy modules
NaxToPy Framework: The module integrates with the NaxToPy library, which must be installed and configured in your environment.
Module Inputs#
The N2PSandwichFailure class provides methods and attributes for defining the model, associating materials, and calculating RF.
Mandatory Inputs#
Property |
Type |
Description |
---|---|---|
.Model |
|
FEM model |
.ElementList |
|
List of elements |
.LoadCases |
|
List of load cases |
.FailureMode |
|
Failure mode (must be one of the allowed) |
.FailureTheory |
|
Failure theory (must be one of the allowed for the selected failure mode) |
.CoreType |
|
Core type ( |
FEM Requirements#
For this module to function properly, the FEM model must include force fluxes linear and non linear static results in the output requests. This module is available for Nastran.
Supported Type Files#
Solver |
File Extension |
---|---|
Nastran |
.op2 |
.xdb |
|
.h5 |
Conditional Inputs#
Property/Method |
Type |
Description |
---|---|---|
.CellSize |
|
Diameter (in mm) of a circle that can be inscribed in a cell of a honeycomb core (requested for |
.LaminateCriteria |
|
Composite laminate failure criteria. Criteria allowed: |
.RampRadius |
|
Ramp radius (requested for |
.BagAngle |
|
Local angle between bag side and tool side (in degrees) (requested for |
.AllowableDisplacement |
|
Maximum allowable structural elastic deformation (requested for |
.Materials[(Material ID,Increment ID)].YoungZ |
|
Elastic modulus in Z direction for orthotropic materials (requested for |
.Materials[(Material ID,Increment ID)].ShearXZ |
|
Shear modulus in XZ direction for orthotropic materials (requested for |
.Materials[(Material ID,Increment ID)].ShearYZ |
|
Shear modulus in YZ direction for orthotropic materials (requested for |
.Materials[(Material ID,Increment ID)].Young |
|
Elastic modulus in Z direction for isotropic materials (requested for |
.Materials[(Material ID,Increment ID)].Shear |
|
Shear modulus in XZ direction for isotropic materials (requested for |
.Materials[(Material ID,Increment ID)].Allowables.ShearXZ |
|
Allowable in XZ-Shear for orthotropic materials (requested for |
.Materials[(Material ID,Increment ID)].Allowables.ShearYZ |
|
Allowable in YZ-Shear for orthotropic materials (requested for |
.Materials[(Material ID,Increment ID)].Allowables.ZCompressive |
|
Allowable for Compression in out-of-plane direction for orthotropic materials (requested for |
.Materials[(Material ID,Increment ID)].Allowables.XCompressive |
|
Allowable for Compression in longitudinal direction for orthotropic materials (requested for |
.Materials[(Material ID,Increment ID)].Allowables.YCompressive |
|
Allowable for Compression in transversal direction for orthotropic materials (requested for |
.Materials[(Material ID,Increment ID)].Allowables.XTensile |
|
Allowable for Tension in longitudinal direction for orthotropic materials (requested for |
.Materials[(Material ID,Increment ID)].Allowables.YTensile |
|
Allowable for Tension in transversal direction for orthotropic materials (requested for |
.Materials[(Material ID,Increment ID)].Allowables.Yield_compression |
|
Allowable in tension for isotropic materials (requested for |
.Materials[(Material ID,Increment ID)].Allowables.Yield_shear |
|
Allowable for Compression for isotropic materials (requested for |
.Materials[(Material ID,Increment ID)].Allowables.Yield_stress |
|
Allowable for Tension for isotropic materials (requested for |
Optional Inputs#
Property/Method |
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 |
.HDF5.export_to_HDF5 |
|
Convert an HDF5 file that has been created in memory to an HDF5 file on disk |
.Parameters |
|
Set optional constants for the different failure theory: |
To export the data into a HDF5 file set the path in the property HDF5
:
sandwich.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.
Output Description#
The output derived from N2PSandwichFailure is a reserve factor comparing the actual load with the limit load
Material Associaton#
Materials are automatically associated with elements.
Warning
Ensure that Z elastic modulus, and allowables for compression and tension are defined for all materials for which strength failure modes are to be calculated.
Common Errors#
C800: Assigned model input must be a N2PModelContent instance
C801: Assigned elements must be a list of N2PElement instances
C802: Assigned elements must be a list of N2PLoadCase instances
C950: Young modulus in Z direction is not defined for a material
C951: Failure mode is not defined or is not one of the allowed
C952: Failure theory is not defined or is not one of the allowed
C953: Core type must be Isotropic or Honeycomb
C954: Failure mode selected is not supported for the failure theory selected
C955: Cell size is compulsory for calculating dimpling failure mode
C956: ZCompressive allowable is not defined
C957: ShearXZ allowable is not defined
C958: ShearYZ allowable is not defined
C959: Cell size must be assigned to a Honeycomb core
C960: Core must be alligned with x-axis of material system
C961: Ratio core-to-face thickness must be greater than 5.77 (thin face assumption) (see Background Theory))
C962: Core type for dimpling failure mode must be honeycomb
C963: Composite laminate failure criteria is not defined or is not one of the allowed
C964: Global buckling analysis cannot be performed since the cell size is not coarse enough to supress local buckling modes
C965: Load cases must request static results
C966: Forces must be requested for the selected failure mode
C967: Buckling results must be requested for the selected failure mode
C968: Ramp radius must be positive
C969: Local angle between bag side and tool side must be between 0 and 360
C970: Ramp radius must be defined for flatwise tension failure mode
C971: Local angle between bag side and tool sede must be defined for flatwise for flatwise tension failure mode
C972: Weak core assumption is not satisfied (see Background Theory))
C973: Allowable displacement must be positive
C974: Allowable displacement must be defined for panel stiffness criteria
Common Warnings#
W950: Load state in some elements is different from uniaxial compression, but criteria selected applies for uniaxial compression. Check validity of the calculation.
W951: Tension load state used for a compression criteria in some elements. (RF set to 999999)
Methodology#
Background Theory#
The methodology is based on the structural calculations outlined in the different bibliographic references. (see References section)
Consider the following limitations applied to the sandwich analysis method [Ref 4]:
Linear-elastic material behavior assumed.
Geometrical and material non-linearities implying large deformations and rotations are not considered in the present method.
The sandwich configuration shall be consistent with the ‘thin-face’ and the ‘weak-core’ approximation (see equations below), so that it can be assumed that the skin laminates withstand the in-plane loads while the core reacts the transverse shear loads.
Influence of manufacturing defects and fatigue loading is not considered.
Implementation#
The main function of this module is the extraction of results using the get_result_by_LCs_Incr method from N2PModelContent. Results are processed with ndarray. The main calculation process is divided into batches and load cases. If a file path is provided, memory will be released as it iterates through the load cases.
Advanced Features#
No advanced features of the module.
Extra Examples#
If an analysis of different failure modes or different criteria is required, the way to proceed is to make a series of loops that iterate over the different failure modes and theories, obtaining an .h5
file for each iteration.
import NaxToPy as n2p
from NaxToPy.Modules.N2PSandwich.N2PSandwich import N2PSandwichFailure
# Define file paths for the model and results
model_path_ = r"file_model_path.bdf"
results_path = r"file_results_path.op2"
# Define the load case list
lc_list = [1]
# Get elements from the model filtered by a specific property ID
n2pelems = model.get_elements_filtered(properties=28500001)
# Retrieve load cases from the model
n2ploadcases = model.get_load_case(lc_list)
# Define failure modes and failure criteria in lists
failure_mode_list = ['Wrinkling','Crimping']
failure_criteria_list = ['Airbus','HyperSizer']
# Iterate through each failure mode and failure criteria combination
for failure_mode in failure_mode_list:
for failure_criteria in failure_criteria_list:
# Define the output file name
output_file_h5 = rf"ResultsFolder\Sandwich_{failure_mode}_{failure_criteria}_Loop.h5"
# Initialize the N2PSandwichFailure object
sandwich = N2PSandwichFailure()
sandwich.Model = model # Assign the model
sandwich.FailureMode = failure_mode # Set the failure mode
sandwich.FailureTheory = failure_criteria # Set the failure theory
sandwich.LoadCases = n2ploadcases # Assign the load cases
sandwich.ElementList = n2pelems # Assign the element list
sandwich.CoreType = 'Continuous' # Define the core type
# Set the output file path for the results
sandwich.HDF5.FilePath = output_file_h5
# Define material properties
mat_ID = 28500000
part_mat = '0'
# Assign material properties for the specific material ID and part
sandwich.Materials[(28500000,part_mat)].YoungZ = 5000 # Young's modulus in Z direction
sandwich.Materials[(28500000,part_mat)].Allowables.ShearXZ = 160 # Shear allowable in XZ plane
sandwich.Materials[(28500000,part_mat)].Allowables.ShearYZ = 160 # Shear allowable in YZ plane
sandwich.Materials[(28500000,part_mat)].Allowables.ZCompressive = 160 # Compressive allowable in Z direction
# Perform the failure calculation
sandwich.calculate()
References#
[Ref-1]: NASA CR-1999-208994. Facesheet Wrinkling in Sandwich Structures
[Ref-2]: CMH-17. Composite Material Handbook. Volume 6: Structural Sandwich Composites
[Ref-3]: Bruhn. Chapter 12: Sandwich Construction and Design.
[Ref-4]: Airbus Technical Report 0813804. Method for the analysis of composite sandwich.
[Ref-6]: HSB 55111-01. Flat sandwich panels under in-plane compression and shear.
This guide serves as a comprehensive reference for using the N2PSandwich 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 theLICENSE of the NaxToPy package.