From: KIRK, BENJAMIN (JSC-EG) (NASA) <benjamin.kirk-1@na...> - 2004-12-06 20:45:50
With the analogy to a point load, I believe what you want to do is simply
add the relevant contribution to the system "load" vector after assembly.
You can get the global dof number like this:
const unsigned int dn = node->dof_number (sys_number,
Then add the relevant value to the load vector:
Note that in general you will only want to do this on one processor, so the
if (libMesh::processor_id() == 0)
You can do this at the end of the assembly routine after the loop over the
From: Roy Stogner <roystgnr@ic...> - 2004-12-06 21:08:46
On Mon, 6 Dec 2004, KIRK, BENJAMIN (JSC-EG) (NASA) wrote:
> With the analogy to a point load, I believe what you want to do is simply
> add the relevant contribution to the system "load" vector after assembly.
This is a good shortcut if you're using a finite element which has a
unit-valued basis function and a bunch of zero-valued basis functions
at the node.
Although this may be true for all the useful finite element types (the
monomial basis is the only exception I know of) in libMesh right now,
it's not guaranteed to be true for any element - the C1-continuous
elements I'm adding don't have degrees of freedom corresponding to
midedge node values, for example. In the most general case you need
to get the values for all test functions supported at your point load,
and add the weighted contribution for each of the non-zero ones.