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

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


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20230713/db531165/attachment.html>


More information about the petsc-users mailing list