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
# 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
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
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