<div dir="ltr">Hi Jed, <div><br></div><div>Do I need to create two separate MattNullSpace objects if I want to use both MatSetNullSpace() and MatSetNearNullSpace()? </div><div><br></div><div>Thanks,</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Oct 31, 2024 at 8:18 AM Jed Brown <<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Pierre Jolivet <<a href="mailto:pierre@joliv.et" target="_blank">pierre@joliv.et</a>> writes:<br>
<br>
>> On 31 Oct 2024, at 2:47 PM, Mark Adams <<a href="mailto:mfadams@lbl.gov" target="_blank">mfadams@lbl.gov</a>> wrote:<br>
>> <br>
>> 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?<br>
><br>
> I’m not sure it is precisely “standard” smoothed aggregation, see bottom paragraph of <a href="https://urldefense.us/v3/__https://hypre.readthedocs.io/en/latest/solvers-boomeramg.html*amg-for-systems-of-pdes__;Iw!!G_uCfscf7eWS!fdj4AzKhAcDmM1x_ZQ8gxqWeX6BAKY9urnvATMpT7hC8lw77ak7tqxqXGIX3PMg2wYA5PGu7EzyCW0yzixutBg$" rel="noreferrer" target="_blank">https://urldefense.us/v3/__https://hypre.readthedocs.io/en/latest/solvers-boomeramg.html*amg-for-systems-of-pdes__;Iw!!G_uCfscf7eWS!fdj4AzKhAcDmM1x_ZQ8gxqWeX6BAKY9urnvATMpT7hC8lw77ak7tqxqXGIX3PMg2wYA5PGu7EzyCW0yzixutBg$</a> <br>
> I’ve never made it to work, but I know some do.<br>
> A while back, Stefano gave me this pointer as well: <a href="https://urldefense.us/v3/__https://github.com/mfem/mfem/blob/17955e114020af340e9a06a66ebef43e05012d9c/linalg/hypre.cpp*L5245__;Iw!!G_uCfscf7eWS!fdj4AzKhAcDmM1x_ZQ8gxqWeX6BAKY9urnvATMpT7hC8lw77ak7tqxqXGIX3PMg2wYA5PGu7EzyCW0wVEi33Pw$" rel="noreferrer" target="_blank">https://urldefense.us/v3/__https://github.com/mfem/mfem/blob/17955e114020af340e9a06a66ebef43e05012d9c/linalg/hypre.cpp*L5245__;Iw!!G_uCfscf7eWS!fdj4AzKhAcDmM1x_ZQ8gxqWeX6BAKY9urnvATMpT7hC8lw77ak7tqxqXGIX3PMg2wYA5PGu7EzyCW0wVEi33Pw$</a> <br>
<br>
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:<br>
<br>
<a href="https://urldefense.us/v3/__https://github.com/hypre-space/hypre/issues/601*issuecomment-1069426997__;Iw!!G_uCfscf7eWS!arUVBVKKcYs1M5OhNqqRZl2b2o0NIUkG7fV_22qBbg-ssHhhHazhkpMbYNjCOTN66Sfbk-VZilfox9bxDf0$" rel="noreferrer" target="_blank">https://urldefense.us/v3/__https://github.com/hypre-space/hypre/issues/601*issuecomment-1069426997__;Iw!!G_uCfscf7eWS!arUVBVKKcYs1M5OhNqqRZl2b2o0NIUkG7fV_22qBbg-ssHhhHazhkpMbYNjCOTN66Sfbk-VZilfox9bxDf0$</a> <br>
<br>
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:<br>
<br>
-pc_hypre_boomeramg_coarsen_type pmis<br>
-pc_hypre_boomeramg_interp_type ext+i<br>
-pc_hypre_boomeramg_no_CF<br>
-pc_hypre_boomeramg_P_max 6<br>
-pc_hypre_boomeramg_print_statistics 1<br>
-pc_hypre_boomeramg_relax_type_down Chebyshev<br>
-pc_hypre_boomeramg_relax_type_up Chebyshev<br>
-pc_hypre_boomeramg_strong_threshold 0.5<br>
-pc_type hypre<br>
</blockquote></div><br clear="all"><div><br></div><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>--Amneet <br><br></div><div><br></div><div><br></div></div></div>