In [11]:
from dolfin import *
import numpy
nn = 1
mesh = UnitCubeMesh(int(nn),int(nn),int(nn))
order = 1
parameters['reorder_dofs_serial'] = False
Magnetic = FunctionSpace(mesh, "N1curl", order)
Lagrange = FunctionSpace(mesh, "CG", order)
print Magnetic.dim()
def boundary(x, on_boundary):
        return on_boundary


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.
19

In [6]:
B = BoundaryMesh(Magnetic.mesh(),"exterior",False)
numpy.sort(B.entity_map(1).array().astype("float_","C"))


Out[6]:
array([  2.,   4.,   5.,   7.,  11.,  12.,  13.,  15.])

In [13]:
E = EdgeFunctionBool(mesh)
print E.array()
VertexBoundary = numpy.zeros(mesh.num_edges())
VertexBoundary[E.array()] = 1
print VertexBoundary


[False False False False False False False False  True  True  True  True
 False False False False]
[ 0.  0.  0.  0.  0.  0.  0.  0.  1.  1.  1.  1.  0.  0.  0.  0.]

In [14]:
B = BoundaryMesh(Magnetic.mesh(),"exterior",False)
print numpy.sort(B.entity_map(0).array().astype("float_","C"))
bb = numpy.sort(B.entity_map(0).array().astype("float_","C"))
print numpy.sort(B.entity_map(1).array().astype("float_","C"))


[  0.   1.   2.   3.   4.   5.   9.  10.  14.  15.  19.  20.  21.  22.  23.
  24.]
[  2.   4.   7.  11.  13.  15.  20.  27.  33.  40.  45.  46.  49.  52.  53.
  55.]

In [16]:
B = BoundaryMesh(Magnetic.mesh(),"exterior")
B.entity_map(0).array()


Out[16]:
array([ 0,  1,  5,  2,  3,  4,  9, 10, 14, 15, 19, 20, 21, 22, 23, 24], dtype=uint64)

In [13]:



vert 0

edge 1

edge 2

edge 4

vert 1

edge 0

edge 2

edge 6

edge 7

vert 2

edge 5

edge 7

edge 10

edge 11

vert 3

edge 9

edge 11

edge 14

edge 15

vert 4

edge 13

edge 15

vert 5

edge 3

edge 4

edge 18

edge 20

vert 9

edge 13

edge 14

edge 16

edge 27

vert 10

edge 19

edge 20

edge 31

edge 33

vert 14

edge 27

edge 28

edge 29

edge 40

vert 15

edge 32

edge 33

edge 44

edge 46

vert 19

edge 40

edge 41

edge 42

edge 53

vert 20

edge 45

edge 46

vert 21

edge 43

edge 44

edge 45

edge 49

vert 22

edge 47

edge 48

edge 49

edge 52

vert 23

edge 50

edge 51

edge 52

edge 55

vert 24

edge 53

edge 54

edge 55
Out[13]:
array([  4.,   7.,  11.,  15.,  15.,  20.,  27.,  33.,  40.,  46.,  53.,
        46.,  49.,  52.,  55.,  55.])

In [33]:
b = SparsityPatternBuilder()

In [2]:
B = EdgeFunctionBool(mesh)

In [12]:
B = BoundaryMesh(mesh,"exterior")

In [15]:
bb = B.entity_map(2).array()
print bb


[ 0  3  4  6  7  9 10 12 13 15 16 17]

In [24]:
k = 0
VertexBoundary = numpy.zeros(3*bb.size)
for face in faces(mesh):
        if face.index() == bb[k]:
            k = k+1
            print "\nface", face.index()
            for edge in edges(face):
                print "      edge", edge.index()
                VertexBoundary[kk] = edge.index()
            kk = kk+1
VertexBoundary


face 0
      edge 1
      edge 2
      edge 0

face 3
      edge 4
      edge 5
      edge 2

face 4
      edge 1
      edge 7
      edge 6

face 6
      edge 5
      edge 8
      edge 7

face 7
      edge 9
      edge 10
      edge 6

face 9
      edge 8
      edge 11
      edge 10

face 10
      edge 12
      edge 13
      edge 0

face 12
      edge 4
      edge 14
      edge 13

face 13
      edge 9
      edge 16
      edge 15

face 15
      edge 11
      edge 17
      edge 16

face 16
      edge 12
      edge 18
      edge 15

face 17
      edge 14
      edge 17
      edge 18
Out[24]:
array([ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.])