clt.h (2925B)
1 #define MAX_LAYERS 100 /* Assume a maximum number of layers for simplicity */ 2 #define MAX_MODE_LENGTH 10 3 #define NELEMS(x) (sizeof(x) / sizeof((x)[0])) 4 #define N 6 // Example for a 6x6 matrix, adjust for your needs 5 6 static int i, j, k; 7 8 /* Custom error for laminate layup issues */ 9 typedef struct { 10 char *message; 11 } LaminateLayupError; 12 13 typedef struct { 14 double *stress_inf, *stress_sup, *strain_inf, *strain_sup; 15 } StressStrainResult; 16 17 typedef struct { 18 double fs; 19 char *mode; 20 } FailureResult; 21 22 typedef struct { 23 char mode[MAX_MODE_LENGTH]; 24 double fs; 25 } FSResult; 26 27 /*void calc_stressCLT(MaterialProperties *mat_list, Laminate *lam, */ 28 /* double F[6], int *fail_list, double dT, double dM);*/ 29 void assemble_Z(double *Z, Laminate *lam, bool debugZ); 30 void calc_thermal_forces(double *Nt, MaterialProperties *mat_list, 31 Laminate *lam, double *Z, int *fail_list, double dT); 32 void calc_moisture_forces(double *Nm, MaterialProperties *mat_list, 33 Laminate *lam, double *Z, int *fail_list, double dM); 34 void assemble_Q(double Q[3][3], MaterialProperties *mat_prop); 35 void assemble_T(double T[3][3], double angle); 36 void assemble_ABD(double ABD[6][6], MaterialProperties *mat_list, 37 Laminate *lam, double *Z, bool debugABD); 38 void fs_hashin_2D(MaterialProperties *mat_prop, double sig1, double sig2, 39 double tau, FSResult *result); 40 void hashin_2D(MaterialProperties *mat_list, Laminate *lam, 41 double **stress_inf, double **stress_sup, 42 FSResult *fs_inf, FSResult *fs_sup); 43 void fs_tsaiwu_2D(MaterialProperties *mat_prop, 44 double sig1, double sig2, double tau, 45 FSResult *result); 46 void tsaiwu_2D(MaterialProperties *mat_list, Laminate *lam, 47 double **stress_inf, double **stress_sup, 48 FSResult *fs_inf, FSResult *fs_sup); 49 void fs_maxstress_2D(MaterialProperties *mat_prop, double sig1, double sig2, 50 double tau, FSResult *result); 51 void maxstress_2D(MaterialProperties *mat_list, Laminate *lam, 52 double **stress_inf, double **stress_sup, 53 FSResult *fs_inf, FSResult *fs_sup); 54 double E_x(double ABD[6][6], double h); 55 void E_y(double ABD[6][6], double h, double Ey); 56 double G_xy(double ABD[6][6], double h); 57 double nu_xy(double ABD[6][6], double h); 58 double nu_yx(double ABD[6][6], double h); 59 void print_lcs_mcs(int num_layers, 60 double LS_strain_inf[3][MAX_LAYERS], 61 double LS_strain_sup[3][MAX_LAYERS], 62 double MS_strain_sup[3][MAX_LAYERS], 63 double MS_strain_inf[3][MAX_LAYERS], 64 double MS_stress_sup[3][MAX_LAYERS], 65 double MS_stress_inf[3][MAX_LAYERS]); 66 void print_equivalent_properties(double ABD[6][6], double h); 67 /* ADD FUNCTION TO COMPUTE THE PRINCIPAL STRESS/STRAIN FOR EACH PLY */