------------------------------------------------------------
revno: 1506
committer: Anders Logg <logg@xxxxxxxxx>
branch nick: ffc-dev
timestamp: Thu 2010-01-21 17:15:59 +0100
message:
Bug fix in MixedElement. Quite a few more cases compile now.
Needed to comment out evaluate_basis_derivatives to avoid error
message when compiling Stokes.ufl.
modified:
ffc/analysis.py
ffc/codegeneration.py
ffc/mixedelement.py
--
lp:~ffc-core/ffc/dev
https://code.launchpad.net/~ffc-core/ffc/dev
You are subscribed to branch lp:~ffc-core/ffc/dev.
To unsubscribe from this branch go to https://code.launchpad.net/~ffc-core/ffc/dev/+edit-subscription.
=== modified file 'ffc/analysis.py'
--- ffc/analysis.py 2010-01-21 10:25:42 +0000
+++ ffc/analysis.py 2010-01-21 16:15:59 +0000
@@ -12,7 +12,7 @@
__copyright__ = "Copyright (C) 2007-2010 " + __author__
__license__ = "GNU GPL version 3 or any later version"
-# Last changed: 2009-01-21
+# Last changed: 2010-01-21
# UFL modules
from ufl.common import istr
@@ -44,7 +44,7 @@
unique_elements = []
element_map = {}
for (form, form_data) in form_and_data:
- for element in form_data.unique_elements + form_data.unique_sub_elements:
+ for element in form_data.unique_sub_elements:
if not element in element_map:
element_map[element] = len(unique_elements)
unique_elements.append(element)
@@ -58,6 +58,8 @@
# Empty form and data
form_and_data = []
+ # FIXME: This looks unecessarily complex
+
# Extract unique elements
unique_elements = []
element_map = {}
=== modified file 'ffc/codegeneration.py'
--- ffc/codegeneration.py 2010-01-20 21:27:24 +0000
+++ ffc/codegeneration.py 2010-01-21 16:15:59 +0000
@@ -11,7 +11,7 @@
__copyright__ = "Copyright (C) 2009 " + __author__
__license__ = "GNU GPL version 3 or any later version"
-# Last changed: 2010-01-19
+# Last changed: 2010-01-21
# FFC modules
from ffc.log import info, begin, end, debug_code
@@ -83,7 +83,7 @@
code["value_dimension"] = _value_dimension(ir["value_dimension"])
code["evaluate_basis"] = _evaluate_basis(ir["evaluate_basis"])
code["evaluate_basis_all"] = _evaluate_basis_all(ir["evaluate_basis"])
- code["evaluate_basis_derivatives"] = _evaluate_basis_derivatives(ir["evaluate_basis"])
+ code["evaluate_basis_derivatives"] = not_implemented #_evaluate_basis_derivatives(ir["evaluate_basis"])
code["evaluate_basis_derivatives_all"] = _evaluate_basis_derivatives_all(ir["evaluate_basis"])
code["evaluate_dof"] = evaluate_dof(ir["evaluate_dof"])
code["evaluate_dofs"] = evaluate_dofs(ir["evaluate_dofs"])
=== modified file 'ffc/mixedelement.py'
--- ffc/mixedelement.py 2010-01-14 20:01:40 +0000
+++ ffc/mixedelement.py 2010-01-21 16:15:59 +0000
@@ -6,7 +6,7 @@
# Modified by Marie E. Rognes (meg@xxxxxxxxx) 2007--2010
# Modified by Kristian B. Oelgaard 2009
-# Last changed: 2010-01-14
+# Last changed: 2010-01-21
# Python modules
import numpy
@@ -70,12 +70,17 @@
table_shape = (self.space_dimension(), self.num_components(), len(points))
zeros = numpy.zeros(table_shape)
+ print "shape =", table_shape
+
# Iterate over elements and fill in non-zero values
irange = (0, 0)
crange = (0, 0)
mixed_table = {}
for element in self._elements:
+ print element
+ print order
+
# Tabulate element
table = element.tabulate(order, points)
@@ -83,15 +88,23 @@
irange = (irange[1], irange[1] + element.space_dimension())
crange = (crange[1], crange[1] + _num_components(element))
+ print "irange =", irange
+ print "crange =", crange
+
# Insert table into mixed table
for dtuple in table.keys():
+ print "shape =", numpy.shape(table[dtuple])
+
# Insert zeros if necessary (should only happen first time)
if not dtuple in mixed_table:
mixed_table[dtuple] = zeros
# Insert non-zero values
- mixed_table[dtuple][irange[0]:irange[1], crange[0]:crange[1]] = table[dtuple]
+ if (crange[1] - crange[0]) > 1:
+ mixed_table[dtuple][irange[0]:irange[1], crange[0]:crange[1]] = table[dtuple]
+ else:
+ mixed_table[dtuple][irange[0]:irange[1], crange[0]] = table[dtuple]
return mixed_table