In [1]:
from dolfin import *
import numpy as np
import scipy.sparse as sp
import numpy
import matplotlib.pylab as plt
import scipy.io
from scipy2Trilinos import scipy_csr_matrix2CrsMatrix
from PyTrilinos import Epetra, ML, AztecOO, Teuchos
from dolfin import *
import petsc4py, sys
petsc4py.init(sys.argv)
from petsc4py import PETSc
import matplotlib.pylab as plt
import PETScIO as IO
import numpy as np
import scipy.sparse as sparse
import CheckPetsc4py as CP
import scipy.sparse.linalg as sparselin
import scipy as sp
import time

In [2]:
nn = 2**2
mesh = RectangleMesh(0, 0, 1, 1, nn, nn,'left')

order  = 1
Magnetic = FunctionSpace(mesh, "N1curl", order)
Lagrange = FunctionSpace(mesh, "CG", order)
# L= FunctionSpace(mesh, "DG", order-1)

parameters['linear_algebra_backend'] = 'uBLAS'
b0 = Expression(("x[1]*x[1]*(x[1]-1)","x[0]*x[0]*(x[0]-1)"))


DEBUG:UFL:No integrals left after transformation, returning empty form.
DEBUG:FFC:Reusing form from cache.
DEBUG:UFL:No integrals left after transformation, returning empty form.
DEBUG:FFC:Reusing form from cache.

In [3]:
(u) = TrialFunction(Magnetic)
(v) = TestFunction(Magnetic)
(p) = TrialFunction(Lagrange)
(q) = TestFunction(Lagrange)

a = inner(curl(u),curl(v))*dx + inner(u,v)*dx

l = inner(grad(p),grad(q))*dx+inner(p,q)*dx
# u0 = Expression(("sin(2*pi*x[1])*cos(2*pi*x[0])","-sin(2*pi*x[0])*cos(2*pi*x[1])"))
# f = 8*pow(pi,2)*u0+c*u0
CurlCurl = Expression(("-6*x[1]+2","-6*x[0]+2"))+b0
f = CurlCurl
L1  = inner(v, f)*dx

In [4]:
def boundary(x, on_boundary):
    return on_boundary
bc = DirichletBC(Magnetic,b0, boundary)
Mass = assemble(inner(u,v)*dx)
bc.apply(Mass)
Acurl,b = assemble_system(a,L1,bc)
Anode = assemble(l)


DEBUG:UFL:No integrals left after transformation, returning empty form.
DEBUG:UFL:No integrals left after transformation, returning empty form.
DEBUG:FFC:Reusing form from cache.
DEBUG:UFL:No integrals left after transformation, returning empty form.
DEBUG:UFL:No integrals left after transformation, returning empty form.
Calling FFC just-in-time (JIT) compiler, this may take some time.
Level 25:FFC:Calling FFC just-in-time (JIT) compiler, this may take some time.
INFO:FFC:Compiling form ffc_form_34cfbe43aa7a7b19c52f0cee2d6fbcfb0c338975

INFO:FFC:Compiler stage 1: Analyzing form(s)
INFO:FFC:-----------------------------------
INFO:FFC:  
INFO:FFC:  Name:                   ''
  Geometric dimension:    2
  Rank:                   2
  Arguments:              '[v_0, v_1]'
  Argument names:         '[v0, v1]'
  Number of coefficients: 0
  Coefficients:           '[]'
  Coefficient names:      '[]'
  Unique elements:        'N1curl1(?)'
  Unique sub elements:    'N1curl1(?)'
  
INFO:FFC:  Extracting monomial form representation from UFL form
INFO:FFC:  Transforming monomial form to reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Estimated cost of tensor representation: 4
INFO:FFC:  representation:    auto --> quadrature
DEBUG:FFC:  Selecting quadrature degree based on total polynomial degree of integrand: 2
INFO:FFC:  quadrature_degree: auto --> 2
INFO:FFC:  quadrature_rule:   auto --> default
INFO:FFC:  
INFO:FFC:Compiler stage 1 finished in 0.0356131 seconds.

INFO:FFC:Compiler stage 2: Computing intermediate representation
INFO:FFC:-------------------------------------------------------
INFO:FFC:  Computing representation of 1 elements
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of 1 dofmaps
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of integrals
INFO:FFC:  Computing quadrature representation
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  
  QG-utils, psi_tables:
  {3: {VectorElement('Lagrange', Domain(Cell('triangle', 2), label='dolfin_mesh_with_id_0', data='<data with id 0>'), 1, dim=2, quad_scheme=None): {None: {None: {(0, 1): array([[[ -1.00000000e+00,  -1.00000000e+00,  -1.00000000e+00],
          [  0.00000000e+00,   0.00000000e+00,   0.00000000e+00]],
  
         [[  0.00000000e+00,   1.11022302e-16,   1.11022302e-16],
          [  0.00000000e+00,   0.00000000e+00,   0.00000000e+00]],
  
         [[  1.00000000e+00,   1.00000000e+00,   1.00000000e+00],
          [  0.00000000e+00,   0.00000000e+00,   0.00000000e+00]],
  
         [[  0.00000000e+00,   0.00000000e+00,   0.00000000e+00],
          [ -1.00000000e+00,  -1.00000000e+00,  -1.00000000e+00]],
  
         [[  0.00000000e+00,   0.00000000e+00,   0.00000000e+00],
          [  0.00000000e+00,   1.11022302e-16,   1.11022302e-16]],
  
         [[  0.00000000e+00,   0.00000000e+00,   0.00000000e+00],
          [  1.00000000e+00,   1.00000000e+00,   1.00000000e+00]]]), (1, 0): array([[[-1., -1., -1.],
          [ 0.,  0.,  0.]],
  
         [[ 1.,  1.,  1.],
          [ 0.,  0.,  0.]],
  
         [[ 0.,  0.,  0.],
          [ 0.,  0.,  0.]],
  
         [[ 0.,  0.,  0.],
          [-1., -1., -1.]],
  
         [[ 0.,  0.,  0.],
          [ 1.,  1.,  1.]],
  
         [[ 0.,  0.,  0.],
          [ 0.,  0.,  0.]]]), (0, 0): array([[[ 0.66666667,  0.16666667,  0.16666667],
          [ 0.        ,  0.        ,  0.        ]],
  
         [[ 0.16666667,  0.16666667,  0.66666667],
          [ 0.        ,  0.        ,  0.        ]],
  
         [[ 0.16666667,  0.66666667,  0.16666667],
          [ 0.        ,  0.        ,  0.        ]],
  
         [[ 0.        ,  0.        ,  0.        ],
          [ 0.66666667,  0.16666667,  0.16666667]],
  
         [[ 0.        ,  0.        ,  0.        ],
          [ 0.16666667,  0.16666667,  0.66666667]],
  
         [[ 0.        ,  0.        ,  0.        ],
          [ 0.16666667,  0.66666667,  0.16666667]]])}}}, FiniteElement('Nedelec 1st kind H(curl)', Domain(Cell('triangle', 2), label='dolfin_mesh_with_id_0', data='<data with id 0>'), 1, quad_scheme=None): {None: {None: {(0, 1): array([[[-1.0, -1.0, -1.0],
          [2.2204460492503131e-16, 2.2204460492503131e-16,
           2.2204460492503131e-16]],
  
         [[1.0, 1.0, 1.0],
          [-2.7755575615628914e-16, -3.3306690738754696e-16,
           -3.3306690738754696e-16]],
  
         [[-1.0000000000000002, -1.0000000000000002, -1.0000000000000002],
          [2.2204460492503131e-16, 2.7755575615628914e-16,
           2.7755575615628914e-16]]], dtype=object), (1, 0): array([[[0.0, 0.0, 0.0],
          [0.99999999999999989, 0.99999999999999978, 0.99999999999999978]],
  
         [[0.0, 0.0, 0.0],
          [-1.0, -1.0, -1.0]],
  
         [[0.0, 0.0, 0.0],
          [1.0, 1.0, 1.0]]], dtype=object), (0, 0): array([[[-0.16666666666666663, -0.66666666666666652, -0.1666666666666666],
          [0.16666666666666649, 0.1666666666666666, 0.66666666666666641]],
  
         [[0.16666666666666663, 0.66666666666666652, 0.1666666666666666],
          [0.83333333333333326, 0.83333333333333304, 0.3333333333333332]],
  
         [[0.83333333333333348, 0.33333333333333326, 0.83333333333333326],
          [0.16666666666666652, 0.16666666666666657, 0.66666666666666641]]], dtype=object)}}}}}
