12def sdf(delta_t, t, x, y, z, tx, ty, tz, block_id):
13 return list_indenters[0].sDF(x,y,z)
16def grad_sdf(delta_t, t, x, y, z, tx, ty, tz, block_id):
17 return list_indenters[0].gradSdf(x,y,z)
20def hess_sdf(delta_t, t, x, y, z, tx, ty, tz, block_id):
21 return list_indenters[0].hessSdf(x,y,z)
27 def sDF(self, x, y, z):
28 return np.ones_like(x)
30 def gradSdf(self,x, y,z):
31 zeros = np.zeros_like(x)
32 zeros = zeros.reshape((-1,1))
34 grad_array = np.hstack([zeros, zeros, zeros])
37 def hessSdf(self,x, y,z):
38 zeros = np.zeros_like(x)
39 zeros = zeros.reshape((-1,1))
41 hess_array = np.hstack([zeros, zeros, zeros, zeros, zeros, zeros])
47 def __init__(self,Xc,Yc,Zc,shift):
62 def sDF(self, x, y, z):
63 return np.subtract(y,self.shift)
65 def gradSdf(self,x, y,z):
69 dx = dx.reshape((-1,1))
70 dy = dy.reshape((-1,1))
71 dz = dz.reshape((-1,1))
72 grad_array = np.hstack([dx, dy, dz])
75 def hessSdf(self,x, y,z):
76 zeros = np.zeros_like(x)
77 zeros = zeros.reshape((-1,1))
79 hess_array = np.hstack([zeros, zeros, zeros, zeros, zeros, zeros])
85 def __init__(self, Xc, Yc, Zc, diameter):
97 self.radius = diameter/2
99 def sDF(self, x, y, z):
100 a = (x-self.xc)**2 + (y-self.yc)**2
101 gap = np.sqrt(a)-self.radius
103 self.normal = self.gradSdf(x,y,z)
104 self.dNormal = self.hessSdf(x,y,z)
108 def gradSdf(self, x, y, z):
109 a = (x-self.xc)**2 + (y-self.yc)**2
112 c_val_dx = c_val_A * (x-self.xc)
113 c_val_dy = c_val_A * (y-self.yc)
114 c_val_dz = np.zeros_like(c_val_dy)
116 c_val_dx = c_val_dx.reshape((-1,1))
117 c_val_dy = c_val_dy.reshape((-1,1))
118 c_val_dz = c_val_dz.reshape((-1,1))
119 grad_array = np.hstack([c_val_dx,c_val_dy,c_val_dz])
122 def hessSdf(self, x, y, z):
123 a = (x-self.xc)**2 + (y-self.yc)**2
126 c_val_B = 1./(a**(3./2.))
127 Hxx = c_val_A - c_val_B * (x-self.xc)**2
128 Hxy = -c_val_B * (x-self.xc)*(y-self.yc)
129 Hyy = c_val_A - c_val_B * (y-self.yc)**2
131 Hxx = Hxx.reshape((-1,1))
132 Hzx = np.zeros_like(Hxx)
133 Hxy = Hxy.reshape((-1,1))
134 Hyy = Hyy.reshape((-1,1))
135 Hzy = np.zeros_like(Hxx)
136 Hzz = np.zeros_like(Hxx)
137 hess_array = np.hstack([Hxx, Hxy, Hzx, Hyy, Hzy, Hzz])
142 def __init__(self, Xc, Yc, Zc, diameter):
154 self.radius = diameter/2
156 def sDF(self, x, y, z):
157 dx = np.subtract(x, self.xc)
158 dy = np.subtract(y, self.yc)
159 dz = np.subtract(z, self.zc)
160 a = (dx)**2+(dy)**2 + (dz)**2
161 gap = np.sqrt(a) - self.radius
165 def gradSdf(self,x, y, z):
166 a = (x-self.xc)**2 + (y-self.yc)**2 + (z-self.zc)**2
169 c_val_dx = c_val_A * (x-self.xc)
170 c_val_dy = c_val_A * (y-self.yc)
171 c_val_dz = c_val_A * (z-self.zc)
175 c_val_dx = c_val_dx.reshape((-1,1))
176 c_val_dy = c_val_dy.reshape((-1,1))
177 c_val_dz = c_val_dz.reshape((-1,1))
178 grad_array = np.hstack([c_val_dx,c_val_dy,c_val_dz])
181 def hessSdf(self,x, y, z):
185 Hxx = -x**2/(x**2 + y**2 + z**2)**(3/2) + 1/np.sqrt(x**2 + y**2 + z**2)
186 Hzx = -x*z/(x**2 + y**2 + z**2)**(3/2)
187 Hxy = -x*y/(x**2 + y**2 + z**2)**(3/2)
188 Hyy = -y**2/(x**2 + y**2 + z**2)**(3/2) + 1/np.sqrt(x**2 + y**2 + z**2)
189 Hzy = -y*z/(x**2 + y**2 + z**2)**(3/2)
190 Hzz = -z**2/(x**2 + y**2 + z**2)**(3/2) + 1/np.sqrt(x**2 + y**2 + z**2)
192 Hxx = Hxx.reshape((-1,1))
193 Hzx = Hzx.reshape((-1,1))
194 Hxy = Hxy.reshape((-1,1))
195 Hyy = Hyy.reshape((-1,1))
196 Hzy = Hzy.reshape((-1,1))
197 Hzz = Hzz.reshape((-1,1))
198 hess_array = np.hstack([Hxx, Hxy, Hzx, Hyy, Hzy, Hzz])
208list_indenters.append(NoIndenter())