PyLith currently automatically provides the PETSc solver with the null space corresponding to the rigid body motion of the entire domain. Through-going faults result in a larger null space associated with rigid body motion of each block of material between the through-going faults.
We need to give the user the ability to specify these blocks (each block could be specified by an array of material ids comprising the block) so that we can have PETSc compute these additional contributions to the null space and then specify them to the solver.
Add ability for user to add to the null space by providing sets of material blocks that can be used to compute a more complete null space.
Matt added DMPlexCreateRigidBodies() in plexfem.c.
DMPlexCreateRigidBodies - For the default global section, create rigid body modes by function space interpolation
Collective on DM
Input Arguments:
+ dm - the DM
. nb - The number of bodies
. label - The DMLabel marking each domain
. nids - The number of ids per body
- ids - An array of the label ids in sequence for each domain
See snes/tutorials.examples/ex62 line 435.
Implemented in baagaard/feature-multibody-nullspace.
DMPlexCreateRigidBodies() uses the PetscDS so it doesn't work in master where we don't use the PetscDS. This should be easily added to the multiphysics branch.
PyLith currently automatically provides the PETSc solver with the null space corresponding to the rigid body motion of the entire domain. Through-going faults result in a larger null space associated with rigid body motion of each block of material between the through-going faults.
We need to give the user the ability to specify these blocks (each block could be specified by an array of material ids comprising the block) so that we can have PETSc compute these additional contributions to the null space and then specify them to the solver.
Add ability for user to add to the null space by providing sets of material blocks that can be used to compute a more complete null space.
Matt added DMPlexCreateRigidBodies() in plexfem.c.
See snes/tutorials.examples/ex62 line 435.
Implemented in baagaard/feature-multibody-nullspace.
DMPlexCreateRigidBodies() uses the PetscDS so it doesn't work in master where we don't use the PetscDS. This should be easily added to the multiphysics branch.