SyFi  0.3
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 testArguments
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.


Constructor & Destructor Documentation

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

Definition at line 36 of file element_representations.py.

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

Member Function Documentation

Definition at line 39 of file element_representations.py.

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

Definition at line 67 of file element_representations.py.

00067 
00068     def tearDown(self):
00069         pass
    

Definition at line 109 of file element_representations.py.

References element_representations.ElementRepresentationTest.reps.

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

Definition at line 163 of file element_representations.py.

References element_representations.ElementRepresentationTest.reps.

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

Definition at line 132 of file element_representations.py.

References element_representations.ElementRepresentationTest.reps.

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

Definition at line 85 of file element_representations.py.

References element_representations.ElementRepresentationTest.Mrep, element_representations.ElementRepresentationTest.P1rep, element_representations.ElementRepresentationTest.P2rep, element_representations.ElementRepresentationTest.Qrep, element_representations.ElementRepresentationTest.T1rep, element_representations.ElementRepresentationTest.T2rep, element_representations.ElementRepresentationTest.THrep, element_representations.ElementRepresentationTest.V1rep, element_representations.ElementRepresentationTest.V2rep, and element_representations.ElementRepresentationTest.VQrep.

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

Definition at line 143 of file element_representations.py.

References element_representations.ElementRepresentationTest.P1rep, and element_representations.ElementRepresentationTest.P2rep.

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

Definition at line 70 of file element_representations.py.

00070 
00071     def testSetup(self):
00072         pass

Definition at line 177 of file element_representations.py.

References element_representations.ElementRepresentationTest.Mrep, element_representations.ElementRepresentationTest.P1rep, element_representations.ElementRepresentationTest.P2rep, element_representations.ElementRepresentationTest.Qrep, element_representations.ElementRepresentationTest.T1rep, element_representations.ElementRepresentationTest.T2rep, element_representations.ElementRepresentationTest.THrep, element_representations.ElementRepresentationTest.V1rep, element_representations.ElementRepresentationTest.V2rep, and element_representations.ElementRepresentationTest.VQrep.

00177 
00178     def testSubHierarchy(self):
00179         self.assertTrue(len(self.P1rep.sub_elements) == 0 )
00180         self.assertTrue(len(self.P2rep.sub_elements) == 0 )
00181         self.assertTrue(len(self.Qrep.sub_elements)  == 0 )
00182         self.assertTrue(len(self.VQrep.sub_elements) == 2 )
00183         self.assertTrue(len(self.V1rep.sub_elements) == 2 )
00184         self.assertTrue(len(self.V2rep.sub_elements) == 2 )
00185         self.assertTrue(len(self.T1rep.sub_elements) == 3 )
00186         self.assertTrue(len(self.T2rep.sub_elements) == 3 )
00187         self.assertTrue(len(self.THrep.sub_elements) == 2 )
00188         self.assertTrue(len(self.Mrep.sub_elements)  == 3 )
00189 

Definition at line 97 of file element_representations.py.

References element_representations.ElementRepresentationTest.Mrep, element_representations.ElementRepresentationTest.P1rep, element_representations.ElementRepresentationTest.P2rep, element_representations.ElementRepresentationTest.Qrep, element_representations.ElementRepresentationTest.T1rep, element_representations.ElementRepresentationTest.T2rep, element_representations.ElementRepresentationTest.THrep, element_representations.ElementRepresentationTest.V1rep, element_representations.ElementRepresentationTest.V2rep, and element_representations.ElementRepresentationTest.VQrep.

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

Definition at line 73 of file element_representations.py.

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


Member Data Documentation


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines