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

New solver method in fenics_mpi_example.py

parent d63fc08e
No related branches found
No related tags found
No related merge requests found
......@@ -6,10 +6,8 @@
# Runs with fenics 2019.01
# The resulting .pvd file can be opened using default settings in ParaView
import matplotlib.pyplot as plt
import mshr as ms
import numpy as np
from scipy.optimize import curve_fit
import random
from dolfin import *
......@@ -55,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, 20)
mesh = ms.generate_mesh(domain, 60)
P1 = FiniteElement("Lagrange", mesh.ufl_cell(), 1)
ME = FunctionSpace(mesh, P1*P1)
# Define trial and test functions
......@@ -87,7 +85,9 @@ a = derivative(L, u, du)
# Create nonlinear problem and Newton solver
problem = CahnHilliardEquation(a, L)
solver = NewtonSolver()
solver.parameters["linear_solver"] = "lu"
solver.parameters["linear_solver"] = "gmres"
solver.parameters["preconditioner"] = "ilu"
#solver.parameters["linear_solver"] = "mumps"
solver.parameters["convergence_criterion"] = "incremental"
solver.parameters["relative_tolerance"] = 1e-6
# Output file
......@@ -95,9 +95,9 @@ file = File("output.pvd", "compressed")
# Step in time
t = 0.0
T = 10*dt
T = 3*dt
while (t < T):
file << (u.split()[0], t)
t += dt
u0.vector()[:] = u.vector()
solver.solve(problem, u.vector())
\ No newline at end of file
solver.solve(problem, u.vector())
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