[petsc-users] Sorted CSR Matrix and Multigrid PC.

Barry Smith bsmith at mcs.anl.gov
Thu Sep 1 17:52:56 CDT 2016


> On Sep 1, 2016, at 5:42 PM, Manuel Valera <mvalera at mail.sdsu.edu> wrote:
> 
> Hello everyone,
> 
> As my first intervention in this list i want to congratulate the PETSc devs, since ive been working with the library for a couple months and i am very impressed with it. 
> 
> Up until now, ive been developing a module to solve a big laplacian CSR matrix by multigrid pc and GCR ksp, i think i have a basic understanding of whats happening, but i cannot seem to find a good multigrid implementation for my case. I need to use some kind of automatic coarsener/interpolator and so far turning galerkin on does not seem to be working. 
> 
> The part of my code where i try to implement multigrid looks like this:
> 
> 
>      call PCSetType(mg,PCJACOBI,ierr)		
>      call PCSetOperators(mg,pmat,pmat,ierr)
> 
> !!trying to implement interpolators from ex42
>      nl = 2     
>      call PetscMalloc(nl,da_list,ierr)
>      da_list = PETSC_NULL_OBJECT
>      call PetscMalloc(nl,daclist,ierr)
>      daclist = PETSC_NULL_OBJECT
> !    ???? not sure what to do here...
> 
> 
>      call PCMGSetLevels(mg,2,PETSC_NULL_OBJECT,ierr) !trying two levels first
>      call PCMGSetType(mg,PC_MG_FULL,ierr)  
>      call PCMGSetGalerkin(mg,PETSC_TRUE,ierr)
>   
>      call PCMGSetCycleType(mg,PC_MG_CYCLE_V,ierr)
>      call PCMGSetNumberSmoothDown(mg,1,ierr)      
>      call PCMGSetNumberSmoothUp(mg,1,ierr)           
> 
>      call PCMGSetInterpolation(mg,1,pmat,ierr) 	
>      call PCMGSetRestriction(mg,1,pmat,ierr)		
>      call PCMGSetX(mg,0,xp,ierr)	!Probably and error to set these two
>      call PCMGSetRhs(mg,0,bp,ierr)  
> 
>      call PCSetUp(mg,ierr)
> ....

Don't do the above.

> 
> I also have an alternative setup try, less developed as:
> 
>   call PCCreate(PETSC_COMM_WORLD,mg,ierr) !Create preconditioner context
>   call PCSetType(mg,PCGAMG,ierr)
>    call PCGAMGSetType(mg,PCGAMGAGG,ierr)  !ERROR: 11 SEGV: Segmentation Violation | IS MY PETSC CORRUPTED? gamg.h empty

    This should work ok. Send a complete file we can compile and run that crashes like this.

>   call PCGAMGSetNLevels(mg,3,PETSC_NULL_OBJECT,ierr)
>   call PCGAMGSetNSmooths(mg,1,ierr)
>   call PCGAMGSetThreshold(mg,0.0,ierr)
> 	
> 
> 
> So far i've also read ML/trilinos multigrid solver is probably easier to implement, but i cant seem to configure petsc correctly to download and install it

   Use --download-ml with your ./configure command and send the resulting configure.log to petsc-maint at mcs.anl.gov if it does not work.
> 
> From the code ive sent, can you spot any glaring errors? im sorry my knowledge of multigrid is very small.
> 
> .-.-.-
> 
> Finally, a second question, 
> 
> My CSR Column identifier (JA) array is not sorted for each row, can you give me an idea on how to sort it with PetscSortInt() for each row, as suggested in previous mails from this list?
> 
>  so far ive figured that i can loop over the row chunk using the spacing give by the row pointer array (IA) but i still don't know how to sort the row chunk in JA along with the real matrix values array (App).

  PetscSortIntWithScalarArray()

> 
> Any help will be apreciated,
> 
> thanks so much,
> 
> Manuel Valera.
> Computational Science Reseach Center - SDSU
> 
> 
> 
> 
> 



More information about the petsc-users mailing list