Advertisement
Guest User

Untitled

a guest
Jan 24th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.11 KB | None | 0 0
  1. def SolveHeatProblem(f, g, u0, alpha, V, solution, flag):
  2.     T=1
  3.     num_steps=200
  4.     t = 0
  5.     dt  = 0.1*T / num_steps
  6.     mesh, triangulation = CreateUnitCircleMesh()
  7.     t = 0
  8.     V = FunctionSpace(mesh,'P',1)
  9.     u_now = interpolate(u0,V)
  10.     for i in range(num_steps):
  11.         t+=dt
  12.         if hasattr(f,"t"):
  13.             f.t = t
  14.         if hasattr(g,"t"):
  15.             g.t = t
  16.         f_np1 = (1/alpha)*interpolate(f,V) + u_now/(alpha*dt)
  17.         u_now = SolveHelmholtz(f_np1, g, 1/(dt), mesh, V, flag)
  18.         if hasattr(solution,"t"):
  19.             solution.t=t
  20.             errC,errL2 = compute_errors(u,solution,mesh)
  21.             print("Step: "+str(i))
  22.             print("C norm error = "+str(errC))
  23.             print("L2 norm error = "+str(errL2))
  24.     return u_now  
  25.  
  26. #2.2.2
  27. 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),
  28.         Expression('0',degree=0),3,mesh,Expression("(x[0]*x[0]+x[1]*x[1])*t",degree=3,t=0),flag=2)
  29. print("Dirichlet problem for the Heatequation.")
  30. print("C error = "+str(errC))
  31. print("L2 error = "+str(errL2))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement