def read_lamination_parameters(thickness, laminaprop, xiA1, xiA2, xiA3, xiA4, xiB1, xiB2, xiB3, xiB4, xiD1, xiD2, xiD3, xiD4, xiE1, xiE2, xiE3, xiE4): r"""Calculates a laminate based on the lamination parameters. The lamination parameters: `\xi_{A1} \cdots \xi_{A4}`, `\xi_{B1} \cdots \xi_{B4}`, `\xi_{C1} \cdots \xi_{C4}`, `\xi_{D1} \cdots \xi_{D4}`, `\xi_{E1} \cdots \xi_{E4}` are used to calculate the laminate constitutive matrix. Parameters ---------- thickness : float The total thickness of the laminate laminaprop : tuple The laminaprop tuple used to define the laminate material. xiA1 to xiD4 : float The 16 lamination parameters used to define the laminate. Returns ------- lam : Laminate laminate with the ABD and ABDE matrices already calculated """ lam = Laminate() lam.t = thickness lam.matobj = read_laminaprop(laminaprop) lam.xiA = np.array([1, xiA1, xiA2, xiA3, xiA4], dtype=DOUBLE) lam.xiB = np.array([0, xiB1, xiB2, xiB3, xiB4], dtype=DOUBLE) lam.xiD = np.array([1, xiD1, xiD2, xiD3, xiD4], dtype=DOUBLE) lam.xiE = np.array([1, xiE1, xiE2, xiE3, xiE4], dtype=DOUBLE) lam.calc_ABDE_from_lamination_parameters() return lam
def read_lamination_parameters(thickness, laminaprop, xiA1, xiA2, xiA3, xiA4, xiB1, xiB2, xiB3, xiB4, xiD1, xiD2, xiD3, xiD4, xiE1, xiE2, xiE3, xiE4): r"""Calculates a laminate based on the lamination parameters. The lamination parameters: `\xi_{A1} \cdots \xi_{A4}`, `\xi_{B1} \cdots \xi_{B4}` `\xi_{C1} \cdots \xi_{C4}`, `\xi_{D1} \cdots \xi_{D4}` are used to calculate the laminate. Parameters ---------- thickness : float The total thickness of the laminate laminaprop : tuple The laminaprop tuple used to define the laminate material. xiA1 to xiD4 : float The 16 lamination parameters used to define the laminate. Returns ------- lam : Laminate laminate with the ABD and ABDE matrices already calculated """ lam = Laminate() lam.t = thickness lam.matobj = read_laminaprop(laminaprop) lam.xiA = np.array([1, xiA1, xiA2, xiA3, xiA4], dtype=FLOAT) lam.xiB = np.array([0, xiB1, xiB2, xiB3, xiB4], dtype=FLOAT) lam.xiD = np.array([1, xiD1, xiD2, xiD3, xiD4], dtype=FLOAT) lam.xiE = np.array([1, xiE1, xiE2, xiE3, xiE4], dtype=FLOAT) lam.calc_ABDE_from_lamination_parameters() return lam
def read_stack(stack, plyt=None, laminaprop=None, plyts=[], laminaprops=[]): """Read a laminate stacking sequence data. An ``Laminate`` object is returned based on the inputs given. Parameters ---------- stack : list Angles of the stacking sequence in degrees. plyt : float, optional When all plies have the same thickness, ``plyt`` can be supplied. laminaprop : tuple, optional When all plies have the same material properties, ``laminaprop`` can be supplied. plyts : list, optional A list of floats with the thickness of each ply. laminaprops : list, optional A list of tuples with a laminaprop for each ply. Notes ----- ``plyt`` or ``plyts`` must be supplied ``laminaprop`` or ``laminaprops`` must be supplied For orthotropic plies, the ``laminaprop`` should be:: laminaprop = (E11, E22, nu12, G12, G13, G23) For isotropic pliey, the ``laminaprop`` should be:: laminaprop = (E, E, nu) """ lam = Laminate() lam.stack = stack if not plyts: if not plyt: log.error('plyt or plyts must be supplied') raise ValueError else: plyts = [plyt for i in stack] if not laminaprops: if not laminaprop: log.error('laminaprop or laminaprops must be supplied') raise ValueError else: laminaprops = [laminaprop for i in stack] lam.plies = [] for plyt, laminaprop, theta in zip(plyts, laminaprops, stack): ply = Lamina() ply.theta = float(theta) ply.t = plyt ply.matobj = read_laminaprop(laminaprop) lam.plies.append(ply) lam.rebuild() lam.calc_constitutive_matrix() return lam
def read_stack(stack, plyt=None, laminaprop=None, plyts=[], laminaprops=[]): """Read a laminate stacking sequence data. An ``Laminate`` object is returned based on the inputs given. Parameters ---------- stack : list Angles of the stacking sequence in degrees. plyt : float, optional When all plies have the same thickness, ``plyt`` can be supplied. laminaprop : tuple, optional When all plies have the same material properties, ``laminaprop`` can be supplied. plyts : list, optional A list of floats with the thickness of each ply. laminaprops : list, optional A list of tuples with a laminaprop for each ply. Notes ----- ``plyt`` or ``plyts`` must be supplied ``laminaprop`` or ``laminaprops`` must be supplied For orthotropic plies, the ``laminaprop`` should be:: laminaprop = (E11, E22, nu12, G12, G13, G23) For isotropic pliey, the ``laminaprop`` should be:: laminaprop = (E, E, nu) """ lam = Laminate() lam.stack = stack if not plyts: if not plyt: error('plyt or plyts must be supplied') raise ValueError else: plyts = [plyt for i in stack] if not laminaprops: if not laminaprop: error('laminaprop or laminaprops must be supplied') raise ValueError else: laminaprops = [laminaprop for i in stack] lam.plies = [] for plyt, laminaprop, theta in zip(plyts, laminaprops, stack): laminaprop = laminaprop ply = Lamina() ply.theta = float(theta) ply.t = plyt ply.matobj = read_laminaprop(laminaprop) lam.plies.append(ply) lam.rebuild() lam.calc_constitutive_matrix() return lam