I had missed PCSetCoordinates in ex56.
So is there a correspondence b/w the coordinates [0.x 0.y 0.z 1.x 1.y
1.z ...] passed to PCSetCoordinates/MatNullSpaceCreateRigidBody and
the solution vector [0.ux 0.uy 0.uz ...]? What happens when I am
solving the poroelasticity problem where there is an additional
pressure field associate with each node?
Tabrez
On Aug 27, 2013, at 3:15 PM, Jed Brown wrote:
Tabrez Ali <[email protected]> writes:
Hello
What is the proper way to use GAMG on a vanilla 3D linear elasticity
problem. Should I use
-pc_type gamg -pc_gamg_type agg -pc_gamg_agg_nsmooths 1
Yeah, and only the first of these is needed because the others are
default with -pc_type gamg.
-pc_type fieldsplit -pc_fieldsplit_block_size 3 -fieldsplit_pc_type
gamg
-fieldsplit_pc_gamg_type agg -fieldsplit_pc_gamg_agg_nsmooths 1
Do these options even make sense? With the second set of options
the %
increase in number of iterations with increasing problem size is
lower
than the first but not optimal.
And it's probably more expensive because it has to do inner solves.
Also, if you have less compressible regions, it will get much worse.
Also, ksp/ksp/examples/ex56 performs much better in that the number
of
iterations remain more or less constant unlike what I see with my own
problem. What am I doing wrong?
You probably forgot to set the near null space. You can use
MatSetNearNullSpace (and maybe MatNullSpaceCreateRigidBody) or the
more
hacky (IMO) PCSetCoordinates. It's important to have translational
*and* rotational modes in the near null space that GAMG uses to
build a
coarse space.