示例#1
0
文件: PETSc.py 项目: daveb-dev/UBC
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
示例#2
0
文件: MHD.py 项目: daveb-dev/UBC
    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)