@@ -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
4345def 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
6367def 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
0 commit comments