Just wanted to let everyone know that the snippet for getting the
coordinates works just fine and can be used with a PetscVector coords to
get the coordinates of all the nodes and then passed to
MatNullSpaceCreateRigidBody
to build the correct rigid body nullspace for a first order Lagrange basis.
Thank Dmitry,
I've seen the implementation in the NonlinearImplicitSystem. I've also made
my own copy of your implementation in
PETScNonlinearSolver::build_mat_null_space inside my own code to do the
same thing for LinearImplicitSystems. I suspect there is something wrong
with the BlockSize since
Ata,
Note that you can attach a NearNullSpace calculation routine or an
equivalent callable object to your NonlinearSolver
(currently supported only for PetscNonlinearSolver, I believe). The solver
will detect the NearNullSpace calculator,
evaluate it and attach the resulting NearNullSpace to the
Dear all,
I was wondering if there is a way to create the coordinates vector for
MatNullSpaceCreateRigidBody? I tried traversing all the nodes in the mesh
by doing something like:
coords->init (no_nodes*dim, no_local_nodes*dim, false, PARALLEL);
coords->zero();
MeshBase::const_node_iterator n