N2PCompositeFailure Module#

class NaxToPy.Modules.static.composite.failure_analysis.N2PCompositeFailure.N2PCompositeFailure[source]#

Bases: object

Class for evaluating structural failure on composites materials.

Example

>>> import NaxToPy as n2p
>>> from NaxToPy.Modules.static.composite import N2PCompositeFailure
>>> model = n2p.load_model(r".\model.op2")
>>> list_elements = model.get_elements_filtered(properties=[11100004, 11100007]) # filter elements
>>> list_elements = [e for e in model.get_elements()] # to extract all elements
>>> list_lcs = [model.get_load_case(4001001)] # filter load cases
>>> list_lcs = [model.get_load_case()] # to extract all load cases
>>> my_analysis = N2PCompositeFailure()
>>> my_analysis.Model = model
>>> my_analysis.Elements = list_elements
>>> my_analysis.LoadCases = list_lcs
>>> my_analysis.FailureTheory = "TsaiWu"
>>> my_analysis.Materials[(3,"0")].Allowables.XTensile = 10
>>> my_analysis.Materials[(3,"0")].Allowables.XCompressive = 10
>>> my_analysis.Materials[(3,"0")].Allowables.YTensile = 10
>>> my_analysis.Materials[(3,"0")].Allowables.YCompressive = 10
>>> my_analysis.Materials[(3,"0")].Allowables.Shear = 10
>>> my_analysis.HDF5.FilePath= r".\Analysis.h5"
>>> my_analysis.calculate()
calculate()[source]#

Select and performs the failure criterion calculation based on the user-specified type.

mechanical_prop()[source]#

This method relates a N2PElement instace to its mechanical properties with regard to the N2PProperty and N2PMaterial instances assigned to the element.

Use of this dictionary is destined to ease the way different calculus methods access the information required to perform the computation.

Each element will have a list for its different properties, which length will be the number of plies for the laminate.

Note

  • 1: longitudinal direction (fiber-wise)

  • 2: transverse direction (fiber-wise)

Note

  • "E1" Young modulus in the longitudinal direction (fiber-wise)

  • "E2" Young modulus in the transverse direcetion (fiber-wise)

  • "G" Shear modulus

  • "Nu12" Major Poisson ratio

  • "Nu21" Minor Poisson ratio

  • "Xt" Tensile Strength on longitudinal direction (fiber-wise)

  • "Xc" Compressive Strength on longitudinal direction (fiber-wise)

  • "Yt" Tensile Strength on trasnverse direction (fiber-wise)

  • "Yc" Compressive Strength on transverse direction (fiber-wise)

  • "S" Shear Strength on the 1-2 plane (fiber-wise)

  • "theta" angle of ply orientation (fiber-wise) with regard to longitudinal direction (element-wise)

Returns:

A dictionary is created to store all the mechanical properties of an orthotropic material assigned to an element.

Return type:

dict

Example

>>> # Executing the method of a N2PCompositeFailure instance
>>> mechanical_prop_dict = my_analysis.mechanical_prop()
>>> # The dictionary would look like this:
>>> mechanical_prop_dict = {
>>>     N2PElement(3204463, 'PartID'): {
>>>         'E1': [220000, 220000, 220000 ], 'E2': [124300, 124300, 124300],
>>>         'G': [75000, 75000, 75000 ],'Nu12': [0.35, 0.35, 0.35],
>>>         'Nu21': [0.16, 0.16, 0.16], 'Xt': [1200000, 1200000, 1200000],
>>>         'Yt': [80000, 80000, 80000], 'Xc': [90000, 90000, 90000],
>>>         'Yc': [25000, 25000, 25000], 'S': [15000, 15000, 15000],
>>>         'theta': [0.0, 0.0, 0.0]
>>>     },
>>>
>>>     N2PElement(3204464, 'PartID'): {
>>>         'E1': [220000, 220000, 220000], 'E2': [124300, 124300, 124300],
>>>         'G': [75000, 75000, 75000],'Nu12': [0.35, 0.35, 0.35],
>>>         'Nu21': [0.16, 0.16, 0.16], 'Xt': [1200000, 1200000, 1200000],
>>>         'Yt': [80000, 80000, 80000], 'Xc': [90000, 90000, 90000 ],
>>>         'Yc': [25000, 25000, 25000], 'S': [15000, 15000, 15000],
>>>         'theta': [0.0, 0.0, 0.0]
>>>     },
>>>
>>>     N2PElement(..., 'PartID'): {
>>>         ...
>>>     },
>>>
>>>     ...
>>> }
ply_by_ply_failure(LC)[source]#

Method to evaluate progressive degradation in the laminate caused by the consecutive failures in individual plies under a specific load distribution.

This method will consider RF_values evaluated at each criterion as a starting point. If failure occurs at any single lamina it will be deactivated.

Laminates will be recomputed in terms of ABD Matrix and load distribution with the remaining active plies.

Failure criteria will be evaluated until every single ply fails. Stating Laminate failure.

Laminates may resist loads even isolated plies fail.

Returns:

Initial_Results = {N2PElement: [FI1, FI2, FI3, …, FIn]} - A dict with the summary of the Failure Analysis:

  • If the laminate fails: Failure_Results = {N2PElement:(FI, lamina_ID)} - where FI will be the highest FI from Initial_Results. The FI for the lamina that initiates laminate failure.

  • If the laminate does not fail: Failure_Results = {N2PElement: (FI, lamina_ID)} - where FI will be the highest value from final iteration from healthy laminas.

  • A dict with the FI for every ply of the laminate, and its corresponding failure order: Failure_Order = {N2PElement[(FI, 2), (FI, 0), (FI, 1) ]}
    • If the Lamina does not fail, a zero value will be assigned to its corresponding FI.

Return type:

  • A dict with the FIs for the initial loads and laminate configuration

property Elements: list[N2PElement]#

List of N2PElements instances where analysis will be performed.

property FailureCriteria: list[N2PElement]#

Property that returns the list of elements, that is, the list of elements to be analyzed.

property FailureTheory: list[N2PElement]#

Property that returns the list of elements, that is, the list of elements to be analyzed.

property HDF5: HDF5_NaxTo#

Property that returns the path where ResultsFile will be exported.

property LoadCases: list[N2PLoadCase]#

List of N2PLoadCase instances where analysis will be performed.

property Materials: dict#

Property that returns a dictionary with Material Instances.

property Model: N2PModelContent#

N2PModelContent object to be analyzed.

property Properties: dict#

Property that returns a dictionary with Property Instances.