DEBUG:FFC:  
  QG-utils, psi_tables, flat_tables:
  {'FE0_C1_D01': array([[  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
           -1.00000000e+00,   0.00000000e+00,   1.00000000e+00],
         [  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
           -1.00000000e+00,   1.11022302e-16,   1.00000000e+00],
         [  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
           -1.00000000e+00,   1.11022302e-16,   1.00000000e+00]]), 'FE1_C0': array([[-0.16666666666666663, 0.16666666666666663, 0.83333333333333348],
         [-0.66666666666666652, 0.66666666666666652, 0.33333333333333326],
         [-0.1666666666666666, 0.1666666666666666, 0.83333333333333326]], dtype=object), 'FE1_C1': array([[0.16666666666666649, 0.83333333333333326, 0.16666666666666652],
         [0.1666666666666666, 0.83333333333333304, 0.16666666666666657],
         [0.66666666666666641, 0.3333333333333332, 0.66666666666666641]], dtype=object), 'FE0_C1_D10': array([[ 0.,  0.,  0., -1.,  1.,  0.],
         [ 0.,  0.,  0., -1.,  1.,  0.],
         [ 0.,  0.,  0., -1.,  1.,  0.]]), 'FE1_C1_D10': array([[0.99999999999999989, -1.0, 1.0],
         [0.99999999999999978, -1.0, 1.0],
         [0.99999999999999978, -1.0, 1.0]], dtype=object), 'FE0_C0_D10': array([[-1.,  1.,  0.,  0.,  0.,  0.],
         [-1.,  1.,  0.,  0.,  0.,  0.],
         [-1.,  1.,  0.,  0.,  0.,  0.]]), 'FE0_C0_D01': array([[ -1.00000000e+00,   0.00000000e+00,   1.00000000e+00,
            0.00000000e+00,   0.00000000e+00,   0.00000000e+00],
         [ -1.00000000e+00,   1.11022302e-16,   1.00000000e+00,
            0.00000000e+00,   0.00000000e+00,   0.00000000e+00],
         [ -1.00000000e+00,   1.11022302e-16,   1.00000000e+00,
            0.00000000e+00,   0.00000000e+00,   0.00000000e+00]]), 'FE1_C1_D01': array([[2.2204460492503131e-16, -2.7755575615628914e-16,
          2.2204460492503131e-16],
         [2.2204460492503131e-16, -3.3306690738754696e-16,
          2.7755575615628914e-16],
         [2.2204460492503131e-16, -3.3306690738754696e-16,
          2.7755575615628914e-16]], dtype=object), 'FE1_C0_D01': array([[-1.0, 1.0, -1.0000000000000002],
         [-1.0, 1.0, -1.0000000000000002],
         [-1.0, 1.0, -1.0000000000000002]], dtype=object), 'FE1_C0_D10': array([[0.0, 0.0, 0.0],
         [0.0, 0.0, 0.0],
         [0.0, 0.0, 0.0]], dtype=object), 'FE0_C1': array([[ 0.        ,  0.        ,  0.        ,  0.66666667,  0.16666667,
           0.16666667],
         [ 0.        ,  0.        ,  0.        ,  0.16666667,  0.16666667,
           0.66666667],
         [ 0.        ,  0.        ,  0.        ,  0.16666667,  0.66666667,
           0.16666667]]), 'FE0_C0': array([[ 0.66666667,  0.16666667,  0.16666667,  0.        ,  0.        ,
           0.        ],
         [ 0.16666667,  0.16666667,  0.66666667,  0.        ,  0.        ,
           0.        ],
         [ 0.16666667,  0.66666667,  0.16666667,  0.        ,  0.        ,
           0.        ]])}
DEBUG:FFC:  
  tables: {'FE0_C1_D01': array([[  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
           -1.00000000e+00,   0.00000000e+00,   1.00000000e+00],
         [  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
           -1.00000000e+00,   1.11022302e-16,   1.00000000e+00],
         [  0.00000000e+00,   0.00000000e+00,   0.00000000e+00,
           -1.00000000e+00,   1.11022302e-16,   1.00000000e+00]]), 'FE1_C0': array([[-0.16666666666666663, 0.16666666666666663, 0.83333333333333348],
         [-0.66666666666666652, 0.66666666666666652, 0.33333333333333326],
         [-0.1666666666666666, 0.1666666666666666, 0.83333333333333326]], dtype=object), 'FE1_C1': array([[0.16666666666666649, 0.83333333333333326, 0.16666666666666652],
         [0.1666666666666666, 0.83333333333333304, 0.16666666666666657],
         [0.66666666666666641, 0.3333333333333332, 0.66666666666666641]], dtype=object), 'FE0_C1_D10': array([[ 0.,  0.,  0., -1.,  1.,  0.],
         [ 0.,  0.,  0., -1.,  1.,  0.],
         [ 0.,  0.,  0., -1.,  1.,  0.]]), 'FE1_C1_D10': array([[0.99999999999999989, -1.0, 1.0],
         [0.99999999999999978, -1.0, 1.0],
         [0.99999999999999978, -1.0, 1.0]], dtype=object), 'FE0_C0_D10': array([[-1.,  1.,  0.,  0.,  0.,  0.],
         [-1.,  1.,  0.,  0.,  0.,  0.],
         [-1.,  1.,  0.,  0.,  0.,  0.]]), 'FE0_C0_D01': array([[ -1.00000000e+00,   0.00000000e+00,   1.00000000e+00,
            0.00000000e+00,   0.00000000e+00,   0.00000000e+00],
         [ -1.00000000e+00,   1.11022302e-16,   1.00000000e+00,
            0.00000000e+00,   0.00000000e+00,   0.00000000e+00],
         [ -1.00000000e+00,   1.11022302e-16,   1.00000000e+00,
            0.00000000e+00,   0.00000000e+00,   0.00000000e+00]]), 'FE1_C0_D01': array([[-1.0, 1.0, -1.0000000000000002],
         [-1.0, 1.0, -1.0000000000000002],
         [-1.0, 1.0, -1.0000000000000002]], dtype=object), 'FE1_C0_D10': array([[0.0, 0.0, 0.0],
         [0.0, 0.0, 0.0],
         [0.0, 0.0, 0.0]], dtype=object), 'FE0_C1': array([[ 0.        ,  0.        ,  0.        ,  0.66666667,  0.16666667,
           0.16666667],
         [ 0.        ,  0.        ,  0.        ,  0.16666667,  0.16666667,
           0.66666667],
         [ 0.        ,  0.        ,  0.        ,  0.16666667,  0.66666667,
           0.16666667]]), 'FE0_C0': array([[ 0.66666667,  0.16666667,  0.16666667,  0.        ,  0.        ,
           0.        ],
         [ 0.16666667,  0.16666667,  0.66666667,  0.        ,  0.        ,
           0.        ],
         [ 0.16666667,  0.66666667,  0.16666667,  0.        ,  0.        ,
           0.        ]])}
DEBUG:FFC:  
  name_map: {'FE1_C0_D10': ['FE1_C1_D01']}
DEBUG:FFC:  
  inv_name_map: {'FE0_C1_D01': 'FE0_C1_D01', 'FE1_C0': 'FE1_C0', 'FE1_C1_D01': 'FE1_C0_D10', 'FE0_C1_D10': 'FE0_C1_D10', 'FE1_C1_D10': 'FE1_C1_D10', 'FE0_C0_D10': 'FE0_C0_D10', 'FE0_C0_D01': 'FE0_C0_D01', 'FE1_C1': 'FE1_C1', 'FE1_C0_D01': 'FE1_C0_D01', 'FE1_C0_D10': 'FE1_C0_D10', 'FE0_C1': 'FE0_C1', 'FE0_C0': 'FE0_C0'}
DEBUG:FFC:  
  QG-utils, psi_tables, unique_tables:
  {'FE0_C1_D01': array([[ 0.,  0.,  0., -1.,  0.,  1.],
         [ 0.,  0.,  0., -1.,  0.,  1.],
         [ 0.,  0.,  0., -1.,  0.,  1.]]), 'FE1_C0': array([[-0.16666666666666663, 0.16666666666666663, 0.83333333333333348],
         [-0.66666666666666652, 0.66666666666666652, 0.33333333333333326],
         [-0.1666666666666666, 0.1666666666666666, 0.83333333333333326]], dtype=object), 'FE1_C1': array([[0.16666666666666649, 0.83333333333333326, 0.16666666666666652],
         [0.1666666666666666, 0.83333333333333304, 0.16666666666666657],
         [0.66666666666666641, 0.3333333333333332, 0.66666666666666641]], dtype=object), 'FE0_C1_D10': array([[ 0.,  0.,  0., -1.,  1.,  0.],
         [ 0.,  0.,  0., -1.,  1.,  0.],
         [ 0.,  0.,  0., -1.,  1.,  0.]]), 'FE1_C1_D10': array([[0.99999999999999989, -1.0, 1.0],
         [0.99999999999999978, -1.0, 1.0],
         [0.99999999999999978, -1.0, 1.0]], dtype=object), 'FE0_C0_D10': array([[-1.,  1.,  0.,  0.,  0.,  0.],
         [-1.,  1.,  0.,  0.,  0.,  0.],
         [-1.,  1.,  0.,  0.,  0.,  0.]]), 'FE0_C0_D01': array([[-1.,  0.,  1.,  0.,  0.,  0.],
         [-1.,  0.,  1.,  0.,  0.,  0.],
         [-1.,  0.,  1.,  0.,  0.,  0.]]), 'FE1_C0_D01': array([[-1.0, 1.0, -1.0000000000000002],
         [-1.0, 1.0, -1.0000000000000002],
         [-1.0, 1.0, -1.0000000000000002]], dtype=object), 'FE1_C0_D10': array([[0, 0, 0],
         [0, 0, 0],
         [0, 0, 0]], dtype=object), 'FE0_C1': array([[ 0.        ,  0.        ,  0.        ,  0.66666667,  0.16666667,
           0.16666667],
         [ 0.        ,  0.        ,  0.        ,  0.16666667,  0.16666667,
           0.66666667],
         [ 0.        ,  0.        ,  0.        ,  0.16666667,  0.66666667,
           0.16666667]]), 'FE0_C0': array([[ 0.66666667,  0.16666667,  0.16666667,  0.        ,  0.        ,
           0.        ],
         [ 0.16666667,  0.16666667,  0.66666667,  0.        ,  0.        ,
           0.        ],
         [ 0.16666667,  0.66666667,  0.16666667,  0.        ,  0.        ,
           0.        ]])}
