element_representations::ElementRepresentationTest Class Reference

List of all members.

Public Member Functions

def __init__
def setUp
def tearDown
def testSetup
def testValueShapes
def testGeometryDimensions
def testTopologyDimensions
def testBasisFunctions
def testDofTopology
def testPointEvaluation
def testCoordinates
def testSubHierarchy

Public Attributes

 P1
 P2
 Q
 VQ
 V1
 V2
 T1
 T2
 TH
 M
 P1rep
 P2rep
 Qrep
 VQrep
 V1rep
 V2rep
 T1rep
 T2rep
 THrep
 Mrep
 reps


Detailed Description

Definition at line 35 of file element_representations.py.


Member Function Documentation

def element_representations::ElementRepresentationTest::__init__ (   self,
  args,
  kwargs 
)

Definition at line 36 of file element_representations.py.

00036                                        :
00037         unittest.TestCase.__init__(self, *args, **kwargs)
00038     
    def setUp(self):

def element_representations::ElementRepresentationTest::setUp (   self  ) 

Definition at line 39 of file element_representations.py.

00039                    :
00040         SyFi.initSyFi(2)
00041         polygon = "triangle"
00042         
00043         self.P1 = FiniteElement("CG", polygon, 1)
00044         self.P2 = FiniteElement("CG", polygon, 2)
00045         self.Q  = FiniteElement("Q",  polygon, 1)
00046         self.VQ = VectorElement("Q",  polygon, 1)
00047         self.V1 = VectorElement("CG", polygon, 1)
00048         self.V2 = VectorElement("CG", polygon, 2)
00049         self.T1 = TensorElement("CG", polygon, 1, symmetry=True)
00050         self.T2 = TensorElement("CG", polygon, 2, symmetry=True)
00051         self.TH = self.V2 + self.P1
00052         self.M  = MixedElement(self.T1, self.V1, self.P1)
00053         
00054         self.P1rep = ElementRepresentation(self.P1)
00055         self.P2rep = ElementRepresentation(self.P2)
00056         self.Qrep  = ElementRepresentation(self.Q, quad_rule = find_quadrature_rule(polygon, 2))
00057         self.VQrep = ElementRepresentation(self.VQ, quad_rule = find_quadrature_rule(polygon, 2))
00058         self.V1rep = ElementRepresentation(self.V1)
00059         self.V2rep = ElementRepresentation(self.V2)
00060         self.T1rep = ElementRepresentation(self.T1)
00061         self.T2rep = ElementRepresentation(self.T2)
00062         self.THrep = ElementRepresentation(self.TH)
00063         self.Mrep  = ElementRepresentation(self.M)
00064         
00065         self.reps = [getattr(self, d) for d in dir(self) if isinstance(getattr(self, d), ElementRepresentation)]
00066     
    def tearDown(self):

def element_representations::ElementRepresentationTest::tearDown (   self  ) 

Definition at line 67 of file element_representations.py.

00067                       :
00068         pass
00069     
    def testSetup(self):

def element_representations::ElementRepresentationTest::testBasisFunctions (   self  ) 

Definition at line 109 of file element_representations.py.

00109                                 :
00110         # Tests that for each basisfunction there is at least one nonzero value component
00111         #for rep in (self.P1rep, self.V1rep, self.T1rep):
00112         #for rep in (self.V1rep, ):
00113         for rep in self.reps:
00114             if rep.ufl_element.family() == "Quadrature"\
00115                or rep.ufl_element.family() == "Boundary Quadrature":
00116                 continue
00117             #print 
00118             #print rep
00119             for i in range(rep.local_dimension):
00120                 zeros = 0
00121                 for c in ufl.permutation.compute_indices(rep.value_shape):
00122                     #print "Calling basisfunction(", i, c, ") for element ", repr(rep.ufl_element)
00123                     N = rep.basisfunction(i, c)
00124                     #print i, c, N
00125                     if N == 0.0:
00126                         zeros += 1
00127                 self.assertTrue(zeros < rep.value_size)
00128                 if rep.local_dimension > 1 and rep.value_size > 1:
00129                     self.assertTrue(zeros > 0) # This should hold for compositions of scalar elements
00130         # FIXME: Test something more
00131     
    def testDofTopology(self):

