Ejemplo n.º 1
0
    f = -MU * Laplacian + Advection + gradPres

    bc = DirichletBC(W.sub(0), u0, boundary)
    bcs = [bc]

    (u, p) = TrialFunctions(W)
    (v, q) = TestFunctions(W)

    mu = Constant(1e0)

    n = FacetNormal(mesh)
    h = CellSize(mesh)
    h_avg = avg(h)
    d = 0
    u_k, p_k = common.Stokes(V, Q, u0, Expression(("0", "0")), [1, 1, mu])
    p_k.vector()[:] = p_k.vector().array() - np.max(p_k.vector().array())
    uOld = np.concatenate((u_k.vector().array(), p_k.vector().array()), axis=0)
    r = IO.arrayToVec(uOld[:-1])

    a11 = mu * inner(grad(v), grad(u)) * dx + inner(
        (grad(u) * u_k), v) * dx + (1 / 2) * div(u_k) * inner(
            u, v) * dx - (1 / 2) * inner(u_k, n) * inner(u, v) * ds
    a12 = div(v) * p * dx
    a21 = div(u) * q * dx
    L1 = inner(v, f) * dx
    a = a11 - a12 - a21
    r11 = mu * inner(grad(v), grad(u_k)) * dx + inner(
        (grad(u_k) * u_k), v) * dx + (1 / 2) * div(u_k) * inner(
            u_k, v) * dx - (1 / 2) * inner(u_k, n) * inner(u_k, v) * ds
    r12 = div(v) * p_k * dx
Ejemplo n.º 2
0
    # MU = Constant(0.01)
    # MU = 1000.0
    MU = 1.0
    bcc = DirichletBC(W.sub(0), u0, boundary)
    bcs = [bcc]

    (u, p) = TrialFunctions(W)
    (v, q) = TestFunctions(W)

    f = -MU * Laplacian + Advection + gradPres

    n = FacetNormal(mesh)
    h = CellSize(mesh)
    h_avg = avg(h)
    d = 0
    u_k, p_k = common.Stokes(V, Q, u0, f, [1, 1, MU], FS="DG", InitialTol=1e-6)
    # p_k.vector()[:] = p_k.vector().array()
    pConst = -assemble(p_k * dx) / assemble(ones * dx)
    p_k.vector()[:] += pConst
    # u_k = Function(V)
    # p_k = Function(Q)
    # plot(u_k)
    # plot(p_k)
    uOld = np.concatenate((u_k.vector().array(), p_k.vector().array()), axis=0)
    r = IO.arrayToVec(uOld)

    a11 = MU * inner(grad(v), grad(u)) * dx(mesh) + inner(
        (grad(u) * u_k), v) * dx(mesh) + (1. / 2) * div(u_k) * inner(
            u, v) * dx(mesh) - (1. / 2) * inner(u_k, n) * inner(u,
                                                                v) * ds(mesh)
    a12 = div(v) * p * dx
Ejemplo n.º 3
0
    MU = 10.0
    bcc = DirichletBC(W.sub(0),u0, boundary)
    bcs = [bcc]

    (u, p) = TrialFunctions(W)
    (v, q) = TestFunctions(W)

    f = -MU*Laplacian+gradPres



    n = FacetNormal(mesh)
    h = CellSize(mesh)
    h_avg =avg(h)
    d = 0
    u_k,p_k = common.Stokes(V,Q,u0,f,[1,1,MU])

    uOld = np.concatenate((u_k.vector().array(),p_k.vector().array()), axis=0)
    r = IO.arrayToVec(uOld)

    a11 = MU*inner(grad(v), grad(u))*dx + inner((grad(u)*u_k),v)*dx + (1/2)*div(u_k)*inner(u,v)*dx- (1/2)*inner(u_k,n)*inner(u,v)*ds
    a12 = div(v)*p*dx
    a21 = div(u)*q*dx
    L1  = inner(v, f)*dx
    a = a11-a12-a21


    r11 = MU*inner(grad(v), grad(u_k))*dx + inner((grad(u_k)*u_k),v)*dx + (1/2)*div(u_k)*inner(u_k,v)*dx- (1/2)*inner(u_k,n)*inner(u_k,v)*ds
    r12 = div(v)*p_k*dx
    r21 = div(u_k)*q*dx
    RHSform = r11-r12-r21
Ejemplo n.º 4
0
        Advection = Expression((
            "x[0]*pow(exp(x[2]),2)+x[0]*cos(x[0])*pow(sin(x[1]),2)*exp(x[2])",
            "-cos(x[1])*sin(x[1])*pow(exp(x[2]),2)+cos(x[0])*cos(x[1])*sin(x[1])*exp(x[2])",
            "-x[0]*pow(sin(x[1]),2)*exp(x[2])*sin(x[0])+pow(cos(x[1]),2)*exp(x[2])*cos(x[0])"
        ))
        gradPres = Expression(
            ("cos(x[1])*cos(x[0])*exp(x[2])", "-sin(x[1])*sin(x[0])*exp(x[2])",
             "sin(x[0])*cos(x[1])*exp(x[2])"))

        f = Laplacian + Advection + gradPres

    n = FacetNormal(mesh)
    h = CellSize(mesh)
    h_avg = avg(h)
    d = 0
    u_k, p_k = common.Stokes(V, Q, u0, Laplacian + gradPres, [1, 1, MU])

    uOld = np.concatenate((u_k.vector().array(), p_k.vector().array()), axis=0)
    r = IO.arrayToVec(uOld)

    a11 = MU * inner(grad(v), grad(u)) * dx + inner(
        (grad(u) * u_k), v) * dx + (1 / 2) * div(u_k) * inner(
            u, v) * dx - (1 / 2) * inner(u_k, n) * inner(u, v) * ds
    a12 = div(v) * p * dx
    a21 = div(u) * q * dx
    L1 = inner(v, f) * dx
    a = a11 - a12 - a21

    r11 = MU * inner(grad(v), grad(u_k)) * dx + inner(
        (grad(u_k) * u_k), v) * dx + (1 / 2) * div(u_k) * inner(
            u_k, v) * dx - (1 / 2) * inner(u_k, n) * inner(u_k, v) * ds