In [2]:
from dolfin import *
import numpy as np
import scipy.sparse as sp
import numpy
# from scipy2Trilinos import scipy_csr_matrix2CrsMatrix
# from PyTrilinos import Epetra, ML, AztecOO

nn = 4
mesh = RectangleMesh(0, 0, 1, 1, nn, nn,'crossed')

order = 2
Magnetic = FunctionSpace(mesh, "N1curl", order)
Lagrange = FunctionSpace(mesh, "CG", order)
DG = FunctionSpace(mesh, "DG", order-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.
DEBUG:UFL:No integrals left after transformation, returning empty form.
DEBUG:FFC:Reusing form from cache.

In [ ]:
mesh.

In [54]:
u = Function(Lagrange)
DGu = Function(DG)
uu = grad(u)

In [39]:
DGu = grad(u)

In [66]:
n = FacetNormal(mesh)

In [71]:
dS.CELL?

In [12]:
for cell in cells(mesh):
  print "cell", cell.index(), "has edges :",
  for edge in edges(cell):
    print edge.index(),
    print edge.global_index()
    print 
  print


cell 0 has edges : 0 0
1 1
2 2

cell 1 has edges : 3 3
1 1
4 4

cell 2 has edges : 5 5
0 0
6 6

cell 3 has edges : 5 5
3 3
7 7

cell 4 has edges : 8 8
9 9
10 10

cell 5 has edges : 11 11
9 9
6 6

cell 6 has edges : 12 12
8 8
13 13

cell 7 has edges : 12 12
11 11
14 14

cell 8 has edges : 15 15
16 16
17 17

cell 9 has edges : 18 18
16 16
13 13

cell 10 has edges : 19 19
15 15
20 20

cell 11 has edges : 19 19
18 18
21 21

cell 12 has edges : 22 22
23 23
24 24

cell 13 has edges : 25 25
23 23
20 20

cell 14 has edges : 26 26
22 22
27 27

cell 15 has edges : 26 26
25 25
28 28

cell 16 has edges : 29 29
30 30
7 7

cell 17 has edges : 31 31
30 30
32 32

cell 18 has edges : 33 33
29 29
34 34

cell 19 has edges : 33 33
31 31
35 35

cell 20 has edges : 36 36
37 37
14 14

cell 21 has edges : 38 38
37 37
34 34

cell 22 has edges : 39 39
36 36
40 40

cell 23 has edges : 39 39
38 38
41 41

cell 24 has edges : 42 42
43 43
21 21

cell 25 has edges : 44 44
43 43
40 40

cell 26 has edges : 45 45
42 42
46 46

cell 27 has edges : 45 45
44 44
47 47

cell 28 has edges : 48 48
49 49
28 28

cell 29 has edges : 50 50
49 49
46 46

cell 30 has edges : 51 51
48 48
52 52

cell 31 has edges : 51 51
50 50
53 53

cell 32 has edges : 54 54
55 55
35 35

cell 33 has edges : 56 56
55 55
57 57

cell 34 has edges : 58 58
54 54
59 59

cell 35 has edges : 58 58
56 56
60 60

cell 36 has edges : 61 61
62 62
41 41

cell 37 has edges : 63 63
62 62
59 59

cell 38 has edges : 64 64
61 61
65 65

cell 39 has edges : 64 64
63 63
66 66

cell 40 has edges : 67 67
68 68
47 47

cell 41 has edges : 69 69
68 68
65 65

cell 42 has edges : 70 70
67 67
71 71

cell 43 has edges : 70 70
69 69
72 72

cell 44 has edges : 73 73
74 74
53 53

cell 45 has edges : 75 75
74 74
71 71

cell 46 has edges : 76 76
73 73
77 77

cell 47 has edges : 76 76
75 75
78 78

cell 48 has edges : 79 79
80 80
60 60

cell 49 has edges : 81 81
80 80
82 82

cell 50 has edges : 83 83
79 79
84 84

cell 51 has edges : 83 83
81 81
85 85

cell 52 has edges : 86 86
87 87
66 66

cell 53 has edges : 88 88
87 87
84 84

cell 54 has edges : 89 89
86 86
90 90

cell 55 has edges : 89 89
88 88
91 91

cell 56 has edges : 92 92
93 93
72 72

cell 57 has edges : 94 94
93 93
90 90

cell 58 has edges : 95 95
92 92
96 96

cell 59 has edges : 95 95
94 94
97 97

cell 60 has edges : 98 98
99 99
78 78

cell 61 has edges : 100 100
99 99
96 96

cell 62 has edges : 101 101
98 98
102 102

cell 63 has edges : 101 101
100 100
103 103


In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
print edge.global_index

In [ ]:
n = FacetNormal

In [ ]:


In [64]:
Magnetic.


Out[64]:
FiniteElement('Nedelec 1st kind H(curl)', Domain(Cell('triangle', 2), 'triangle_multiverse', 2, 2), 2, None)

In [ ]:


In [46]:
Magnetic.interpolate(DGu)


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-46-dfc262124d54> in <module>()
----> 1 Magnetic.interpolate(grad(u))

TypeError: FunctionSpace_interpolate expected 3 arguments, got 2

In [52]:
b = Function(Magnetic)

In [55]:



---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-55-41c132b404d7> in <module>()
----> 1 DGu.assign(grad(u))

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/dolfin/functions/function.py in assign(self, rhs)
    408             cpp.dolfin_error("function.py",
    409                              "function assignment",
--> 410                              "Expects a Function or linear combinations of "\
    411                              "Functions in the same FunctionSpaces")
    412 

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/dolfin/cpp/common.py in dolfin_error(*args)
   2294 
   2295     """
-> 2296   return _common.dolfin_error(*args)
   2297 
   2298 def deprecation(*args):

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 function assignment.
*** Reason:  Expects a Function or linear combinations of Functions in the same FunctionSpaces.
*** Where:   This error was encountered inside function.py.
*** Process: 0
*** 
*** DOLFIN version: 1.3.0
*** Git changeset:  
*** -------------------------------------------------------------------------

In [49]:
b = grad(u)

In [50]:
b


Out[50]:
$\mathbf{grad}{\left({w_h^8}\right)}$

In [51]:
u


Out[51]:
${w_h^8}$

In [ ]:


In [32]:
uu.reconstruct?

In [ ]:


In [ ]:
T = as_vector

In [16]:
T = as_vector([N[1],-N[0]])

In [18]:
u = Function(LagrangeL)

In [21]:
assemble(inner(inner(uu,T),u)*dS)


Form argument must be restricted.
ERROR:UFL:Form argument must be restricted.
---------------------------------------------------------------------------
UFLException                              Traceback (most recent call last)
<ipython-input-21-fc5978e91932> in <module>()
----> 1 assemble(inner(inner(uu,T),u)*dS)

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/dolfin/fem/assembling.py in assemble(form, tensor, mesh, coefficients, function_spaces, cell_domains, exterior_facet_domains, interior_facet_domains, reset_sparsity, add_values, finalize_tensor, keep_diagonal, backend, form_compiler_parameters, bcs)
    166                            coefficients=coefficients,
    167                            form_compiler_parameters=form_compiler_parameters,
--> 168                            common_cell=common_cell)
    169 
    170     # Set mesh if specified (important for functionals without a function spaces)

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/dolfin/fem/form.py in __init__(self, form, function_spaces, coefficients, subdomains, form_compiler_parameters, common_cell)
     54             self._compiled_form, module, self.form_data, prefix \
     55                                  = jit(form, form_compiler_parameters,
---> 56                                        common_cell)
     57 
     58         elif isinstance(form, ufc.form):

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/dolfin/compilemodules/jit.py in mpi_jit(*args, **kwargs)
     58         # Just call JIT compiler when running in serial
     59         if MPI.num_processes() == 1:
---> 60             return local_jit(*args, **kwargs)
     61 
     62         # Compile first on process 0

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/dolfin/compilemodules/jit.py in jit(form, form_compiler_parameters, common_cell)
    120         raise RuntimeError, "Form compiler must implement the jit function."
    121 
--> 122     return jit_compile(form, parameters=p, common_cell=common_cell)

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ffc/jitcompiler.pyc in jit(ufl_object, parameters, common_cell)
     76         return jit_element(ufl_object, parameters)
     77     else:
---> 78         return jit_form(ufl_object, parameters, common_cell)
     79 
     80 def _auto_select_degree(elements):

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ffc/jitcompiler.pyc in jit_form(form, parameters, common_cell)
    167     # Compute form metadata and extract preprocessed form
    168     form_data = form.compute_form_data(common_cell=common_cell,
--> 169                                        element_mapping=element_mapping)
    170 
    171     # Wrap input

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ufl/form.pyc in compute_form_data(self, object_names, common_cell, element_mapping)
    122                                          object_names=object_names,
    123                                          common_cell=common_cell,
--> 124                                          element_mapping=element_mapping)
    125         # Always validate arguments, keeping sure that the validation works
    126         self._form_data.validate(object_names=object_names,

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ufl/algorithms/preprocess.pyc in preprocess(form, object_names, common_cell, element_mapping)
    116 
    117     # Propagate restrictions of interior facet integrals to the terminal nodes
--> 118     form = propagate_restrictions(form) # INTEGRAL, EXPR
    119 
    120     # --- BEGIN DOMAIN SPLITTING AND JOINING

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ufl/algorithms/propagate_restrictions.pyc in propagate_restrictions(expression)
    109 def propagate_restrictions(expression):
    110     "Propagate restriction nodes to wrap terminal objects directly."
--> 111     return apply_transformer(expression, RestrictionPropagator(), domain_type=Measure.INTERIOR_FACET)
    112 
    113 def check_restrictions(expression, require_restriction):

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ufl/algorithms/transformer.pyc in apply_transformer(e, transformer, domain_type)
    275     def _transform(expr):
    276         return transformer.visit(expr)
--> 277     return transform_integrands(e, _transform, domain_type)
    278 
    279 def ufl2ufl(e):

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ufl/algorithms/transformer.pyc in transform_integrands(form, transform, domain_type)
    250             integrand = itg.integrand()
    251             if domain_type is None or domain_type == itg.domain_type():
--> 252                 integrand = transform(integrand)
    253             if not isinstance(integrand, Zero):
    254                 newitg = itg.reconstruct(integrand)

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ufl/algorithms/transformer.pyc in _transform(expr)
    274     expression in form, or to form if it is an Expr."""
    275     def _transform(expr):
--> 276         return transformer.visit(expr)
    277     return transform_integrands(e, _transform, domain_type)
    278 

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ufl/algorithms/transformer.pyc in visit(self, o)
     99         if visit_children_first:
    100             # Yes, visit all children first and then call h.
--> 101             r = h(o, *map(self.visit, o.operands()))
    102         else:
    103             # No, this is a handler that handles its own children

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ufl/algorithms/transformer.pyc in visit(self, o)
    103             # No, this is a handler that handles its own children
    104             # (arguments self and o, where self is already bound)
--> 105             r = h(o)
    106 
    107         # Update stack and return

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ufl/algorithms/propagate_restrictions.pyc in form_argument(self, o)
     67 
     68     def form_argument(self, o):
---> 69         ufl_assert(self.current_restriction is not None, "Form argument must be restricted.")
     70         #if self.current_restriction is None:
     71         #    return o

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ufl/assertions.pyc in ufl_assert(condition, *message)
     35 def ufl_assert(condition, *message):
     36     "Assert that condition is true and otherwise issue an error with given message."
---> 37     if not condition: error(*message)
     38 

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ufl/log.pyc in error(self, *message)
    152         "Write error message and raise an exception."
    153         self._log.error(*message)
--> 154         raise self._exception_type(self._format_raw(*message))
    155 
    156     def begin(self, *message):

UFLException: Form argument must be restricted.

In [24]:
dof = Magnetic.dofmap()

In [25]:
dof.

In [27]:
mesh.cells()


Out[27]:
array([[ 0,  1, 25],
       [ 0,  5, 25],
       [ 1,  6, 25],
       [ 5,  6, 25],
       [ 1,  2, 26],
       [ 1,  6, 26],
       [ 2,  7, 26],
       [ 6,  7, 26],
       [ 2,  3, 27],
       [ 2,  7, 27],
       [ 3,  8, 27],
       [ 7,  8, 27],
       [ 3,  4, 28],
       [ 3,  8, 28],
       [ 4,  9, 28],
       [ 8,  9, 28],
       [ 5,  6, 29],
       [ 5, 10, 29],
       [ 6, 11, 29],
       [10, 11, 29],
       [ 6,  7, 30],
       [ 6, 11, 30],
       [ 7, 12, 30],
       [11, 12, 30],
       [ 7,  8, 31],
       [ 7, 12, 31],
       [ 8, 13, 31],
       [12, 13, 31],
       [ 8,  9, 32],
       [ 8, 13, 32],
       [ 9, 14, 32],
       [13, 14, 32],
       [10, 11, 33],
       [10, 15, 33],
       [11, 16, 33],
       [15, 16, 33],
       [11, 12, 34],
       [11, 16, 34],
       [12, 17, 34],
       [16, 17, 34],
       [12, 13, 35],
       [12, 17, 35],
       [13, 18, 35],
       [17, 18, 35],
       [13, 14, 36],
       [13, 18, 36],
       [14, 19, 36],
       [18, 19, 36],
       [15, 16, 37],
       [15, 20, 37],
       [16, 21, 37],
       [20, 21, 37],
       [16, 17, 38],
       [16, 21, 38],
       [17, 22, 38],
       [21, 22, 38],
       [17, 18, 39],
       [17, 22, 39],
       [18, 23, 39],
       [22, 23, 39],
       [18, 19, 40],
       [18, 23, 40],
       [19, 24, 40],
       [23, 24, 40]], dtype=uint32)

In [ ]: