From: David Knezevic <dave.knez@gm...>  20090109 22:07:11

Hi all, I am doing some eigenvalue computations (using the SLEPc interface in libMesh) on matrices assembled from a PDE with a Dirichlet boundary condition, and in this situation the penalty method that is typically used in libMesh is not very good because the penalty term messes up the matrix's spectrum. As a result, I would like to be able to compute the matrix in which all the rows and columns corresponding to the DOFs on a Dirichlet boundary have been removed. If anyone can offer suggestions about the best way of going about this, that'd be a big help. I'll need to introduce a mechanism for flagging the relevant DOFs during matrix assembly (e.g. by adding a _is_dirichlet_dof flag to dof_object?) and then copying all nonDirichlet matrix entries to a new (smaller) matrix. Where abouts would be a natural place for this function to go? e.g. in ImplicitSystem? Also, would people want this to be added to the library (I'm sure it'll be a very computationally intensive operation)? An alternative would be to zero out the rows and cols and set the diagonal to 1; unlike the penalty method, this wouldn't adversely affect the spectrum, but for my application I'd prefer to generate the reducedsize matrix. Cheers, Dave 