DEBUG:FFC:  
  QG-utils, psi_tables, name_map:
  {'FE0_C1_D01': ('FE0_C1_D01', (), False, False), 'FE1_C0': ('FE1_C0', (), False, False), 'FE1_C1_D01': ('FE1_C0_D10', (), True, False), 'FE0_C1_D10': ('FE0_C1_D10', (), False, False), 'FE1_C1_D10': ('FE1_C1_D10', (), False, False), 'FE0_C0_D10': ('FE0_C0_D10', (), False, False), 'FE0_C0_D01': ('FE0_C0_D01', (), False, False), 'FE1_C1': ('FE1_C1', (), False, False), 'FE1_C0_D01': ('FE1_C0_D01', (), False, False), 'FE1_C0_D10': ('FE1_C0_D10', (), True, False), 'FE0_C1': ('FE0_C1', (), False, False), 'FE0_C0': ('FE0_C0', (), False, False)}
INFO:FFC:  Transforming cell integral
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of forms
INFO:FFC:  
INFO:FFC:Compiler stage 2 finished in 0.10867 seconds.

INFO:FFC:Compiler stage 3: Optimizing intermediate representation
INFO:FFC:--------------------------------------------------------
INFO:FFC:  Skipping optimizations, add -O to optimize
INFO:FFC:  
INFO:FFC:Compiler stage 3 finished in 0.00134706 seconds.

INFO:FFC:Compiler stage 4: Generating code
INFO:FFC:---------------------------------
INFO:FFC:  Generating code for 1 element(s)
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
INFO:FFC:  Generating code for 1 dofmap(s)
INFO:FFC:  Generating code for integrals
DEBUG:FFC:  Removing unused variable: circumradius
DEBUG:FFC:  Removing unused variable: v0v1
DEBUG:FFC:  Removing unused variable: v0v2
DEBUG:FFC:  Removing unused variable: v1v2
DEBUG:FFC:  Removing unused variable: volume
INFO:FFC:  Generating code for forms
INFO:FFC:  
INFO:FFC:Compiler stage 4 finished in 0.085501 seconds.

INFO:FFC:Compiler stage 4.1 finished in 1.00136e-05 seconds.

INFO:FFC:Compiler stage 5: Formatting code
INFO:FFC:---------------------------------
INFO:FFC:  Output written to ./ffc_form_34cfbe43aa7a7b19c52f0cee2d6fbcfb0c338975.h.
INFO:FFC:  
INFO:FFC:Compiler stage 5 finished in 0.010807 seconds.

INFO:FFC:FFC finished in 0.244049 seconds.
DEBUG:FFC:Compiling and linking Python extension module, this may take some time.
INFO:UFL:Adjusting missing element domain to <Domain built from <triangle cell in 2D> with label dolfin_mesh_with_id_0>.
INFO:UFL:Adjusting missing element degree to 1
INFO:UFL:Adjusting missing element domain to <Domain built from <triangle cell in 2D> with label dolfin_mesh_with_id_0>.
INFO:UFL:Adjusting missing element degree to 1
INFO:UFL:Adjusting missing element domain to <Domain built from <triangle cell in 2D> with label dolfin_mesh_with_id_0>.
INFO:UFL:Adjusting missing element degree to 1
INFO:UFL:Adjusting missing element domain to <Domain built from <triangle cell in 2D> with label dolfin_mesh_with_id_0>.
INFO:UFL:Adjusting missing element degree to 1
INFO:UFL:Adjusting missing element domain to <Domain built from <triangle cell in 2D> with label dolfin_mesh_with_id_0>.
INFO:UFL:Adjusting missing element degree to 1
INFO:UFL:Adjusting missing element domain to <Domain built from <triangle cell in 2D> with label dolfin_mesh_with_id_0>.
INFO:UFL:Adjusting missing element degree to 1
DEBUG:UFL:No integrals left after transformation, returning empty form.
Calling FFC just-in-time (JIT) compiler, this may take some time.
Level 25:FFC:Calling FFC just-in-time (JIT) compiler, this may take some time.
INFO:FFC:Compiling form ffc_form_0836b317ed031ff3a0d0ba8dc7e4852c20ecdd96

INFO:FFC:Compiler stage 1: Analyzing form(s)
INFO:FFC:-----------------------------------
INFO:FFC:  
INFO:FFC:  Name:                   ''
  Geometric dimension:    2
  Rank:                   1
  Arguments:              '[v_0]'
  Argument names:         '[v0]'
  Number of coefficients: 2
  Coefficients:           '[f_6, f_7]'
  Coefficient names:      '[w0, w1]'
  Unique elements:        'N1curl1(?), Vector<2 x CG1(?)>'
  Unique sub elements:    'N1curl1(?), Vector<2 x CG1(?)>, CG1(?)'
  
INFO:FFC:  Extracting monomial form representation from UFL form
INFO:FFC:  Transforming monomial form to reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Estimated cost of tensor representation: 2
INFO:FFC:  representation:    auto --> tensor
DEBUG:FFC:  Selecting quadrature degree based on total polynomial degree of integrand: 2
INFO:FFC:  quadrature_degree: auto --> 2
INFO:FFC:  quadrature_rule:   auto --> default
INFO:FFC:  
INFO:FFC:Compiler stage 1 finished in 0.0134139 seconds.

