[petsc-users] Rigid body nullspace for Stokes operator

Jed Brown jed at jedbrown.org
Mon Nov 4 12:11:54 CST 2024


Unless the problem is entirely floating (the true null space is all six rigid body modes), then they will be different, so yes, you'll typically have two MatNullSpace objects.

Amneet Bhalla <mail2amneet at gmail.com> writes:

> Hi Jed,
>
> Do I need to create two separate MattNullSpace objects if I want to use
> both MatSetNullSpace() and MatSetNearNullSpace()?
>
> Thanks,
>
>
> On Thu, Oct 31, 2024 at 8:18 AM Jed Brown <jed at jedbrown.org> wrote:
>
>> Pierre Jolivet <pierre at joliv.et> writes:
>>
>> >> On 31 Oct 2024, at 2:47 PM, Mark Adams <mfadams at lbl.gov> wrote:
>> >>
>> >> Interesting. I have seen hypre do fine on elasticity, but do you know
>> if boomeramg (classical) uses these vectors or is there a smoothed
>> aggregation solver in hypre?
>> >
>> > I’m not sure it is precisely “standard” smoothed aggregation, see bottom
>> paragraph of
>> https://urldefense.us/v3/__https://hypre.readthedocs.io/en/latest/solvers-boomeramg.html*amg-for-systems-of-pdes__;Iw!!G_uCfscf7eWS!fdj4AzKhAcDmM1x_ZQ8gxqWeX6BAKY9urnvATMpT7hC8lw77ak7tqxqXGIX3PMg2wYA5PGu7EzyCW0yzixutBg$
>> > I’ve never made it to work, but I know some do.
>> > A while back, Stefano gave me this pointer as well:
>> https://urldefense.us/v3/__https://github.com/mfem/mfem/blob/17955e114020af340e9a06a66ebef43e05012d9c/linalg/hypre.cpp*L5245__;Iw!!G_uCfscf7eWS!fdj4AzKhAcDmM1x_ZQ8gxqWeX6BAKY9urnvATMpT7hC8lw77ak7tqxqXGIX3PMg2wYA5PGu7EzyCW0wVEi33Pw$
>>
>> It's still classical AMG, and in my experience, struggles on very thin
>> structures (e.g., aspect ratio 1000 cantilever beams) when compared to SA.
>> However, it can be quite competitive for many structures. I found that the
>> "MFEM elasticity suite", which is based on Baker et al 2010, gave rather
>> poor results. This is a configuration that works on GPUs and gives good
>> convergence and performance for elasticity:
>>
>>
>> https://urldefense.us/v3/__https://github.com/hypre-space/hypre/issues/601*issuecomment-1069426997__;Iw!!G_uCfscf7eWS!arUVBVKKcYs1M5OhNqqRZl2b2o0NIUkG7fV_22qBbg-ssHhhHazhkpMbYNjCOTN66Sfbk-VZilfox9bxDf0$
>>
>> In the above issue, I was only using BoomerAMG as a coarse level for p-MG
>> so all the options have a `-mg_coarse_` prefix; here are those options
>> without the prefix:
>>
>> -pc_hypre_boomeramg_coarsen_type pmis
>> -pc_hypre_boomeramg_interp_type ext+i
>> -pc_hypre_boomeramg_no_CF
>> -pc_hypre_boomeramg_P_max 6
>> -pc_hypre_boomeramg_print_statistics 1
>> -pc_hypre_boomeramg_relax_type_down Chebyshev
>> -pc_hypre_boomeramg_relax_type_up Chebyshev
>> -pc_hypre_boomeramg_strong_threshold 0.5
>> -pc_type hypre
>>
>
>
> -- 
> --Amneet


More information about the petsc-users mailing list