[petsc-users] PCFIELDSPLIT prefix

Rossi, Simone srossi at email.unc.edu
Sun Apr 8 11:12:00 CDT 2018


Hello, 
I’m trying to set a prefix for a ksp context (from the libMesh PetscLinearSolver) that solves a “bidomain” problem.

Currently I’m simply calling

KSPSetOptionsPrefix(ksp,"bidomain_");
PCFieldSplitSetIS(ksp->pc,"v",is_v_local);
PCFieldSplitSetIS(ksp->pc,"ve",is_ve_local); 

where is_v_local and is_ve_local are the local index sets of the 2 fields, v and ve.

In this way, I can use the -bidomain_pc_type option to set the preconditioner. But using the FIELDSPLIT preconditioner with:
-bidomain_pc_type fieldsplit
I actually get the error: 
"Unhandled case, must have at least two fields, not 1”
If I specify the block size
-bidomain_pc_type fieldsplit  -bidomain_pc_fieldsplit_block_size 2
The fields are not split using the provided index sets and the splitnames correspond to the number of the split, i.e.
-bidomain_fieldsplit_0
-bidomain_fieldsplit_1


On the contrary using:
-pc_type fieldsplit
the preconditioner uses the index set provided in the code, and the splitnames are correct
-bidomain_fieldsplit_v
-bidomain_fieldsplit_ve

How can I call "-bidomain_pc_type fieldsplit" and get the splitting that uses the index sets provided in the code?

Thanks for the help,
Simone



More information about the petsc-users mailing list