INFO:FFC:Compiler stage 2: Computing intermediate representation
INFO:FFC:-------------------------------------------------------
INFO:FFC:  Computing representation of 3 elements
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of 3 dofmaps
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of integrals
INFO:FFC:  Computing tensor representation
INFO:FFC:  Extracting monomial form representation from UFL form
INFO:FFC:  Transforming monomial form to reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Precomputing integrals on reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  72 entries computed in 0.00266 seconds
DEBUG:FFC:  Shape of reference tensor: (3, 2, 6, 2)
DEBUG:FFC:  Primary multi index:   rank = 1 dims = [3] indices = [[0], [1], [2]]
DEBUG:FFC:  Secondary multi index: rank = 3 dims = [2, 6, 2] indices = [[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [0, 2, 0], [0, 2, 1], [0, 3, 0], [0, 3, 1], [0, 4, 0], [0, 4, 1], [0, 5, 0], [0, 5, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1], [1, 2, 0], [1, 2, 1], [1, 3, 0], [1, 3, 1], [1, 4, 0], [1, 4, 1], [1, 5, 0], [1, 5, 1]]
DEBUG:FFC:  Internal multi index:  rank = 0 dims = [] indices = [[]]
DEBUG:FFC:  Secondary multi index: rank = 3 dims = [2, 6, 2] indices = [[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [0, 2, 0], [0, 2, 1], [0, 3, 0], [0, 3, 1], [0, 4, 0], [0, 4, 1], [0, 5, 0], [0, 5, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1], [1, 2, 0], [1, 2, 1], [1, 3, 0], [1, 3, 1], [1, 4, 0], [1, 4, 1], [1, 5, 0], [1, 5, 1]]
DEBUG:FFC:  External multi index:  rank = 0 dims = [] indices = [[]]
INFO:FFC:  Precomputing integrals on reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  72 entries computed in 0.00458 seconds
DEBUG:FFC:  Shape of reference tensor: (3, 2, 6, 2)
DEBUG:FFC:  Primary multi index:   rank = 1 dims = [3] indices = [[0], [1], [2]]
DEBUG:FFC:  Secondary multi index: rank = 3 dims = [2, 6, 2] indices = [[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [0, 2, 0], [0, 2, 1], [0, 3, 0], [0, 3, 1], [0, 4, 0], [0, 4, 1], [0, 5, 0], [0, 5, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1], [1, 2, 0], [1, 2, 1], [1, 3, 0], [1, 3, 1], [1, 4, 0], [1, 4, 1], [1, 5, 0], [1, 5, 1]]
DEBUG:FFC:  Internal multi index:  rank = 0 dims = [] indices = [[]]
DEBUG:FFC:  Secondary multi index: rank = 3 dims = [2, 6, 2] indices = [[0, 0, 0], [0, 0, 1], [0, 1, 0], [0, 1, 1], [0, 2, 0], [0, 2, 1], [0, 3, 0], [0, 3, 1], [0, 4, 0], [0, 4, 1], [0, 5, 0], [0, 5, 1], [1, 0, 0], [1, 0, 1], [1, 1, 0], [1, 1, 1], [1, 2, 0], [1, 2, 1], [1, 3, 0], [1, 3, 1], [1, 4, 0], [1, 4, 1], [1, 5, 0], [1, 5, 1]]
DEBUG:FFC:  External multi index:  rank = 0 dims = [] indices = [[]]
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of forms
INFO:FFC:  
INFO:FFC:Compiler stage 2 finished in 0.0409482 seconds.

INFO:FFC:Compiler stage 3: Optimizing intermediate representation
INFO:FFC:--------------------------------------------------------
INFO:FFC:  Skipping optimizations, add -O to optimize
INFO:FFC:  
INFO:FFC:Compiler stage 3 finished in 0.00194693 seconds.

INFO:FFC:Compiler stage 4: Generating code
INFO:FFC:---------------------------------
INFO:FFC:  Generating code for 3 element(s)
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
INFO:FFC:  Generating code for 3 dofmap(s)
INFO:FFC:  Generating code for integrals
INFO:FFC:  Generating code for forms
INFO:FFC:  
INFO:FFC:Compiler stage 4 finished in 0.213374 seconds.

INFO:FFC:Compiler stage 4.1 finished in 2.14577e-06 seconds.

INFO:FFC:Compiler stage 5: Formatting code
INFO:FFC:---------------------------------
INFO:FFC:  Output written to ./ffc_form_0836b317ed031ff3a0d0ba8dc7e4852c20ecdd96.h.
INFO:FFC:  
INFO:FFC:Compiler stage 5 finished in 0.009902 seconds.

INFO:FFC:FFC finished in 0.28181 seconds.
DEBUG:FFC:Compiling and linking Python extension module, this may take some time.
DEBUG:UFL:No integrals left after transformation, returning empty form.
DEBUG:UFL:No integrals left after transformation, returning empty form.
Calling FFC just-in-time (JIT) compiler, this may take some time.
Level 25:FFC:Calling FFC just-in-time (JIT) compiler, this may take some time.
INFO:FFC:Compiling form ffc_form_d11293b096b99347df9139f98096c84c5488d444

INFO:FFC:Compiler stage 1: Analyzing form(s)
INFO:FFC:-----------------------------------
INFO:FFC:  
INFO:FFC:  Name:                   ''
  Geometric dimension:    2
  Rank:                   2
  Arguments:              '[v_0, v_1]'
  Argument names:         '[v0, v1]'
  Number of coefficients: 0
  Coefficients:           '[]'
  Coefficient names:      '[]'
  Unique elements:        'CG1(?)'
  Unique sub elements:    'CG1(?)'
  
INFO:FFC:  Extracting monomial form representation from UFL form
INFO:FFC:  Transforming monomial form to reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Estimated cost of tensor representation: 2
INFO:FFC:  representation:    auto --> tensor
DEBUG:FFC:  Selecting quadrature degree based on total polynomial degree of integrand: 2
INFO:FFC:  quadrature_degree: auto --> 2
INFO:FFC:  quadrature_rule:   auto --> default
INFO:FFC:  
INFO:FFC:Compiler stage 1 finished in 0.00766587 seconds.

INFO:FFC:Compiler stage 2: Computing intermediate representation
INFO:FFC:-------------------------------------------------------
INFO:FFC:  Computing representation of 1 elements
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of 1 dofmaps
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of integrals
INFO:FFC:  Computing tensor representation
INFO:FFC:  Extracting monomial form representation from UFL form
INFO:FFC:  Transforming monomial form to reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Precomputing integrals on reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  36 entries computed in 0.0018 seconds
DEBUG:FFC:  Shape of reference tensor: (3, 3, 2, 2)
DEBUG:FFC:  Primary multi index:   rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
DEBUG:FFC:  Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]]
DEBUG:FFC:  Internal multi index:  rank = 0 dims = [] indices = [[]]
DEBUG:FFC:  Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]]
DEBUG:FFC:  External multi index:  rank = 1 dims = [2] indices = [[0], [1]]
INFO:FFC:  Precomputing integrals on reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  9 entries computed in 0.00135 seconds
DEBUG:FFC:  Shape of reference tensor: (3, 3)
DEBUG:FFC:  Primary multi index:   rank = 2 dims = [3, 3] indices = [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
DEBUG:FFC:  Secondary multi index: rank = 0 dims = [] indices = [[]]
DEBUG:FFC:  Internal multi index:  rank = 0 dims = [] indices = [[]]
DEBUG:FFC:  Secondary multi index: rank = 0 dims = [] indices = [[]]
DEBUG:FFC:  External multi index:  rank = 0 dims = [] indices = [[]]
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of forms
INFO:FFC:  
INFO:FFC:Compiler stage 2 finished in 0.025619 seconds.

INFO:FFC:Compiler stage 3: Optimizing intermediate representation
INFO:FFC:--------------------------------------------------------
INFO:FFC:  Skipping optimizations, add -O to optimize
INFO:FFC:  
INFO:FFC:Compiler stage 3 finished in 0.00155997 seconds.

INFO:FFC:Compiler stage 4: Generating code
INFO:FFC:---------------------------------
INFO:FFC:  Generating code for 1 element(s)
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
INFO:FFC:  Generating code for 1 dofmap(s)
INFO:FFC:  Generating code for integrals
INFO:FFC:  Generating code for forms
INFO:FFC:  
INFO:FFC:Compiler stage 4 finished in 0.0645351 seconds.

INFO:FFC:Compiler stage 4.1 finished in 1.90735e-06 seconds.

INFO:FFC:Compiler stage 5: Formatting code
INFO:FFC:---------------------------------
INFO:FFC:  Output written to ./ffc_form_d11293b096b99347df9139f98096c84c5488d444.h.
INFO:FFC:  
INFO:FFC:Compiler stage 5 finished in 0.010174 seconds.

INFO:FFC:FFC finished in 0.112493 seconds.
DEBUG:FFC:Compiling and linking Python extension module, this may take some time.

In [5]:
A = Acurl.sparray()
Mmap = Magnetic.dofmap()
Lmap = Lagrange.dofmap()

In [6]:
print Mmap.cell_dofs(0)
print Lmap.cell_dofs(0)


[0 1 2]
[0 1 5]

In [7]:
V = FunctionSpace(mesh, "N1curl", order)
Q = FunctionSpace(mesh, "CG", order)
W = MixedFunctionSpace([V,Q])
(uMix,pMix) = TrialFunctions(W)
(vMix,qMix) = TestFunctions(W)
a = inner(curl(v),curl(u))*dx
m = inner(u,v)*dx
b = inner(vMix,grad(pMix))*dx

# <codecell>

A = assemble(a)
M = assemble(m)
Ms = M.sparray()
A = A.sparray()

# <codecell>

B = assemble(b)
B = B.sparray()[W.dim()-V.dim():,W.dim()-Q.dim():]
ksp = PETSc.KSP().create()
parameters['linear_algebra_backend'] = 'PETSc'
M = assemble(m)
M = CP.Assemble(M)
ksp.setOperators(M)
x = M.getVecLeft()
ksp.setFromOptions()
ksp.setType(ksp.Type.CG)
ksp.setTolerances(1e-2)
ksp.pc.setType(ksp.pc.Type.BJACOBI)

# <codecell>

OptDB = PETSc.Options()
# OptDB["pc_factor_mat_ordering_type"] = "rcm"
# OptDB["pc_factor_mat_solver_package"] = "cholmod"
ksp.setFromOptions()
C = sparse.csr_matrix((V.dim(),Q.dim()))
IO.matToSparse

# <codecell>

C = sparse.csr_matrix((V.dim(),Q.dim()))
(v) = TrialFunction(V)
(u) = TestFunction(V)
tic()
for i in range(0,Q.dim()):
    uOut = Function(V)
    uu = Function(Q)
    x = M.getVecRight()
    zero = np.zeros((Q.dim(),1))[:,0]
    zero[i] = 1
    uu.vector()[:] = zero
    L = assemble(inner(u, grad(uu))*dx)
    rhs = IO.arrayToVec(L.array())
    ksp.solve(rhs,x)
#     x = project(grad(uu),V)
    P = x.array
    uOut.vector()[:] = P
    low_values_indices = np.abs(P) < 1e-3
    P[low_values_indices] = 0
    P=np.around(P)
    pn = P.nonzero()[0]
    for j in range(0,len(pn)):
        C[pn[j],i] = P[pn[j]]
    del uu
print toc()


DEBUG:UFL:No integrals left after transformation, returning empty form.
DEBUG:FFC:Reusing form from cache.
DEBUG:UFL:No integrals left after transformation, returning empty form.
DEBUG:FFC:Reusing form from cache.
DEBUG:UFL:No integrals left after transformation, returning empty form.
Calling FFC just-in-time (JIT) compiler, this may take some time.
Level 25:FFC:Calling FFC just-in-time (JIT) compiler, this may take some time.
INFO:FFC:Compiling form ffc_form_97664075f2e584e22493133c65e6ba79d3894f9b

INFO:FFC:Compiler stage 1: Analyzing form(s)
INFO:FFC:-----------------------------------
INFO:FFC:  
INFO:FFC:  Name:                   ''
  Geometric dimension:    2
  Rank:                   1
  Arguments:              '[v_0]'
  Argument names:         '[v0]'
  Number of coefficients: 0
  Coefficients:           '[]'
  Coefficient names:      '[]'
  Unique elements:        'Mixed<N1curl1(?), CG1(?)>'
  Unique sub elements:    'Mixed<N1curl1(?), CG1(?)>, N1curl1(?), CG1(?)'
  
INFO:FFC:  Extracting monomial form representation from UFL form
INFO:FFC:  Transforming monomial form to reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Estimated cost of tensor representation: 1
INFO:FFC:  representation:    auto --> tensor
DEBUG:FFC:  Selecting quadrature degree based on total polynomial degree of integrand: 1
INFO:FFC:  quadrature_degree: auto --> 1
INFO:FFC:  quadrature_rule:   auto --> default
INFO:FFC:  
INFO:FFC:Compiler stage 1 finished in 0.010752 seconds.

INFO:FFC:Compiler stage 2: Computing intermediate representation
INFO:FFC:-------------------------------------------------------
INFO:FFC:  Computing representation of 3 elements
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of 3 dofmaps
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of integrals
INFO:FFC:  Computing tensor representation
INFO:FFC:  Extracting monomial form representation from UFL form
INFO:FFC:  Transforming monomial form to reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Precomputing integrals on reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  12 entries computed in 0.00175 seconds
DEBUG:FFC:  Shape of reference tensor: (6, 2)
DEBUG:FFC:  Primary multi index:   rank = 1 dims = [6] indices = [[0], [1], [2], [3], [4], [5]]
DEBUG:FFC:  Secondary multi index: rank = 1 dims = [2] indices = [[0], [1]]
DEBUG:FFC:  Internal multi index:  rank = 0 dims = [] indices = [[]]
DEBUG:FFC:  Secondary multi index: rank = 1 dims = [2] indices = [[0], [1]]
DEBUG:FFC:  External multi index:  rank = 0 dims = [] indices = [[]]
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of forms
INFO:FFC:  
INFO:FFC:Compiler stage 2 finished in 0.0299258 seconds.

INFO:FFC:Compiler stage 3: Optimizing intermediate representation
INFO:FFC:--------------------------------------------------------
INFO:FFC:  Skipping optimizations, add -O to optimize
INFO:FFC:  
INFO:FFC:Compiler stage 3 finished in 0.00570202 seconds.

INFO:FFC:Compiler stage 4: Generating code
INFO:FFC:---------------------------------
INFO:FFC:  Generating code for 3 element(s)
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
INFO:FFC:  Generating code for 3 dofmap(s)
INFO:FFC:  Generating code for integrals
INFO:FFC:  Generating code for forms
INFO:FFC:  
INFO:FFC:Compiler stage 4 finished in 0.252603 seconds.

INFO:FFC:Compiler stage 4.1 finished in 2.14577e-06 seconds.

INFO:FFC:Compiler stage 5: Formatting code
INFO:FFC:---------------------------------
INFO:FFC:  Output written to ./ffc_form_97664075f2e584e22493133c65e6ba79d3894f9b.h.
INFO:FFC:  
INFO:FFC:Compiler stage 5 finished in 0.010478 seconds.

INFO:FFC:FFC finished in 0.313971 seconds.
DEBUG:FFC:Compiling and linking Python extension module, this may take some time.
DEBUG:UFL:No integrals left after transformation, returning empty form.
DEBUG:UFL:No integrals left after transformation, returning empty form.
Calling FFC just-in-time (JIT) compiler, this may take some time.
Level 25:FFC:Calling FFC just-in-time (JIT) compiler, this may take some time.
INFO:FFC:Compiling form ffc_form_4cf6f5caaedc5aa0e18f0f323971e27ea054d3a3

INFO:FFC:Compiler stage 1: Analyzing form(s)
INFO:FFC:-----------------------------------
INFO:FFC:  
INFO:FFC:  Name:                   ''
  Geometric dimension:    2
  Rank:                   2
  Arguments:              '[v_0, v_1]'
  Argument names:         '[v0, v1]'
  Number of coefficients: 0
  Coefficients:           '[]'
  Coefficient names:      '[]'
  Unique elements:        'N1curl1(?)'
  Unique sub elements:    'N1curl1(?)'
  
INFO:FFC:  Extracting monomial form representation from UFL form
INFO:FFC:  Transforming monomial form to reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Estimated cost of tensor representation: 4
INFO:FFC:  representation:    auto --> quadrature
DEBUG:FFC:  Selecting quadrature degree based on total polynomial degree of integrand: 0
INFO:FFC:  quadrature_degree: auto --> 0
INFO:FFC:  quadrature_rule:   auto --> default
INFO:FFC:  
INFO:FFC:Compiler stage 1 finished in 0.0229819 seconds.

INFO:FFC:Compiler stage 2: Computing intermediate representation
INFO:FFC:-------------------------------------------------------
INFO:FFC:  Computing representation of 1 elements
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of 1 dofmaps
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of integrals
INFO:FFC:  Computing quadrature representation
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  
  QG-utils, psi_tables:
  {1: {VectorElement('Lagrange', Domain(Cell('triangle', 2), label='dolfin_mesh_with_id_0', data='<data with id 0>'), 1, dim=2, quad_scheme=None): {None: {None: {(0, 1): array([[[-1.],
          [ 0.]],
  
         [[ 0.],
          [ 0.]],
  
         [[ 1.],
          [ 0.]],
  
         [[ 0.],
          [-1.]],
  
         [[ 0.],
          [ 0.]],
  
         [[ 0.],
          [ 1.]]]), (1, 0): array([[[-1.],
          [ 0.]],
  
         [[ 1.],
          [ 0.]],
  
         [[ 0.],
          [ 0.]],
  
         [[ 0.],
          [-1.]],
  
         [[ 0.],
          [ 1.]],
  
         [[ 0.],
          [ 0.]]]), (0, 0): array([[[ 0.33333333],
          [ 0.        ]],
  
         [[ 0.33333333],
          [ 0.        ]],
  
         [[ 0.33333333],
          [ 0.        ]],
  
         [[ 0.        ],
          [ 0.33333333]],
  
         [[ 0.        ],
          [ 0.33333333]],
  
         [[ 0.        ],
          [ 0.33333333]]])}}}, FiniteElement('Nedelec 1st kind H(curl)', Domain(Cell('triangle', 2), label='dolfin_mesh_with_id_0', data='<data with id 0>'), 1, quad_scheme=None): {None: {None: {(0, 1): array([[[-1.0],
          [2.2204460492503131e-16]],
  
         [[1.0],
          [-2.7755575615628914e-16]],
  
         [[-1.0000000000000002],
          [2.2204460492503131e-16]]], dtype=object), (1, 0): array([[[0.0],
          [0.99999999999999989]],
  
         [[0.0],
          [-1.0]],
  
         [[0.0],
          [1.0]]], dtype=object), (0, 0): array([[[-0.33333333333333331],
          [0.33333333333333326]],
  
         [[0.33333333333333331],
          [0.66666666666666652]],
  
         [[0.66666666666666674],
          [0.33333333333333326]]], dtype=object)}}}}}
DEBUG:FFC:  
  QG-utils, psi_tables, flat_tables:
  {'FE0_C1_D01': array([[ 0.,  0.,  0., -1.,  0.,  1.]]), 'FE1_C0': array([[-0.33333333333333331, 0.33333333333333331, 0.66666666666666674]], dtype=object), 'FE1_C1': array([[0.33333333333333326, 0.66666666666666652, 0.33333333333333326]], dtype=object), 'FE0_C1_D10': array([[ 0.,  0.,  0., -1.,  1.,  0.]]), 'FE1_C1_D10': array([[0.99999999999999989, -1.0, 1.0]], dtype=object), 'FE0_C0_D10': array([[-1.,  1.,  0.,  0.,  0.,  0.]]), 'FE0_C0_D01': array([[-1.,  0.,  1.,  0.,  0.,  0.]]), 'FE1_C1_D01': array([[2.2204460492503131e-16, -2.7755575615628914e-16,
          2.2204460492503131e-16]], dtype=object), 'FE1_C0_D01': array([[-1.0, 1.0, -1.0000000000000002]], dtype=object), 'FE1_C0_D10': array([[0.0, 0.0, 0.0]], dtype=object), 'FE0_C1': array([[ 0.        ,  0.        ,  0.        ,  0.33333333,  0.33333333,
           0.33333333]]), 'FE0_C0': array([[ 0.33333333,  0.33333333,  0.33333333,  0.        ,  0.        ,
           0.        ]])}
DEBUG:FFC:  
  tables: {'FE0_C1_D01': array([[ 0.,  0.,  0., -1.,  0.,  1.]]), 'FE1_C0': array([[-0.33333333333333331, 0.33333333333333331, 0.66666666666666674]], dtype=object), 'FE1_C1': array([[0.33333333333333326, 0.66666666666666652, 0.33333333333333326]], dtype=object), 'FE0_C1_D10': array([[ 0.,  0.,  0., -1.,  1.,  0.]]), 'FE1_C1_D10': array([[0.99999999999999989, -1.0, 1.0]], dtype=object), 'FE0_C0_D10': array([[-1.,  1.,  0.,  0.,  0.,  0.]]), 'FE0_C0_D01': array([[-1.,  0.,  1.,  0.,  0.,  0.]]), 'FE1_C0_D01': array([[-1.0, 1.0, -1.0000000000000002]], dtype=object), 'FE1_C0_D10': array([[0.0, 0.0, 0.0]], dtype=object), 'FE0_C1': array([[ 0.        ,  0.        ,  0.        ,  0.33333333,  0.33333333,
           0.33333333]]), 'FE0_C0': array([[ 0.33333333,  0.33333333,  0.33333333,  0.        ,  0.        ,
           0.        ]])}
DEBUG:FFC:  
  name_map: {'FE1_C0_D10': ['FE1_C1_D01']}
DEBUG:FFC:  
  inv_name_map: {'FE0_C1_D01': 'FE0_C1_D01', 'FE1_C0': 'FE1_C0', 'FE1_C1_D01': 'FE1_C0_D10', 'FE0_C1_D10': 'FE0_C1_D10', 'FE1_C1_D10': 'FE1_C1_D10', 'FE0_C0_D10': 'FE0_C0_D10', 'FE0_C0_D01': 'FE0_C0_D01', 'FE1_C1': 'FE1_C1', 'FE1_C0_D01': 'FE1_C0_D01', 'FE1_C0_D10': 'FE1_C0_D10', 'FE0_C1': 'FE0_C1', 'FE0_C0': 'FE0_C0'}
DEBUG:FFC:  
  QG-utils, psi_tables, unique_tables:
  {'FE0_C1_D01': array([[ 0.,  0.,  0., -1.,  0.,  1.]]), 'FE1_C0': array([[-0.33333333333333331, 0.33333333333333331, 0.66666666666666674]], dtype=object), 'FE1_C1': array([[0.33333333333333326, 0.66666666666666652, 0.33333333333333326]], dtype=object), 'FE0_C1_D10': array([[ 0.,  0.,  0., -1.,  1.,  0.]]), 'FE1_C1_D10': array([[0.99999999999999989, -1.0, 1.0]], dtype=object), 'FE0_C0_D10': array([[-1.,  1.,  0.,  0.,  0.,  0.]]), 'FE0_C0_D01': array([[-1.,  0.,  1.,  0.,  0.,  0.]]), 'FE1_C0_D01': array([[-1.0, 1.0, -1.0000000000000002]], dtype=object), 'FE1_C0_D10': array([[0, 0, 0]], dtype=object), 'FE0_C1': array([[ 0.        ,  0.        ,  0.        ,  0.33333333,  0.33333333,
           0.33333333]]), 'FE0_C0': array([[ 0.33333333,  0.33333333,  0.33333333,  0.        ,  0.        ,
           0.        ]])}
DEBUG:FFC:  
  QG-utils, psi_tables, name_map:
  {'FE0_C1_D01': ('FE0_C1_D01', (), False, False), 'FE1_C0': ('FE1_C0', (), False, False), 'FE1_C1_D01': ('FE1_C0_D10', (), True, False), 'FE0_C1_D10': ('FE0_C1_D10', (), False, False), 'FE1_C1_D10': ('FE1_C1_D10', (), False, False), 'FE0_C0_D10': ('FE0_C0_D10', (), False, False), 'FE0_C0_D01': ('FE0_C0_D01', (), False, False), 'FE1_C1': ('FE1_C1', (), False, False), 'FE1_C0_D01': ('FE1_C0_D01', (), False, False), 'FE1_C0_D10': ('FE1_C0_D10', (), True, False), 'FE0_C1': ('FE0_C1', (), False, False), 'FE0_C0': ('FE0_C0', (), False, False)}
INFO:FFC:  Transforming cell integral
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of forms
INFO:FFC:  
INFO:FFC:Compiler stage 2 finished in 0.114939 seconds.

INFO:FFC:Compiler stage 3: Optimizing intermediate representation
INFO:FFC:--------------------------------------------------------
INFO:FFC:  Skipping optimizations, add -O to optimize
INFO:FFC:  
INFO:FFC:Compiler stage 3 finished in 0.00181603 seconds.

INFO:FFC:Compiler stage 4: Generating code
INFO:FFC:---------------------------------
INFO:FFC:  Generating code for 1 element(s)
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
INFO:FFC:  Generating code for 1 dofmap(s)
INFO:FFC:  Generating code for integrals
DEBUG:FFC:  Removing unused variable: circumradius
DEBUG:FFC:  Removing unused variable: v0v1
DEBUG:FFC:  Removing unused variable: v0v2
DEBUG:FFC:  Removing unused variable: v1v2
DEBUG:FFC:  Removing unused variable: volume
INFO:FFC:  Generating code for forms
INFO:FFC:  
INFO:FFC:Compiler stage 4 finished in 0.0751748 seconds.

INFO:FFC:Compiler stage 4.1 finished in 4.05312e-06 seconds.

INFO:FFC:Compiler stage 5: Formatting code
INFO:FFC:---------------------------------
INFO:FFC:  Output written to ./ffc_form_4cf6f5caaedc5aa0e18f0f323971e27ea054d3a3.h.
INFO:FFC:  
INFO:FFC:Compiler stage 5 finished in 0.00251603 seconds.

INFO:FFC:FFC finished in 0.221024 seconds.
DEBUG:FFC:Compiling and linking Python extension module, this may take some time.
DEBUG:UFL:No integrals left after transformation, returning empty form.
DEBUG:UFL:No integrals left after transformation, returning empty form.
DEBUG:FFC:Reusing form from cache.
DEBUG:UFL:No integrals left after transformation, returning empty form.
DEBUG:UFL:No integrals left after transformation, returning empty form.
Calling FFC just-in-time (JIT) compiler, this may take some time.
Level 25:FFC:Calling FFC just-in-time (JIT) compiler, this may take some time.
INFO:FFC:Compiling form ffc_form_90680427f125ed0d5326740b03feb8fb8467730c

INFO:FFC:Compiler stage 1: Analyzing form(s)
INFO:FFC:-----------------------------------
INFO:FFC:  
INFO:FFC:  Name:                   ''
  Geometric dimension:    2
  Rank:                   2
  Arguments:              '[v_0, v_1]'
  Argument names:         '[v0, v1]'
  Number of coefficients: 0
  Coefficients:           '[]'
  Coefficient names:      '[]'
  Unique elements:        'Mixed<N1curl1(?), CG1(?)>'
  Unique sub elements:    'Mixed<N1curl1(?), CG1(?)>, N1curl1(?), CG1(?)'
  
INFO:FFC:  Extracting monomial form representation from UFL form
INFO:FFC:  Transforming monomial form to reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Estimated cost of tensor representation: 2
INFO:FFC:  representation:    auto --> tensor
DEBUG:FFC:  Selecting quadrature degree based on total polynomial degree of integrand: 1
INFO:FFC:  quadrature_degree: auto --> 1
INFO:FFC:  quadrature_rule:   auto --> default
INFO:FFC:  
INFO:FFC:Compiler stage 1 finished in 0.0350862 seconds.

INFO:FFC:Compiler stage 2: Computing intermediate representation
INFO:FFC:-------------------------------------------------------
INFO:FFC:  Computing representation of 3 elements
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of 3 dofmaps
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of integrals
INFO:FFC:  Computing tensor representation
INFO:FFC:  Extracting monomial form representation from UFL form
INFO:FFC:  Transforming monomial form to reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Precomputing integrals on reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  144 entries computed in 0.00179 seconds
DEBUG:FFC:  Shape of reference tensor: (6, 6, 2, 2)
DEBUG:FFC:  Primary multi index:   rank = 2 dims = [6, 6] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5]]
DEBUG:FFC:  Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]]
DEBUG:FFC:  Internal multi index:  rank = 0 dims = [] indices = [[]]
DEBUG:FFC:  Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]]
DEBUG:FFC:  External multi index:  rank = 0 dims = [] indices = [[]]
INFO:FFC:  Precomputing integrals on reference element
DEBUG:FFC:  Reusing element from cache
DEBUG:FFC:  144 entries computed in 0.00248 seconds
DEBUG:FFC:  Shape of reference tensor: (6, 6, 2, 2)
DEBUG:FFC:  Primary multi index:   rank = 2 dims = [6, 6] indices = [[0, 0], [0, 1], [0, 2], [0, 3], [0, 4], [0, 5], [1, 0], [1, 1], [1, 2], [1, 3], [1, 4], [1, 5], [2, 0], [2, 1], [2, 2], [2, 3], [2, 4], [2, 5], [3, 0], [3, 1], [3, 2], [3, 3], [3, 4], [3, 5], [4, 0], [4, 1], [4, 2], [4, 3], [4, 4], [4, 5], [5, 0], [5, 1], [5, 2], [5, 3], [5, 4], [5, 5]]
DEBUG:FFC:  Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]]
DEBUG:FFC:  Internal multi index:  rank = 0 dims = [] indices = [[]]
DEBUG:FFC:  Secondary multi index: rank = 2 dims = [2, 2] indices = [[0, 0], [0, 1], [1, 0], [1, 1]]
DEBUG:FFC:  External multi index:  rank = 0 dims = [] indices = [[]]
DEBUG:FFC:  Reusing element from cache
INFO:FFC:  Computing representation of forms
INFO:FFC:  
INFO:FFC:Compiler stage 2 finished in 0.0688839 seconds.

