Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def SolveHeatProblem(f, g, u0, alpha, V, solution, flag):
- T=1
- num_steps=200
- t = 0
- dt = 0.1*T / num_steps
- mesh, triangulation = CreateUnitCircleMesh()
- t = 0
- V = FunctionSpace(mesh,'P',1)
- u_now = interpolate(u0,V)
- for i in range(num_steps):
- t+=dt
- if hasattr(f,"t"):
- f.t = t
- if hasattr(g,"t"):
- g.t = t
- f_np1 = (1/alpha)*interpolate(f,V) + u_now/(alpha*dt)
- u_now = SolveHelmholtz(f_np1, g, 1/(dt), mesh, V, flag)
- if hasattr(solution,"t"):
- solution.t=t
- errC,errL2 = compute_errors(u,solution,mesh)
- print("Step: "+str(i))
- print("C norm error = "+str(errC))
- print("L2 norm error = "+str(errL2))
- return u_now
- #2.2.2
- u=SolveHeatProblem(Expression("(x[0]*x[0]+x[1]*x[1])-4*(t-0.025)",degree=3,t=0),Expression("2*t",degree=1,t=0),
- Expression('0',degree=0),3,mesh,Expression("(x[0]*x[0]+x[1]*x[1])*t",degree=3,t=0),flag=2)
- print("Dirichlet problem for the Heatequation.")
- print("C error = "+str(errC))
- print("L2 error = "+str(errL2))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement