Massgrad = numpy.zeros((m - 1, 1)) Laplgrad = numpy.zeros((m - 1, 1)) InterpError = numpy.zeros((m - 1, 1)) InterpOrder = numpy.zeros((m - 1, 1)) dim = 2 for xx in xrange(1, m): NN[xx - 1] = xx + 0 nn = int(2**(NN[xx - 1][0])) omega = 1 if dim == 2: # mesh = UnitSquareMesh(int(nn),int(nn)) mesh = RectangleMesh(0.0, 0.0, 1.0, 1.0, int(nn), int(nn), 'left') u0, p0, CurlCurl, gradPres, CurlMass = ExactSol.M2D(2, Show="yes", Mass=omega) else: mesh = UnitCubeMesh(int(nn), int(nn), int(nn)) u0, p0, CurlCurl, gradPres, CurlMass = ExactSol.M3D(1, Show="yes", Mass=omega) parameters["form_compiler"]["quadrature_degree"] = -1 order = 1 parameters['reorder_dofs_serial'] = False Magnetic = FunctionSpace(mesh, "N1curl", order) Lagrange = FunctionSpace(mesh, "CG", order) VLagrange = VectorFunctionSpace(mesh, "CG", order) parameters['reorder_dofs_serial'] = False W = Magnetic * Lagrange
Lagrange = FiniteElement("CG", mesh.ufl_cell(), order) MagneticF = FunctionSpace(mesh, "N1curl", order) LagrangeF = FunctionSpace(mesh, "CG", order) Magneticdim[xx - 1] = MagneticF.dim() print "Magnetic: ", Magneticdim[xx - 1] def boundary(x, on_boundary): return on_boundary (b) = TrialFunction(MagneticF) (c) = TestFunction(MagneticF) (r) = TrialFunction(LagrangeF) (s) = TestFunction(LagrangeF) b0, r0, CurlCurl, gradPres, CurlMass = ExactSol.M2D(1, Mass=1) bc = DirichletBC(MagneticF, b0, boundary) a = inner(curl(b), curl(c)) * dx + inner(b, c) * dx t1 = inner(grad(b), grad(c)) * dx + inner(b, c) * dx a1 = inner(curl(b), curl(c)) * dx z = inner(b, c) * dx + inner(div(b), div(c)) * dx m = inner(b, c) * dx t2 = inner(curl(b), curl(c)) * dx + inner(b, c) * dx + inner( div(b), div(c)) * dx L = inner(CurlMass, c) * dx X = assemble(inner(r, s) * dx) X = CP.Assemble(X)