On Tue, Aug 13, 2013 at 8:25 PM, Michele Rosso <mro...@uci.edu> wrote:
> Matt, > > thank you! I will try to reduce the number of levels and see how it goes. > I asked about the speed since CG + Block Jacobi with ICC in each block > runs faster then CG + MG, so I thought I was missing something. > What is the operator? If its the mass matrix, we expect this. > Could you please tell me how to get rid of Chebichev? > I believe its -mg_levels_ksp_type richardson but you can check. matt > Best, > Michele > > On 08/13/2013 05:51 M, Matthew Knepley wrote: > > On Tue, Aug 13, 2013 at 7:05 PM, Michele Rosso <mro...@uci.edu> wrote: > >> Hi Matt, >> >> I attached the output of the commands you suggested. >> The options I used are: >> >> -log_summary -ksp_monitor -ksp_view -ksp_converged_reason -pc_type mg >> -pc_mg_galerkin -pc_mg_levels 5 -options_left >> > > The convergence is great. I notice that your coarse solve takes no time. > You could probably use fewer levels for > this problem. For this problem there is no easy things left I think. We > are currently debating how you can squeeze > something extra out of the smoother. Here you could probably get rid of > Chebychev and use only SOR. > > Matt > > >> and here are the lines of codes where I setup the solution process: >> >> call DMDACreate3d( PETSC_COMM_WORLD >> , & >> & DMDA_BOUNDARY_PERIODIC , >> DMDA_BOUNDARY_PERIODIC, & >> & DMDA_BOUNDARY_PERIODIC , >> DMDA_STENCIL_STAR, & >> & N_Z , N_Y , N_X , N_B3 , N_B2 , 1_ip, 1_ip , 1_ip >> , & >> & NNZ ,NNY , NNX, da , ierr) >> >> >> ! Create Global Vectors >> call DMCreateGlobalVector(da,b,ierr) >> call VecDuplicate(b,x,ierr) >> >> ! Set initial guess for first use of the module to 0 >> call VecSet(x,0.0_rp,ierr) >> >> ! Create matrix >> call DMCreateMatrix(da,MATAIJ,A,ierr) >> >> ! Create solver >> call KSPCreate(PETSC_COMM_WORLD,ksp,ierr) >> call KSPSetDM(ksp,da,ierr) >> call KSPSetDMActive(ksp,PETSC_FALSE,ierr) >> call KSPSetOperators(ksp,A,A,SAME_NONZERO_PATTERN,ierr) >> call KSPSetType(ksp,KSPCG,ierr) >> call KSPSetNormType(ksp,KSP_NORM_UNPRECONDITIONED,ierr) >> call KSPSetInitialGuessNonzero(ksp,PETSC_TRUE,ierr) >> call KSPSetTolerances(ksp, tol ,PETSC_DEFAULT_DOUBLE_PRECISION,& >> & PETSC_DEFAULT_DOUBLE_PRECISION,PETSC_DEFAULT_INTEGER,ierr) >> >> ! Nullspace removal >> call MatNullSpaceCreate( >> PETSC_COMM_WORLD,PETSC_TRUE,PETSC_NULL_INTEGER,& >> & PETSC_NULL_INTEGER,nullspace,ierr) >> call KSPSetNullspace(ksp,nullspace,ierr) >> call MatNullSpaceDestroy(nullspace,ierr) >> >> ! To allow using option from command line >> call KSPSetFromOptions(ksp,ierr) >> >> >> Hope I did not omit anything useful. >> Thank you for your time. >> >> Best, >> Michele >> >> >> >> >> On 08/13/2013 04:26 PM, Matthew Knepley wrote: >> >> On Tue, Aug 13, 2013 at 6:09 PM, Michele Rosso <mro...@uci.edu> wrote: >> >>> Hi Karli, >>> >>> thank you for your hint: now it works. >>> Now I would like to speed up the solution: I was counting on increasing >>> the number of levels/the number of processors used, but now I see I cannot >>> do that. >>> Do you have any hint to achieve better speed? >>> Thanks! >>> >> >> "Better speed" is not very helpful for us, and thus we cannot offer >> much help. You could >> >> 1) Send the output of -log_summary -ksp_monitor -ksp_view >> >> 2) Describe the operator succintly >> >> Matt >> >> >>> Best, >>> Michele >>> >>> >>> >> > > > -- > 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