@@ -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
3939def 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