Skip to content
Snippets Groups Projects
Commit 5430e1a1 authored by Lars Hubatsch's avatar Lars Hubatsch
Browse files

Adding petsc_amg as preconditioner lets code run in parallel.

parent 93f01f9c
No related merge requests found
......@@ -8,7 +8,7 @@
import mshr as ms
import numpy as np
import time
import random
from dolfin import *
# Class representing the intial conditions
......@@ -53,7 +53,7 @@ y_mesh = 1
# mesh = UnitSquareMesh.create(x_mesh, y_mesh, CellType.Type.quadrilateral)
# mesh = RectangleMesh(Point(0, 0), Point(1, 0.02), x_mesh, y_mesh)
domain = ms.Sphere(Point(0, 0, 0), 1.0)
mesh = ms.generate_mesh(domain, 60)
mesh = ms.generate_mesh(domain, 50)
P1 = FiniteElement("Lagrange", mesh.ufl_cell(), 1)
ME = FunctionSpace(mesh, P1*P1)
# Define trial and test functions
......@@ -86,8 +86,10 @@ a = derivative(L, u, du)
problem = CahnHilliardEquation(a, L)
solver = NewtonSolver()
solver.parameters["linear_solver"] = "gmres"
solver.parameters["preconditioner"] = "ilu"
#solver.parameters["preconditioner"] = "hypre_euclid"
solver.parameters["preconditioner"] = "petsc_amg"
#solver.parameters["linear_solver"] = "mumps"
#solver.parameters["preconditioner"] = "ilu"
solver.parameters["convergence_criterion"] = "incremental"
solver.parameters["relative_tolerance"] = 1e-6
# Output file
......@@ -95,9 +97,11 @@ file = File("output.pvd", "compressed")
# Step in time
t = 0.0
T = 3*dt
T = 2*dt
ti = time.time()
while (t < T):
file << (u.split()[0], t)
t += dt
u0.vector()[:] = u.vector()
solver.solve(problem, u.vector())
print(time.time()-ti)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment