|
From: KIRK, B. (JSC-E. (NASA) <ben...@na...> - 2004-12-09 18:46:24
|
The constraint matrix is typically used to enforce continuity constraints in
the case of AMR, but the idea is general and can be employed for other
uses...
The idea is as follows: express local (element) degrees of freedom, u_e, as
some linear combination of other degrees of freedom (which may or may not be
local) u_o:
u_e = C u_o
where C is the constraint matrix.
When an element matrix and vector are built, this is typically done in terms
of local DOFs. If these DOFs are constrained then the local matrix/vector
must be modified:
K_e u_e = f_e
becomes
C^T K_e u_e = C^T f_e
C^T K_e C u_o = C^T f_e
The C u_o term above replaces the local degrees of freedom u_e with their
constrained values, effectively constraining your trial space. The C^T
imposes the same constraints on your test space.
(see "Computational Grids" by Graham Carey, published by Taylor & Francis
for more details
To be more specific:
o----o---- c ---------o
| | | |
| | | |
o----o---- b |
| | | |
| | | |
o----o---- a ---------o
For the "hanging node" b, the constraint (assuming linear basis functions)
is u_b = 0.5*(u_a + u_c) It is precisely this scenario that the constraint
matrix addresses
The approach used in libMesh is to handle "recursive constraints" (consider
u_e = C1 u_o1, u_o1 = C2 u_o2). So, from the library's perspective, it is
perfectly acceptable to constrain degrees of freedom in terms of other
degrees of freedom which are themselves constrained...
There are other approaches that may be used to enforce continuity (lagrange
multipliers, penalty) but I like this one.
Hope this helps...
-Ben
-----Original Message-----
From: lib...@li...
[mailto:lib...@li...] On Behalf Of Manav Bhatia
Sent: Thursday, December 09, 2004 11:09 AM
To: lib...@li...
Subject: [Libmesh-users] Constraint matrix
Hi,
Could anyone please tell me about the basic idea behind the purpose
of constraint matrix and how it works?
Thanks in advance,
Manav
|