Hi Matthew, Thanks for letting me notice that algorithm I didn´t know, but I think it is not exactly the same. The two-step procedure that I want to implement within PETSC is the one shown in this article ( https://epubs.siam.org/doi/abs/10.1137/100817978) and I show you the reduced matrix for your convenience: [image: image.png]
A_1, A_2 are the blocks of the big original problem used for PCBJACOBI while R_1 and R_2 are some boolean matrices that select "nonzeros" of the off-diagonal blocks to build the reduced problem. As I told you, the algorithm that I am using is to compute the inverse of the A_1 with MUMPS and then solving that matrix with an iterative solver within PETSC, but I was wondering if I can merge everything inside PETSC doing the precondition PCBJACOBI of the big original problem and then indicating to PETSC where the reduced problem is. I am so sorry if I explained myself wrong! Thanks a lot for your quick answer, Adrian. El mié., 6 jun. 2018 a las 12:50, Matthew Knepley (<[email protected]>) escribió: > On Tue, Jun 5, 2018 at 6:46 PM, Adrián Amor <[email protected]> wrote: > >> Hi all, >> >> I think this is a basic question that I am pretty sure that it can be >> done in PETSC but I don't know the way, so sorry for wasting your time if >> it's too basic! >> >> I have a big system of equations (say 1M of unknowns) which I divide into >> 25 blocks and I use a block-Jacobi preconditioner to get the solution from >> KSPBICG. However, I know that I can build a reduced matrix with the >> nonzeros of the big preconditioned matrix, solve this reduced problem, and >> then recover the solution for the original big system with the factorized >> matrices from block Jacobi. How can I do this with PETSC? Since using >> KSPComputeExplicitOperator and then copy blocks of this matrix to build the >> reduced surface problem in PETSC is definitely not an option. >> > > Its a little hard to understand what algorithm you are describing. Do you > mean something like > > https://en.wikipedia.org/wiki/SPIKE_algorithm > > We do not have that. We can do additive/multiplicative iterations on these > blocks using PCFIELDSPLIT (however the block operations would be > serialized). > If you want something direct like this, have you tried just applying > SuperLU_dist or MUMPS? > > Thanks, > > Matt > > >> I was doing this by hand using MUMPS to build the reduced system of >> equations, then using PETSC without preconditioner and then, recover the >> full solution. However, the burden in time and memory is not negligible so >> I wanted to explore a different way with PETSC (using maybe some ILU). I >> think that the performance in memory is going to be similar but I expect a >> better performance in time. >> >> Thanks a lot! >> >> Adrian. >> > > > > -- > 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 > > https://www.cse.buffalo.edu/~knepley/ <http://www.caam.rice.edu/~mk51/> >
