<div dir="ltr">Here is the result for 3.5.2, which looks right to me:<div><br></div><div><div>(v3.5.2) *:/PETSc3/petsc/release-petsc-3.5.1/src/snes/examples/tutorials$ ./ex19 -bf_pc_type fieldsplit -bf_snes_view -bf_pc_fieldsplit_type schur -bf_pc_fieldsplit_0_fields 0,1,2 -bf_pc_fieldsplit_1_fields 3 -bf_pc_fieldsplit_schur_factorization_type upper</div><div>lid velocity = 0.0625, prandtl # = 1, grashof # = 1</div><div>SNES Object:(bf_) 1 MPI processes</div><div>  type: newtonls</div><div>  maximum iterations=50, maximum function evaluations=10000</div><div>  tolerances: relative=1e-08, absolute=1e-50, solution=1e-08</div><div>  total number of linear solver iterations=4</div><div>  total number of function evaluations=3</div><div>  SNESLineSearch Object:  (bf_)   1 MPI processes</div><div>    type: bt</div><div>      interpolation: cubic</div><div>      alpha=1.000000e-04</div><div>    maxstep=1.000000e+08, minlambda=1.000000e-12</div><div>    tolerances: relative=1.000000e-08, absolute=1.000000e-15, lambda=1.000000e-08</div><div>    maximum iterations=40</div><div>  KSP Object:  (bf_)   1 MPI processes</div><div>    type: gmres</div><div>      GMRES: restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement</div><div>      GMRES: happy breakdown tolerance 1e-30</div><div>    maximum iterations=10000, initial guess is zero</div><div>    tolerances:  relative=1e-05, absolute=1e-50, divergence=10000</div><div>    left preconditioning</div><div>    using PRECONDITIONED norm type for convergence test</div><div>  PC Object:  (bf_)   1 MPI processes</div><div>    type: fieldsplit</div><div>      FieldSplit with Schur preconditioner, factorization UPPER</div><div>      Preconditioner for the Schur complement formed from A11</div><div>      Split info:</div><div>      Split number 0 Defined by IS</div><div>      Split number 1 Defined by IS</div><div>      KSP solver for A00 block</div><div>        KSP Object:        (bf_fieldsplit_0_)         1 MPI processes</div><div>          type: gmres</div><div>            GMRES: restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement</div><div>            GMRES: happy breakdown tolerance 1e-30</div><div>          maximum iterations=10000, initial guess is zero</div><div>          tolerances:  relative=1e-05, absolute=1e-50, divergence=10000</div><div>          left preconditioning</div><div>          using PRECONDITIONED norm type for convergence test</div><div>        PC Object:        (bf_fieldsplit_0_)         1 MPI processes</div><div>          type: ilu</div><div>            ILU: out-of-place factorization</div><div>            0 levels of fill</div><div>            tolerance for zero pivot 2.22045e-14</div><div>            using diagonal shift on blocks to prevent zero pivot [INBLOCKS]</div><div>            matrix ordering: natural</div><div>            factor fill ratio given 1, needed 1</div><div>              Factored matrix follows:</div><div>                Mat Object:                 1 MPI processes</div><div>                  type: seqaij</div><div>                  rows=48, cols=48</div><div>                  package used to perform factorization: petsc</div><div>                  total: nonzeros=576, allocated nonzeros=576</div><div>                  total number of mallocs used during MatSetValues calls =0</div><div>                    using I-node routines: found 16 nodes, limit used is 5</div><div>          linear system matrix = precond matrix:</div><div>          Mat Object:          (bf_fieldsplit_0_)           1 MPI processes</div><div>            type: seqaij</div><div>            rows=48, cols=48</div><div>            total: nonzeros=576, allocated nonzeros=576</div><div>            total number of mallocs used during MatSetValues calls =0</div><div>              using I-node routines: found 16 nodes, limit used is 5</div><div>      KSP solver for S = A11 - A10 inv(A00) A01 </div><div>        KSP Object:        (bf_fieldsplit_temperature_)         1 MPI processes</div><div>          type: gmres</div><div>            GMRES: restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement</div><div>            GMRES: happy breakdown tolerance 1e-30</div><div>          maximum iterations=10000, initial guess is zero</div><div>          tolerances:  relative=1e-05, absolute=1e-50, divergence=10000</div><div>          left preconditioning</div><div>          using PRECONDITIONED norm type for convergence test</div><div>        PC Object:        (bf_fieldsplit_temperature_)         1 MPI processes</div><div>          type: ilu</div><div>            ILU: out-of-place factorization</div><div>            0 levels of fill</div><div>            tolerance for zero pivot 2.22045e-14</div><div>            using diagonal shift on blocks to prevent zero pivot [INBLOCKS]</div><div>            matrix ordering: natural</div><div>            factor fill ratio given 1, needed 1</div><div>              Factored matrix follows:</div><div>                Mat Object:                 1 MPI processes</div><div>                  type: seqaij</div><div>                  rows=16, cols=16</div><div>                  package used to perform factorization: petsc</div><div>                  total: nonzeros=64, allocated nonzeros=64</div><div>                  total number of mallocs used during MatSetValues calls =0</div><div>                    not using I-node routines</div><div>          linear system matrix followed by preconditioner matrix:</div><div>          Mat Object:          (bf_fieldsplit_temperature_)           1 MPI processes</div><div>            type: schurcomplement</div><div>            rows=16, cols=16</div><div>              Schur complement A11 - A10 inv(A00) A01</div><div>              A11</div><div>                Mat Object:                (bf_fieldsplit_temperature_)                 1 MPI processes</div><div>                  type: seqaij</div><div>                  rows=16, cols=16</div><div>                  total: nonzeros=64, allocated nonzeros=64</div><div>                  total number of mallocs used during MatSetValues calls =0</div><div>                    not using I-node routines</div><div>              A10</div><div>                Mat Object:                 1 MPI processes</div><div>                  type: seqaij</div><div>                  rows=16, cols=48</div><div>                  total: nonzeros=192, allocated nonzeros=192</div><div>                  total number of mallocs used during MatSetValues calls =0</div><div>                    not using I-node routines</div><div>              KSP of A00</div><div>                KSP Object:                (bf_fieldsplit_0_)                 1 MPI processes</div><div>                  type: gmres</div><div>                    GMRES: restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement</div><div>                    GMRES: happy breakdown tolerance 1e-30</div><div>                  maximum iterations=10000, initial guess is zero</div><div>                  tolerances:  relative=1e-05, absolute=1e-50, divergence=10000</div><div>                  left preconditioning</div><div>                  using PRECONDITIONED norm type for convergence test</div><div>                PC Object:                (bf_fieldsplit_0_)                 1 MPI processes</div><div>                  type: ilu</div><div>                    ILU: out-of-place factorization</div><div>                    0 levels of fill</div><div>                    tolerance for zero pivot 2.22045e-14</div><div>                    using diagonal shift on blocks to prevent zero pivot [INBLOCKS]</div><div>                    matrix ordering: natural</div><div>                    factor fill ratio given 1, needed 1</div><div>                      Factored matrix follows:</div><div>                        Mat Object:                         1 MPI processes</div><div>                          type: seqaij</div><div>                          rows=48, cols=48</div><div>                          package used to perform factorization: petsc</div><div>                          total: nonzeros=576, allocated nonzeros=576</div><div>                          total number of mallocs used during MatSetValues calls =0</div><div>                            using I-node routines: found 16 nodes, limit used is 5</div><div>                  linear system matrix = precond matrix:</div><div>                  Mat Object:                  (bf_fieldsplit_0_)                   1 MPI processes</div><div>                    type: seqaij</div><div>                    rows=48, cols=48</div><div>                    total: nonzeros=576, allocated nonzeros=576</div><div>                    total number of mallocs used during MatSetValues calls =0</div><div>                      using I-node routines: found 16 nodes, limit used is 5</div><div>              A01</div><div>                Mat Object:                 1 MPI processes</div><div>                  type: seqaij</div><div>                  rows=48, cols=16</div><div>                  total: nonzeros=192, allocated nonzeros=192</div><div>                  total number of mallocs used during MatSetValues calls =0</div><div>                    using I-node routines: found 16 nodes, limit used is 5</div><div>          Mat Object:          (bf_fieldsplit_temperature_)           1 MPI processes</div><div>            type: seqaij</div><div>            rows=16, cols=16</div><div>            total: nonzeros=64, allocated nonzeros=64</div><div>            total number of mallocs used during MatSetValues calls =0</div><div>              not using I-node routines</div><div>    linear system matrix = precond matrix:</div><div>    Mat Object:     1 MPI processes</div><div>      type: seqaij</div><div>      rows=64, cols=64, bs=4</div><div>      total: nonzeros=1024, allocated nonzeros=1024</div><div>      total number of mallocs used during MatSetValues calls =0</div><div>        using I-node routines: found 16 nodes, limit used is 5</div><div>Number of SNES iterations = 2</div></div><div><br></div><div>  Thanks,</div><div><br></div><div>     Matt</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 8:52 AM, Matthew Knepley <span dir="ltr"><<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><div class="h5">On Fri, Sep 26, 2014 at 7:29 AM, anton <span dir="ltr"><<a href="mailto:popov@uni-mainz.de" target="_blank">popov@uni-mainz.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Create preconditioner:<br>
<br>
PCCreate(PETSC_COMM_WORLD, &pc);<br>
PCSetOptionsPrefix(pc, "bf_");<br>
PCSetFromOptions(pc);<br>
<br>
Define fieldsplit options:<br>
<br>
-bf_pc_type fieldsplit<br>
-bf_pc_fieldsplit_type SCHUR<br>
-bf_pc_fieldsplit_schur_<u></u>factorization_type UPPER<br>
<br>
Works OK.<br>
<br>
Set options for the first field solver:<br>
<br>
-bf_fieldsplit_0_ksp_type preonly<br>
-bf_fieldsplit_0_pc_type lu<br>
<br>
Doesn't work (ignored), because "bf_" prefix isn't pass to inner solver ksp (checked in the debugger).<br>
<br>
Indeed, the following works:<br>
<br>
-fieldsplit_0_ksp_type preonly<br>
-fieldsplit_0_pc_type lu<br>
<br>
Observed with 3.5 but not with 3.4<br></blockquote><div><br></div></div></div><div>I just tried this with master on SNES ex19, and got the correct result:</div><div><br></div><div><div>knepley/feature-parallel-partition *$:/PETSc3/petsc/petsc-dev/src/snes/examples/tutorials$ ./ex19 -bf_pc_type fieldsplit -bf_snes_view</div><div>./ex19 -bf_pc_type fieldsplit -bf_snes_view</div><div>lid velocity = 0.0625, prandtl # = 1, grashof # = 1</div><div>SNES Object:(bf_) 1 MPI processes</div><div>  type: newtonls</div><div>  maximum iterations=50, maximum function evaluations=10000</div><div>  tolerances: relative=1e-08, absolute=1e-50, solution=1e-08</div><div>  total number of linear solver iterations=13</div><div>  total number of function evaluations=3</div><div>  SNESLineSearch Object:  (bf_)   1 MPI processes</div><div>    type: bt</div><div>      interpolation: cubic</div><div>      alpha=1.000000e-04</div><div>    maxstep=1.000000e+08, minlambda=1.000000e-12</div><div>    tolerances: relative=1.000000e-08, absolute=1.000000e-15, lambda=1.000000e-08</div><div>    maximum iterations=40</div><div>  KSP Object:  (bf_)   1 MPI processes</div><div>    type: gmres</div><div>      GMRES: restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement</div><div>      GMRES: happy breakdown tolerance 1e-30</div><div>    maximum iterations=10000, initial guess is zero</div><div>    tolerances:  relative=1e-05, absolute=1e-50, divergence=10000</div><div>    left preconditioning</div><div>    using PRECONDITIONED norm type for convergence test</div><div>  PC Object:  (bf_)   1 MPI processes</div><div>    type: fieldsplit</div><div>      FieldSplit with MULTIPLICATIVE composition: total splits = 4</div><div>      Solver info for each split is in the following KSP objects:</div><div>      Split number 0 Defined by IS</div><div>      KSP Object:      (bf_fieldsplit_x_velocity_)       1 MPI processes</div><div>        type: preonly</div><div>        maximum iterations=10000, initial guess is zero</div><div>        tolerances:  relative=1e-05, absolute=1e-50, divergence=10000</div><div>        left preconditioning</div><div>        using NONE norm type for convergence test</div><div>      PC Object:      (bf_fieldsplit_x_velocity_)       1 MPI processes</div><div>        type: ilu</div><div>          ILU: out-of-place factorization</div><div>          0 levels of fill</div><div>          tolerance for zero pivot 2.22045e-14</div><div>          using diagonal shift on blocks to prevent zero pivot [INBLOCKS]</div><div>          matrix ordering: natural</div><div>          factor fill ratio given 1, needed 1</div><div>            Factored matrix follows:</div><div>              Mat Object:               1 MPI processes</div><div>                type: seqaij</div><div>                rows=16, cols=16</div><div>                package used to perform factorization: petsc</div><div>                total: nonzeros=64, allocated nonzeros=64</div><div>                total number of mallocs used during MatSetValues calls =0</div><div>                  not using I-node routines</div><div>        linear system matrix = precond matrix:</div><div>        Mat Object:        (bf_fieldsplit_x_velocity_)         1 MPI processes</div><div>          type: seqaij</div><div>          rows=16, cols=16</div><div>          total: nonzeros=64, allocated nonzeros=64</div><div>          total number of mallocs used during MatSetValues calls =0</div><div>            not using I-node routines</div><div>      Split number 1 Defined by IS</div><div>      KSP Object:      (bf_fieldsplit_y_velocity_)       1 MPI processes</div><div>        type: preonly</div><div>        maximum iterations=10000, initial guess is zero</div><div>        tolerances:  relative=1e-05, absolute=1e-50, divergence=10000</div><div>        left preconditioning</div><div>        using NONE norm type for convergence test</div><div>      PC Object:      (bf_fieldsplit_y_velocity_)       1 MPI processes</div><div>        type: ilu</div><div>          ILU: out-of-place factorization</div><div>          0 levels of fill</div><div>          tolerance for zero pivot 2.22045e-14</div><div>          using diagonal shift on blocks to prevent zero pivot [INBLOCKS]</div><div>          matrix ordering: natural</div><div>          factor fill ratio given 1, needed 1</div><div>            Factored matrix follows:</div><div>              Mat Object:               1 MPI processes</div><div>                type: seqaij</div><div>                rows=16, cols=16</div><div>                package used to perform factorization: petsc</div><div>                total: nonzeros=64, allocated nonzeros=64</div><div>                total number of mallocs used during MatSetValues calls =0</div><div>                  not using I-node routines</div><div>        linear system matrix = precond matrix:</div><div>        Mat Object:        (bf_fieldsplit_y_velocity_)         1 MPI processes</div><div>          type: seqaij</div><div>          rows=16, cols=16</div><div>          total: nonzeros=64, allocated nonzeros=64</div><div>          total number of mallocs used during MatSetValues calls =0</div><div>            not using I-node routines</div><div>      Split number 2 Defined by IS</div><div>      KSP Object:      (bf_fieldsplit_Omega_)       1 MPI processes</div><div>        type: preonly</div><div>        maximum iterations=10000, initial guess is zero</div><div>        tolerances:  relative=1e-05, absolute=1e-50, divergence=10000</div><div>        left preconditioning</div><div>        using NONE norm type for convergence test</div><div>      PC Object:      (bf_fieldsplit_Omega_)       1 MPI processes</div><div>        type: ilu</div><div>          ILU: out-of-place factorization</div><div>          0 levels of fill</div><div>          tolerance for zero pivot 2.22045e-14</div><div>          using diagonal shift on blocks to prevent zero pivot [INBLOCKS]</div><div>          matrix ordering: natural</div><div>          factor fill ratio given 1, needed 1</div><div>            Factored matrix follows:</div><div>              Mat Object:               1 MPI processes</div><div>                type: seqaij</div><div>                rows=16, cols=16</div><div>                package used to perform factorization: petsc</div><div>                total: nonzeros=64, allocated nonzeros=64</div><div>                total number of mallocs used during MatSetValues calls =0</div><div>                  not using I-node routines</div><div>        linear system matrix = precond matrix:</div><div>        Mat Object:        (bf_fieldsplit_Omega_)         1 MPI processes</div><div>          type: seqaij</div><div>          rows=16, cols=16</div><div>          total: nonzeros=64, allocated nonzeros=64</div><div>          total number of mallocs used during MatSetValues calls =0</div><div>            not using I-node routines</div><div>      Split number 3 Defined by IS</div><div>      KSP Object:      (bf_fieldsplit_temperature_)       1 MPI processes</div><div>        type: preonly</div><div>        maximum iterations=10000, initial guess is zero</div><div>        tolerances:  relative=1e-05, absolute=1e-50, divergence=10000</div><div>        left preconditioning</div><div>        using NONE norm type for convergence test</div><div>      PC Object:      (bf_fieldsplit_temperature_)       1 MPI processes</div><div>        type: ilu</div><div>          ILU: out-of-place factorization</div><div>          0 levels of fill</div><div>          tolerance for zero pivot 2.22045e-14</div><div>          using diagonal shift on blocks to prevent zero pivot [INBLOCKS]</div><div>          matrix ordering: natural</div><div>          factor fill ratio given 1, needed 1</div><div>            Factored matrix follows:</div><div>              Mat Object:               1 MPI processes</div><div>                type: seqaij</div><div>                rows=16, cols=16</div><div>                package used to perform factorization: petsc</div><div>                total: nonzeros=64, allocated nonzeros=64</div><div>                total number of mallocs used during MatSetValues calls =0</div><div>                  not using I-node routines</div><div>        linear system matrix = precond matrix:</div><div>        Mat Object:        (bf_fieldsplit_temperature_)         1 MPI processes</div><div>          type: seqaij</div><div>          rows=16, cols=16</div><div>          total: nonzeros=64, allocated nonzeros=64</div><div>          total number of mallocs used during MatSetValues calls =0</div><div>            not using I-node routines</div><div>    linear system matrix = precond matrix:</div><div>    Mat Object:     1 MPI processes</div><div>      type: seqaij</div><div>      rows=64, cols=64, bs=4</div><div>      total: nonzeros=1024, allocated nonzeros=1024</div><div>      total number of mallocs used during MatSetValues calls =0</div><div>        using I-node routines: found 16 nodes, limit used is 5</div><div>Number of SNES iterations = 2</div></div><div><br></div><div>I will try with 3.5.2.</div><div><br></div><div>  Thanks,</div><div><br></div><div>    Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Thanks.<span><font color="#888888"><br>
Anton<span class="HOEnZb"><font color="#888888"><br>
</font></span></font></span></blockquote></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener
</font></span></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener
</div>