[petsc-users] fieldsplit_0_ monitor in combination with selfp
Klaij, Christiaan
C.Klaij at marin.nl
Mon Sep 8 02:45:29 CDT 2014
Matt,
Thanks for clarifying this issue (default preonly for A00 seems
rather strange to me). Anyway, in summary:
1) Nothing wrong with ex70.c, one just needs to explicitly
specifiy "-fieldsplit_0_ksp_type gmres" to avoid the default
preonly for A00 in the diagonal.
2) I've verified using petsc-3.5.1 that "out-of-the-box" SIMPLE
mpiexec -n 2 ./ex70 -nx 4 -ny 6 -ksp_type fgmres -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_fact_type lower -pc_fieldsplit_schur_precondition selfp -fieldsplit_1_inner_ksp_type preonly -fieldsplit_1_inner_pc_type jacobi -fieldsplit_0_ksp_monitor -fieldsplit_1_ksp_monitor -ksp_monitor -fieldsplit_0_ksp_type gmres > out1
gives almost the same as "user" SIMPLE
mpiexec -n 2 ./ex70 -nx 4 -ny 6 -ksp_type fgmres -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_fact_type lower -user_ksp -fieldsplit_0_ksp_monitor -fieldsplit_1_ksp_monitor -ksp_monitor > out2
as it should. See attachments for out1 and out2.
3) "out-of-the-box" SIMPLE is easier because the user doesn't
need to make the Schur approximation, thanks for adding this to
PETSc!
Chris
MARIN news: Development of a Scaled-Down Floating Wind Turbine for Offshore Basin Testing<http://www.marin.nl/web/News/News-items/Development-of-a-ScaledDown-Floating-Wind-Turbine-for-Offshore-Basin-Testing-1.htm>
This e-mail may be confidential, privileged and/or protected by copyright. If you are not the intended recipient, you should return it to the sender immediately and delete your copy from your system.
________________________________
From: Matthew Knepley <knepley at gmail.com>
Sent: Friday, September 05, 2014 5:38 PM
To: Klaij, Christiaan
Cc: petsc-users at mcs.anl.gov
Subject: Re: [petsc-users] fieldsplit_0_ monitor in combination with selfp
On Fri, Sep 5, 2014 at 7:31 AM, Klaij, Christiaan <C.Klaij at marin.nl<mailto:C.Klaij at marin.nl>> wrote:
Thanks! I've spotted another difference: you are setting the
fieldsplit_0_ksp_type and I'm not, just relying on the default
instead. If I add -fieldsplit_0_ksp_type gmres then is also get
the correct answer. Probably, you will get my problem if you
remove -fieldsplit_velocity.
This is not a bug. The default solver for A00 is preonly, unless it is used as the inner
solver as well, in which case it defaults to GMRES so as not to give an inexact
Schur complement by default.
ex62 -run_type full -refinement_limit 0.00625 -bc_type dirichlet -interpolate 1 -vel_petscspace_order 2 -pres_petscspace_order 1 -ksp_type fgmres -ksp_gmres_restart 100 -ksp_rtol 1.0e-9 -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -fieldsplit_pressure_ksp_rtol 1e-10 -fieldsplit_pressure_pc_type jacobi -snes_monitor_short -ksp_monitor_short -snes_converged_reason -snes_view -show_solution 0 -fieldsplit_pressure_inner_ksp_type gmres -fieldsplit_pressure_inner_ksp_max_it 1 -fieldsplit_pressure_inner_pc_type jacobi -pc_fieldsplit_schur_precondition selfp
SNES Object: 1 MPI processes
type: newtonls
maximum iterations=50, maximum function evaluations=10000
tolerances: relative=1e-08, absolute=1e-50, solution=1e-08
total number of linear solver iterations=77
total number of function evaluations=2
SNESLineSearch Object: 1 MPI processes
type: bt
interpolation: cubic
alpha=1.000000e-04
maxstep=1.000000e+08, minlambda=1.000000e-12
tolerances: relative=1.000000e-08, absolute=1.000000e-15, lambda=1.000000e-08
maximum iterations=40
KSP Object: 1 MPI processes
type: fgmres
GMRES: restart=100, 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=1e-09, absolute=1e-50, divergence=10000
right preconditioning
has attached null space
using UNPRECONDITIONED norm type for convergence test
PC Object: 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 (the lumped) 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: (fieldsplit_velocity_) 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: (fieldsplit_velocity_) 1 MPI processes
type: ilu
ILU: out-of-place factorization
0 levels of fill
tolerance for zero pivot 2.22045e-14
using diagonal shift on blocks to prevent zero pivot [INBLOCKS]
matrix ordering: natural
factor fill ratio given 1, needed 1
Factored matrix follows:
Mat Object: 1 MPI processes
type: seqaij
rows=962, cols=962
package used to perform factorization: petsc
total: nonzeros=19908, allocated nonzeros=19908
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 481 nodes, limit used is 5
linear system matrix = precond matrix:
Mat Object: (fieldsplit_velocity_) 1 MPI processes
type: seqaij
rows=962, cols=962
total: nonzeros=19908, allocated nonzeros=19908
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 481 nodes, limit used is 5
KSP solver for S = A11 - A10 inv(A00) A01
KSP Object: (fieldsplit_pressure_) 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=1e-10, absolute=1e-50, divergence=10000
left preconditioning
using PRECONDITIONED norm type for convergence test
PC Object: (fieldsplit_pressure_) 1 MPI processes
type: jacobi
linear system matrix followed by preconditioner matrix:
Mat Object: (fieldsplit_pressure_) 1 MPI processes
type: schurcomplement
rows=145, cols=145
has attached null space
Schur complement A11 - A10 inv(A00) A01
A11
Mat Object: (fieldsplit_pressure_) 1 MPI processes
type: seqaij
rows=145, cols=145
total: nonzeros=945, allocated nonzeros=945
total number of mallocs used during MatSetValues calls =0
has attached null space
not using I-node routines
A10
Mat Object: 1 MPI processes
type: seqaij
rows=145, cols=962
total: nonzeros=4466, allocated nonzeros=4466
total number of mallocs used during MatSetValues calls =0
not using I-node routines
KSP of A00
KSP Object: (fieldsplit_pressure_inner_) 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=1, initial guess is zero
tolerances: relative=1e-09, absolute=1e-50, divergence=10000
left preconditioning
using PRECONDITIONED norm type for convergence test
PC Object: (fieldsplit_pressure_inner_) 1 MPI processes
type: jacobi
linear system matrix = precond matrix:
Mat Object: (fieldsplit_velocity_) 1 MPI processes
type: seqaij
rows=962, cols=962
total: nonzeros=19908, allocated nonzeros=19908
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 481 nodes, limit used is 5
A01
Mat Object: 1 MPI processes
type: seqaij
rows=962, cols=145
total: nonzeros=4466, allocated nonzeros=4466
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 481 nodes, limit used is 5
Mat Object: 1 MPI processes
type: seqaij
rows=145, cols=145
total: nonzeros=2601, allocated nonzeros=2601
total number of mallocs used during MatSetValues calls =0
not using I-node routines
linear system matrix = precond matrix:
Mat Object: 1 MPI processes
type: seqaij
rows=1107, cols=1107
total: nonzeros=29785, allocated nonzeros=29785
total number of mallocs used during MatSetValues calls =0
has attached null space
using I-node routines: found 513 nodes, limit used is 5
Matt
mpiexec -n 2 ./ex70 -nx 4 -ny 6 \
-ksp_type fgmres \
-pc_type fieldsplit \
-pc_fieldsplit_type schur \
-pc_fieldsplit_schur_fact_type lower \
-pc_fieldsplit_schur_precondition selfp \
-fieldsplit_1_inner_ksp_type preonly \
-fieldsplit_1_inner_pc_type jacobi \
-fieldsplit_0_ksp_monitor -fieldsplit_0_ksp_max_it 1 \
-fieldsplit_1_ksp_monitor -fieldsplit_1_ksp_max_it 1 \
-ksp_monitor -ksp_max_it 1 \
-fieldsplit_0_ksp_type gmres -ksp_view
KSP Object: 2 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=1, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50, divergence=10000
right preconditioning
using UNPRECONDITIONED norm type for convergence test
PC Object: 2 MPI processes
type: fieldsplit
FieldSplit with Schur preconditioner, factorization LOWER
Preconditioner for the Schur complement formed from Sp, an assembled approximation to S, which uses (the lumped) 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: (fieldsplit_0_) 2 MPI processes
type: gmres
MARIN news: Development of a Scaled-Down Floating Wind Turbine for Offshore Basin Testing<http://www.marin.nl/web/News/News-items/Development-of-a-ScaledDown-Floating-Wind-Turbine-for-Offshore-Basin-Testing-1.htm>
This e-mail may be confidential, privileged and/or protected by copyright. If you are not the intended recipient, you should return it to the sender immediately and delete your copy from your system.
________________________________
From: Matthew Knepley <knepley at gmail.com<mailto:knepley at gmail.com>>
Sent: Friday, September 05, 2014 2:10 PM
To: Klaij, Christiaan; petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>
Subject: Re: [petsc-users] fieldsplit_0_ monitor in combination with selfp
On Fri, Sep 5, 2014 at 1:34 AM, Klaij, Christiaan <C.Klaij at marin.nl<mailto:C.Klaij at marin.nl>> wrote:
Matt,
I think the problem is somehow related to -pc_fieldsplit_schur_precondition selfp. In the example below your are not using that option.
Here is the selfp output. It retains the A00 solver.
ex62 -run_type full -refinement_limit 0.00625 -bc_type dirichlet -interpolate 1 -vel_petscspace_order 2 -pres_petscspace_order 1 -ksp_type fgmres -ksp_gmres_restart 100 -ksp_rtol 1.0e-9 -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -fieldsplit_pressure_ksp_rtol 1e-10 -fieldsplit_velocity_ksp_type gmres -fieldsplit_velocity_pc_type lu -fieldsplit_pressure_pc_type jacobi -snes_monitor_short -ksp_monitor_short -snes_converged_reason -ksp_converged_reason -snes_view -show_solution 0 -fieldsplit_pressure_inner_ksp_type preonly -fieldsplit_pressure_inner_pc_type jacobi -pc_fieldsplit_schur_precondition selfp
SNES Object: 1 MPI processes
type: newtonls
maximum iterations=50, maximum function evaluations=10000
tolerances: relative=1e-08, absolute=1e-50, solution=1e-08
total number of linear solver iterations=20
total number of function evaluations=2
SNESLineSearch Object: 1 MPI processes
type: bt
interpolation: cubic
alpha=1.000000e-04
maxstep=1.000000e+08, minlambda=1.000000e-12
tolerances: relative=1.000000e-08, absolute=1.000000e-15, lambda=1.000000e-08
maximum iterations=40
KSP Object: 1 MPI processes
type: fgmres
GMRES: restart=100, 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=1e-09, absolute=1e-50, divergence=10000
right preconditioning
has attached null space
using UNPRECONDITIONED norm type for convergence test
PC Object: 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 (the lumped) 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: (fieldsplit_velocity_) 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=1e-05, absolute=1e-50, divergence=10000
left preconditioning
using PRECONDITIONED norm type for convergence test
PC Object: (fieldsplit_velocity_) 1 MPI processes
type: lu
LU: out-of-place factorization
tolerance for zero pivot 2.22045e-14
matrix ordering: nd
factor fill ratio given 5, needed 3.45047
Factored matrix follows:
Mat Object: 1 MPI processes
type: seqaij
rows=962, cols=962
package used to perform factorization: petsc
total: nonzeros=68692, allocated nonzeros=68692
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 456 nodes, limit used is 5
linear system matrix = precond matrix:
Mat Object: (fieldsplit_velocity_) 1 MPI processes
type: seqaij
rows=962, cols=962
total: nonzeros=19908, allocated nonzeros=19908
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 481 nodes, limit used is 5
KSP solver for S = A11 - A10 inv(A00) A01
KSP Object: (fieldsplit_pressure_) 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=1e-10, absolute=1e-50, divergence=10000
left preconditioning
using PRECONDITIONED norm type for convergence test
PC Object: (fieldsplit_pressure_) 1 MPI processes
type: jacobi
linear system matrix followed by preconditioner matrix:
Mat Object: (fieldsplit_pressure_) 1 MPI processes
type: schurcomplement
rows=145, cols=145
has attached null space
Schur complement A11 - A10 inv(A00) A01
A11
Mat Object: (fieldsplit_pressure_) 1 MPI processes
type: seqaij
rows=145, cols=145
total: nonzeros=945, allocated nonzeros=945
total number of mallocs used during MatSetValues calls =0
has attached null space
not using I-node routines
A10
Mat Object: 1 MPI processes
type: seqaij
rows=145, cols=962
total: nonzeros=4466, allocated nonzeros=4466
total number of mallocs used during MatSetValues calls =0
not using I-node routines
KSP of A00
KSP Object: (fieldsplit_pressure_inner_) 1 MPI processes
type: preonly
maximum iterations=10000, initial guess is zero
tolerances: relative=1e-09, absolute=1e-50, divergence=10000
left preconditioning
using NONE norm type for convergence test
PC Object: (fieldsplit_pressure_inner_) 1 MPI processes
type: jacobi
linear system matrix = precond matrix:
Mat Object: (fieldsplit_velocity_) 1 MPI processes
type: seqaij
rows=962, cols=962
total: nonzeros=19908, allocated nonzeros=19908
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 481 nodes, limit used is 5
A01
Mat Object: 1 MPI processes
type: seqaij
rows=962, cols=145
total: nonzeros=4466, allocated nonzeros=4466
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 481 nodes, limit used is 5
Mat Object: 1 MPI processes
type: seqaij
rows=145, cols=145
total: nonzeros=2601, allocated nonzeros=2601
total number of mallocs used during MatSetValues calls =0
not using I-node routines
linear system matrix = precond matrix:
Mat Object: 1 MPI processes
type: seqaij
rows=1107, cols=1107
total: nonzeros=29785, allocated nonzeros=29785
total number of mallocs used during MatSetValues calls =0
has attached null space
using I-node routines: found 513 nodes, limit used is 5
Thanks,
Matt
Chris
[cid:imagea7316f.JPG at f7909bee.44832f74][cid:image4a95d2.JPG at 67db08fd.4e9b7a1c]
dr. ir. Christiaan Klaij
CFD Researcher
Research & Development
MARIN
2, Haagsteeg
E C.Klaij at marin.nl<mailto:C.Klaij at marin.nl> P.O. Box 28 T +31 317 49 39 11<tel:%2B31%20317%2049%2039%2011>
6700 AA Wageningen F +31 317 49 32 45<tel:%2B31%20317%2049%2032%2045>
T +31 317 49 33 44<tel:%2B31%20317%2049%2033%2044> The Netherlands I www.marin.nl<http://www.marin.nl>
MARIN news: MARIN at SMM, Hamburg, September 9-12<http://www.marin.nl/web/News/News-items/MARIN-at-SMM-Hamburg-September-912.htm>
This e-mail may be confidential, privileged and/or protected by copyright. If you are not the intended recipient, you should return it to the sender immediately and delete your copy from your system.
________________________________
From: Matthew Knepley <knepley at gmail.com<mailto:knepley at gmail.com>>
Sent: Friday, September 05, 2014 12:36 AM
To: Klaij, Christiaan
Cc: petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>
Subject: Re: [petsc-users] fieldsplit_0_ monitor in combination with selfp
On Thu, Sep 4, 2014 at 7:26 AM, Klaij, Christiaan <C.Klaij at marin.nl<mailto:C.Klaij at marin.nl>> wrote:
Sorry, here's the ksp_view. I'm expecting
-fieldsplit_1_inner_ksp_type preonly
to set the ksp(A00) in the Schur complement only, but it seems to set it in the inv(A00) of the diagonal as well.
I think something is wrong in your example (we strongly advise against using MatNest directly). I cannot reproduce this using SNES ex62:
./config/builder2.py check src/snes/examples/tutorials/ex62.c --testnum=36 --args="-fieldsplit_pressure_inner_ksp_type preonly -fieldsplit_pressure_inner_pc_type jacobi"
which translates to
ex62 -run_type full -refinement_limit 0.00625 -bc_type dirichlet -interpolate 1 -vel_petscspace_order 2 -pres_petscspace_order 1 -ksp_type fgmres -ksp_gmres_restart 100 -ksp_rtol 1.0e-9 -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_factorization_type full -fieldsplit_pressure_ksp_rtol 1e-10 -fieldsplit_velocity_ksp_type gmres -fieldsplit_velocity_pc_type lu -fieldsplit_pressure_pc_type jacobi -snes_monitor_short -ksp_monitor_short -snes_converged_reason -ksp_converged_reason -snes_view -show_solution 0 -fieldsplit_pressure_inner_ksp_type preonly -fieldsplit_pressure_inner_pc_type jacobi
gives
Nonlinear solve converged due to CONVERGED_FNORM_RELATIVE iterations 1
SNES Object: 1 MPI processes
type: newtonls
maximum iterations=50, maximum function evaluations=10000
tolerances: relative=1e-08, absolute=1e-50, solution=1e-08
total number of linear solver iterations=20
total number of function evaluations=2
SNESLineSearch Object: 1 MPI processes
type: bt
interpolation: cubic
alpha=1.000000e-04
maxstep=1.000000e+08, minlambda=1.000000e-12
tolerances: relative=1.000000e-08, absolute=1.000000e-15, lambda=1.000000e-08
maximum iterations=40
KSP Object: 1 MPI processes
type: fgmres
GMRES: restart=100, 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=1e-09, absolute=1e-50, divergence=10000
right preconditioning
has attached null space
using UNPRECONDITIONED norm type for convergence test
PC Object: 1 MPI processes
type: fieldsplit
FieldSplit with Schur preconditioner, factorization FULL
Preconditioner for the Schur complement formed from A11
Split info:
Split number 0 Defined by IS
Split number 1 Defined by IS
KSP solver for A00 block
KSP Object: (fieldsplit_velocity_) 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=1e-05, absolute=1e-50, divergence=10000
left preconditioning
using PRECONDITIONED norm type for convergence test
PC Object: (fieldsplit_velocity_) 1 MPI processes
type: lu
LU: out-of-place factorization
tolerance for zero pivot 2.22045e-14
matrix ordering: nd
factor fill ratio given 5, needed 3.45047
Factored matrix follows:
Mat Object: 1 MPI processes
type: seqaij
rows=962, cols=962
package used to perform factorization: petsc
total: nonzeros=68692, allocated nonzeros=68692
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 456 nodes, limit used is 5
linear system matrix = precond matrix:
Mat Object: (fieldsplit_velocity_) 1 MPI processes
type: seqaij
rows=962, cols=962
total: nonzeros=19908, allocated nonzeros=19908
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 481 nodes, limit used is 5
KSP solver for S = A11 - A10 inv(A00) A01
KSP Object: (fieldsplit_pressure_) 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=1e-10, absolute=1e-50, divergence=10000
left preconditioning
has attached null space
using PRECONDITIONED norm type for convergence test
PC Object: (fieldsplit_pressure_) 1 MPI processes
type: jacobi
linear system matrix followed by preconditioner matrix:
Mat Object: (fieldsplit_pressure_) 1 MPI processes
type: schurcomplement
rows=145, cols=145
has attached null space
Schur complement A11 - A10 inv(A00) A01
A11
Mat Object: (fieldsplit_pressure_) 1 MPI processes
type: seqaij
rows=145, cols=145
total: nonzeros=945, allocated nonzeros=945
total number of mallocs used during MatSetValues calls =0
has attached null space
not using I-node routines
A10
Mat Object: 1 MPI processes
type: seqaij
rows=145, cols=962
total: nonzeros=4466, allocated nonzeros=4466
total number of mallocs used during MatSetValues calls =0
not using I-node routines
KSP of A00
KSP Object: (fieldsplit_pressure_inner_) 1 MPI processes
type: preonly
maximum iterations=10000, initial guess is zero
tolerances: relative=1e-09, absolute=1e-50, divergence=10000
left preconditioning
using NONE norm type for convergence test
PC Object: (fieldsplit_pressure_inner_) 1 MPI processes
type: jacobi
linear system matrix = precond matrix:
Mat Object: (fieldsplit_velocity_) 1 MPI processes
type: seqaij
rows=962, cols=962
total: nonzeros=19908, allocated nonzeros=19908
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 481 nodes, limit used is 5
A01
Mat Object: 1 MPI processes
type: seqaij
rows=962, cols=145
total: nonzeros=4466, allocated nonzeros=4466
total number of mallocs used during MatSetValues calls =0
using I-node routines: found 481 nodes, limit used is 5
Mat Object: (fieldsplit_pressure_) 1 MPI processes
type: seqaij
rows=145, cols=145
total: nonzeros=945, allocated nonzeros=945
total number of mallocs used during MatSetValues calls =0
has attached null space
not using I-node routines
linear system matrix = precond matrix:
Mat Object: 1 MPI processes
type: seqaij
rows=1107, cols=1107
total: nonzeros=29785, allocated nonzeros=29785
total number of mallocs used during MatSetValues calls =0
has attached null space
using I-node routines: found 513 nodes, limit used is 5
Matt
Chris
0 KSP Residual norm 1.229687498638e+00
Residual norms for fieldsplit_1_ solve.
0 KSP Residual norm 7.185799114488e+01
1 KSP Residual norm 3.873274154012e+01
1 KSP Residual norm 1.107969383366e+00
KSP Object: 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=1, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50, divergence=10000
right preconditioning
using UNPRECONDITIONED norm type for convergence test
PC Object: 1 MPI processes
type: fieldsplit
FieldSplit with Schur preconditioner, factorization LOWER
Preconditioner for the Schur complement formed from Sp, an assembled approximation to S, which uses (the lumped) 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: (fieldsplit_0_) 1 MPI processes
type: preonly
maximum iterations=1, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50, divergence=10000
left preconditioning
using NONE norm type for convergence test
PC Object: (fieldsplit_0_) 1 MPI processes
type: bjacobi
block Jacobi: number of blocks = 1
Local solve is same for all blocks, in the following KSP and PC objects:
KSP Object: (fieldsplit_0_sub_) 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: (fieldsplit_0_sub_) 1 MPI processes
type: ilu
ILU: out-of-place factorization
0 levels of fill
tolerance for zero pivot 2.22045e-14
using diagonal shift on blocks to prevent zero pivot [INBLOCKS]
matrix ordering: natural
factor fill ratio given 1, needed 1
Factored matrix follows:
Mat Object: 1 MPI processes
type: seqaij
rows=48, cols=48
package used to perform factorization: petsc
total: nonzeros=200, allocated nonzeros=200
total number of mallocs used during MatSetValues calls =0
not using I-node routines
linear system matrix = precond matrix:
Mat Object: (fieldsplit_0_) 1 MPI processes
type: seqaij
rows=48, cols=48
total: nonzeros=200, allocated nonzeros=240
total number of mallocs used during MatSetValues calls =0
not using I-node routines
linear system matrix = precond matrix:
Mat Object: (fieldsplit_0_) 1 MPI processes
type: mpiaij
rows=48, cols=48
total: nonzeros=200, allocated nonzeros=480
total number of mallocs used during MatSetValues calls =0
not using I-node (on process 0) routines
KSP solver for S = A11 - A10 inv(A00) A01
KSP Object: (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=1, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50, divergence=10000
left preconditioning
using PRECONDITIONED norm type for convergence test
PC Object: (fieldsplit_1_) 1 MPI processes
type: bjacobi
block Jacobi: number of blocks = 1
Local solve is same for all blocks, in the following KSP and PC objects:
KSP Object: (fieldsplit_1_sub_) 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: (fieldsplit_1_sub_) 1 MPI processes
type: bjacobi
block Jacobi: number of blocks = 1
Local solve is same for all blocks, in the following KSP and PC objects:
KSP Object: (fieldsplit_1_sub_sub_) 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: (fieldsplit_1_sub_sub_) 1 MPI processes
type: ilu
ILU: out-of-place factorization
0 levels of fill
tolerance for zero pivot 2.22045e-14
using diagonal shift on blocks to prevent zero pivot [INBLOCKS]
matrix ordering: natural
factor fill ratio given 1, needed 1
Factored matrix follows:
Mat Object: 1 MPI processes
type: seqaij
rows=24, cols=24
package used to perform factorization: petsc
total: nonzeros=120, allocated nonzeros=120
total number of mallocs used during MatSetValues calls =0
not using I-node routines
linear system matrix = precond matrix:
Mat Object: 1 MPI processes
type: seqaij
rows=24, cols=24
total: nonzeros=120, allocated nonzeros=120
total number of mallocs used during MatSetValues calls =0
not using I-node routines
linear system matrix = precond matrix:
Mat Object: 1 MPI processes
type: mpiaij
rows=24, cols=24
total: nonzeros=120, allocated nonzeros=120
total number of mallocs used during MatSetValues calls =0
not using I-node (on process 0) routines
linear system matrix followed by preconditioner matrix:
Mat Object: (fieldsplit_1_) 1 MPI processes
type: schurcomplement
rows=24, cols=24
Schur complement A11 - A10 inv(A00) A01
A11
Mat Object: (fieldsplit_1_) 1 MPI processes
type: mpiaij
rows=24, cols=24
total: nonzeros=0, allocated nonzeros=0
total number of mallocs used during MatSetValues calls =0
using I-node (on process 0) routines: found 5 nodes, limit used is 5
A10
Mat Object: (a10_) 1 MPI processes
type: mpiaij
rows=24, cols=48
total: nonzeros=96, allocated nonzeros=96
total number of mallocs used during MatSetValues calls =0
not using I-node (on process 0) routines
KSP of A00
KSP Object: (fieldsplit_1_inner_) 1 MPI processes
type: preonly
maximum iterations=1, initial guess is zero
tolerances: relative=1e-05, absolute=1e-50, divergence=10000
left preconditioning
using NONE norm type for convergence test
PC Object: (fieldsplit_1_inner_) 1 MPI processes
type: jacobi
linear system matrix = precond matrix:
Mat Object: (fieldsplit_0_) 1 MPI processes
type: mpiaij
rows=48, cols=48
total: nonzeros=200, allocated nonzeros=480
total number of mallocs used during MatSetValues calls =0
not using I-node (on process 0) routines
A01
Mat Object: (a01_) 1 MPI processes
type: mpiaij
rows=48, cols=24
total: nonzeros=96, allocated nonzeros=480
total number of mallocs used during MatSetValues calls =0
not using I-node (on process 0) routines
Mat Object: 1 MPI processes
type: mpiaij
rows=24, cols=24
total: nonzeros=120, allocated nonzeros=120
total number of mallocs used during MatSetValues calls =0
not using I-node (on process 0) routines
linear system matrix = precond matrix:
Mat Object: 1 MPI processes
type: nest
rows=72, cols=72
Matrix object:
type=nest, rows=2, cols=2
MatNest structure:
(0,0) : prefix="fieldsplit_0_", type=mpiaij, rows=48, cols=48
(0,1) : prefix="a01_", type=mpiaij, rows=48, cols=24
(1,0) : prefix="a10_", type=mpiaij, rows=24, cols=48
(1,1) : prefix="fieldsplit_1_", type=mpiaij, rows=24, cols=24
From: Matthew Knepley <knepley at gmail.com<mailto:knepley at gmail.com>>
Sent: Thursday, September 04, 2014 2:20 PM
To: Klaij, Christiaan
Cc: petsc-users at mcs.anl.gov<mailto:petsc-users at mcs.anl.gov>
Subject: Re: [petsc-users] fieldsplit_0_ monitor in combination with selfp
On Thu, Sep 4, 2014 at 7:06 AM, Klaij, Christiaan <C.Klaij at marin.nl<mailto:C.Klaij at marin.nl>> wrote:
I'm playing with the selfp option in fieldsplit using
snes/examples/tutorials/ex70.c. For example:
mpiexec -n 2 ./ex70 -nx 4 -ny 6 \
-ksp_type fgmres \
-pc_type fieldsplit \
-pc_fieldsplit_type schur \
-pc_fieldsplit_schur_fact_type lower \
-pc_fieldsplit_schur_precondition selfp \
-fieldsplit_1_inner_ksp_type preonly \
-fieldsplit_1_inner_pc_type jacobi \
-fieldsplit_0_ksp_monitor -fieldsplit_0_ksp_max_it 1 \
-fieldsplit_1_ksp_monitor -fieldsplit_1_ksp_max_it 1 \
-ksp_monitor -ksp_max_it 1
gives the following output
0 KSP Residual norm 1.229687498638e+00
Residual norms for fieldsplit_1_ solve.
0 KSP Residual norm 2.330138480101e+01
1 KSP Residual norm 1.609000846751e+01
1 KSP Residual norm 1.180287268335e+00
To my suprise I don't see anything for the fieldsplit_0_ solve,
why?
Always run with -ksp_view for any solver question.
Thanks,
Matt
Furthermore, if I understand correctly the above should be
exactly equivalent with
mpiexec -n 2 ./ex70 -nx 4 -ny 6 \
-ksp_type fgmres \
-pc_type fieldsplit \
-pc_fieldsplit_type schur \
-pc_fieldsplit_schur_fact_type lower \
-user_ksp \
-fieldsplit_0_ksp_monitor -fieldsplit_0_ksp_max_it 1 \
-fieldsplit_1_ksp_monitor -fieldsplit_1_ksp_max_it 1 \
-ksp_monitor -ksp_max_it 1
0 KSP Residual norm 1.229687498638e+00
Residual norms for fieldsplit_0_ solve.
0 KSP Residual norm 5.486639587672e-01
1 KSP Residual norm 6.348354253703e-02
Residual norms for fieldsplit_1_ solve.
0 KSP Residual norm 2.321938107977e+01
1 KSP Residual norm 1.605484031258e+01
1 KSP Residual norm 1.183225251166e+00
because -user_ksp replaces the Schur complement by the simple
approximation A11 - A10 inv(diag(A00)) A01. Beside the missing
fielsplit_0_ part, the numbers are pretty close but not exactly
the same. Any explanation?
Chris
dr. ir. Christiaan Klaij
CFD Researcher
Research & Development
E mailto:C.Klaij at marin.nl<mailto:C.Klaij at marin.nl>
T +31 317 49 33 44<tel:%2B31%20317%2049%2033%2044>
MARIN
2, Haagsteeg, P.O. Box 28, 6700 AA Wageningen, The Netherlands
T +31 317 49 39 11<tel:%2B31%20317%2049%2039%2011>, F +31 317 49 32 45<tel:%2B31%20317%2049%2032%2045>, I www.marin.nl<http://www.marin.nl>
--
What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener
--
What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener
--
What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener
--
What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20140908/706d8d98/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image4a95d2.JPG
Type: image/jpeg
Size: 1622 bytes
Desc: image4a95d2.JPG
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20140908/706d8d98/attachment-0002.jpe>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: imagea7316f.JPG
Type: image/jpeg
Size: 1069 bytes
Desc: imagea7316f.JPG
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20140908/706d8d98/attachment-0003.jpe>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: out1
Type: application/octet-stream
Size: 12614 bytes
Desc: out1
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20140908/706d8d98/attachment-0002.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: out2
Type: application/octet-stream
Size: 12614 bytes
Desc: out2
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20140908/706d8d98/attachment-0003.obj>
More information about the petsc-users
mailing list