[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