INFO:FFC:Compiler stage 3: Optimizing intermediate representation
INFO:FFC:--------------------------------------------------------
INFO:FFC:  Skipping optimizations, add -O to optimize
INFO:FFC:  
INFO:FFC:Compiler stage 3 finished in 0.00462508 seconds.

INFO:FFC:Compiler stage 4: Generating code
INFO:FFC:---------------------------------
INFO:FFC:  Generating code for 3 element(s)
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
DEBUG:FFC:  Removing unused variable: tmp2
DEBUG:FFC:  Removing unused variable: tmp1
DEBUG:FFC:  Removing unused variable: tmp7
DEBUG:FFC:  Removing unused variable: tmp6
DEBUG:FFC:  Removing unused variable: tmp5
DEBUG:FFC:  Removing unused variable: tt
DEBUG:FFC:  Removing unused variable: ss
DEBUG:FFC:  Removing unused variable: rr
INFO:FFC:  Generating code for 3 dofmap(s)
INFO:FFC:  Generating code for integrals
INFO:FFC:  Generating code for forms
INFO:FFC:  
INFO:FFC:Compiler stage 4 finished in 0.234904 seconds.

INFO:FFC:Compiler stage 4.1 finished in 2.86102e-06 seconds.

INFO:FFC:Compiler stage 5: Formatting code
INFO:FFC:---------------------------------
INFO:FFC:  Output written to ./ffc_form_90680427f125ed0d5326740b03feb8fb8467730c.h.
INFO:FFC:  
INFO:FFC:Compiler stage 5 finished in 0.010843 seconds.

