設計 圧縮材のせん断と引張に対する安全率
Safety Factor for Shear Strength and Tensile Strength
The definitions of symbols are shown below in this discussion considering compression members such as concrete or rock material.
cohesion of material | |
internal friction angle of material | |
uniaxial tensile strength of material (positive value) | |
first principal stress | |
second principal stress |
Referring above figure, following distances on - plane can be defined.
From above, the safety factors for shear strength and for tensile strength can be defined as follows, generally.
Next, a special case is considered. Since there is the following relationship which can be understood from a figure shown above, the safety factors should be defined for a case of .
In this case, the safety factors for each strength will be defined as follows.
Finally, the minimum safety factor can be obtained as follow.
作図プログラム
import numpy as np import matplotlib.pyplot as plt # global variables sigt=3 sigc=-8 phi=np.arcsin((np.abs(sigc)-sigt)/(np.abs(sigc)+sigt)) cc=np.abs(sigc)*sigt/(np.abs(sigc)+sigt)/np.cos(phi) aa=cc/np.tan(phi) ps1=0.2*sigc ps2=0.9*sigc def barrow(x1,y1,x2,y2,ss,dd,ii): # (x1,y1),(x2,y2):両矢印始点と終点 # 両矢印始点と終点座標は文字列の傾きを考慮して決定する # ss:描画文字列 # dd:文字列中央の寸法線からの距離 # ii:1なら寸法線の上側,2なら寸法線の下側にテキストを描画 col='#333333' arst='<->,head_width=3,head_length=10' aprop=dict(arrowstyle=arst,connectionstyle='arc3',facecolor=col,edgecolor=col,shrinkA=0,shrinkB=0,lw=1) plt.annotate('', xy=(x1,y1), xycoords='data', xytext=(x2,y2), textcoords='data', fontsize=0, arrowprops=aprop) al=np.sqrt((x2-x1)**2+(y2-y1)**2) cs=(x2-x1)/al sn=(y2-y1)/al rt=np.degrees(np.arccos(cs)) if y2-y1<0: rt=-rt if ii==1: xs=0.5*(x1+x2)-dd*sn ys=0.5*(y1+y2)+dd*cs plt.text(xs,ys,ss,ha='center',va='center',rotation=rt) else: xs=0.5*(x1+x2)+dd*sn ys=0.5*(y1+y2)-dd*cs plt.text(xs,ys,ss,ha='center',va='center',rotation=rt) def draw_axes(xmin,xmax,ymin,ymax): # 座標軸描画 col='#000000' arst='<|-,head_width=0.3,head_length=0.5' aprop=dict(arrowstyle=arst,connectionstyle='arc3',facecolor=col,edgecolor=col,lw=1) plt.annotate(r'$\sigma$', xy=(xmin,0), xycoords='data', xytext=(xmax,0), textcoords='data', fontsize=20, ha='left',va='center', arrowprops=aprop) plt.annotate(r'$\tau$', xy=(0,0), xycoords='data', xytext=(0,ymax), textcoords='data', fontsize=20, ha='center',va='bottom', arrowprops=aprop) def drawfig(xmin,xmax,ymin,ymax,fsz): # x-y axses draw_axes(xmin,xmax,0,ymax) # failure criterion x1=sigt ; y1=0 x2=sigt ; y2=cc-x2*np.tan(phi) x3=sigc ; y3=cc-x3*np.tan(phi) plt.plot([x1,x2,x3],[y1,y2,y3],'-',color='#ff0000',lw=3) xs=0.5*sigc; ys=cc-xs*np.tan(phi) strs="Mohr-Coulomb's Failure Criteria\n$\\tau=c-\sigma\cdot\\tan{\phi}$" plt.text(xs,ys+0.08*(ymax),strs,ha='center',va='center',rotation=-np.degrees(phi),fontsize=fsz-4) theta=np.linspace(np.pi-phi,np.pi,20,endpoint=True) r1=0.07*(xmax-xmin) x=r1*np.cos(theta)+x2 y=r1*np.sin(theta)+y2 plt.plot(x,y,'-',color='#000000',lw=1) r2=r1*0.9 x=r2*np.cos(theta)+x2 y=r2*np.sin(theta)+y2 plt.plot(x,y,'-',color='#000000',lw=1) plt.text(sigt-r1,y2,r'$\phi$',ha='right',va='bottom',color='#000000') plt.plot([0.5*sigt,x2],[y2,y2],'-',color='#000000',lw=1) # Mohr circle theta=np.linspace(0,np.pi,180,endpoint=True) rr=(ps1-ps2)/2 psm=(ps1+ps2)/2 x=rr*np.cos(theta)+psm y=rr*np.sin(theta) plt.plot(x,y,'-',color='#0000ff',lw=2) # points x=np.array([ps2,psm,ps1,sigt]) y=np.array([0,0,0,0]) plt.plot(x,y,'o',color='#000000',clip_on=False) ds=0.01*(ymax) plt.text(ps2-ds,0,r'$\sigma_2$',va='bottom',ha='right',fontsize=fsz) plt.text(psm,-ds,r'$\frac{\sigma_1+\sigma_2}{2}$',va='top',ha='center',fontsize=fsz) plt.text(ps1+ds,0,r'$\sigma_1$',va='bottom',ha='left',fontsize=fsz) plt.text(sigt+ds,0,r'$\sigma_t$',va='bottom',ha='left',fontsize=fsz) plt.plot([0],[cc],'o',color='#000000') plt.text(0.1,cc,r'$c$',va='bottom',ha='left',fontsize=fsz) ds=0.05*(ymax) ddl1=(cc-psm*np.tan(phi))*np.cos(phi) dds1=ddl1-rr ddl2=sigt-psm dds2=sigt-ps1 dds=ds; dx=dds*np.cos(phi); dy=dds*np.sin(phi) x1=psm; y1=0; x2=psm+ddl1*np.sin(phi); y2=ddl1*np.cos(phi); barrow(x1,y1,x2,y2,r'$D_1$',ds,1) x1=psm+rr*np.sin(phi)+dx; y1=rr*np.cos(phi)-dy; x2=x2+dx; y2=y2-dy; barrow(x1,y1,x2,y2,r'$d_1$',ds,2) x1=psm-rr*np.cos(np.radians(20)); y1=rr*np.sin(np.radians(20)); x2=psm; y2=0; barrow(x1,y1,x2,y2,r'$\frac{\sigma_1-\sigma_2}{2}$',ds,1) dy=0.05*(ymax) x1=ps1; y1=-1*dy; x2=sigt; y2=y1; barrow(x1,y1,x2,y2,r'$d_2$',ds,2) x1=psm; y1=-3*dy; x2=sigt; y2=y1; barrow(x1,y1,x2,y2,r'$D_2$',ds,2) def main(): xmin=sigc-1; xmax=aa+1 ymax=cc-xmin*np.tan(phi); ymin=-0.2*ymax fsz=20 # fontsize iw=10 # image width ih=iw*(ymax-ymin)/(xmax-xmin) plt.figure(figsize=(iw,ih),facecolor='w') plt.rcParams['font.size']=fsz plt.rcParams['font.family']='sans-serif' plt.xlim([xmin,xmax]) plt.ylim([ymin,ymax]) plt.axis('off') plt.gca().set_aspect('equal',adjustable='box') drawfig(xmin,xmax,ymin,ymax,fsz) plt.tight_layout() fnameF='fig_mohr2.jpg' plt.savefig(fnameF, dpi=200, bbox_inches="tight", pad_inches=0.1) plt.show() #============== # Execution #============== if __name__ == '__main__': main()