def element_representations::ElementRepresentationTest::testCoordinates (   self  ) 

Definition at line 163 of file element_representations.py.

00163                              :
00164         for rep in self.reps:
00165             #print
00166             #print rep.ufl_element
00167             for i in range(rep.local_dimension):
00168                 x  = rep.dof_x[i]
00169                 xi = rep.dof_xi[i]
00170                 #print i, xi
00171                 #x2 = rep.xi_to_x(xi)
00172                 #xi2 = rep.x_to_xi(x)
00173                 #self.assertTrue(x2 == x)
00174                 #self.assertTrue(xi2 == xi)
00175         # FIXME: Test something more
00176     
    def testSubHierarchy(self):

def element_representations::ElementRepresentationTest::testDofTopology (   self  ) 

Definition at line 132 of file element_representations.py.

00132                              :
00133         def triangle_entities():
00134             for d in range(2):
00135                 for i in range((3,3,1)[d]):
00136                     yield (d,i)
00137         for rep in self.reps:
00138             for (d,i) in triangle_entities():
00139                 dofs = rep.entity_dofs[d][i]
00140                 self.assertTrue(len(dofs) == rep.num_entity_dofs[d])
00141         # FIXME: Test something more
00142     
    def testPointEvaluation(self):

def element_representations::ElementRepresentationTest::testGeometryDimensions (   self  ) 

Definition at line 85 of file element_representations.py.

00085                                     :
00086         self.assertTrue( self.P1rep.geometric_dimension == 2 )
00087         self.assertTrue( self.P2rep.geometric_dimension == 2 )
00088         self.assertTrue( self.Qrep.geometric_dimension  == 2 )
00089         self.assertTrue( self.VQrep.geometric_dimension == 2 )
00090         self.assertTrue( self.V1rep.geometric_dimension == 2 )
00091         self.assertTrue( self.V2rep.geometric_dimension == 2 )
00092         self.assertTrue( self.T1rep.geometric_dimension == 2 )
00093         self.assertTrue( self.T2rep.geometric_dimension == 2 )
00094         self.assertTrue( self.THrep.geometric_dimension == 2 )
00095         self.assertTrue( self.Mrep.geometric_dimension  == 2 )
00096     
    def testTopologyDimensions(self):

def element_representations::ElementRepresentationTest::testPointEvaluation (   self  ) 

Definition at line 143 of file element_representations.py.

00143                                  :
00144         # Tests that the property { N_k(\xi_j) == \delta_{kj} } holds for scalar elements.
00145         for rep in (self.P1rep, self.P2rep):
00146             for i in range(rep.local_dimension):
00147                 x  = rep.dof_x[i]
00148                 xi = rep.dof_xi[i]
00149                 
00150                 repmap = swiginac.exmap()
00151                 for j in range(2):
00152                     repmap[rep.p[j]] = xi[j]
00153                 
00154                 for k in range(rep.local_dimension):
00155                     c = () # Assuming scalar element here:
00156                     N = rep.basisfunction(k, c)
00157                     Nxi = N.subs(repmap)
00158                     if i == k:
00159                         self.assertTrue(Nxi == 1.0)
00160                     else:
00161                         self.assertTrue(Nxi == 0.0)
00162     
    def testCoordinates(self):

def element_representations::ElementRepresentationTest::testSetup (   self  ) 

Definition at line 70 of file element_representations.py.

00070                        :
00071         pass
00072 
    def testValueShapes(self):

def element_representations::ElementRepresentationTest::testSubHierarchy (   self  ) 

