On Wed, Aug 31, 2016 at 7:22 AM, Choi Kyungjun <[email protected]> wrote:
> Thank you very much again Matt. > > Just another simple question. > > 2016-08-31 20:00 GMT+09:00 Matthew Knepley <[email protected]>: > >> On Wed, Aug 31, 2016 at 5:46 AM, Choi Kyungjun <[email protected] >> > wrote: >> >>> Thanks Matt. >>> >>> I really appreciate your help every time. >>> >>> >>> I think I forgot mentioning code info again. >>> >>> 1) >>> I'm working on 2-D/3-D Compressible Euler equation solver, which is >>> completely hyperbolic system. >>> >> >> Okay, then MG is out. I would start by using a sparse direct solver, like >> SuperLU. Then for parallelism >> you could use ASM, and as the subsolver use SuperLU, so something like >> >> -ksp_type gmres -pc_type asm -sub_pc_type superlu >> >> You could get more sophisticated by >> >> - Trying to have blocks bigger than 1 process and using SuperLU_dist >> >> - Splitting up the fields using PCFIELDSPLIT. There are indications >> that solving one of the fields first >> can really help convergence. I am thinking of the work of David Keyes >> and LuLu Liu on MSM methods. >> > > For the above part, > > It's not compatible with -snes_mf command line option, is it? > No. I think MF is not a useful idea unless you have a preconditioning matrix. Thanks, Matt > I applied cmd line options like below > *-snes_mf -ksp_type gmres -pc_type asm -sub_pc_type superlu > -snes_view -snes_monitor -ksp_monitor -snes_converged_reason > -ksp_converged_reason* > > > and my code flows like this > > *- call SNESCreate(PETSC_COMM_WORLD, Mixt%snes, ier)* > *- call SNESSetFunction(Mixt%snes, Mixt%r, FormFunction, userctx, ier)* > *- call SNESSetFromOptions(Mixt%snes, ier)* > *- call SNESGetKSP(Mixt%snes, ksp, ier)* > *- call KSPGetPC(ksp, pc, ier)* > > *- call KSPSetFromOptions(ksp, ier)* > *- call PCSetFromOptions(pc, ier)* > > > > > > >> >> >>> 2) >>> And I'm trying to implement some implicit time scheme for convergence of >>> my steady state problem. >>> >>> I used LUSGS implicit scheme before, but these days GMRES implicit >>> scheme is popular for quadratic convergence characteristics. >>> >> >> I am not sure I understand here. Nothing about GMRES is quadratic. >> However, Newton's method can be quadratic >> if your initial guess is good, and GMRES could be part of a solver for >> that. >> >> >>> For implicit time scheme, it is just same as matrix inversion, so I >>> started PETSc library for GMRES, which is one of the greatest mathematical >>> library. >>> >>> >>> 3) >>> As I'm using different numerical convective flux scheme (e.g. Roe's FDS, >>> AUSM, etc), it would be really time consuming to derive Jacobian matrix for >>> each scheme. >>> >> >> Yes. However, the preconditioner matrix only needs to be approximate. I >> think you should derive one for the easiest flux scheme and >> always use that. The important thing is to couple the unknowns which >> influence each other, rather than the precise method of influence. >> >> Thanks, >> >> Matt >> >> >>> So I was fascinated by matrix-free method (I didn't completely >>> understand this method back then), and I implemented GMRES with no >>> preconditioning matrix with your help. >>> >>> After that, I wanted to ask you about any accelerating methods for my >>> GMRES condition. >>> >>> I will try applying CHEBY preconditioner as you mentioned first (even if >>> its performance wouldn't be that good). >>> >>> In order to constitute user-provided preconditioning matrix, could you >>> tell me any similar examples? >>> >>> >>> Thanks again. >>> >>> Your best, >>> >>> Kyungjun. >>> >>> >>> 2016-08-31 19:07 GMT+09:00 Matthew Knepley <[email protected]>: >>> >>>> On Wed, Aug 31, 2016 at 3:49 AM, Choi Kyungjun < >>>> [email protected]> wrote: >>>> >>>>> Dear Petsc. >>>>> >>>>> I am implementing Petsc library for my CFD flow code. >>>>> >>>>> Thanks to Matt, I got what I wanted last week. >>>>> >>>>> It was the GMRES with matrix-free method, no preconditioning matrix >>>>> and command line options are below. >>>>> >>>>> *-snes_mf -pc_type none -..monitor -..converged_reason* >>>>> >>>>> The solve worked, but performed very poorly. >>>>> >>>>> >>>>> I learned that the efficiency of Krylov-subspace methods depends >>>>> strongly depends on a good preconditioner. >>>>> >>>>> And in the Petsc manual, the matrix-free method is allowed only with >>>>> no preconditioning, a user-provided preconditioner matrix, or a >>>>> user-provided preconditioner shell. >>>>> >>>>> >>>>> Here are my questions. >>>>> >>>>> 1) To improve the solver performance using GMRES, is there any way >>>>> using snes_mf without preconditioning matrix? >>>>> >>>> >>>> Not really. The CHEBY preconditioner will work without an explicit >>>> matrix, however its not great by itself. >>>> >>>> >>>>> 2) For user-provided preconditioner matrix, I saw some example codes >>>>> that provide approx. Jacobian matrix as preconditioner matrix. But this >>>>> means that I should derive approx. Jacobian mat for system, am I right? >>>>> >>>> >>>> Yes. >>>> >>>> >>>>> 3) I'd like to know which is the fastest way to solve with GMRES >>>>> method. Could you tell me or let me know any other examples? >>>>> >>>> >>>> 1) The solve depends greatly on the physics/matrix you are using. >>>> Without knowing that, we can't say anything. For example, is >>>> the system elliptic? If so, then using Multigrid (MG) is generally a >>>> good idea. >>>> >>>> 2) In general, I think its a mistake to think of GMRES or any KSP as a >>>> solver. We should think of them as accelerators for solvers, >>>> as they were originally intended. For example, MG is a good solver for >>>> elliptic CFD equations, as long as you somehow deal with >>>> incompressibility. Then you can use GMRES to cleanup some things you >>>> miss when implementing your MG solver. >>>> >>>> 3) The best thing to do in this case is to look at the literature, >>>> which is voluminous, and find the solver you want to implement. PETSc >>>> really speeds up the actually implementation and testing. >>>> >>>> Thanks, >>>> >>>> Matt >>>> >>>> >>>>> Thank you very much for your help. >>>>> >>>>> Sincerely, >>>>> >>>>> Kyungjun. >>>>> >>>> >>>> >>>> >>>> -- >>>> What most experimenters take for granted before they begin their >>>> experiments is infinitely more interesting than any results to which their >>>> experiments lead. >>>> -- Norbert Wiener >>>> >>> >>> >> >> >> -- >> What most experimenters take for granted before they begin their >> experiments is infinitely more interesting than any results to which their >> experiments lead. >> -- Norbert Wiener >> > > -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener
