Hello all

I am implementing a RKDG method for compressible euler equations. The
equation is like

M*du/dt = rhs

This needs the mass matrix M which is a block diagonal matrix and does not
change with time. I am planning to compute its inverse and store it. In the
RK scheme, I will just use vmult to multiply the inverse with the right hand
side, to get du/dt and update the solution.

I am not sure how to compute/store the inverse. I can think of this method

SparseMatrix<double> mass_matrix;
Then compute mass matrix
Then call umfpack
Then start RK loop

However, since the blocks can be independently inverted, can I use any other
solver which recognizes the block structure ? For example

SparseMatrix<double> mass_matrix_tmp;
// compute mass matrix into mass_matrix_tmp
PreconditionBlockSSOR<SparseMatrix<double>,double> mass_matrix;
mass_matrix.initialize (mass_matrix_tmp, fe.dofs_per_cell);
// Now I can delete mass_matrix_tmp

The last step computes inverse of the blocks and then I can use vmult
function of the preconditioner to obtain du/dt ???

Will this second approach work ? And is there any better solution ?

praveen
_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii

Reply via email to