@@ -96,7 +96,7 @@ def dubiner_recurrence(dim, n, order, ref_pts, Jinv, scale, variant=None):
9696 for k in range (order + 1 )]
9797
9898 phi , dphi , ddphi = results + [None ] * (2 - order )
99- phi [0 ] + = scale
99+ phi [0 ] = scale
100100 if dim == 0 or n == 0 :
101101 return results
102102 if dim > 3 or dim < 0 :
@@ -129,12 +129,12 @@ def dubiner_recurrence(dim, n, order, ref_pts, Jinv, scale, variant=None):
129129 phi [inext ] = fcur * phi [icur ]
130130 if dphi is not None :
131131 dfcur = a * dfa - b * dfb
132- dphi [inext ] = fcur * dphi [icur ]
133- dphi [inext ] += phi [ icur ] * dfcur
132+ dphi [inext ] = phi [icur ] * dfcur
133+ dphi [inext ] += fcur * dphi [ icur ]
134134 if ddphi is not None :
135- ddphi [inext ] = fcur * ddphi [icur ]
135+ ddphi [inext ] = outer ( dphi [icur ], dfcur )
136136 ddphi [inext ] += outer (dfcur , dphi [icur ])
137- ddphi [inext ] += outer ( dphi [icur ], dfcur )
137+ ddphi [inext ] += fcur * ddphi [icur ]
138138
139139 # general i by recurrence
140140 for i in range (1 , n - sum (sub_index )):
@@ -150,21 +150,21 @@ def dubiner_recurrence(dim, n, order, ref_pts, Jinv, scale, variant=None):
150150
151151 dfcur = a * dfa - b * dfb
152152 dfprev = - c * dfc
153- dphi [inext ] = fcur * dphi [icur ]
154- dphi [inext ] += phi [icur ] * dfcur
155- dphi [inext ] += fprev * dphi [iprev ]
153+ dphi [inext ] = phi [icur ] * dfcur
156154 dphi [inext ] += phi [iprev ] * dfprev
155+ dphi [inext ] += fcur * dphi [icur ]
156+ dphi [inext ] += fprev * dphi [iprev ]
157157 if ddphi is None :
158158 continue
159159
160160 ddfprev = - c * ddfc
161- ddphi [inext ] = fcur * ddphi [icur ]
162- ddphi [inext ] += outer (dfcur , dphi [icur ])
161+ ddphi [inext ] = phi [iprev ] * ddfprev
163162 ddphi [inext ] += outer (dphi [icur ], dfcur )
164- ddphi [inext ] += fprev * ddphi [iprev ]
165- ddphi [inext ] += outer (dfprev , dphi [iprev ])
163+ ddphi [inext ] += outer (dfcur , dphi [icur ])
166164 ddphi [inext ] += outer (dphi [iprev ], dfprev )
167- ddphi [inext ] += phi [iprev ] * ddfprev
165+ ddphi [inext ] += outer (dfprev , dphi [iprev ])
166+ ddphi [inext ] += fcur * ddphi [icur ]
167+ ddphi [inext ] += fprev * ddphi [iprev ]
168168
169169 # normalize
170170 d = codim + 1
@@ -243,17 +243,17 @@ def C0_basis(dim, n, tabulations):
243243def xi_triangle (eta ):
244244 """Maps from [-1,1]^2 to the (-1,1) reference triangle."""
245245 eta1 , eta2 = eta
246- xi1 = - 0.5 * (eta1 + 1.0 ) * (eta2 - 1.0 ) - 1.0
246+ xi1 = 0.5 * (1.0 + eta1 ) * (1.0 - eta2 ) - 1.0
247247 xi2 = eta2
248248 return (xi1 , xi2 )
249249
250250
251251def xi_tetrahedron (eta ):
252252 """Maps from [-1,1]^3 to the -1/1 reference tetrahedron."""
253253 eta1 , eta2 , eta3 = eta
254+ xi1 = 0.25 * (1. + eta1 ) * (1. - eta2 ) * (1. - eta3 ) - 1.
255+ xi2 = 0.5 * (1. + eta2 ) * (1. - eta3 ) - 1.
254256 xi3 = eta3
255- xi2 = - 0.5 * (eta2 + 1.0 ) * (eta3 - 1.0 ) - 1.0
256- xi1 = 0.25 * (eta1 + 1.0 ) * (eta2 - 1.0 ) * (eta3 - 1.0 ) - 1.0
257257 return xi1 , xi2 , xi3
258258
259259
0 commit comments