[petsc-users] Near null space for a fieldsplit in petsc4py

Stefano Zampini stefano.zampini at gmail.com
Thu Jul 13 12:19:38 CDT 2023


clearly, I meant optimized mode

Il giorno gio 13 lug 2023 alle ore 19:19 Stefano Zampini <
stefano.zampini at gmail.com> ha scritto:

> In any case, we need to activate PetscCheck in debug mode too. This could
> have been avoided.
>
> Il giorno gio 13 lug 2023 alle ore 18:23 Karin&NiKo <niko.karin at gmail.com>
> ha scritto:
>
>> Thank you very much for the information Matt.
>> Unfortunately, I do not use DM....  :-(
>>
>> Le jeu. 13 juil. 2023 à 13:44, Matthew Knepley <knepley at gmail.com> a
>> écrit :
>>
>>> On Thu, Jul 13, 2023 at 5:33 AM Pierre Jolivet <pierre.jolivet at lip6.fr>
>>> wrote:
>>>
>>>> Dear Nicolas,
>>>>
>>>> On 13 Jul 2023, at 10:17 AM, TARDIEU Nicolas <nicolas.tardieu at 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.jolivet at lip6.fr <pierre.jolivet at lip6.fr>
>>>> *Envoyé :* mercredi 12 juillet 2023 19:52
>>>> *À :* TARDIEU Nicolas <nicolas.tardieu at edf.fr>
>>>> *Cc :* petsc-users at mcs.anl.gov <petsc-users at 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 at 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/>
>>>
>>
>
> --
> Stefano
>


-- 
Stefano
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20230713/ee4733cb/attachment-0001.html>


More information about the petsc-users mailing list