| 
						
						
						
					 | 
				
				 | 
				
					@ -0,0 +1,40 @@ | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					from fenics import * | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					from mshr import * | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					import numpy as np | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					finalt = 5 #Final time | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					steps = 5000 #number of steps | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					dt = finalt/steps #time steps | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					# model parameters | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					mu = 0.001 #dynamic viscosity | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					rho = 1 #density | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#creating mesh | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					channel = Rectangle(Point(0,0), Point(2.2, 0.41)) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					cylinder = Circle(Point(0.2,0.2), 0.05) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					domain = channel - cylinder | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					mesh = generate_mesh(domain,64) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#Defining spaces | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					V = VectorFunctionSpace(mesh,'P', 2) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					Q = FunctionSpace(mesh, 'P', 1) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#defining boundaries: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					inflow = 'near(x[0], 0)' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					outflow = 'near(x[0], 2.2)' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					walls = 'near(x[1], 0) || near(x[1], 0.41)' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					cylinder = 'on_boundary && x[0]>0.1 && x[0]<0.3 &&x[1]>0.1 && x[1]<0.3' | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#defining inflow profile | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					inflowProfile('4.0*1.5*x[1]*(0.41-x[1])/pow(0.41,2)', '0') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					#defining boundary conditions: | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					bcuInflow = DirichletBC(V,Expression(inflowProfile, degree=2), inflow) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					bcuWalls = DirichletBC(V, Constant((0, 0)), walls) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					bcuCylinder = DirichletBC(V, Constant((0,0)), cylinder) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					bcpOutflow = DirichletBC(Q, Constant(0), outflow) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					bcu = [bcuInflow, bcuWalls, bcuCylinder] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					bcp = [bcpOutflow] | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 |