[petsc-users] On QN + Fieldsplit
Stefano Zampini
stefano.zampini at gmail.com
Tue Oct 12 07:06:57 CDT 2021
Il giorno mar 12 ott 2021 alle ore 13:56 Nicolás Barnafi <nabw91 at gmail.com>
ha scritto:
> 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):
>
>
Dolphin swallows any useful error information returned from PETSc. You can
try using the below code snippet at the beginning of your script
from petsc4py import PETSc
from dolfin import *
# Remove the dolfin error handler
PETSc.Sys.pushErrorHandler('python')
>
> 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
>
--
Stefano
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20211012/0d4ddfd1/attachment.html>
More information about the petsc-users
mailing list