On Fri, Sep 6, 2013 at 4:25 PM, Lukasz Kaczmarczyk < [email protected]> wrote:
> Hello, > > I solve system of eq. generated by finite element method. > > I apply some projection matrix to stiffness matrix K, > P=I-CT[(CTC)^-1]C > where C is some not square matrix. > > Resulting stiffness matrix K' has form > K' = PT K P, > with that at hand I solve problem K' *x = f' > > I manage to build shell matrix where I use sub ksp solver to get solution > for (CTC)*b = C*x, where [ b = (CTC^-1*C*x)] . Using penalised matrix for > preconditioner, where K_prec = alpha*CCT + K, where alpha is penalty I can > get solution in efficient way. > > Now I like to avoid penalty parameter, in order to do that I will need to > apply penalty matrix for each individual finite element matrix before it > is assembled into K. No problem with that, using scattering it can be done. > > Problem is with solution (CTC)*b = C*x, C and CTC matrices are parallel, > since I have parallelised assembly functions, problem (CTC)*b = C*x need to > be solved on each processor independently without communication. It is not > problem, but to do that I need to transform C and CTC matrix form MATMPIAIJ > to MATAIJ. > I think this might be what you want: http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatGetSubMatrices.html Thanks, Matt > I know that MatConvert will not do it. I wonder it is any other way that > form very beginning to assemble matrix C as a serial matrix. > > Regards, > Lukasz > > > > > -- 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