INFO:FFC:FFC finished in 0.357804 seconds.
DEBUG:FFC:Compiling and linking Python extension module, this may take some time.
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-7-36d3d73b3ac4> in <module>()
     21 B = B.sparray()[W.dim()-V.dim():,W.dim()-Q.dim():]
     22 ksp = PETSc.KSP().create()
---> 23 parameters['linear_algebra_backend'] = 'PETSc'
     24 M = assemble(m)
     25 M = CP.Assemble(M)

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/dolfin/cpp/common.py in __setitem__(self, key, value)
   2099             par._assign_bool(value)
   2100         else:
-> 2101             par._assign(value)
   2102 
   2103     def update(self, other):

RuntimeError: 

*** -------------------------------------------------------------------------
*** DOLFIN encountered an error. If you are not able to resolve this issue
*** using the information listed below, you can ask for help at
***
***     fenics@fenicsproject.org
***
*** Remember to include the error message listed below and, if possible,
*** include a *minimal* running example to reproduce the error.
***
*** -------------------------------------------------------------------------
*** Error:   Unable to assign parameter value.
*** Reason:  Illegal value for parameter "linear_algebra_backend". Allowed values are: [STL, uBLAS].
*** Where:   This error was encountered inside Parameter.cpp.
*** Process: unknown
*** 
*** DOLFIN version: 1.4.0
*** Git changeset:  
*** -------------------------------------------------------------------------

