Hi Guys, So the algebraic multigrid works great for a Poisson equation. However, it's choking on our Maxwell's Equations solver which is a form of curl/curl if I'm not mistaken. I was going to give hypre AMS a try, but I'm having trouble installing it. I'm getting the error "Downloaded hypre could not be used". I'm using Ubuntu 14.04 if that makes a difference. Also, is non-algebraic multigrid a reasonable choice for Maxwell's Equations?
Thanks, Ari ----- Original Message ----- From: "Barry Smith" <[email protected]> To: "Ari Rappaport" <[email protected]> Cc: "Mark Adams" <[email protected]>, "For users of the development version of PETSc" <[email protected]> Sent: Wednesday, August 10, 2016 2:02:10 PM Subject: Re: [petsc-dev] Algebraic Multigrid > On Aug 10, 2016, at 2:52 PM, Ari Rappaport <[email protected]> wrote: > > Hi Mark, > There was indeed a bug on our end. Now that we fixed it everything is working > correctly even in parallel. I have one question still though. Is there a way > to get the mg_levels_pc_type jacobi option > set in the code without passing it as an argument to PetscInitialize? I'm > using PCGAMGSetType(pc, PCJACOBI) but it doesn't seem to be working. You can call PetscOptionsSetValue("-<appropriate prefix>_mg_levels_pc_type","jacobi") in the code anywhere before your code creates the SNES or KSP object you are using. This is equivalent to putting it on the command line. Barry > > > -Ari > > ----- Original Message ----- > From: "Mark Adams" <[email protected]> > To: "Ari Rappaport" <[email protected]> > Cc: "For users of the development version of PETSc" <[email protected]> > Sent: Wednesday, July 27, 2016 7:24:24 PM > Subject: Re: [petsc-dev] Algebraic Multigrid > > There is clearly something very wrong with your code. I would suggest > starting with an example code for instance KSP/examples/tutorial/ex56.c and > incrementally add your operator to get something that is working. > > > Also if you have multiple degrees of freedom per vertex, for instance > elasticity, then you want to set the block size of the matrix accordingly. > > On Wednesday, July 27, 2016, Ari Rappaport < [email protected] > wrote: > > > Hi Mark, > We added the Jacobi line and it appears to accept that flag now. However, we > are getting all zeros for the solution vector. And PETSc is claiming to have > converged in 7 iterations to the relative tolerance. > > -Ari > > ----- Original Message ----- > From: "Mark Adams" < [email protected] > > To: "Ari Rappaport" < [email protected] >, "For users of the development > version of PETSc" < [email protected] > > Sent: Wednesday, July 27, 2016 3:26:03 PM > Subject: Re: [petsc-dev] Algebraic Multigrid > > > Please keep this on the Petsc list. > > We seem to have lost Jacobi smoother again. I'm suspecting that you're some > funny character in your line with Jacobi that is Confusing the parser. Get > back to the old file with the two two Jacobi entries and delete the other > line and get Jacobi in the KSP view output. There should be no SOR in the > output. > > > On Wednesday, July 27, 2016, Ari Rappaport < [email protected] > wrote: > > > Hi Mark, > I added all these new things. The PCAMG is now ending very quickly but the > residual is unreasonably large by about 10 orders of magnitude. I noticed the > line "Linear solve did not converge due to DIVERGED_INDEFINITE_PC iterations > 2" in the output, could this be causing the problem? It only appears to be > going for 2 iterations now. > > -Ari > > ----- Original Message ----- > From: "Mark Adams" < [email protected] > > To: "Ari Rappaport" < [email protected] > > Cc: "For users of the development version of PETSc" < [email protected] > > Sent: Tuesday, July 26, 2016 5:07:34 PM > Subject: Re: [petsc-dev] Algebraic Multigrid > > > Ari, I would also check that your operator is not messed up in parallel. The > solver is looking pretty solid. > > > Also, you can configure PETSc with hypre and use '-pc_type hypre'. If hypre > is also good in serial but hosed on multi-proc then it is most probably your > operator. > > > > > On Tue, Jul 26, 2016 at 6:58 PM, Mark Adams < [email protected] > wrote: > > > > So remove one of the -mg_levels_pc_type jacobi and add -mg_coarse_ksp_type > preonly, then verify that this works on one proc and then try two procs. > > > > > On Tue, Jul 26, 2016 at 6:56 PM, Mark Adams < [email protected] > wrote: > > > > Oh, actually this worked. You have this ...pc_type jacobi in there twice, so > one of them was "unused". > > > Try this with 2 processors now. > > > > > On Tue, Jul 26, 2016 at 6:42 PM, Mark Adams < [email protected] > wrote: > > > > > > > > On Tue, Jul 26, 2016 at 6:24 PM, Ari Rappaport < [email protected] > wrote: > > > So I commented out the line PCSetType(pc, PCGAMG). The line > KSPSetFromOptions(ksp) was already in the code at the end of our > initialization routine. I also added .petscrc to the working dir. Here is the > current output. It seems as if Option left: name:-mg_levels_pc_type jacobi > (no value) is still present in the output..I dunno. > > > > Yea, I dunno either. If you use -help you will get printout of the available > options. If you do this you will see stuff like -mg_levels_1_ ... you can > also see this in the ksp_view. There is a shortcut that lets you _not_ put > "_1" in. Try putting this in for each level like so: > > > > -mg_levels_1_pc_type jacobi > > -mg_levels_2_pc_type jacobi > -mg_levels_3_pc_type jacobi > > > > I also notice that the coarse grid ksp is GMRES. This is our fault. It should > be preonly. Add: > > > -mg_coarse_ksp_type preonly > > > > > > > > > > > > > > > > > > > -Ari > > ----- Original Message ----- > From: "Mark Adams" < [email protected] > > To: "Ari Rappaport" < [email protected] >, "For users of the development > version of PETSc" < [email protected] > > Sent: Tuesday, July 26, 2016 4:03:03 PM > Subject: Re: [petsc-dev] Algebraic Multigrid > > > > > At the end of this you have: > > > > #PETSc Option Table entries: > -ksp_view > -mg_levels_pc_type jacobi > -options_left > #End of PETSc Option Table entries > There is one unused database option. It is: > Option left: name:-mg_levels_pc_type jacobi (no value) > > > So this jacobi parameter is not being used. > > > Do you call KPSSetFromOptions? Do you set solver parameters in the code? Like > PCGAMG? > > > You should not set anything in the code, it just confuses things at this > point. Use KSPSetFromOptions(). You can hardwire stuff before this call, this > just lets you set the defaults, but you should always call this last to let > command line parameters override the defaults. > > > You can put this in a .petscrc file in the working directory and try again. > > > > -ksp_type cg > -ksp_max_it 50 > > -ksp_rtol 1.e-6 > -ksp_converged_reason > -pc_type gamg > -pc_gamg_type agg > -pc_gamg_agg_nsmooths 1 > -pc_gamg_coarse_eq_limit 10 > -pc_gamg_reuse_interpolation true > -pc_gamg_square_graph 1 > -pc_gamg_threshold -0.05 > -mg_levels_ksp_max_it 2 > -mg_levels_ksp_type chebyshev > -mg_levels_esteig_ksp_type cg > -mg_levels_esteig_ksp_max_it 10 > -mg_levels_ksp_chebyshev_esteig 0,.05,0,1.05 > -mg_levels_pc_type jacobi > -pc_hypre_type boomeramg > -pc_hypre_boomeramg_no_CF > -pc_hypre_boomeramg_agg_nl 1 > -pc_hypre_boomeramg_coarsen_type HMIS > -pc_hypre_boomeramg_interp_type ext+i > > > > >
