Hi Matt,
One further question on this. I am working on the code now, but have one
issue.
The IS I grab from all fields need to be set to the sub PCs, but they
will have a local ordering of the dofs. Is there a tool in PETSc to make
this coherent? I.e. if I will set the IS fields '0,4,7' to
Hi Matt,
Sorry for the late answer, it was holiday time.
Just to clarify, if you call SetIS() 3 times, and then give
-pc_fieldsplit_0_fields 0,2
then we should reduce the number of fields to two by calling
ISConcatenate() on the first and last ISes?
Exactly
I think this should not be
Hello Matt,
After some discussions elsewhere (thanks @LMitchell!), we found out that
the problem is that the fields are setup with PCSetIS, without an
attached DM, which does not support this kind of nesting fields.
I would like to add this feature, meaning that during the setup of the
Thank you Matt,
Again, at the bottom of this message you will find the -info output. I
don't see any output related to the fields,
Best
-- -info
[0] PetscDetermineInitialFPTrap(): Floating point trapping is on
by default 13
[0] PetscDeviceInitializeTypeFromOptions_Private():
There are a number of common errors:
1) Your PC has a prefix
2) You have not called KSPSetFromOptions() here
Can you send the -ksp_view output?
The PC at least has no prefix. I had to set ksp_rtol to 1 to get through
the solution process, you will find both the petsc_rc and the
Thanks Matt,
Sorry, I copied the output from the error, but in the options file I do
it as expected:
-pc_fieldsplit_0_fields 0,1
-pc_fieldsplit_1_fields 2,3
Best
On 03-02-23 16:50, Matthew Knepley wrote:
On Fri, Feb 3, 2023 at 2:46 PM Nicolas Barnafi via petsc-users
mailto:petsc-users
Dear community,
I am using a fieldsplit preconditioner, but for some reason I cannot
group fields as in other libraries (i.e. I do this in Firedrake and it
works). Some context:
I have set four fields to the preconditioner, which I want to regroup with
-pc_fieldsplit_0_fields value: 0,1
I am not adept enough at FEniCS to look at the code and debug. However,
I would make a very small problem for 2 processes, say two cells on each,
and then print out is_0 and is_1. That should tell you if you have the
right
unknowns in each block. If so, then it seems like something is not