[petsc-users] On QN + Fieldsplit

Nicolás Barnafi nabw91 at gmail.com
Tue Oct 12 05:54:09 CDT 2021


Hello PETSc users,

first email sent!
I am creating a SNES solver using fenics, my example runs smoothly with
'newtonls', but gives a strange missing function error (error 83):


these are the relevant lines of code where I setup the solver:

> problem = SNESProblem(Res, sol, bcs)
> b = PETScVector()  # same as b = PETSc.Vec()
> J_mat = PETScMatrix()
> snes = PETSc.SNES().create(MPI.COMM_WORLD)
> snes.setFunction(problem.F, b.vec())
> snes.setJacobian(problem.J, J_mat.mat())
> # Set up fieldsplit
> ksp = snes.ksp
> ksp.setOperators(J_mat.mat())
> pc = ksp.pc
> pc.setType('fieldsplit')
> dofmap_s = V.sub(0).dofmap().dofs()
> dofmap_p = V.sub(1).dofmap().dofs()
> is_s = PETSc.IS().createGeneral(dofmap_s)
> is_p = PETSc.IS().createGeneral(dofmap_p)
> pc.setFieldSplitIS((None, is_s), (None, is_p))
> pc.setFromOptions()
> snes.setFromOptions()
> snes.setUp()

If it can be useful, this are the outputs of snes.view(), ksp.view() and
pc.view():

>   type: qn
>   SNES has not been set up so information may be incomplete
>     type is BROYDEN, restart type is DEFAULT, scale type is JACOBIAN
>     Stored subspace size: 10
>     Using the single reduction variant.
>   maximum iterations=10000, maximum function evaluations=30000
>   tolerances: relative=1e-08, absolute=1e-50, solution=1e-08
>   total number of function evaluations=0
>   norm schedule ALWAYS
>   SNESLineSearch Object: 4 MPI processes
>     type: basic
>     maxstep=1.000000e+08, minlambda=1.000000e-12
>     tolerances: relative=1.000000e-08, absolute=1.000000e-15,
lambda=1.000000e-08
>     maximum iterations=1
> KSP Object: 4 MPI processes
>   type: gmres
>     restart=1000, using Modified Gram-Schmidt Orthogonalization
>     happy breakdown tolerance 1e-30
>   maximum iterations=1000, initial guess is zero
>   tolerances:  relative=1e-05, absolute=1e-50, divergence=10000.
>   left preconditioning
>   using UNPRECONDITIONED norm type for convergence test
> PC Object: 4 MPI processes
>   type: fieldsplit
>   PC has not been set up so information may be incomplete
>     FieldSplit with Schur preconditioner, factorization FULL

I know that PC is not setup, but if I do it before setting up the SNES, the
error persists. Thanks in advance for your help.

Best,
Nicolas
-- 
Nicolás Alejandro Barnafi Wittwer
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20211012/0d1ff87c/attachment.html>


More information about the petsc-users mailing list