composites

Augmented Reality Design Optimization for composite structures
Log | Files | Refs | README | LICENSE

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 */