Hi, I am trying to implement the multigrid solver to solve a linear inhomogeneous elliptic equation with non-constant coefficients in 3-D with 3 degrees of freedom with matrix shells. The grid is structured with non-uniform sampling. I insist on using matrix shells because of memory limitations.
The direct solver gmres, or alike, gives very accurate solutions even for large problems (say, with a grid of 256x256x256), but computation is lengthy. I am hoping to get significant speedup using a multigrid solver. It looks like the DMMG objects may provide all the tools necessary to do so: smoother, restriction and interpolation. But typically in my problems, I do not have an analytical expression for the right-hand side, just a given forcing term in finest resolution with high-frequency content (not easily subsampled). Also I do not typically have any non-trivial first guess. It looks the the default Petsc multi-grid solver starts from the coarser grid and builds a solution with a finer and finer resolution as levels increase. I would like to do the opposite, with the typical smoothing of the residuals, then restriction, smoothing, restriction, then direct solving at the coarsest level, then as many interpolation-correction-smoothing as necessary to go back to the finest level, the typical V cycle. questions: 1) is it at all possible to specify this mode of operation, from the finest to the coarser level, and back? Any examples out there? 2) is it readily possible to use matrix shells with DMMG? I imagine the Jacobian matrix may simply be provided as a matrix shell. Is there any examples of multi-grid methods with shell matrices online? 3) to deal with non-uniform sampling: can I provide the coordinates of the finest grid with DASetCoordinates, then expect DMMG to provide the subsampled coordinates at the coarser levels? Thanks a lot in advance for any advice. Best, Sylvain Barbot
