Skip to content

Commit d74d923

Browse files
committed
added anchors
1 parent e48740d commit d74d923

3 files changed

Lines changed: 11 additions & 1 deletion

File tree

8_self_friction/BarrierEnergy.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ def compute_mu_lambda(x, n, o, bp, be, contact_area, mu):
147147
if d < dhat:
148148
s = d / dhat
149149
mu_lambda[i] = mu * -contact_area[i] * dhat * (kappa / 2 * (math.log(s) / dhat + (s - 1) / d))
150+
# ANCHOR: fric_precomp
150151
# self-contact
151152
mu_lambda_self = []
152153
dhat_sqr = dhat * dhat
@@ -161,4 +162,5 @@ def compute_mu_lambda(x, n, o, bp, be, contact_area, mu):
161162
mu_lam = mu * -0.5 * contact_area[xI] * dhat * (kappa / 8 * (math.log(s) / dhat_sqr + (s - 1) / d_sqr)) * 2 * math.sqrt(d_sqr)
162163
[n, r] = PE.tangent(x[xI], x[eI[0]], x[eI[1]]) # normal and closest point parameterization on the edge
163164
mu_lambda_self.append([xI, eI[0], eI[1], mu_lam, n, r])
165+
# ANCHOR_END: fric_precomp
164166
return [mu_lambda, mu_lambda_self]

8_self_friction/FrictionEnergy.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,15 @@ def val(v, mu_lambda, mu_lambda_self, hhat, n):
3131
if mu_lambda[i] > 0:
3232
vbar = np.transpose(T).dot(v[i])
3333
sum += mu_lambda[i] * f0(np.linalg.norm(vbar), epsv, hhat)
34+
# ANCHOR: val
3435
# self-contact:
3536
for i in range(0, len(mu_lambda_self)):
3637
[xI, eI0, eI1, mu_lam, n, r] = mu_lambda_self[i]
3738
T = np.identity(2) - np.outer(n, n)
3839
rel_v = v[xI] - ((1 - r) * v[eI0] + r * v[eI1])
3940
vbar = np.transpose(T).dot(rel_v)
4041
sum += mu_lam * f0(np.linalg.norm(vbar), epsv, hhat)
42+
# ANCHOR_END: val
4143
return sum
4244

4345
def grad(v, mu_lambda, mu_lambda_self, hhat, n):
@@ -48,6 +50,7 @@ def grad(v, mu_lambda, mu_lambda_self, hhat, n):
4850
if mu_lambda[i] > 0:
4951
vbar = np.transpose(T).dot(v[i])
5052
g[i] = mu_lambda[i] * f1_div_vbarnorm(np.linalg.norm(vbar), epsv) * T.dot(vbar)
53+
# ANCHOR: grad
5154
# self-contact:
5255
for i in range(0, len(mu_lambda_self)):
5356
[xI, eI0, eI1, mu_lam, n, r] = mu_lambda_self[i]
@@ -58,6 +61,7 @@ def grad(v, mu_lambda, mu_lambda_self, hhat, n):
5861
g[xI] += g_rel_v
5962
g[eI0] += g_rel_v * -(1 - r)
6063
g[eI1] += g_rel_v * -r
64+
# ANCHOR_END: grad
6165
return g
6266

6367
def hess(v, mu_lambda, mu_lambda_self, hhat, n):
@@ -77,6 +81,7 @@ def hess(v, mu_lambda, mu_lambda_self, hhat, n):
7781
IJV[0].append(i * 2 + r)
7882
IJV[1].append(i * 2 + c)
7983
IJV[2] = np.append(IJV[2], local_hess[r, c])
84+
# ANCHOR: hess
8085
# self-contact:
8186
for i in range(0, len(mu_lambda_self)):
8287
[xI, eI0, eI1, mu_lam, n, r] = mu_lambda_self[i]
@@ -97,4 +102,5 @@ def hess(v, mu_lambda, mu_lambda_self, hhat, n):
97102
IJV[0].append(index[nI] * 2 + r)
98103
IJV[1].append(index[nJ] * 2 + c)
99104
IJV[2] = np.append(IJV[2], d_rel_v_dv[nI] * d_rel_v_dv[nJ] * hess_rel_v[r, c])
105+
# ANCHOR_END: hess
100106
return IJV

8_self_friction/distance/PointEdgeDistance.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ def hess(p, e0, e1):
4747
else: # point(p)-line(e0e1) expression
4848
return PL.hess(p, e0, e1)
4949

50+
# ANCHOR: tangent
5051
# compute normal and the parameterization of the closest point on the edge
5152
def tangent(p, e0, e1):
5253
e = e1 - e0
@@ -57,4 +58,5 @@ def tangent(p, e0, e1):
5758
n = p - e1
5859
else: # point(p)-line(e0e1) expression
5960
n = p - ((1 - ratio) * e0 + ratio * e1)
60-
return [n / np.linalg.norm(n), ratio]
61+
return [n / np.linalg.norm(n), ratio]
62+
# ANCHOR_END: tangent

0 commit comments

Comments
 (0)