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
