[petsc-users] converting parallel matrix MATMPIJ to MATAIJ

Lukasz Kaczmarczyk Lukasz.Kaczmarczyk at glasgow.ac.uk
Fri Sep 6 16:25:28 CDT 2013


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 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


 



More information about the petsc-users mailing list