Definition at line 177 of file element_representations.py.

00177                               :
00178         self.assertTrue( self.P1rep.num_sub_elements == 0 )
00179         self.assertTrue( self.P2rep.num_sub_elements == 0 )
00180         self.assertTrue( self.Qrep.num_sub_elements  == 0 )
00181         self.assertTrue( self.VQrep.num_sub_elements == 2 )
00182         self.assertTrue( self.V1rep.num_sub_elements == 2 )
00183         self.assertTrue( self.V2rep.num_sub_elements == 2 )
00184         self.assertTrue( self.T1rep.num_sub_elements == 3 )
00185         self.assertTrue( self.T2rep.num_sub_elements == 3 )
00186         self.assertTrue( self.THrep.num_sub_elements == 2 )
00187         self.assertTrue( self.Mrep.num_sub_elements  == 3 )
00188 
00189 
tests = [ElementRepresentationTest]

def element_representations::ElementRepresentationTest::testTopologyDimensions (   self  ) 

Definition at line 97 of file element_representations.py.

00097                                     :
00098         self.assertTrue( self.P1rep.topological_dimension == 2 )
00099         self.assertTrue( self.P2rep.topological_dimension == 2 )
00100         self.assertTrue( self.Qrep.topological_dimension  == 2 )
00101         self.assertTrue( self.VQrep.topological_dimension == 2 )
00102         self.assertTrue( self.V1rep.topological_dimension == 2 )
00103         self.assertTrue( self.V2rep.topological_dimension == 2 )
00104         self.assertTrue( self.T1rep.topological_dimension == 2 )
00105         self.assertTrue( self.T2rep.topological_dimension == 2 )
00106         self.assertTrue( self.THrep.topological_dimension == 2 )
00107         self.assertTrue( self.Mrep.topological_dimension  == 2 )
00108     
    def testBasisFunctions(self):

def element_representations::ElementRepresentationTest::testValueShapes (   self  ) 

Definition at line 73 of file element_representations.py.

00073                              :
00074         self.assertTrue( self.P1rep.value_shape == () )
00075         self.assertTrue( self.P2rep.value_shape == () )
00076         self.assertTrue( self.Qrep.value_shape  == () )
00077         self.assertTrue( self.VQrep.value_shape == (2,) )
00078         self.assertTrue( self.V1rep.value_shape == (2,) )
00079         self.assertTrue( self.V2rep.value_shape == (2,) )
00080         self.assertTrue( self.T1rep.value_shape == (2,2) )
00081         self.assertTrue( self.T2rep.value_shape == (2,2) )
00082         self.assertTrue( self.THrep.value_shape == (2+1,) )
00083         self.assertTrue( self.Mrep.value_shape  == (4+2+1,) )
00084 
    def testGeometryDimensions(self):


Member Data Documentation

Definition at line 52 of file element_representations.py.

Definition at line 63 of file element_representations.py.

Definition at line 43 of file element_representations.py.

Definition at line 54 of file element_representations.py.

Definition at line 44 of file element_representations.py.

Definition at line 55 of file element_representations.py.

Definition at line 45 of file element_representations.py.

Definition at line 56 of file element_representations.py.

Definition at line 65 of file element_representations.py.

Definition at line 49 of file element_representations.py.

Definition at line 60 of file element_representations.py.

Definition at line 50 of file element_representations.py.

Definition at line 61 of file element_representations.py.

Definition at line 51 of file element_representations.py.

Definition at line 62 of file element_representations.py.

Definition at line 47 of file element_representations.py.

Definition at line 58 of file element_representations.py.

Definition at line 48 of file element_representations.py.

Definition at line 59 of file element_representations.py.

Definition at line 46 of file element_representations.py.

Definition at line 57 of file element_representations.py.


The documentation for this class was generated from the following file:

Generated on Mon Aug 31 16:17:05 2009 for SyFi by  doxygen 1.5.9