In [1]:
from SVG_beam import beam, adjust_viewbox
from SVG_lib import point, Line
from New_Spline import Spline, control_points, intercept
from CurveManip import rotate, mirror
from numpy import sqrt
from collections import namedtuple
from numpy import array
In [2]:
class bending_failure(beam):
def __init__(self):
super(bending_failure,self).__init__()
self.cracks = 0
def crack(self):
cL = self.centerline
coef = cL.Coefficients()
PI = intercept(cL.P0,cL.P3,coef)
t = self.thickness
X = array([0,-12,10,-12,18,-20,6,-12,18,-20,0])
Y = array([0,-4,-8,-12,-16,-20,-24,-28,-32,-36,-40,-44])
self.max_cracks = len(X)
if self.cracks>self.max_cracks-1:
self.cracks = self.max_cracks-1
xi,yi=PI
yi += t/2
mC = list(zip(X+xi,Y+yi))
points = list(zip(mC[:-1],mC[1:]))
self.splits = []
for line in range(self.cracks):
P0,P1 = points[line]
self.splits.append(Line(list(P0),list(P1)))
bb = bending_failure()
In [3]:
bb
Out[3]:
In [4]:
bb.sag = 30
bb.show_center_line=False
bb.display_points=False
bb.cracks=12
bb.crack()
bb
Out[4]:
In [5]:
bb.sag = 30
bb.cracks=0
bb.crack()
corners = bb.get_corners()
S = bb.support_points()
bb
Out[5]:
In [6]:
bb.manual_viewbox=True
for i in range(15):
bb.sag = i*2
adjust_viewbox(corners, S, bb)
bb.save('./Bending_failure/beam')
bb
Out[6]:
In [7]:
from numpy import floor
for i in range(22):
bb.cracks = int(floor((i+1)/2))
bb.crack()
adjust_viewbox(corners, S, bb)
bb.save('./Bending_failure/beam')
bb
Out[7]:
In [8]:
bb.cracks
Out[8]:
In [9]:
bb.max_cracks
Out[9]:
In [ ]: