Skip to content

Commit 8f6acc1

Browse files
committed
integration scaling of barrier
1 parent 72db557 commit 8f6acc1

2 files changed

Lines changed: 7 additions & 7 deletions

File tree

self_contact/BarrierEnergy.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def val(x, n, o, bp, be, contact_area):
3333
if d_sqr < dhat_sqr:
3434
s = d_sqr / dhat_sqr
3535
# since d_sqr is used, need to divide by 8 not 2 here for consistency to linear elasticity:
36-
sum += contact_area[xI] * dhat * kappa / 8 * (s - 1) * math.log(s)
36+
sum += 0.5 * contact_area[xI] * dhat * kappa / 8 * (s - 1) * math.log(s)
3737
return sum
3838

3939
def grad(x, n, o, bp, be, contact_area):
@@ -62,7 +62,7 @@ def grad(x, n, o, bp, be, contact_area):
6262
if d_sqr < dhat_sqr:
6363
s = d_sqr / dhat_sqr
6464
# since d_sqr is used, need to divide by 8 not 2 here for consistency to linear elasticity:
65-
local_grad = contact_area[xI] * dhat * (kappa / 8 * (math.log(s) / dhat_sqr + (s - 1) / d_sqr)) * PE.grad(x[xI], x[eI[0]], x[eI[1]])
65+
local_grad = 0.5 * contact_area[xI] * dhat * (kappa / 8 * (math.log(s) / dhat_sqr + (s - 1) / d_sqr)) * PE.grad(x[xI], x[eI[0]], x[eI[1]])
6666
g[xI] += local_grad[0:2]
6767
g[eI[0]] += local_grad[2:4]
6868
g[eI[1]] += local_grad[4:6]
@@ -104,7 +104,7 @@ def hess(x, n, o, bp, be, contact_area):
104104
d_sqr_grad = PE.grad(x[xI], x[eI[0]], x[eI[1]])
105105
s = d_sqr / dhat_sqr
106106
# since d_sqr is used, need to divide by 8 not 2 here for consistency to linear elasticity:
107-
local_hess = contact_area[xI] * dhat * utils.make_PD(kappa / (8 * d_sqr * d_sqr * dhat_sqr) * (d_sqr + dhat_sqr) * np.outer(d_sqr_grad, d_sqr_grad) \
107+
local_hess = 0.5 * contact_area[xI] * dhat * utils.make_PD(kappa / (8 * d_sqr * d_sqr * dhat_sqr) * (d_sqr + dhat_sqr) * np.outer(d_sqr_grad, d_sqr_grad) \
108108
+ (kappa / 8 * (math.log(s) / dhat_sqr + (s - 1) / d_sqr)) * PE.hess(x[xI], x[eI[0]], x[eI[1]]))
109109
index = [xI, eI[0], eI[1]]
110110
for nI in range(0, 3):

self_friction/BarrierEnergy.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def val(x, n, o, bp, be, contact_area):
3333
if d_sqr < dhat_sqr:
3434
s = d_sqr / dhat_sqr
3535
# since d_sqr is used, need to divide by 8 not 2 here for consistency to linear elasticity:
36-
sum += contact_area[xI] * dhat * kappa / 8 * (s - 1) * math.log(s)
36+
sum += 0.5 * contact_area[xI] * dhat * kappa / 8 * (s - 1) * math.log(s)
3737
return sum
3838

3939
def grad(x, n, o, bp, be, contact_area):
@@ -62,7 +62,7 @@ def grad(x, n, o, bp, be, contact_area):
6262
if d_sqr < dhat_sqr:
6363
s = d_sqr / dhat_sqr
6464
# since d_sqr is used, need to divide by 8 not 2 here for consistency to linear elasticity:
65-
local_grad = contact_area[xI] * dhat * (kappa / 8 * (math.log(s) / dhat_sqr + (s - 1) / d_sqr)) * PE.grad(x[xI], x[eI[0]], x[eI[1]])
65+
local_grad = 0.5 * contact_area[xI] * dhat * (kappa / 8 * (math.log(s) / dhat_sqr + (s - 1) / d_sqr)) * PE.grad(x[xI], x[eI[0]], x[eI[1]])
6666
g[xI] += local_grad[0:2]
6767
g[eI[0]] += local_grad[2:4]
6868
g[eI[1]] += local_grad[4:6]
@@ -104,7 +104,7 @@ def hess(x, n, o, bp, be, contact_area):
104104
d_sqr_grad = PE.grad(x[xI], x[eI[0]], x[eI[1]])
105105
s = d_sqr / dhat_sqr
106106
# since d_sqr is used, need to divide by 8 not 2 here for consistency to linear elasticity:
107-
local_hess = contact_area[xI] * dhat * utils.make_PD(kappa / (8 * d_sqr * d_sqr * dhat_sqr) * (d_sqr + dhat_sqr) * np.outer(d_sqr_grad, d_sqr_grad) \
107+
local_hess = 0.5 * contact_area[xI] * dhat * utils.make_PD(kappa / (8 * d_sqr * d_sqr * dhat_sqr) * (d_sqr + dhat_sqr) * np.outer(d_sqr_grad, d_sqr_grad) \
108108
+ (kappa / 8 * (math.log(s) / dhat_sqr + (s - 1) / d_sqr)) * PE.hess(x[xI], x[eI[0]], x[eI[1]]))
109109
index = [xI, eI[0], eI[1]]
110110
for nI in range(0, 3):
@@ -158,7 +158,7 @@ def compute_mu_lambda(x, n, o, bp, be, contact_area, mu):
158158
s = d_sqr / dhat_sqr
159159
# since d_sqr is used, need to divide by 8 not 2 here for consistency to linear elasticity
160160
# also, lambda = -\partial b / \partial d = -(\partial b / \partial d^2) * (\partial d^2 / \partial d)
161-
mu_lam = mu * -contact_area[xI] * dhat * (kappa / 8 * (math.log(s) / dhat_sqr + (s - 1) / d_sqr)) * 2 * math.sqrt(d_sqr)
161+
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)
162162
[n, r] = PE.tangent(x[xI], x[eI[0]], x[eI[1]]) # normal and closest point parameterization on the edge
163163
mu_lambda_self.append([xI, eI[0], eI[1], mu_lam, n, r])
164164
return [mu_lambda, mu_lambda_self]

0 commit comments

Comments
 (0)