In [ ]:
print Lmap.vertex_to_dof_map(mesh)
print Lmap.dof_to_vertex_map(mesh)
print Mmap.extract_sub_dofmap()

In [11]:
# vertex = vertices(mesh)

In [8]:
for vert in vertices(mesh):
        print "\nvert", vert.index()
        for edge in edges(vert):
                print "   edge", edge.index()
# vert.


vert 0
   edge 1
   edge 2

vert 1
   edge 0
   edge 2
   edge 4
   edge 6

vert 2
   edge 5
   edge 6
   edge 8
   edge 10

vert 3
   edge 9
   edge 10
   edge 12
   edge 14

vert 4
   edge 13
   edge 14
   edge 16

vert 5
   edge 0
   edge 1
   edge 3
   edge 18

vert 6
   edge 3
   edge 4
   edge 5
   edge 7
   edge 17
   edge 20

vert 7
   edge 7
   edge 8
   edge 9
   edge 11
   edge 21
   edge 23

vert 8
   edge 11
   edge 12
   edge 13
   edge 15
   edge 24
   edge 26

vert 9
   edge 15
   edge 16
   edge 27
   edge 29

vert 10
   edge 17
   edge 18
   edge 19
   edge 31

vert 11
   edge 19
   edge 20
   edge 21
   edge 22
   edge 30
   edge 33

vert 12
   edge 22
   edge 23
   edge 24
   edge 25
   edge 34
   edge 36

vert 13
   edge 25
   edge 26
   edge 27
   edge 28
   edge 37
   edge 39

vert 14
   edge 28
   edge 29
   edge 40
   edge 42

vert 15
   edge 30
   edge 31
   edge 32
   edge 44

vert 16
   edge 32
   edge 33
   edge 34
   edge 35
   edge 43
   edge 46

vert 17
   edge 35
   edge 36
   edge 37
   edge 38
   edge 47
   edge 49

vert 18
   edge 38
   edge 39
   edge 40
   edge 41
   edge 50
   edge 52

vert 19
   edge 41
   edge 42
   edge 53
   edge 55

vert 20
   edge 43
   edge 44
   edge 45

vert 21
   edge 45
   edge 46
   edge 47
   edge 48

vert 22
   edge 48
   edge 49
   edge 50
   edge 51

vert 23
   edge 51
   edge 52
   edge 53
   edge 54

vert 24
   edge 54
   edge 55

In [12]:
mesh = UnitCubeMesh(2,2,2)
for vert in edges(mesh):
        print "\nedge", vert.index()
        for edge in vertices(vert):
                print "   vertex", edge.index()


edge 0
   vertex 4
   vertex 13

edge 1
   vertex 1
   vertex 13

edge 2
   vertex 1
   vertex 4

edge 3
   vertex 0
   vertex 13

edge 4
   vertex 0
   vertex 4

edge 5
   vertex 0
   vertex 1

edge 6
   vertex 10
   vertex 13

edge 7
   vertex 1
   vertex 10

edge 8
   vertex 0
   vertex 10

edge 9
   vertex 9
   vertex 13

edge 10
   vertex 9
   vertex 10

edge 11
   vertex 0
   vertex 9

edge 12
   vertex 3
   vertex 13

edge 13
   vertex 3
   vertex 4

edge 14
   vertex 0
   vertex 3

edge 15
   vertex 12
   vertex 13

edge 16
   vertex 9
   vertex 12

edge 17
   vertex 0
   vertex 12

edge 18
   vertex 3
   vertex 12

edge 19
   vertex 5
   vertex 14

edge 20
   vertex 2
   vertex 14

edge 21
   vertex 2
   vertex 5

edge 22
   vertex 1
   vertex 14

edge 23
   vertex 1
   vertex 5

edge 24
   vertex 1
   vertex 2

edge 25
   vertex 11
   vertex 14

edge 26
   vertex 2
   vertex 11

edge 27
   vertex 1
   vertex 11

edge 28
   vertex 10
   vertex 14

edge 29
   vertex 10
   vertex 11

edge 30
   vertex 4
   vertex 14

edge 31
   vertex 4
   vertex 5

edge 32
   vertex 13
   vertex 14

edge 33
   vertex 7
   vertex 16

edge 34
   vertex 4
   vertex 16

edge 35
   vertex 4
   vertex 7

edge 36
   vertex 3
   vertex 16

edge 37
   vertex 3
   vertex 7

edge 38
   vertex 13
   vertex 16

edge 39
   vertex 12
   vertex 16

edge 40
   vertex 6
   vertex 16

edge 41
   vertex 6
   vertex 7

edge 42
   vertex 3
   vertex 6

edge 43
   vertex 15
   vertex 16

edge 44
   vertex 12
   vertex 15

edge 45
   vertex 3
   vertex 15

edge 46
   vertex 6
   vertex 15

edge 47
   vertex 8
   vertex 17

edge 48
   vertex 5
   vertex 17

edge 49
   vertex 5
   vertex 8

edge 50
   vertex 4
   vertex 17

edge 51
   vertex 4
   vertex 8

edge 52
   vertex 14
   vertex 17

edge 53
   vertex 13
   vertex 17

edge 54
   vertex 7
   vertex 17

edge 55
   vertex 7
   vertex 8

edge 56
   vertex 16
   vertex 17

edge 57
   vertex 13
   vertex 22

edge 58
   vertex 10
   vertex 22

edge 59
   vertex 9
   vertex 22

edge 60
   vertex 19
   vertex 22

edge 61
   vertex 10
   vertex 19

edge 62
   vertex 9
   vertex 19

edge 63
   vertex 18
   vertex 22

edge 64
   vertex 18
   vertex 19

edge 65
   vertex 9
   vertex 18

edge 66
   vertex 12
   vertex 22

edge 67
   vertex 21
   vertex 22

edge 68
   vertex 18
   vertex 21

edge 69
   vertex 9
   vertex 21

edge 70
   vertex 12
   vertex 21

edge 71
   vertex 14
   vertex 23

edge 72
   vertex 11
   vertex 23

edge 73
   vertex 10
   vertex 23

edge 74
   vertex 20
   vertex 23

edge 75
   vertex 11
   vertex 20

edge 76
   vertex 10
   vertex 20

edge 77
   vertex 19
   vertex 23

edge 78
   vertex 19
   vertex 20

edge 79
   vertex 13
   vertex 23

edge 80
   vertex 22
   vertex 23

edge 81
   vertex 16
   vertex 25

edge 82
   vertex 13
   vertex 25

edge 83
   vertex 12
   vertex 25

edge 84
   vertex 22
   vertex 25

edge 85
   vertex 21
   vertex 25

edge 86
   vertex 15
   vertex 25

edge 87
   vertex 24
   vertex 25

edge 88
   vertex 21
   vertex 24

edge 89
   vertex 12
   vertex 24

edge 90
   vertex 15
   vertex 24

edge 91
   vertex 17
   vertex 26

edge 92
   vertex 14
   vertex 26

edge 93
   vertex 13
   vertex 26

edge 94
   vertex 23
   vertex 26

edge 95
   vertex 22
   vertex 26

edge 96
   vertex 16
   vertex 26

edge 97
   vertex 25
   vertex 26

In [14]:
for vert in faces(mesh):
        print "\nedge", vert.index()
        for edge in vertices(vert):
                print "   vertex", edge.index()


edge 0
   vertex 1
   vertex 4
   vertex 13

