Thank you very much for the information Matt. Unfortunately, I do not use DM.... :-(
Le jeu. 13 juil. 2023 à 13:44, Matthew Knepley <knep...@gmail.com> a écrit : > On Thu, Jul 13, 2023 at 5:33 AM Pierre Jolivet <pierre.joli...@lip6.fr> > wrote: > >> Dear Nicolas, >> >> On 13 Jul 2023, at 10:17 AM, TARDIEU Nicolas <nicolas.tard...@edf.fr> >> wrote: >> >> Dear Pierre, >> >> You are absolutely right. I was using a --with-debugging=0 (aka release) >> install and this is definitely an error. >> Once I used my debug install, I found the way to fix my problem. The >> solution is in the attached script: I first need to extract the correct >> block from the PC operator's MatNest and then append the null space to it. >> Anyway this is a bit tricky... >> >> >> Yep, it’s the same with all “nested” solvers, fieldsplit, ASM, MG, you >> name it. >> You first need the initial PCSetUp() so that the bare minimum is put in >> place, then you have to fetch things yourself and adapt it to your needs. >> We had a similar discussion with the MEF++ people last week, there is >> currently no way around this, AFAIK. >> > > Actually, I hated this as well, so I built a way around it _if_ you are > using a DM to define the problem. Then > you can set a "nullspace constructor" to make it if the field you are > talking about is ever extracted. You use DMSetNullSpaceConstructor(). I do > this in SNES ex62 and ex69, and other examples. > > Thanks, > > Matt > > >> Thanks, >> Pierre >> >> Regards, >> Nicolas >> >> ------------------------------ >> *De :* pierre.joli...@lip6.fr <pierre.joli...@lip6.fr> >> *Envoyé :* mercredi 12 juillet 2023 19:52 >> *À :* TARDIEU Nicolas <nicolas.tard...@edf.fr> >> *Cc :* petsc-users@mcs.anl.gov <petsc-users@mcs.anl.gov> >> *Objet :* Re: [petsc-users] Near null space for a fieldsplit in petsc4py >> >> >> > On 12 Jul 2023, at 6:04 PM, TARDIEU Nicolas via petsc-users < >> petsc-users@mcs.anl.gov> wrote: >> > >> > Dear PETSc team, >> > >> > In the attached example, I set up a block pc for a saddle-point problem >> in petsc4py. The IS define the unknowns, namely some physical quantity >> (phys) and a Lagrange multiplier (lags). >> > I would like to attach a near null space to the physical block, in >> order to get the best performance from an AMG pc. >> > I have been trying hard, attaching it to the initial block, to the IS >> but no matter what I am doing, when it comes to "ksp_view", no near null >> space is attached to the matrix. >> > >> > Could you please help me figure out what I am doing wrong ? >> >> Are you using a double-precision 32-bit integers real build of PETSc? >> Is it --with-debugging=0? >> Because with my debug build, I get the following error (thus explaining >> why it’s not attached to the KSP). >> Traceback (most recent call last): >> File "/Volumes/Data/Downloads/test/test_NullSpace.py", line 35, in >> <module> >> ns = NullSpace().create(True, [v], comm=comm) >> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> File "petsc4py/PETSc/Mat.pyx", line 5611, in >> petsc4py.PETSc.NullSpace.create >> petsc4py.PETSc.Error: error code 62 >> [0] MatNullSpaceCreate() at >> /Volumes/Data/repositories/petsc/src/mat/interface/matnull.c:249 >> [0] Invalid argument >> [0] Vector 0 must have 2-norm of 1.0, it is 22.3159 >> >> Furthermore, if you set yourself the constant vector in the near >> null-space, then the first argument of create() must be False, otherwise, >> you’ll have twice the same vector, and you’ll end up with another error >> (the vectors in the near null-space must be orthonormal). >> If things still don’t work after those couple of fixes, please feel free >> to send an up-to-date reproducer. >> >> Thanks, >> Pierre >> >> > Thanks, >> > Nicolas >> > >> > >> > >> > >> > Ce message et toutes les pièces jointes (ci-après le 'Message') sont >> établis à l'intention exclusive des destinataires et les informations qui y >> figurent sont strictement confidentielles. Toute utilisation de ce Message >> non conforme à sa destination, toute diffusion ou toute publication totale >> ou partielle, est interdite sauf autorisation expresse. >> > >> > Si vous n'êtes pas le destinataire de ce Message, il vous est interdit >> de le copier, de le faire suivre, de le divulguer ou d'en utiliser tout ou >> partie. Si vous avez reçu ce Message par erreur, merci de le supprimer de >> votre système, ainsi que toutes ses copies, et de n'en garder aucune trace >> sur quelque support que ce soit. Nous vous remercions également d'en >> avertir immédiatement l'expéditeur par retour du message. >> > >> > Il est impossible de garantir que les communications par messagerie >> électronique arrivent en temps utile, sont sécurisées ou dénuées de toute >> erreur ou virus. >> > ____________________________________________________ >> > >> > This message and any attachments (the 'Message') are intended solely >> for the addressees. The information contained in this Message is >> confidential. Any use of information contained in this Message not in >> accord with its purpose, any dissemination or disclosure, either whole or >> partial, is prohibited except formal approval. >> > >> > If you are not the addressee, you may not copy, forward, disclose or >> use any part of it. If you have received this message in error, please >> delete it and all copies from your system and notify the sender immediately >> by return message. >> > >> > E-mail communication cannot be guaranteed to be timely secure, error or >> virus-free. >> > <test.tgz> >> >> >> Ce message et toutes les pièces jointes (ci-après le 'Message') sont >> établis à l'intention exclusive des destinataires et les informations qui y >> figurent sont strictement confidentielles. Toute utilisation de ce Message >> non conforme à sa destination, toute diffusion ou toute publication totale >> ou partielle, est interdite sauf autorisation expresse. >> Si vous n'êtes pas le destinataire de ce Message, il vous est interdit de >> le copier, de le faire suivre, de le divulguer ou d'en utiliser tout ou >> partie. Si vous avez reçu ce Message par erreur, merci de le supprimer de >> votre système, ainsi que toutes ses copies, et de n'en garder aucune trace >> sur quelque support que ce soit. Nous vous remercions également d'en >> avertir immédiatement l'expéditeur par retour du message. >> Il est impossible de garantir que les communications par messagerie >> électronique arrivent en temps utile, sont sécurisées ou dénuées de toute >> erreur ou virus. >> ____________________________________________________ >> This message and any attachments (the 'Message') are intended solely for >> the addressees. The information contained in this Message is confidential. >> Any use of information contained in this Message not in accord with its >> purpose, any dissemination or disclosure, either whole or partial, is >> prohibited except formal approval. >> If you are not the addressee, you may not copy, forward, disclose or use >> any part of it. If you have received this message in error, please delete >> it and all copies from your system and notify the sender immediately by >> return message. >> E-mail communication cannot be guaranteed to be timely secure, error or >> virus-free. >> <test_NullSpace.py.gz> >> >> >> > > -- > 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/> >