Hi Matt,
thanks fort he answer and clarification. Then I’ll work around this issue in python, where I set the options. Best, Sebastian -- Dr. Sebastian Blauth Fraunhofer-Institut für Techno- und Wirtschaftsmathematik ITWM Abteilung Transportvorgänge Fraunhofer-Platz 1, 67663 Kaiserslautern Telefon: +49 631 31600-4968 sebastian.bla...@itwm.fraunhofer.de <mailto:sebastian.bla...@itwm.fraunhofer.de> https://www.itwm.fraunhofer.de From: Matthew Knepley <knep...@gmail.com> Sent: Monday, July 1, 2024 4:30 PM To: Blauth, Sebastian <sebastian.bla...@itwm.fraunhofer.de> Cc: petsc-users@mcs.anl.gov Subject: Re: [petsc-users] Question regarding naming of fieldsplit splits On Mon, Jul 1, 2024 at 9:48 AM Blauth, Sebastian <sebastian.bla...@itwm.fraunhofer.de <mailto:sebastian.bla...@itwm.fraunhofer.de> > wrote: Dear Matt, thanks a lot for your help. Unfortunately, for me these extra options do not have any effect, I still get the “u” and “p” fieldnames. Also, this would not help me to get rid of the “c” fieldname – on that level of the fieldsplit I am basically using your approach already, and still it does show up. The output of the -ksp_view is unchanged, so that I do not attach it here again. Maybe I misunderstood you? Oh, we make an exception for single fields, since we think you would want to use the name. I have to make an extra option to shut off naming. Thanks, Matt Thanks for the help and best regards, Sebastian -- Dr. Sebastian Blauth Fraunhofer-Institut für Techno- und Wirtschaftsmathematik ITWM Abteilung Transportvorgänge Fraunhofer-Platz 1, 67663 Kaiserslautern Telefon: +49 631 31600-4968 sebastian.bla...@itwm.fraunhofer.de <mailto:sebastian.bla...@itwm.fraunhofer.de> https://www.itwm.fraunhofer.de From: Matthew Knepley <knep...@gmail.com <mailto:knep...@gmail.com> > Sent: Monday, July 1, 2024 2:27 PM To: Blauth, Sebastian <sebastian.bla...@itwm.fraunhofer.de <mailto:sebastian.bla...@itwm.fraunhofer.de> > Cc: petsc-users@mcs.anl.gov <mailto:petsc-users@mcs.anl.gov> Subject: Re: [petsc-users] Question regarding naming of fieldsplit splits On Fri, Jun 28, 2024 at 4:05 AM Blauth, Sebastian <sebastian.bla...@itwm.fraunhofer.de <mailto:sebastian.bla...@itwm.fraunhofer.de> > wrote: Hello everyone, I have a question regarding the naming convention using PETSc’s PCFieldsplit. I have been following https://lists.mcs.anl.gov/pipermail/petsc-users/2019-January/037262.html to create a DMShell with FEniCS in order to customize PCFieldsplit for my application. I am using the following options, which work nicely for me: -ksp_type fgmres -pc_type fieldsplit -pc_fieldsplit_0_fields 0, 1 -pc_fieldsplit_1_fields 2 -pc_fieldsplit_type additive -fieldsplit_0_ksp_type fgmres -fieldsplit_0_pc_type fieldsplit -fieldsplit_0_pc_fieldsplit_type schur -fieldsplit_0_pc_fieldsplit_schur_fact_type full -fieldsplit_0_pc_fieldsplit_schur_precondition selfp -fieldsplit_0_fieldsplit_u_ksp_type preonly -fieldsplit_0_fieldsplit_u_pc_type lu -fieldsplit_0_fieldsplit_p_ksp_type cg -fieldsplit_0_fieldsplit_p_ksp_rtol 1e-14 -fieldsplit_0_fieldsplit_p_ksp_atol 1e-30 -fieldsplit_0_fieldsplit_p_pc_type icc -fieldsplit_0_ksp_rtol 1e-14 -fieldsplit_0_ksp_atol 1e-30 -fieldsplit_0_ksp_monitor_true_residual -fieldsplit_c_ksp_type preonly -fieldsplit_c_pc_type lu -ksp_view By default, we use the field names, but you can prevent this by specifying the fields by hand, so -fieldsplit_0_pc_fieldsplit_0_fields 0 -fieldsplit_0_pc_fieldsplit_1_fields 1 should remove the 'u' and 'p' fieldnames. It is somewhat hacky, but I think easier to remember than some extra option. Thanks, Matt Note that this is just an academic example (sorry for the low solver tolerances) to test the approach, consisting of a Stokes equation and some concentration equation (which is not even coupled to Stokes, just for testing). Completely analogous to https://lists.mcs.anl.gov/pipermail/petsc-users/2019-January/037262.html, I translate my IS’s to a PETSc Section, which is then supplied to a DMShell and assigned to a KSP. I am not so familiar with the code or how / why this works, but it seems to do so perfectly. I name my sections with petsc4py using section.setFieldName(0, "u") section.setFieldName(1, "p") section.setFieldName(2, "c") However, this is also reflected in the way I can access the fieldsplit options from the command line. My question is: Is there any way of not using the FieldNames specified in python but use the index of the field as defined with “-pc_fieldsplit_0_fields 0, 1” and “-pc_fieldsplit_1_fields 2”, i.e., instead of the prefix “fieldsplit_0_fieldsplit_u” I want to write “fieldsplit_0_fieldsplit_0”, instead of “fieldsplit_0_fieldsplit_p” I want to use “fieldsplit_0_fieldsplit_1”, and instead of “fieldsplit_c” I want to use “fieldsplit_1”. Just changing the names of the fields to section.setFieldName(0, "0") section.setFieldName(1, "1") section.setFieldName(2, "2") does obviously not work as expected, as it works for velocity and pressure, but not for the concentration – the prefix there is then “fieldsplit_2” and not “fieldsplit_1”. In the docs, I have found https://petsc.org/main/manualpages/PC/PCFieldSplitSetFields/ which seems to suggest that the fieldname can potentially be supplied, but I don’t see how to do so from the command line. Also, for the sake of completeness, I attach the output of the solve with “-ksp_view” below. Thanks a lot in advance and best regards, Sebastian The output of ksp_view is the following: KSP Object: 1 MPI processes type: fgmres restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement happy breakdown tolerance 1e-30 maximum iterations=10000, initial guess is zero tolerances: relative=1e-05, absolute=1e-11, divergence=10000. right preconditioning using UNPRECONDITIONED norm type for convergence test PC Object: 1 MPI processes type: fieldsplit FieldSplit with ADDITIVE composition: total splits = 2 Solver info for each split is in the following KSP objects: Split number 0 Defined by IS KSP Object: (fieldsplit_0_) 1 MPI processes type: fgmres restart=30, using Classical (unmodified) Gram-Schmidt Orthogonalization with no iterative refinement happy breakdown tolerance 1e-30 maximum iterations=10000, initial guess is zero tolerances: relative=1e-14, absolute=1e-30, divergence=10000. right preconditioning using UNPRECONDITIONED norm type for convergence test PC Object: (fieldsplit_0_) 1 MPI processes type: fieldsplit FieldSplit with Schur preconditioner, factorization FULL Preconditioner for the Schur complement formed from Sp, an assembled approximation to S, which uses A00's diagonal's inverse Split info: Split number 0 Defined by IS Split number 1 Defined by IS KSP solver for A00 block KSP Object: (fieldsplit_0_fieldsplit_u_) 1 MPI processes type: preonly maximum iterations=10000, initial guess is zero tolerances: relative=1e-05, absolute=1e-50, divergence=10000. left preconditioning using NONE norm type for convergence test PC Object: (fieldsplit_0_fieldsplit_u_) 1 MPI processes type: lu out-of-place factorization tolerance for zero pivot 2.22045e-14 matrix ordering: nd factor fill ratio given 5., needed 3.92639 Factored matrix follows: Mat Object: 1 MPI processes type: seqaij rows=4290, cols=4290 package used to perform factorization: petsc total: nonzeros=375944, allocated nonzeros=375944 using I-node routines: found 2548 nodes, limit used is 5 linear system matrix = precond matrix: Mat Object: (fieldsplit_0_fieldsplit_u_) 1 MPI processes type: seqaij rows=4290, cols=4290 total: nonzeros=95748, allocated nonzeros=95748 total number of mallocs used during MatSetValues calls=0 using I-node routines: found 3287 nodes, limit used is 5 KSP solver for S = A11 - A10 inv(A00) A01 KSP Object: (fieldsplit_0_fieldsplit_p_) 1 MPI processes type: cg maximum iterations=10000, initial guess is zero tolerances: relative=1e-14, absolute=1e-30, divergence=10000. left preconditioning using PRECONDITIONED norm type for convergence test PC Object: (fieldsplit_0_fieldsplit_p_) 1 MPI processes type: icc out-of-place factorization 0 levels of fill tolerance for zero pivot 2.22045e-14 using Manteuffel shift [POSITIVE_DEFINITE] matrix ordering: natural factor fill ratio given 1., needed 1. Factored matrix follows: Mat Object: 1 MPI processes type: seqsbaij rows=561, cols=561 package used to perform factorization: petsc total: nonzeros=5120, allocated nonzeros=5120 block size is 1 linear system matrix followed by preconditioner matrix: Mat Object: (fieldsplit_0_fieldsplit_p_) 1 MPI processes type: schurcomplement rows=561, cols=561 Schur complement A11 - A10 inv(A00) A01 A11 Mat Object: (fieldsplit_0_fieldsplit_p_) 1 MPI processes type: seqaij rows=561, cols=561 total: nonzeros=3729, allocated nonzeros=3729 total number of mallocs used during MatSetValues calls=0 not using I-node routines A10 Mat Object: 1 MPI processes type: seqaij rows=561, cols=4290 total: nonzeros=19938, allocated nonzeros=19938 total number of mallocs used during MatSetValues calls=0 not using I-node routines KSP of A00 KSP Object: (fieldsplit_0_fieldsplit_u_) 1 MPI processes type: preonly maximum iterations=10000, initial guess is zero tolerances: relative=1e-05, absolute=1e-50, divergence=10000. left preconditioning using NONE norm type for convergence test PC Object: (fieldsplit_0_fieldsplit_u_) 1 MPI processes type: lu out-of-place factorization tolerance for zero pivot 2.22045e-14 matrix ordering: nd factor fill ratio given 5., needed 3.92639 Factored matrix follows: Mat Object: 1 MPI processes type: seqaij rows=4290, cols=4290 package used to perform factorization: petsc total: nonzeros=375944, allocated nonzeros=375944 using I-node routines: found 2548 nodes, limit used is 5 linear system matrix = precond matrix: Mat Object: (fieldsplit_0_fieldsplit_u_) 1 MPI processes type: seqaij rows=4290, cols=4290 total: nonzeros=95748, allocated nonzeros=95748 total number of mallocs used during MatSetValues calls=0 using I-node routines: found 3287 nodes, limit used is 5 A01 Mat Object: 1 MPI processes type: seqaij rows=4290, cols=561 total: nonzeros=19938, allocated nonzeros=19938 total number of mallocs used during MatSetValues calls=0 using I-node routines: found 3287 nodes, limit used is 5 Mat Object: 1 MPI processes type: seqaij rows=561, cols=561 total: nonzeros=9679, allocated nonzeros=9679 total number of mallocs used during MatSetValues calls=0 not using I-node routines linear system matrix = precond matrix: Mat Object: (fieldsplit_0_) 1 MPI processes type: seqaij rows=4851, cols=4851 total: nonzeros=139353, allocated nonzeros=139353 total number of mallocs used during MatSetValues calls=0 using I-node routines: found 3830 nodes, limit used is 5 Split number 1 Defined by IS KSP Object: (fieldsplit_c_) 1 MPI processes type: preonly maximum iterations=10000, initial guess is zero tolerances: relative=1e-05, absolute=1e-50, divergence=10000. left preconditioning using NONE norm type for convergence test PC Object: (fieldsplit_c_) 1 MPI processes type: lu out-of-place factorization tolerance for zero pivot 2.22045e-14 matrix ordering: nd factor fill ratio given 5., needed 4.24323 Factored matrix follows: Mat Object: 1 MPI processes type: seqaij rows=561, cols=561 package used to perform factorization: petsc total: nonzeros=15823, allocated nonzeros=15823 not using I-node routines linear system matrix = precond matrix: Mat Object: (fieldsplit_c_) 1 MPI processes type: seqaij rows=561, cols=561 total: nonzeros=3729, allocated nonzeros=3729 total number of mallocs used during MatSetValues calls=0 not using I-node routines linear system matrix = precond matrix: Mat Object: 1 MPI processes type: seqaij rows=5412, cols=5412 total: nonzeros=190416, allocated nonzeros=190416 total number of mallocs used during MatSetValues calls=0 using I-node routines: found 3833 nodes, limit used is 5 -- Dr. Sebastian Blauth Fraunhofer-Institut für Techno- und Wirtschaftsmathematik ITWM Abteilung Transportvorgänge Fraunhofer-Platz 1, 67663 Kaiserslautern Telefon: +49 631 31600-4968 sebastian.bla...@itwm.fraunhofer.de <mailto:sebastian.bla...@itwm.fraunhofer.de> https://www.itwm.fraunhofer.de -- 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 https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/> -- 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 https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
smime.p7s
Description: S/MIME cryptographic signature