On Mon, Mar 2, 2015 at 9:45 PM, David Knezevic <[email protected]>
wrote:

>
> I gather that the main requirement is to specify rigid-body modes as the
> near-nullspace.


 Ha! I was, quite literally, just having a look at similar functionality
for removing rigid rotations.

I tried this in the attached diff, and I specified
> "-pc_type gamg" (and I tried a few other options like -pc_gamg_type agg),
> but it doesn't seem to give very good convergence. I was wondering if
> anyone has experience with this and could let me know if I'm missing
> something?
>

I don't think NumericVector sets the block size. In the PetscVector clone
for the coordinate vector, you need to call VecSetBlockSize and set it to 3
(for the 3D case).

http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Vec/VecSetBlockSize.html

Petsc's null space function for rigid modes relies on the block size for
figuring out the vectors.

http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatNullSpaceCreateRigidBody.html

So, in theory, you should just need to set the block size and it should be
much better.

I'll be very curious how this turns out.

Hope that helps,

Paul
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the 
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to