Source code for composipy.load_class

import itertools
import numbers
import numpy as np


[docs]class Load: """Creates an instace of in-plane loads per unit of lenght. Parameters ---------- Nx : float, int Normal load per unit lenght in x direction Ny : float, int Normal load per unit lenght in y direction Nxy : float Normal load per unit lenght in xy direction Mx : float, int Moment per unit lenght in x direction My : float, int Moment per unit lenght in y direction Mxy : float, int Moment per unit lenght in xy direction Examples -------- >>> from composipy import Load >>> load_1 = Load(500, 250, 20, 1000, 400, 100) >>> ply_1.Q_0 # get the compliance matrix of the lamina Out: array([500, 250, 20, 1000, 400, 100]) References ---------- 1. JONES, M. Robert. Mechanics of Composite Materials. Taylor & Francis: 2nd ed 1999. 2. Analysis and Design of composite structures. Class notes. ITA 2020. """ _ids = itertools.count(1) # counts number of instances def __init__(self, Nx, Ny, Nxy, Mx, My, Mxy): if not isinstance(Nx,numbers.Real): raise ValueError('Nx must be a real number') if not isinstance(Ny,numbers.Real): raise ValueError('Ny must be a real number') if not isinstance(Nxy,numbers.Real): raise ValueError('Nxy must be a real number') if not isinstance(Mx,numbers.Real): raise ValueError('Mx must be a real number') if not isinstance(Mx,numbers.Real): raise ValueError('My must be a real number') if not isinstance(Mxy,numbers.Real): raise ValueError('Mxy must be a real number') self.__Nx = Nx self.__Ny = Ny self.__Nxy = Nxy self.__Mx = Mx self.__My = My self.__Mxy = Mxy self.__Loads = None #Calculated property self._id = next(self._ids) #Load getters @property def Nx(self): return self.__Nx @property def Ny(self): return self.__Ny @property def Nxy(self): return self.__Nxy @property def Mx(self): return self.__Mx @property def My(self): return self.__My @property def Mxy(self): return self.__Mxy #Load array @property def Load(self): """Create an array for the in-plane loads. Parameters ---------- self : self Instance of Load Returns ------- self.Load : numpy.ndarray In-plane load vector """ if self._Load is None: self.__Load = np.array([ self.Nx, self.Ny, self.Nxy, self.Mx, self.My, self.Mxy]) return self.__Load def __repr__(self): return ( f'Load(Nx = {self.Nx}, Ny = {self.Ny}, Nxy = {self.Nxy} \n\ Mx = {self.Mx}, My = {self.My}, Mxy = {self.Mxy})') #Comparisons def __eq__(self, other): if isinstance(other, Load): return (self.Nx == other.Ny and self.Ny == other.Ny and self.Nxy == other.Nxy and self.Mx == other.My and self.My == other.My and self.Mxy == other.Mxy) else: raise ValueError(f'Not a instance of Load')