edge 1
   vertex 0
   vertex 4
   vertex 13

edge 2
   vertex 0
   vertex 1
   vertex 13

edge 3
   vertex 0
   vertex 1
   vertex 4

edge 4
   vertex 1
   vertex 10
   vertex 13

edge 5
   vertex 0
   vertex 10
   vertex 13

edge 6
   vertex 0
   vertex 1
   vertex 10

edge 7
   vertex 9
   vertex 10
   vertex 13

edge 8
   vertex 0
   vertex 9
   vertex 13

edge 9
   vertex 0
   vertex 9
   vertex 10

edge 10
   vertex 3
   vertex 4
   vertex 13

edge 11
   vertex 0
   vertex 3
   vertex 13

edge 12
   vertex 0
   vertex 3
   vertex 4

edge 13
   vertex 9
   vertex 12
   vertex 13

edge 14
   vertex 0
   vertex 12
   vertex 13

edge 15
   vertex 0
   vertex 9
   vertex 12

edge 16
   vertex 3
   vertex 12
   vertex 13

edge 17
   vertex 0
   vertex 3
   vertex 12

edge 18
   vertex 2
   vertex 5
   vertex 14

edge 19
   vertex 1
   vertex 5
   vertex 14

edge 20
   vertex 1
   vertex 2
   vertex 14

edge 21
   vertex 1
   vertex 2
   vertex 5

edge 22
   vertex 2
   vertex 11
   vertex 14

edge 23
   vertex 1
   vertex 11
   vertex 14

edge 24
   vertex 1
   vertex 2
   vertex 11

edge 25
   vertex 10
   vertex 11
   vertex 14

edge 26
   vertex 1
   vertex 10
   vertex 14

edge 27
   vertex 1
   vertex 10
   vertex 11

edge 28
   vertex 4
   vertex 5
   vertex 14

edge 29
   vertex 1
   vertex 4
   vertex 14

edge 30
   vertex 1
   vertex 4
   vertex 5

edge 31
   vertex 10
   vertex 13
   vertex 14

edge 32
   vertex 1
   vertex 13
   vertex 14

edge 33
   vertex 4
   vertex 13
   vertex 14

edge 34
   vertex 4
   vertex 7
   vertex 16

edge 35
   vertex 3
   vertex 7
   vertex 16

edge 36
   vertex 3
   vertex 4
   vertex 16

edge 37
   vertex 3
   vertex 4
   vertex 7

edge 38
   vertex 4
   vertex 13
   vertex 16

edge 39
   vertex 3
   vertex 13
   vertex 16

edge 40
   vertex 12
   vertex 13
   vertex 16

edge 41
   vertex 3
   vertex 12
   vertex 16

edge 42
   vertex 6
   vertex 7
   vertex 16

edge 43
   vertex 3
   vertex 6
   vertex 16

edge 44
   vertex 3
   vertex 6
   vertex 7

edge 45
   vertex 12
   vertex 15
   vertex 16

edge 46
   vertex 3
   vertex 15
   vertex 16

edge 47
   vertex 3
   vertex 12
   vertex 15

edge 48
   vertex 6
   vertex 15
   vertex 16

edge 49
   vertex 3
   vertex 6
   vertex 15

edge 50
   vertex 5
   vertex 8
   vertex 17

edge 51
   vertex 4
   vertex 8
   vertex 17

edge 52
   vertex 4
   vertex 5
   vertex 17

edge 53
   vertex 4
   vertex 5
   vertex 8

edge 54
   vertex 5
   vertex 14
   vertex 17

edge 55
   vertex 4
   vertex 14
   vertex 17

edge 56
   vertex 13
   vertex 14
   vertex 17

edge 57
   vertex 4
   vertex 13
   vertex 17

edge 58
   vertex 7
   vertex 8
   vertex 17

edge 59
   vertex 4
   vertex 7
   vertex 17

edge 60
   vertex 4
   vertex 7
   vertex 8

edge 61
   vertex 13
   vertex 16
   vertex 17

edge 62
   vertex 4
   vertex 16
   vertex 17

edge 63
   vertex 7
   vertex 16
   vertex 17

edge 64
   vertex 10
   vertex 13
   vertex 22

edge 65
   vertex 9
   vertex 13
   vertex 22

edge 66
   vertex 9
   vertex 10
   vertex 22

edge 67
   vertex 10
   vertex 19
   vertex 22

edge 68
   vertex 9
   vertex 19
   vertex 22

edge 69
   vertex 9
   vertex 10
   vertex 19

edge 70
   vertex 18
   vertex 19
   vertex 22

edge 71
   vertex 9
   vertex 18
   vertex 22

edge 72
   vertex 9
   vertex 18
   vertex 19

edge 73
   vertex 12
   vertex 13
   vertex 22

edge 74
   vertex 9
   vertex 12
   vertex 22

edge 75
   vertex 18
   vertex 21
   vertex 22

edge 76
   vertex 9
   vertex 21
   vertex 22

edge 77
   vertex 9
   vertex 18
   vertex 21

edge 78
   vertex 12
   vertex 21
   vertex 22

edge 79
   vertex 9
   vertex 12
   vertex 21

edge 80
   vertex 11
   vertex 14
   vertex 23

edge 81
   vertex 10
   vertex 14
   vertex 23

edge 82
   vertex 10
   vertex 11
   vertex 23

edge 83
   vertex 11
   vertex 20
   vertex 23

edge 84
   vertex 10
   vertex 20
   vertex 23

edge 85
   vertex 10
   vertex 11
   vertex 20

edge 86
   vertex 19
   vertex 20
   vertex 23

edge 87
   vertex 10
   vertex 19
   vertex 23

edge 88
   vertex 10
   vertex 19
   vertex 20

edge 89
   vertex 13
   vertex 14
   vertex 23

edge 90
   vertex 10
   vertex 13
   vertex 23

edge 91
   vertex 19
   vertex 22
   vertex 23

edge 92
   vertex 10
   vertex 22
   vertex 23

edge 93
   vertex 13
   vertex 22
   vertex 23

edge 94
   vertex 13
   vertex 16
   vertex 25

edge 95
   vertex 12
   vertex 16
   vertex 25

edge 96
   vertex 12
   vertex 13
   vertex 25

edge 97
   vertex 13
   vertex 22
   vertex 25

edge 98
   vertex 12
   vertex 22
   vertex 25

edge 99
   vertex 21
   vertex 22
   vertex 25

edge 100
   vertex 12
   vertex 21
   vertex 25

edge 101
   vertex 15
   vertex 16
   vertex 25

edge 102
   vertex 12
   vertex 15
   vertex 25

edge 103
   vertex 21
   vertex 24
   vertex 25

edge 104
   vertex 12
   vertex 24
   vertex 25

edge 105
   vertex 12
   vertex 21
   vertex 24

edge 106
   vertex 15
   vertex 24
   vertex 25

edge 107
   vertex 12
   vertex 15
   vertex 24

edge 108
   vertex 14
   vertex 17
   vertex 26

edge 109
   vertex 13
   vertex 17
   vertex 26

edge 110
   vertex 13
   vertex 14
   vertex 26

edge 111
   vertex 14
   vertex 23
   vertex 26

edge 112
   vertex 13
   vertex 23
   vertex 26

edge 113
   vertex 22
   vertex 23
   vertex 26

edge 114
   vertex 13
   vertex 22
   vertex 26

edge 115
   vertex 16
   vertex 17
   vertex 26

edge 116
   vertex 13
   vertex 16
   vertex 26

edge 117
   vertex 22
   vertex 25
   vertex 26

edge 118
   vertex 13
   vertex 25
   vertex 26

edge 119
   vertex 16
   vertex 25
   vertex 26

In [17]:
mesh.num_edges()


Out[17]:
98

In [ ]:


In [ ]:


In [ ]:


In [ ]:


In [12]:
print Mmap.neighbours


<bound method GenericDofMap.GenericDofMap_neighbours of <dolfin.cpp.fem.GenericDofMap; proxy of <Swig Object of type 'boost::shared_ptr< dolfin::GenericDofMap > *' at 0x4798540> >>

In [13]:
from FIAT import *
def build_edge2dof_map(V):
    """
    This function takes a N1Curl(1) space and return an integer valued array edge2dof.
    This array has the number of edges as its length. In particular
        edge2dof[i] = j
    means that dof #i, that is u.vector()[i], is associated to edge #j.
    """
    # Extract the cell to edge map (given an cell index, it returns the indices of its edges)
    cell2edges = V.mesh().topology()(3, 1)
    # Extract the cell dofmap (given a cell index, it returns the dof numbers) 
    cell2dofs = V.dofmap().cell_dofs
    # Array to save the result
    edge2dof = numpy.zeros(mesh.num_edges(), dtype="int")
    # Iterate over cells, associating the edges to the dofs for that cell
    for c in range(mesh.num_cells()):
        # get the global edge numbers for this cell
        c_edges = cell2edges(c)
        # get the global dof numbers for this cell
        c_dofs = cell2dofs(c)
        # associate the edge numbers to the corresponding dof numbers
        edge2dof[c_dofs] = c_edges
    # This algorithm might not look fast as it does quite some redundant work. In actual
    # runs, for most meshes, this is not the most time consuming step and does not take
    # more than a milisecond.
    return edge2dof

In [ ]:
build_edge2dof_map(Magnetic)

In [ ]: