/*************************************************************** File: 2ds.c - 2-Dimensional Stress Equation Desc: Given any two orthogonal stesses, åx and åy and the shear stress, çxy, the stress transformation is calculated to give the maximum and minimum principal stresses. The rotation of the stress element from the +x-axis to å1 or å2 is also calculated. CCW is assumed to be positive for this angle (í) and for shear directions. The maximum shear stress is correctly calculated from the triaxial stress state. David Edwards, 2-25-2006 ***************************************************************/ #include <stdio.h> #include <math.h> #include <mathext.h> #include <conio.h> void input (char *str, int *addr) { printf(str); scanf("%lf", addr); } main() { double sx,sy,tauxy,sa,sb,phi,s1,s2,s3,sp,tau1,taumax,save; input("\n Tensile Stress, åx [ksi]: ",&sx); input(" Tensile Stress, åy [ksi]: ",&sy); input(" Shear Stress, çxy [ksi]: ",&tauxy); rpc(.5*(sx-sy),tauxy,&tau1,&phi); save=.5*(sx+sy); sa=save+tau1; sb=save-tau1; if (sa >= 0.0) { if (sb >= 0.0) { s1=sa; s2=sb; s3=0.0; taumax=fabs(.5*s1); } else { s1=sa; s2=0.0; s3=sb; taumax=fabs(.5*(s1-s3)); } printf("\n Angle from the +x-axis to å1 (principal direction)" " [deg]: %6.1lf\n",phi*90.0/M_PI); } else { s1=0.0; s2=sa; s3=sb; taumax=fabs(.5*s3); printf("\n Angle from the +x-axis to å2 (principal direction)" " [deg]: %6.1lf\n",phi*90.0/M_PI); } sp=sqrt(sa*sa-sa*sb+sb*sb); printf("\n Maximum principal stress, å1 [ksi]: %10.2lf\n",s1); printf(" Intermediate principal stress, å2 [ksi]: %10.2lf\n",s2); printf(" Minimum principal stress, å3 [ksi]: %10.2lf\n",s3); printf("\n Maximum shear stress, çmax [ksi]: %10.2lf\n",taumax); printf("\n von Mises stress, å' [ksi]: %10.2lf\n",sp); }