SyFi  0.3
volumes.VolumeTest Class Reference

List of all members.

Public Member Functions

def __init__
def setUp
def tearDown
def testSetup
def testJitVolumeInterval
def testJitVolumeTriangle
def testJitVolumeTetrahedron
def testJitConstantInterval
def testJitConstantTriangle
def testJitConstantTetrahedron

Public Attributes

 options

Private Member Functions

def _testJitVolume
def _testJitVolumeQuadrilateral
def _testJitVolumeHexahedron
def _testJitConstant
def _testJitConstantQuadrilateral
def _testJitConstantHexahedron

Detailed Description

Definition at line 37 of file volumes.py.


Constructor & Destructor Documentation

def volumes.VolumeTest.__init__ (   self,
  args,
  kwargs 
)

Definition at line 38 of file volumes.py.

00038 
00039     def __init__(self, *args, **kwargs):
00040         unittest.TestCase.__init__(self, *args, **kwargs)
00041         shutil.rmtree(_done_test_temp_dir, ignore_errors=True)
00042         os.mkdir(_done_test_temp_dir)
    

Member Function Documentation

def volumes.VolumeTest._testJitConstant (   self,
  polygon,
  degree 
) [private]
Test that the integral of a constant coefficient over a unit 
cell mesh equals the constant times the volume of the unit cell.

Definition at line 89 of file volumes.py.

References cell_assembly.assemble_on_cell(), volumes.num_integrals(), quadjit.QuadJitTest.options, volumes.VolumeTest.options, jit.JitTest.options, and element_indexing.ElementIndexingTest.options.

Referenced by volumes.VolumeTest._testJitConstantHexahedron(), sfc_jit.test.SFCJitTest._testJitConstantHexahedron(), volumes.VolumeTest._testJitConstantQuadrilateral(), sfc_jit.test.SFCJitTest._testJitConstantQuadrilateral(), volumes.VolumeTest.testJitConstantInterval(), sfc_jit.test.SFCJitTest.testJitConstantInterval(), volumes.VolumeTest.testJitConstantTetrahedron(), sfc_jit.test.SFCJitTest.testJitConstantTetrahedron(), volumes.VolumeTest.testJitConstantTriangle(), and sfc_jit.test.SFCJitTest.testJitConstantTriangle().

00089 
00090     def _testJitConstant(self, polygon, degree):
00091         """Test that the integral of a constant coefficient over a unit 
00092         cell mesh equals the constant times the volume of the unit cell."""
00093         element = FiniteElement("CG", polygon, degree)
00094         f = Coefficient(element)
00095         a = f*dx
00096         form, module, formdata = sfc.jit(a, parameters = self.options)
00097         self.assertTrue(form.rank() == 0)
00098         self.assertTrue(form.num_coefficients() == 1)
00099         self.assertTrue(num_integrals(form) == (1,0,0))
00100         const = 1.23
00101         A = assemble_on_cell(form, polygon, coeffs=[const])
00102         self.assertAlmostEqual(A, const*cell2volume[polygon])
    

Definition at line 123 of file volumes.py.

References volumes.VolumeTest._testJitConstant().

00123 
00124     def _testJitConstantHexahedron(self): # Not supported by dolfin yet
00125         polygon = "hexahedron"
00126         self._testJitConstant(polygon, 1)
00127         self._testJitConstant(polygon, 2)
00128 

Definition at line 118 of file volumes.py.

References volumes.VolumeTest._testJitConstant().

00118 
00119     def _testJitConstantQuadrilateral(self): # Not supported by dolfin yet
00120         polygon = "quadrilateral"
00121         self._testJitConstant(polygon, 1)
00122         self._testJitConstant(polygon, 2)

def volumes.VolumeTest._testJitVolume (   self,
  polygon 
) [private]

Definition at line 63 of file volumes.py.

