Composipy Classes#
This page contains Composipy classes, used to build the main instances of the package.
OrthotropicMaterial#
- class composipy.OrthotropicMaterial(e1, e2, v12, g12, thickness, t1=0, c1=0, t2=0, c2=0, s=0, name=None)[source]#
Creates an OrthotropicMaterial object.
- Parameters
e1 (float, int) – Young modulus in the 1st direction
e2 (float, int) – Young modulus in the 2nd direction
v12 (float) – poisson modulus 12
g12 (float, int) – Shear modulus
thickness (float, int) – thickness of the ply
t1 (float, optional, default None) – tension allowable in direction 1.
c1 (float, optional, default None) – compression allowable in direction 1.
t2 (float, optional, default None) – tension allowable in direction 2.
c2 (float, optional, default None) – compression allowable in direction 2.
s (float, optional, default None) – shear allowable.
name (str, optional, default None) – Name of the ply
Examples
>>> from composipy import OrthotropicMaterial >>> ply_1 = OrthotropicMaterial(129500, 9370, 0.38, 5240, 0.2) >>> ply_1.Q_0 # get the compliance matrix of the lamina Out: array([[130867.31382151, 3598.19426713, 0. ], [ 3598.19426713, 9468.93228191, 0. ], [ 0. , 0. , 5240. ]])
- Invariants()[source]#
Get the material invariants
- Returns
Invariants – array([U1, U2, U3, U4, U5])
- Return type
numpy.ndarray
- property Q_0#
Get the compliance matrix of the material.
- Returns
self.Q_0 – Compliance matrix (3x3) of the Material
- Return type
numpy.ndarray
LaminateProperty#
- class composipy.LaminateProperty(stacking, plies)[source]#
This class creates a LaminateProperty object. It requires Material objects (to define plies) and angle information. Some formulation characteristics are: - Laminate formulations are used (see References). - The main reference is Chapter 4 of Reference 2.
- Parameters
stacking (list or dict) –
- To define a angle stacking sequence
An iterable containing the angles (in degrees) of layup.
- To define a stack based on lamination parameters.
{xiA: [xiA1, xiA2, xiA3, xiA4], xiB: [xiB1, xiB2, xiB3, xiB4], xiD: [xiD1, xiD2, xiD3, xiD4], T: thickness}
plies (Material or list) – A single Material or a list of OrthotropicMaterial object
Example
>>> from composipy import OrthotropicMaterial, LaminateProperty >>> ply_1 = OrthotropicMaterial(129500, 9370, 0.38, 5240, 0.2) >>> stacking = [90, 0, 90] >>> laminate_1 = Laminate(stacking, ply_1) >>> laminate_1.ABD # retunrs an array containing bending stiffness matrix [D] of the laminate >>> laminate_1.xiA # lamination parameters of extension >>> laminate_1.xiA # lamination parameters of bending
Example
>>> stacking = {'xiD': [0., 0., -1., 0.], 'T': 1.0} #using lamination parameters to define D >>> laminate_2 = Laminate(stacking, ply_1) >>> laminate_2.ABD # retunrs an array containing bending stiffness matrix [D] of the laminate >>> laminate_2.xiA # lamination parameters of extension >>> laminate_2.xiA # lamination parameters of bending
Note
The first element of the stacking list corresponds to the BOTTOM OF THE LAYUP, and the last element corresponds to the TOP OF THE LAYUP. This is important for non-symmetric laminates.
Refer to rafaelpsilva07/composipy#28.
- property A#
[A] Matrix as numpy.ndarray
- property ABD#
[ABD] Matrices as numpy.ndarray
- property B#
[B] Matrix as numpy.ndarray
Note
Matrix [B] will be zero if defined using lamination parameters.
- property D#
[D] Matrix as numpy.ndarray
- property xiA#
Lamination parameter xiA
- property xiD#
Lamination parameter xiD
PlateStructure#
- class composipy.PlateStructure(dproperty, a, b, constraints={'x0': ['TX', 'TY', 'TZ'], 'xa': ['TX', 'TY', 'TZ'], 'y0': ['TX', 'TY', 'TZ'], 'yb': ['TX', 'TY', 'TZ']}, Nxx=0, Nyy=0, Nxy=0, m=10, n=10)[source]#
This class defines a PlateStructure.
- Parameters
dproperty (composipy.Property) – Property of the plate.
a (float) – Size of the plate parallel to the x axis.
b (float) – Size of the plate parallel to the y axis.
constraints (str or dict. Default: "PINNED") – Plate boundary conditions.
Nxx (float, default 0) – Linear force parallel x axis
Nyy (float, default 0) – Linear force parallel y axis
Nxy (float, default 0) – Linear shear force
m (int, default 10) – Size of shape function along x axis
n (int, default 10) – Size of shape function along y axis
Example
>>> from composipy import OrthotropicMaterial, LaminateProperty, PlateStructure >>> ply_1 = OrthotropicMaterial(129500, 9370, 0.38, 5240, 0.2) >>> stacking = [90, 0, 90] >>> laminate = Laminate(stacking, ply_1) >>> constraints
Note
The
constraintargument can be a str type ‘PINNED’ or ‘CLAMPED’. Or a dictionary like described below:>>> constraints = { --- x0 = ['TX', 'TY', 'TZ', 'RX', 'RY', 'RZ'] --- xa = ['TX', 'TY', 'TZ', 'RX', 'RY', 'RZ'] --- y0 = ['TX', 'TY', 'TZ', 'RX', 'RY', 'RZ'] --- yb = ['TX', 'TY', 'TZ', 'RX', 'RY', 'RZ'] --- }
Attention, the rotations aren’t considered around the axis. They are related to the shape function. That means, for example, the
RZturns around the x axis and moves the plate in z direction.- buckling_analysis(silent=True, num_eigvalues=5)[source]#
Linear Buckling Analysis
- Parameters
silent (bool, optional) – Prints time to compute calculation
num_eigvalues (int, optional) – Number of calculated eigenvalues.
- Return type
eigvals, eigvecs
LaminateStrength#
- class composipy.LaminateStrength(dproperty, Nxx=0, Nyy=0, Nxy=0, Mxx=0, Myy=0, Mxy=0)[source]#
Creates a LaminateStrength object to evaluate strength. The class is capable of calculating strain and stress at the midplane, as well as ply-by-ply at the top and bottom, both in the laminate and material directions.
- Parameters
dproperty (LaminateProperty) – A laminate property object
Nxx (float, int, optional, default 0) – Membrane load in x direction.
Nyy (float, int, optional, default 0) – Membrane load in y direction.
Nxy (float, int, optional, default 0) – Membrane load in xy direction.
Mxx (float, int, optional, default 0) – Moment in x direction.
Myy (float, int, optional, default 0) – Moment in y direction.
Mxy (float, int, optional, default 0) – Moment in xy direction.
- calculate_strain()[source]#
Calculates strain ply by at laminate direction and material direction.
- Returns
strains – ply by ply strains in plate direction and material direction
- Return type
pd.Dataframe
Note
The sequence of the DataFrame starts from the TOP OF THE LAYUP to the BOTTOM OF THE LAYUP, which is the reverse of the definition order. When defining the laminate, the first element of the list corresponds to the bottom-most layer. This is especially important for non-symmetric laminates.
- calculate_stress()[source]#
Calculates stress ply by at laminate direction and material direction.
- Returns
stress – ply by ply stress in plate direction and material direction
- Return type
pd.Dataframe
Note
The sequence of the DataFrame starts from the TOP OF THE LAYUP to the BOTTOM OF THE LAYUP, which is the reverse of the definition order. When defining the laminate, the first element of the list corresponds to the bottom-most layer. This is especially important for non-symmetric laminates.