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/>