Example #1
0
    def test99_assemble(self):
        """Check diff way to assemble syst are consistent"""
        mesh = UnitSquareMesh(10, 10)
        V = FunctionSpace(mesh, 'Lagrange', 2)
        u0 = Expression('0')

        def u0_bdy(x, on_boundary):
            return on_boundary

        bc = DirichletBC(V, u0, u0_bdy)
        OpEll = OperatorMass(V, V, bc)
        f = Expression('1')
        OpEll.assemble_A()
        A1 = OpEll.A
        v = TestFunction(V)
        L = f * v * dx
        b1 = assemble(L)
        bc.apply(b1)
        u1 = Function(V)
        solve(A1, u1.vector(), b1)

        A2, b2 = OpEll.assemble_Ab(f)
        u2 = Function(V)
        solve(A2, u2.vector(), b2)
        diffa = A1.array() - A2.array()
        self.assertTrue(max(abs(u1.vector().array() - \
        u2.vector().array())) < 1e-14 and max(abs(u1.vector().array())) > 1e-3)
 def test02_mupdate(self):
     """Update parameter from Function"""
     myclass = OperatorMass(self.V, self.Vm, self.bc)
     inputarray = np.random.randn(self.lenm)
     self.m.vector()[:] = inputarray
     myclass.update_m(self.m)
     self.assertTrue(np.array_equal(myclass.m.vector().array(), inputarray))
Example #3
0
 def test02_mupdate(self):
     """Update parameter from Function"""
     myclass = OperatorMass(self.V, self.Vm, self.bc)
     inputarray = np.random.randn(self.lenm)
     self.m.vector()[:] = inputarray
     myclass.update_m(self.m)
     self.assertTrue(np.array_equal(myclass.m.vector().array(), inputarray))
    def test99_assemble(self):
        """Check diff way to assemble syst are consistent"""
        mesh = UnitSquareMesh(10,10)
        V = FunctionSpace(mesh, 'Lagrange', 2)
        u0 = Expression('0')
        def u0_bdy(x, on_boundary): return on_boundary
        bc = DirichletBC(V, u0, u0_bdy)
        OpEll = OperatorMass(V, V, bc)
        f = Expression('1')
        OpEll.assemble_A()
        A1 = OpEll.A
        v = TestFunction(V)
        L = f*v*dx
        b1 = assemble(L)
        bc.apply(b1)
        u1 = Function(V)
        solve(A1, u1.vector(), b1)

        A2, b2 = OpEll.assemble_Ab(f)
        u2 = Function(V)
        solve(A2, u2.vector(), b2)
        diffa = A1.array() - A2.array()
        self.assertTrue(max(abs(u1.vector().array() - \
        u2.vector().array())) < 1e-14 and max(abs(u1.vector().array())) > 1e-3)
 def test02_mupdate2(self):
     """Update parameter from ndarray"""
     myclass = OperatorMass(self.V, self.Vm, self.bc)
     inputarray = np.random.randn(self.lenm)
     myclass.update_m(inputarray)
     self.assertTrue(np.array_equal(myclass.m.vector().array(), inputarray))
Example #6
0
 def test02_mupdate3(self):
     """Raises exception when wrong parameter format used"""
     myclass = OperatorMass(self.V, self.Vm, self.bc)
     self.assertRaises(WrongInstanceError, myclass.update_m,
                       self.m.vector())
Example #7
0
 def test02_mupdate2(self):
     """Update parameter from ndarray"""
     myclass = OperatorMass(self.V, self.Vm, self.bc)
     inputarray = np.random.randn(self.lenm)
     myclass.update_m(inputarray)
     self.assertTrue(np.array_equal(myclass.m.vector().array(), inputarray))
Example #8
0
 def test01_Am02(self):
     """Basic operator properly assembled with Dirichlet bc"""
     myclass = OperatorMass(self.V, self.Vm, self.bc2)
     maxAerr = max(abs((self.Am02 - myclass.A.array()).reshape((25, 1))))
     self.assertTrue(maxAerr < 1e-12)
Example #9
0
 def test00_inst(self):
     """Instantiate an object from class"""
     myclass = OperatorMass(self.V, self.Vm, self.bc)