On Fri, Jan 9, 2009 at 4:07 PM, David Knezevic <[email protected]> wrote:
> 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
> non-Dirichlet 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
> reduced-size matrix.

Hi Dave,

A couple things come to mind:

1.) DenseMatrix::condense(...)
This would be useful in getting the zero'd rows/cols and the 1 on the
diagonal, but it won't completely remove them.

2.) The Dirichlet rows give something like O(penalty) positive and
negative eigens.  If you mapped those to zero, with the linear
transformation options in slepc, would that help you? I did something
similar in my dissertation...

-- 
John

------------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It is the best place to buy or sell services for
just about anything Open Source.
http://p.sf.net/sfu/Xq1LFB
_______________________________________________
Libmesh-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to