Dear Floriane,
On 5 Nov 2018, at 09:18, Floriane Gidel [RPG] <mmfg@leeds.ac.uk> wrote:
Dear all,
I went back to the problem with one disk because I realized it only converges when initialized with the exact solution (in which case I made a test of convergence that confirmed convergence to the exact solution). When I initialise it with u=0 both in the plane and disk, then the solver diverges (DIVERGED_MAX_IT). My solver is defined as follows:
V = V_p*V_d u = Function(V) u_d, u_p = split(u) v_d, v_p = TestFunction(V)
a = dot(grad(u_p),grad(v_p))*I_p*dx + dot(grad(u_d),grad(v_d))*I_d*dx + (u_d('+')-u_p('+'))*(v_d('+')-v_p('+'))*4*avg(I_d)*avg(I_p)*dS solve(a==0, u, bcs=[bc_left, bc_right, bc_disk_only, bc_plane_only])
where bc_disk_only and bc_plane_only force nodes of V.sub(0) to be zeros in the plane and nodes of V.sub(1) to be zeros in the disk, respectively, and are defined as in Tomasz fluid/structure code, using continuous indicators I_cg_d and I_cg_p (while I_d and I_p are discontinuous). The solver above only converges when u_d and u_p are initialized with the exact analytical solution, or when I replace I_d and I_p in the first two integrals by their continuous forms I_cg_d and I_cg_p (but then the obtained solution is wrong).
This is quite a simple equation so I don't know what I'm doing wrong. Does anyone understand what's wrong ?
Let's start by confirming that you can solve this equation with an exact (direct) solver. If you say: parameters = {"snes_type": "ksponly", "ksp_type": "preonly", "pc_type": "lu", "pc_factor_mat_solver_type": "mumps", "ksp_converged_reason": True, "snes_converged_reason": True} and run with: solve(..., solver_parameters=parameters) can you obtain a solution? Cheers, Lawrence