Please send all the command line options you use.
> On Jan 16, 2017, at 1:47 AM, Klaij, Christiaan <c.kl...@marin.nl> wrote: > > Barry, > > Sure, here's the output with: > > -sys_ksp_view -sys_ksp_converged_reason > -sys_fieldsplit_0_ksp_converged_reason -sys_fieldsplit_1_ksp_converged_reason > > (In my previous email, I rearranged 0 & 1 for easy summing.) > > Chris > > Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 1 > Linear sys_fieldsplit_1_ solve converged due to CONVERGED_RTOL iterations 22 > Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 1 > Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 2 > Linear sys_fieldsplit_1_ solve converged due to CONVERGED_RTOL iterations 6 > Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 2 > Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 7 > Linear sys_fieldsplit_1_ solve converged due to CONVERGED_RTOL iterations 3 > Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 7 > Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 7 > Linear sys_fieldsplit_1_ solve converged due to CONVERGED_RTOL iterations 2 > Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 7 > Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 8 > Linear sys_fieldsplit_1_ solve converged due to CONVERGED_RTOL iterations 2 > Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 8 > Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 8 > Linear sys_fieldsplit_1_ solve converged due to CONVERGED_RTOL iterations 2 > Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 8 > Linear sys_ solve converged due to CONVERGED_RTOL iterations 6 > KSP Object:(sys_) 1 MPI processes > type: fgmres > GMRES: restart=30, using Classical (unmodified) Gram-Schmidt > Orthogonalization with no iterative refinement > GMRES: happy breakdown tolerance 1e-30 > maximum iterations=300, initial guess is zero > tolerances: relative=0.01, absolute=1e-50, divergence=10000. > right preconditioning > using UNPRECONDITIONED norm type for convergence test > PC Object:(sys_) 1 MPI processes > type: fieldsplit > FieldSplit with Schur preconditioner, factorization FULL > Preconditioner for the Schur complement formed from Sp, an assembled > approximation to S, which uses (lumped, if requested) A00's diagonal's inverse > Split info: > Split number 0 Defined by IS > Split number 1 Defined by IS > KSP solver for A00 block > KSP Object: (sys_fieldsplit_0_) 1 MPI processes > type: gmres > GMRES: restart=30, using Classical (unmodified) Gram-Schmidt > Orthogonalization with no iterative refinement > GMRES: happy breakdown tolerance 1e-30 > maximum iterations=10000, initial guess is zero > tolerances: relative=0.01, absolute=1e-50, divergence=10000. > right preconditioning > using UNPRECONDITIONED norm type for convergence test > PC Object: (sys_fieldsplit_0_) 1 MPI processes > type: ilu > ILU: out-of-place factorization > 0 levels of fill > tolerance for zero pivot 2.22045e-14 > matrix ordering: natural > factor fill ratio given 1., needed 1. > Factored matrix follows: > Mat Object: 1 MPI processes > type: seqaij > rows=9600, cols=9600 > package used to perform factorization: petsc > total: nonzeros=47280, allocated nonzeros=47280 > total number of mallocs used during MatSetValues calls =0 > not using I-node routines > linear system matrix = precond matrix: > Mat Object: (sys_fieldsplit_0_) 1 MPI processes > type: seqaij > rows=9600, cols=9600 > total: nonzeros=47280, allocated nonzeros=47280 > total number of mallocs used during MatSetValues calls =0 > not using I-node routines > KSP solver for upper A00 in upper triangular factor > KSP Object: (sys_fieldsplit_1_upper_) 1 MPI processes > type: preonly > maximum iterations=10000, initial guess is zero > tolerances: relative=1e-05, absolute=1e-50, divergence=10000. > left preconditioning > using NONE norm type for convergence test > PC Object: (sys_fieldsplit_1_upper_) 1 MPI processes > type: jacobi > linear system matrix = precond matrix: > Mat Object: (sys_fieldsplit_0_) 1 MPI processes > type: seqaij > rows=9600, cols=9600 > total: nonzeros=47280, allocated nonzeros=47280 > total number of mallocs used during MatSetValues calls =0 > not using I-node routines > KSP solver for S = A11 - A10 inv(A00) A01 > KSP Object: (sys_fieldsplit_1_) 1 MPI processes > type: gmres > GMRES: restart=30, using Classical (unmodified) Gram-Schmidt > Orthogonalization with no iterative refinement > GMRES: happy breakdown tolerance 1e-30 > maximum iterations=10000, initial guess is zero > tolerances: relative=0.01, absolute=1e-50, divergence=10000. > right preconditioning > using UNPRECONDITIONED norm type for convergence test > PC Object: (sys_fieldsplit_1_) 1 MPI processes > type: ilu > ILU: out-of-place factorization > 0 levels of fill > tolerance for zero pivot 2.22045e-14 > matrix ordering: natural > factor fill ratio given 1., needed 1. > Factored matrix follows: > Mat Object: 1 MPI processes > type: seqaij > rows=3200, cols=3200 > package used to perform factorization: petsc > total: nonzeros=40404, allocated nonzeros=40404 > total number of mallocs used during MatSetValues calls =0 > not using I-node routines > linear system matrix followed by preconditioner matrix: > Mat Object: (sys_fieldsplit_1_) 1 MPI processes > type: schurcomplement > rows=3200, cols=3200 > Schur complement A11 - A10 inv(A00) A01 > A11 > Mat Object: (sys_fieldsplit_1_) 1 MPI > processes > type: seqaij > rows=3200, cols=3200 > total: nonzeros=40404, allocated nonzeros=40404 > total number of mallocs used during MatSetValues calls =0 > not using I-node routines > A10 > Mat Object: 1 MPI processes > type: seqaij > rows=3200, cols=9600 > total: nonzeros=47280, allocated nonzeros=47280 > total number of mallocs used during MatSetValues calls =0 > not using I-node routines > KSP of A00 > KSP Object: (sys_fieldsplit_1_inner_) > 1 MPI processes > type: preonly > maximum iterations=10000, initial guess is zero > tolerances: relative=1e-05, absolute=1e-50, divergence=10000. > left preconditioning > using NONE norm type for convergence test > PC Object: (sys_fieldsplit_1_inner_) > 1 MPI processes > type: jacobi > linear system matrix = precond matrix: > Mat Object: (sys_fieldsplit_0_) > 1 MPI processes > type: seqaij > rows=9600, cols=9600 > total: nonzeros=47280, allocated nonzeros=47280 > total number of mallocs used during MatSetValues calls =0 > not using I-node routines > A01 > Mat Object: 1 MPI processes > type: seqaij > rows=9600, cols=3200 > total: nonzeros=47280, allocated nonzeros=47280 > total number of mallocs used during MatSetValues calls =0 > not using I-node routines > Mat Object: 1 MPI processes > type: seqaij > rows=3200, cols=3200 > total: nonzeros=40404, allocated nonzeros=40404 > total number of mallocs used during MatSetValues calls =0 > not using I-node routines > linear system matrix followed by preconditioner matrix: > Mat Object: 1 MPI processes > type: nest > rows=12800, cols=12800 > Matrix object: > type=nest, rows=2, cols=2 > MatNest structure: > (0,0) : prefix="mom_", type=seqaij, rows=9600, cols=9600 > (0,1) : prefix="grad_", type=seqaij, rows=9600, cols=3200 > (1,0) : prefix="div_", type=seqaij, rows=3200, cols=9600 > (1,1) : prefix="stab_", type=seqaij, rows=3200, cols=3200 > Mat Object: 1 MPI processes > type: nest > rows=12800, cols=12800 > Matrix object: > type=nest, rows=2, cols=2 > MatNest structure: > (0,0) : prefix="sys_fieldsplit_0_", type=seqaij, rows=9600, cols=9600 > (0,1) : type=seqaij, rows=9600, cols=3200 > (1,0) : type=seqaij, rows=3200, cols=9600 > (1,1) : prefix="sys_fieldsplit_1_", type=seqaij, rows=3200, cols=3200 > nusediter_vv 37 > nusediter_pp 37 > > > > dr. ir. Christiaan Klaij | CFD Researcher | Research & Development > MARIN | T +31 317 49 33 44 | mailto:c.kl...@marin.nl | http://www.marin.nl > > MARIN news: > http://www.marin.nl/web/News/News-items/The-Ocean-Cleanup-testing-continues.htm > > ________________________________________ > From: Barry Smith <bsm...@mcs.anl.gov> > Sent: Friday, January 13, 2017 7:51 PM > To: Klaij, Christiaan > Cc: petsc-users@mcs.anl.gov > Subject: Re: [petsc-users] monitoring the convergence of fieldsplit 0 and 1 > > Yes, I would have expected this to work. Could you send the output from > -ksp_view in this case? > > >> On Jan 13, 2017, at 3:46 AM, Klaij, Christiaan <c.kl...@marin.nl> wrote: >> >> Barry, >> >> It's been a while but I'm finally using this function in >> 3.7.4. Is it supposed to work with fieldsplit? Here's why. >> >> I'm solving a Navier-Stokes system with fieldsplit (pc has one >> velocity solve and one pressure solve) and trying to retrieve the >> totals like this: >> >> CALL KSPSolve(ksp_system,rr_system,xx_system,ierr); CHKERRQ(ierr) >> CALL PCFieldSplitGetSubKSP(pc_system,numsplit,subksp,ierr); CHKERRQ(ierr) >> CALL KSPGetTotalIterations(subksp(1),nusediter_vv,ierr); CHKERRQ(ierr) >> CALL KSPGetTotalIterations(subksp(2),nusediter_pp,ierr); CHKERRQ(ierr) >> print *, 'nusediter_vv', nusediter_vv >> print *, 'nusediter_pp', nusediter_pp >> >> Running the code shows this surprise: >> >> Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 1 >> Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 1 >> Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 2 >> Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 2 >> Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 7 >> Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 7 >> Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 7 >> Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 7 >> Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 8 >> Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 8 >> Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 8 >> Linear sys_fieldsplit_0_ solve converged due to CONVERGED_RTOL iterations 8 >> >> Linear sys_fieldsplit_1_ solve converged due to CONVERGED_RTOL iterations 22 >> Linear sys_fieldsplit_1_ solve converged due to CONVERGED_RTOL iterations 6 >> Linear sys_fieldsplit_1_ solve converged due to CONVERGED_RTOL iterations 3 >> Linear sys_fieldsplit_1_ solve converged due to CONVERGED_RTOL iterations 2 >> Linear sys_fieldsplit_1_ solve converged due to CONVERGED_RTOL iterations 2 >> Linear sys_fieldsplit_1_ solve converged due to CONVERGED_RTOL iterations 2 >> >> nusediter_vv 37 >> nusediter_pp 37 >> >> So the value of nusediter_pp is indeed 37, but for nusediter_vv >> it should be 66. Any idea what went wrong? >> >> Chris >> >> >> >> dr. ir. Christiaan Klaij | CFD Researcher | Research & Development >> MARIN | T +31 317 49 33 44 | mailto:c.kl...@marin.nl | http://www.marin.nl >> >> MARIN news: >> http://www.marin.nl/web/News/News-items/MARIN-wishes-you-a-challenging-inspiring-2017.htm >> >> ________________________________________ >> From: Barry Smith <bsm...@mcs.anl.gov> >> Sent: Saturday, April 11, 2015 12:27 AM >> To: Klaij, Christiaan >> Cc: petsc-users@mcs.anl.gov >> Subject: Re: [petsc-users] monitoring the convergence of fieldsplit 0 and 1 >> >> Chris, >> >> I have added KSPGetTotalIterations() to the branch >> barry/add-ksp-total-iterations/master and next. After tests it will go into >> master >> >> Barry >> >>> On Apr 10, 2015, at 8:07 AM, Klaij, Christiaan <c.kl...@marin.nl> wrote: >>> >>> Barry, >>> >>> Sure, I can call PCFieldSplitGetSubKSP() to get the fieldsplit_0 >>> ksp and then KSPGetIterationNumber, but what does this number >>> mean? >>> >>> It appears to be the number of iterations of the last time that >>> the subsystem was solved, right? If so, this corresponds to the >>> last iteration of the coupled system, how about all the previous >>> iterations? >>> >>> Chris >>> ________________________________________ >>> From: Barry Smith <bsm...@mcs.anl.gov> >>> Sent: Friday, April 10, 2015 2:48 PM >>> To: Klaij, Christiaan >>> Cc: petsc-users@mcs.anl.gov >>> Subject: Re: [petsc-users] monitoring the convergence of fieldsplit 0 and 1 >>> >>> Chris, >>> >>> It appears you should call PCFieldSplitGetSubKSP() and then get the >>> information you want out of the individual KSPs. If this doesn't work >>> please let us know. >>> >>> Barry >>> >>>> On Apr 10, 2015, at 6:48 AM, Klaij, Christiaan <c.kl...@marin.nl> wrote: >>>> >>>> A question when using PCFieldSplit: for each linear iteration of >>>> the system, how many iterations for fielsplit 0 and 1? >>>> >>>> One way to find out is to run with -ksp_monitor, >>>> -fieldsplit_0_ksp_monitor and -fieldsplit_0_ksp_monitor. This >>>> gives the complete convergence history. >>>> >>>> Another way, suggested by Matt, is to use -ksp_monitor, >>>> -fieldsplit_0_ksp_converged_reason and >>>> -fieldsplit_1_ksp_converged_reason. This gives only the totals >>>> for fieldsplit 0 and 1 (but without saying for which one). >>>> >>>> Both ways require to somehow process the output, which is a bit >>>> inconvenient. Could KSPGetResidualHistory perhaps return (some) >>>> information on the subsystems' convergence for processing inside >>>> the code? >>>> >>>> Chris >>>> >>>> >>>> dr. ir. Christiaan Klaij >>>> CFD Researcher >>>> Research & Development >>>> E mailto:c.kl...@marin.nl >>>> T +31 317 49 33 44 >>>> >>>> >>>> MARIN >>>> 2, Haagsteeg, P.O. Box 28, 6700 AA Wageningen, The Netherlands >>>> T +31 317 49 39 11, F +31 317 49 32 45, I www.marin.nl >>>> >>> >> >