SyFi
0.3
|
00001 #!/usr/bin/env python 00002 00003 __authors__ = "Martin Sandve Alnes" 00004 __date__ = "2008-09-04 -- 2012-05-16" 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, cell2volume, num_integrals 00030 00031 import instant 00032 instant.set_logging_level("warning") 00033 00034 class ElementIndexingTest(TempDirTestBase): 00035 def __init__(self, *args, **kwargs): 00036 TempDirTestBase.__init__(self, *args, **kwargs) 00037 00038 def setUp(self): 00039 TempDirTestBase.setUp(self) 00040 00041 def tearDown(self): 00042 TempDirTestBase.tearDown(self) 00043 00044 def testSetup(self): 00045 "Just see that setUp and tearDown works." 00046 self.assertTrue("Did not crash in setUp.") 00047 00048 def testScalarArgument(self): 00049 polygon = "triangle" 00050 degree = 1 00051 element = FiniteElement("CG", polygon, degree) 00052 v = Argument(element) 00053 a = v*dx 00054 form, module, formdata, prefix = sfc.jit(a, parameters = self.options) 00055 # Test form properties 00056 self.assertTrue(form.rank() == 1) 00057 self.assertTrue(form.num_coefficients() == 0) 00058 self.assertTrue(num_integrals(form) == (1,0,0)) 00059 # Test assembled values 00060 A = assemble_on_cell(form, polygon, coeffs=[], elements=[element]) 00061 #self.assertAlmostEqual(A, cell2volume[polygon]) # TODO 00062 00063 def testScalarCoefficient(self): 00064 polygon = "triangle" 00065 degree = 1 00066 element = FiniteElement("CG", polygon, degree) 00067 f = Coefficient(element) 00068 a = f*dx 00069 form, module, formdata, prefix = sfc.jit(a, parameters = self.options) 00070 # Test form properties 00071 self.assertTrue(form.rank() == 0) 00072 self.assertTrue(form.num_coefficients() == 1) 00073 self.assertTrue(num_integrals(form) == (1,0,0)) 00074 # Test assembled values 00075 const = 1.23 00076 A = assemble_on_cell(form, polygon, coeffs=[const]) 00077 self.assertAlmostEqual(A, const*cell2volume[polygon]) 00078 00079 def testVectorArgument(self): 00080 polygon = "triangle" 00081 degree = 1 00082 element = VectorElement("CG", polygon, degree) 00083 v = Argument(element) 00084 a = v[0]*dx 00085 form, module, formdata, prefix = sfc.jit(a, parameters = self.options) 00086 # Test form properties 00087 self.assertTrue(form.rank() == 1) 00088 self.assertTrue(form.num_coefficients() == 0) 00089 self.assertTrue(num_integrals(form) == (1,0,0)) 00090 # Test assembled values 00091 A = assemble_on_cell(form, polygon, coeffs=[], elements=[element]) 00092 #self.assertAlmostEqual(A, cell2volume[polygon]) # TODO 00093 00094 def testVectorCoefficient(self): 00095 polygon = "triangle" 00096 degree = 1 00097 element = VectorElement("CG", polygon, degree) 00098 f = Coefficient(element) 00099 a = (f[0] + f[1])*dx 00100 form, module, formdata, prefix = sfc.jit(a, parameters = self.options) 00101 # Test form properties 00102 self.assertTrue(form.rank() == 0) 00103 self.assertTrue(form.num_coefficients() == 1) 00104 self.assertTrue(num_integrals(form) == (1,0,0)) 00105 # Test assembled values 00106 const = (1.23, 4.56) 00107 A = assemble_on_cell(form, polygon, coeffs=[const]) 00108 self.assertAlmostEqual(A, (float(const[0]) + 00109 float(const[1]))*cell2volume[polygon])