Referenced by volumes.VolumeTest._testJitVolumeHexahedron(), sfc_jit.test.SFCJitTest._testJitVolumeHexahedron(), volumes.VolumeTest._testJitVolumeQuadrilateral(), sfc_jit.test.SFCJitTest._testJitVolumeQuadrilateral(), volumes.VolumeTest.testJitVolumeInterval(), sfc_jit.test.SFCJitTest.testJitVolumeInterval(), volumes.VolumeTest.testJitVolumeTetrahedron(), sfc_jit.test.SFCJitTest.testJitVolumeTetrahedron(), volumes.VolumeTest.testJitVolumeTriangle(), and sfc_jit.test.SFCJitTest.testJitVolumeTriangle().

00063 
00064     def _testJitVolume(self, polygon):
00065         "Test that the integral of 1.0 over a unit cell equals the length/area/volume of the unit cell."
00066         c = Constant(polygon)
00067         a = c*dx
00068         form, module, formdata = sfc.jit(a, parameters = self.options)
00069         self.assertTrue(form.rank() == 0)
00070         self.assertTrue(form.num_coefficients() == 1)
00071         self.assertTrue(num_integrals(form) == (1,0,0))
00072         A = assemble_on_cell(form, polygon, coeffs=[1.0])
00073         self.assertAlmostEqual(A, cell2volume[polygon])
    

Definition at line 86 of file volumes.py.

References volumes.VolumeTest._testJitVolume().

00086 
00087     def _testJitVolumeHexahedron(self): # Not supported by dolfin yet
00088         self._testJitVolume("hexahedron")

Definition at line 83 of file volumes.py.

References volumes.VolumeTest._testJitVolume().

00083 
00084     def _testJitVolumeQuadrilateral(self): # Not supported by dolfin yet
00085         self._testJitVolume("quadrilateral")
    
def volumes.VolumeTest.setUp (   self)

Definition at line 43 of file volumes.py.

References quadjit.QuadJitTest.options, volumes.VolumeTest.options, jit.JitTest.options, and element_indexing.ElementIndexingTest.options.

00043 
00044     def setUp(self):
00045         #print "Running sfc jit test in testdir"
00046         #print "Imported SyFi from location", SyFi.__file__
00047         #print "Imported sfc  from location", sfc.__file__
00048         self.options = sfc.default_parameters()
00049         self.options.compilation.cache_dir = os.path.abspath("test_cache")
00050         # Generate code in a clean directory:
00051         shutil.rmtree(_test_temp_dir, ignore_errors=True)
00052         os.mkdir(_test_temp_dir)
00053         os.chdir(_test_temp_dir)
    

Definition at line 54 of file volumes.py.

00054 
00055     def tearDown(self):
00056         dirs = glob.glob("*")
00057         os.chdir("..")
00058         for d in dirs:
00059             os.rename(os.path.join(_test_temp_dir, d), os.path.join(_done_test_temp_dir, d))
    

Definition at line 103 of file volumes.py.

References volumes.VolumeTest._testJitConstant().

00103 
00104     def testJitConstantInterval(self):
00105         polygon = "interval"
00106         self._testJitConstant(polygon, 1)
00107         self._testJitConstant(polygon, 2)

Definition at line 113 of file volumes.py.

References volumes.VolumeTest._testJitConstant().

00113 
00114     def testJitConstantTetrahedron(self):
00115         polygon = "tetrahedron"
00116         self._testJitConstant(polygon, 1)
00117         self._testJitConstant(polygon, 2)
    

Definition at line 108 of file volumes.py.

References volumes.VolumeTest._testJitConstant().

00108 
00109     def testJitConstantTriangle(self):
00110         polygon = "triangle"
00111         self._testJitConstant(polygon, 1)
00112         self._testJitConstant(polygon, 2)
    

Definition at line 74 of file volumes.py.

References volumes.VolumeTest._testJitVolume().

00074 
00075     def testJitVolumeInterval(self):
00076         self._testJitVolume("interval")

Definition at line 80 of file volumes.py.

References volumes.VolumeTest._testJitVolume().

00080 
00081     def testJitVolumeTetrahedron(self):
00082         self._testJitVolume("tetrahedron")
    

Definition at line 77 of file volumes.py.

References volumes.VolumeTest._testJitVolume().

00077 
00078     def testJitVolumeTriangle(self):
00079         self._testJitVolume("triangle")
    

Definition at line 60 of file volumes.py.

00060 
00061     def testSetup(self):
00062         pass
    

Member Data Documentation


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