Skip to content

Commit 1ebf6b2

Browse files
committed
Stable order of operations
1 parent c7aa543 commit 1ebf6b2

1 file changed

Lines changed: 16 additions & 16 deletions

File tree

FIAT/expansions.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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):
243243
def 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

251251
def 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

Comments
 (0)