Please send a complete code that you think should work that doesn't so we can 
understand the exact issue.


> On Jul 26, 2016, at 10:54 PM, Safin, Artur <aks084...@utdallas.edu> wrote:
> 
> Barry,
> 
>> Do you have a call to KSPSetFromOptions() before the call 
>> PCFieldSplitGetSubKSP()? I am guessing not which means that the PC does not 
>> yet know that it is of type fieldplit.
> 
> Yes, I call KSPSetFromOptions() for the global matrix at the beginning of the 
> code. Should I also do it for the ksp I obtain from PCFieldSplitGetSubKSP()?
> 
> The program has no problem doing fieldsplit for the global matrix; my issue 
> is that I cannot get it to recognize a fieldsplit within a fieldsplit.
> 
> This is the whole code for the solver:
> 
> --------------------------------------------------------------------------------------------------------------------------------
>  KSP ksp;
>  KSPCreate(mpi_communicator, &ksp);
>  KSPSetType(ksp, KSPGMRES);
>  KSPSetOperators(ksp, A_petsc, A_petsc);
>  KSPSetFromOptions(ksp);
> 
>  PC pc;
>  KSPGetPC(ksp, &pc);
> 
>  // Define the fieldsplit for the global matrix
>  PCFieldSplitSetIS(pc, "P", P_IS);
>  PCFieldSplitSetIS(pc, "T", T_IS);
> 
>  // fieldsplit for submatrix P:
>  KSP *ksp_all, ksp_P;
>  PCFieldSplitGetSubKSP(pc, &i, &ksp_all);
> 
>  ksp_P = ksp_all[0];
>  PC pc_P;
>  KSPGetPC(ksp_P, &pc_P); // This should be the preconditioner for fieldsplit P
>  PCFieldSplitSetIS(pc_P, "A", P_A_IS);
>  PCFieldSplitSetIS(pc_P, "B", P_B_IS);
> 
>  KSPSolve(ksp, b_petsc, u_petsc);
> --------------------------------------------------------------------------------------------------------------------------------
> 
> Thanks,
> 
> Artur
> 

Reply via email to