Il giorno mar 12 ott 2021 alle ore 13:56 Nicolás Barnafi <nab...@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