[petsc-users] Rigid body nullspace for Stokes operator

Mark Adams mfadams at lbl.gov
Tue Oct 29 21:00:41 CDT 2024


This is linear elasticity and there are 6 "null" vectors (if you removed
Dirichlet boundary conditions these are eigenvectors with zero eigenvalue):
3 translations, x, y, z, and three rotatiions xx, yy ,zz.
x = (1,0,0,1,0,0,1,0 ...)
and xx is something like (0, z_1, -y_1, 0, z_2, -y_2, ...) where z_1 is the
z coordinate of the first vertex, etc.

Mark

On Tue, Oct 29, 2024 at 3:47 PM Amneet Bhalla <mail2amneet at gmail.com> wrote:

> Hi Mark,
>
> Thanks! I am not sure how to construct null space and zero energy modes
> manually for this operator. Is there some theory or documentation I can
> follow to figure out what the null space and zero energy modes look like
> for this operator? Once I know what these are in symbolic form, I think I
> should be able to construct them manually.
>
> Best,
> --Amneet
>
> On Tue, Oct 29, 2024 at 7:35 AM Mark Adams <mfadams at lbl.gov> wrote:
>
>> Oh my mistake. You are using staggered grids. So you don't have a block
>> size that hypre would use for the "nodal" methods.
>> I'm not sure what you are doing exactly, but try hypre and you could
>> create the null space, zero energy modes, manually, attach to the matrix
>> and try GAMG.
>> You can run with '-info :pc' and grep on GAMG to see if GAMG is picking
>> the null space up (send this output if you can't figure it out).
>>
>> Thanks,
>> Mark
>>
>> On Tue, Oct 29, 2024 at 9:28 AM Mark Adams <mfadams at lbl.gov> wrote:
>>
>>> This coordinate interface is just a shortcut for vertex based
>>> discretizations with 3 dof per vertex, etc. (maybe works in 2D).
>>> You will need to construct the null space vectors manually and attach it
>>> to the matrix. Used by GAMG.
>>>
>>> Note, for hypre you want to use the "nodal" options and it does not use
>>> these null space vectors. That is probably the way you want to go.
>>> eg: -pc_hypre_boomeramg_nodal_coarsen
>>>
>>> I would run with hypre boomerang and -help and grep on nodal to see all
>>> the "nodal" options and use them.
>>>
>>> Thanks,
>>> Mark
>>>
>>>
>>> On Mon, Oct 28, 2024 at 8:06 PM Amneet Bhalla <mail2amneet at gmail.com>
>>> wrote:
>>>
>>>> Hi Folks,
>>>>
>>>> I am trying to solve the momentum equation in a projection
>>>> preconditioner using GAMG or Hypre solver. The equation looks like for
>>>> velocity variable *v* looks like:
>>>>
>>>>
>>>>  [image: Screenshot 2024-10-28 at 4.15.17 PM.png]
>>>>
>>>> Here, μ is spatially varying dynamic viscosity and λ is spatially
>>>> varying bulk viscosity. I understand that I need to specify rigid body
>>>> nullspace modes to the multigrid solver in order to accelerate its
>>>> convergence. Looking into this routine MatNullSpaceCreateRigidBody() (
>>>> https://urldefense.us/v3/__https://petsc.org/release/manualpages/Mat/MatNullSpaceCreateRigidBody/__;!!G_uCfscf7eWS!bVR6duCoDqPhZrWS-sm1c5qxsFPjZMhdT86AqLpPzWgVy5qoRhd4_Jue2LJOIS6LRrtV2cHGrqger1Yvb-Y5f-0$ 
>>>> <https://urldefense.us/v3/__https://petsc.org/release/manualpages/Mat/MatNullSpaceCreateRigidBody/__;!!G_uCfscf7eWS!eKqgIJjCdMzIU76f7X65AmGxrU_-lC7W02BMWafJ77DNf_IuQk6O1X3qU1x9Ez8NJ20vZEL-mF6T1yNmDnwv0eWa2w$>),
>>>> I see that I need to provide the coordinates of each node. I am using
>>>> staggered grid discretization. Do I need to provide coordinates of
>>>> staggered grid locations?
>>>>
>>>> Thanks,
>>>> --
>>>> --Amneet
>>>>
>>>>
>>>>
>>>>
>
> --
> --Amneet
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20241029/d1f02cfd/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Screenshot 2024-10-28 at 4.15.17 PM.png
Type: image/png
Size: 17171 bytes
Desc: not available
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20241029/d1f02cfd/attachment-0001.png>


More information about the petsc-users mailing list