You need to specify on the command line
-pc_type fieldsplit -fieldsplit_0_pc_type xxx -fieldsplit_1_pc_type yyy

Where xxx and yyy are the desired preconditioners for the (1,1) block and
(2,2) block. Note that the default PC (ilu(0)) applied to both splits
will fail for this example.

The comments in the code are misleading and incorrect. Without the
option -pc_type
fieldsplit, all fieldsplit options have no effect.

When debugging solvers, always run with - ksp_view (as Matt recommends)



On Wednesday, 16 July 2014, Sun, Hui <[email protected]> wrote:

>  No I don't think I'm using fieldsplitting although I want to use it. The
> output of
>
>  ./ex70 -nx 32 -ny 48 -fieldsplit_1_pc_type jacobi -ksp_view
>
>  is the following:
>
>   KSP Object: 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: 1 MPI processes
>
>   type: none
>
>   linear system matrix = precond matrix:
>
>   Matrix Object:   1 MPI processes
>
>     type: nest
>
>     rows=4608, cols=4608
>
>       Matrix object:
>
>         type=nest, rows=2, cols=2
>
>         MatNest structure:
>
>         (0,0) : prefix="a00_", type=mpiaij, rows=3072, cols=3072
>
>         (0,1) : prefix="a01_", type=mpiaij, rows=3072, cols=1536
>
>         (1,0) : prefix="a10_", type=mpiaij, rows=1536, cols=3072
>
>         (1,1) : prefix="a11_", type=mpiaij, rows=1536, cols=1536
>
>  residual u = 2.6315e-05
>
>  residual p = 0.000229872
>
>  residual [u,p] = 0.000231373
>
>  discretization error u = 0.00633503
>
>  discretization error p = 0.121534
>
>  discretization error [u,p] = 0.121699
>
> WARNING! There are options you set that were not used!
>
> WARNING! could be spelling mistake, etc!
>
>  Option left: name:-fieldsplit_1_pc_type value: jacobi
>
>
>  ------------------------------
> *From:* Sun, Hui
> *Sent:* Wednesday, July 16, 2014 2:40 PM
> *To:* Matthew Knepley
> *Cc:* [email protected]
> <javascript:_e(%7B%7D,'cvml','[email protected]');>
> *Subject:* RE: [petsc-users] why a certain option cannot be used
>
>   Thank you Matt. I've corrected it to
>
>  ./ex70 -nx 32 -ny 48 -fieldsplit_1_pc_type jacobi
>
>
>  However the output is still:
>
>
>  residual u = 2.6315e-05
>
>  residual p = 0.000229872
>
>  residual [u,p] = 0.000231373
>
>  discretization error u = 0.00633503
>
>  discretization error p = 0.121534
>
>  discretization error [u,p] = 0.121699
>
> WARNING! There are options you set that were not used!
>
> WARNING! could be spelling mistake, etc!
>
> Option left: name:-fieldsplit_1_pc_type value: jacobi
>
>
>  If I type
>
>
>  ./ex70 -help | grep fieldsplit_1_
>
>
>  the output is that nothing coming out.
>
>
>
>
>
>  ------------------------------
> *From:* Matthew Knepley [[email protected]
> <javascript:_e(%7B%7D,'cvml','[email protected]');>]
> *Sent:* Wednesday, July 16, 2014 2:32 PM
> *To:* Sun, Hui
> *Cc:* [email protected]
> <javascript:_e(%7B%7D,'cvml','[email protected]');>
> *Subject:* Re: [petsc-users] why a certain option cannot be used
>
>    On Wed, Jul 16, 2014 at 4:25 PM, Matthew Knepley <[email protected]
> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote:
>
>>   On Wed, Jul 16, 2014 at 4:22 PM, Sun, Hui <[email protected]
>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote:
>>
>>>  Thank you Matt for answering, however even with that I don't think it
>>> works. For example, the command
>>>
>>>  ./ex70 -nx 32 -ny 48 -fieldsplit_1_type jacobi
>>>
>>
>>  You have mistyped. Look carefully at my last message:
>>
>>    -fieldsplit_1_pc_type jacobi
>>
>
>  I also want to note that you can see all the available options with
> -help. It does produce
> a lot of output, but you can segregate it by prefix ("fieldsplit_1_"). You
> can also see the
> prefix of each solver component using -ksp_view.
>
>    Matt
>
>
>>        Matt
>>
>>
>>>   gives me the following output
>>>
>>>
>>>  residual u = 2.6315e-05
>>>
>>>  residual p = 0.000229872
>>>
>>>  residual [u,p] = 0.000231373
>>>
>>>  discretization error u = 0.00633503
>>>
>>>  discretization error p = 0.121534
>>>
>>>  discretization error [u,p] = 0.121699
>>>
>>> WARNING! There are options you set that were not used!
>>>
>>> WARNING! could be spelling mistake, etc!
>>>
>>> Option left: name:-fieldsplit_1_type value: jacobi
>>>
>>>
>>>  Furthermore, if I look into the possible options with keyword
>>> fieldsplit involved by the command:
>>>
>>>
>>>  ./ex70 -help | grep -A5 fieldsplit
>>>
>>>
>>>  I get this output:
>>>
>>>
>>>  eisenstat ilu icc cholesky asm gasm ksp composite redundant nn mat
>>> fieldsplit galerkin exotic hmpi asa cp lsc redistribute svd gamg tfs
>>> (PCSetType)
>>>
>>>   -pc_use_amat: <FALSE> use Amat (instead of Pmat) to define
>>> preconditioner in nested inner solves (PCSetUseAmat)
>>>
>>> Krylov Method (KSP) options
>>> -------------------------------------------------
>>>
>>>   -ksp_type <gmres>: Krylov method (one of) cg groppcg pipecg cgne nash
>>> stcg gltr richardson
>>>
>>>       chebyshev gmres tcqmr bcgs ibcgs fbcgs fbcgsr bcgsl cgs tfqmr cr
>>> pipecr lsqr preonly qcg bicg fgmres minres symmlq lgmres lcd gcr pgmres
>>> specest dgmres (KSPSetType)
>>>
>>>   -ksp_max_it <10000>: Maximum number of iterations (KSPSetTolerances)
>>>
>>>
>>>  So I don't see any option that's similar to -fieldsplit_1_type.
>>>
>>>
>>>  Hui
>>>
>>>
>>>
>>>  ------------------------------
>>> *From:* Matthew Knepley [[email protected]
>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>]
>>> *Sent:* Wednesday, July 16, 2014 2:16 PM
>>> *To:* Sun, Hui
>>> *Cc:* [email protected]
>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>
>>> *Subject:* Re: [petsc-users] why a certain option cannot be used
>>>
>>>    On Wed, Jul 16, 2014 at 4:09 PM, Sun, Hui <[email protected]
>>> <javascript:_e(%7B%7D,'cvml','[email protected]');>> wrote:
>>>
>>>>  I want to solve Stokes equation using user defined schur complement
>>>> preconditioner. So I'm reading and testing snes/examples/tutorial/ex55.c,
>>>> and ex70.c. In these examples, there are comments about the usage, for
>>>> example:
>>>>
>>>>  mpiexec -n 2 ./stokes -nx 32 -ny 48 -fieldsplit_1_user_pc.
>>>>
>>>>  However the option -fieldsplit_1_user_pc is not recognized by the
>>>> executable. The output of the above command is:
>>>>
>>>
>>>  This ("user_pc") is just a mnemonic. What it means is that you can use
>>> any PC in this slot. What he should have written is
>>>
>>>    -fieldsplit_1_pc_type <user pc>
>>>
>>>    Thanks,
>>>
>>>       Matt
>>>
>>>
>>>>    residual u = 2.6315e-05
>>>>
>>>>  residual p = 0.000229872
>>>>
>>>>  residual [u,p] = 0.000231373
>>>>
>>>>  discretization error u = 0.00633503
>>>>
>>>>  discretization error p = 0.121534
>>>>
>>>>  discretization error [u,p] = 0.121699
>>>>
>>>> WARNING! There are options you set that were not used!
>>>>
>>>> WARNING! could be spelling mistake, etc!
>>>>
>>>> Option left: name:-fieldsplit_1_user_pc (no value)
>>>>
>>>>
>>>>  I'm wondering what's going on. Is that because I need some specific
>>>> options during my configuring of the package? By the way, the version of
>>>> PETSc I'm using is 3.4.4.
>>>>
>>>>
>>>>  Best,
>>>>
>>>> Hui
>>>>
>>>
>>>
>>>
>>>  --
>>> 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
>

Reply via email to