SyFi  0.3
test_jit.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 
00003 __authors__ = "Martin Sandve Alnes"
00004 __date__ = "2008-09-04 -- 2012-16-05"
00005 
00006 import unittest
00007 import os, sys, glob, shutil, commands
00008 
00009 import ufl
00010 
00011 from ufl import FiniteElement
00012 from ufl import VectorElement
00013 from ufl import TensorElement
00014 from ufl import MixedElement
00015 
00016 from ufl import Argument
00017 from ufl import TestFunction
00018 from ufl import TrialFunction
00019 
00020 from ufl import Coefficient
00021 from ufl import Constant
00022 
00023 from ufl import dx, ds
00024 
00025 import SyFi
00026 import sfc as sfc
00027 
00028 from test_tempdir_base import TempDirTestBase
00029 from cell_assembly import assemble_on_cell, num_integrals
00030 
00031 class JitTest(TempDirTestBase):
00032     def __init__(self, *args, **kwargs):
00033         TempDirTestBase.__init__(self, *args, **kwargs)
00034 
00035     def setUp(self):
00036         TempDirTestBase.setUp(self)
00037         # TODO: Perhaps subclass JitTest and use different setup routines to test options?
00038         self.options.code.integral.integration_method = "quadrature"
00039 
00040     def tearDown(self):
00041         TempDirTestBase.tearDown(self)
00042 
00043     def testSetup(self):
00044         "Just see that setUp and tearDown works."
00045         self.assertTrue("Did not crash in setUp.")
00046 
00047     def testJitMass(self):
00048         "Test the mass matrix."
00049         element = FiniteElement("CG", "triangle", 1)
00050         v = TestFunction(element)
00051         u = TrialFunction(element)
00052         a = u*v*dx
00053         form, module, formdata, prefix = sfc.jit(a, parameters = self.options)
00054         self.assertTrue(form.rank() == 2)
00055         self.assertTrue(form.num_coefficients() == 0)
00056         self.assertTrue(num_integrals(form) == (1,0,0))
00057         A = assemble_on_cell(form, "triangle", coeffs=[], elements=[element,element])
00058         # TODO: Assert correct result
00059 
00060     def testJitWeightedMass(self):
00061         "Test the weighted mass matrix."
00062         element = FiniteElement("CG", "triangle", 1)
00063         v = TestFunction(element)
00064         u = TrialFunction(element)
00065         f = Coefficient(element)
00066         a = f*u*v*dx
00067         form, module, formdata, prefix = sfc.jit(a, parameters = self.options)
00068         self.assertTrue(form.rank() == 2)
00069         self.assertTrue(form.num_coefficients() == 1)
00070         self.assertTrue(num_integrals(form) == (1,0,0))
00071         A = assemble_on_cell(form, "triangle", coeffs=[5.43], elements=[element,element])
00072         # TODO: Assert correct result
00073 
00074     def testJitSource(self):
00075         "Test the source vector."
00076         element = FiniteElement("CG", "triangle", 1)
00077         v = TestFunction(element)
00078         f = Coefficient(element)
00079         a = f*v*dx
00080         form, module, formdata, prefix = sfc.jit(a, parameters = self.options)
00081         self.assertTrue(form.rank() == 1)
00082         self.assertTrue(form.num_coefficients() == 1)
00083         self.assertTrue(num_integrals(form) == (1,0,0))
00084         A = assemble_on_cell(form, "triangle", coeffs=[3.14], elements=[element])
00085         # TODO: Assert correct result
00086 
00087     def testJitSplitTerms(self):
00088         "Test a form split over two foo*dx terms, using the mass matrix."
00089         element = FiniteElement("CG", "triangle", 1)
00090         v = TestFunction(element)
00091         u = TrialFunction(element)
00092         f = Coefficient(element)
00093         a = u*v*dx + f*u*v*dx
00094         form, module, formdata, prefix = sfc.jit(a, parameters = self.options)
00095         self.assertTrue(form.rank() == 2)
00096         self.assertTrue(form.num_coefficients() == 1)
00097         self.assertTrue(num_integrals(form) == (1,0,0))
00098         A = assemble_on_cell(form, "triangle", coeffs=[4.43], elements=[element,element])
00099         # TODO: Assert correct result
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines