class Profile:
    def __init__(self, type_profile, classe, A, A_eff, Iy, Iz, Wy, Wz, Wel_y, Wel_z, It, Iw, L, zg, fy, E, nu, gamma_M1):
        self.type_profile = type_profile
        self.classe = classe
        self.A = A
        self.A_eff = A_eff
        self.Iy = Iy
        self.Iz = Iz
        self.Wy = Wy
        self.Wz = Wz
        self.Wel_y = Wel_y
        self.Wel_z = Wel_z
        self.It = It
        self.Iw = Iw
        self.L = float(L)
        self.zg = zg
        self.fy = fy
        self.E = E
        self.nu = nu
        self.gamma_M1 = gamma_M1

class Solicitations():
    def __init__(self, NEd, My_Ed1, My_Ed2, Mz_Ed1, Mz_Ed2, My_Ed_tr, Mz_Ed_tr, Qy, Qz):
        self.NEd = NEd                  #Effort normal de dimenssionnement 
        self.My_Ed1 = My_Ed1
        self.My_Ed2 = My_Ed2
        self.Mz_Ed1 = Mz_Ed1
        self.Mz_Ed2 = Mz_Ed2
        self.My_Ed_tr = My_Ed_tr
        self.Mz_Ed_tr = Mz_Ed_tr
        self.Qy = Qy                    #distribution load selon Y
        self.Qz = Qz                    #distribution load selon Z

class Buckling:
    def __init__(self, beta_y, beta_z, Courbe_y, Courbe_z):
        self.Courbe_y = Courbe_y
        self.Courbe_z = Courbe_z
        self.beta_y = beta_y
        self.beta_z = beta_z

class LateralBuckling:
    def __init__(self, beta_LT, Methode, C1, C2):
        self.beta_LT = beta_LT
        self.Methode = Methode          # = 0 -> interaction factor are calulated following the Kidmann method | =/ 0 -> following EC3
        self.C1 = C1
        self.C2 = C2

class Resultat: 
    def __init__(self, G, N_Rd, My_Rd, Mz_Rd, Ncr_y, Ncr_z, lambda_Ky, lambda_Kz, chi_y, chi_z, Ncr_LT, Ncr_T, lambda_K_LT, chi_LT, Mcr, Moment_critique, Cmy, Cmz, CmLT, kyy, kyz, kzy, kzz, tau_Y, tau_Z):
        self.G = G
        self.N_Rd = N_Rd
        self.My_Rd = My_Rd
        self.Mz_Rd = Mz_Rd
        self.Ncr_y = Ncr_y
        self.Ncr_z = Ncr_z
        self.lambda_Ky = lambda_Ky
        self.lambda_Kz = lambda_Kz
        self.chi_y = chi_y
        self.chi_z = chi_z
        self.Ncr_LT = Ncr_LT
        self.Ncr_T = Ncr_T
        self.lambda_K_LT = lambda_K_LT
        self.chi_LT = chi_LT
        self.Mcr = Mcr
        self.Moment_critique = Moment_critique
        self.Cmy = Cmy
        self.Cmz = Cmz
        self.CmLT = CmLT
        self.kyy = kyy
        self.kyz = kyz
        self.kzy = kzy
        self.kzz = kzz
        self.tau_Y = tau_Y
        self.tau_Z = tau_Z