<div dir="ltr">Good morning, everyone:<div><br></div><div>I have an existing general CFD solver with multigrid implemented. All functions (initialization, restriction, prolong/interpolation, coarse/fine grids solver......) are working correctly. Now I am trying to rewrite it with PETSc. I found that the manual provides very little information about this and is difficult to follow. I found another lecture notes by Barry Smith on web, which is:</div><div><a href="http://www.mcs.anl.gov/petsc/documentation/tutorials/Columbia04/DDandMultigrid.pdf">http://www.mcs.anl.gov/petsc/documentation/tutorials/Columbia04/DDandMultigrid.pdf</a><br></div><div><br></div><div>However, it is still not clear the difference and connection between PCMG and DMMG. Some questions are:</div><div><br></div><div>1. Should DMMG be used to initialize the coarse grids (and boundary conditions) before PCMG could be used? If not, how does PCMG know all information on coarse grids?</div><div><br></div><div>2. Due to the customized boundary conditions, indices of the grids, boundary conditions, grid dimensions on each coarse grid levels are required for particular computations. How to extract these information in either DMMG or PCMG? I have not found a function for this purpose. I have set up all information myself, should I pass these information to the coarse grid levels to the coarse levels? How and again how to extract these information?</div><div><br></div><div>3. I have the restriction, interpolation, coarse grid solver ... implemented. How could these be integrated with PETSc functions? It appears that some functions like PCMGGetSmoother/UP/Down, PCMGSetInterpolation .... should be used, but how? The online manual simply repeat the name, and provides no other information.</div><div><br></div><div>Thanks a lot.</div><div><br></div><div><br></div><div><br></div><div> </div></div>