from dolfin import * from mshr import * import numpy as np import matplotlib.pyplot as plt from numpy import linalg as LA from scipy.sparse.linalg.eigen.arpack import eigsh from scipy import sparse, io import time import pdb # # Time info and viscosity coefficents # t_init = 0.0 t_final = 10.0 t_num = 1000 dt = (t_final - t_init)/t_num eps_be = dt t = t_init # # Viscosity coefficient. # nu = 0.001 # # Generate the mesh. # circle_outx = 0.0 circle_outy = 0.0 circle_outr = 1.0 circle_inx = 0.5 circle_iny = 0.0 circle_inr = 0.1 domain = Circle(Point(circle_outx,circle_outy),circle_outr) - Circle(Point(circle_inx,circle_iny),circle_inr) mesh = generate_mesh ( domain, 30 ) # # Declare Finite Element Spaces # P2 = VectorElement("P",triangle,2) P1 = FiniteElement("P",triangle,1) TH = P2 * P1 V = VectorFunctionSpace(mesh, "P", 2) Q = FunctionSpace(mesh, "P", 1) W = FunctionSpace(mesh,TH) # # Declare Finite Element Functions # (u, p) = TrialFunctions(W) (v, q) = TestFunctions(W) w = Function(W) u0 = Function(V) p0 = Function(Q) # # Macros needed for weak formulation. # def contract(u,v): return inner(nabla_grad(u),nabla_grad(v)) def b(u,v,w): return 0.5*(inner(dot(u,nabla_grad(v)),w)-inner(dot(u,nabla_grad(w)),v)) # # Declare Boundary Conditions. # def u0_boundary(x, on_boundary): return on_boundary noslip = Constant((0.0, 0.0)) # class OriginPoint(SubDomain): # def inside(self, x, on_boundary): # return (near(x[0], 0.0) and near(x[1], 1.0)) # originpoint = OriginPoint() def lower_boundary_fixed_point(x,on_boundary): tol=1E-15 return (abs(x[1]) < tol) and (abs(x[0]-0.5)