1
$\begingroup$

In elastic problem, we often solve K * u = f, where K is the stiffness matrix, f the external force vector and u the displacement vector.

I'm trying decompose the mesh to domains, using Lagrange multipliers to enforce the displacement continuity on the interface between domains. Then for every domain, we have:

K_s * u_s = f_s + B_s * lambda

lambda is the vector of the Lagrange multipliers, and B is a signed boolean matrix to pick out the multipliers related to domain s.

Thus K * u = f turns to

    |K1              B1|   |u1|   |f1|
    |    K2          B2|   |u2|   |f2|
    |        K3      B3| * |u3| = |f3|
    |            K4  B4|   |u4|   |f4|    
    |B1' B2' B3' B4'   |   |L |   |0 |

here B1' mean the transpose of B1, L is the lambda vector.

When more than two domains intersect at a point, the multipliers at that point will be redundant:

      1  |  |  2
    ------  -------
          x
    ------  -------
      3  |  |  4

Like in the above condition, four domains intersect at the point X, and it needs 6 multipliers to enforce continuity: 1-2, 1-3, 1-4, 2-3, 2-4, 3-4. Write in row vector form:

    1   2   3   4
    --------------
    +1  -1
    +1      -1
    +1          -1
        +1  -1
        +1      -1
            +1  -1

It's an example of rows of (B1' B2' B3' B4'). The problem is that these rows are linear dependent, only three of them can be linear independent, makes the whole matrix singular.

I know there's methods like FETI, which uses iterative methods to solve such problem. But I want to know whether there are some direct methods, for factorizing is much fast than PCG. I found a lot math papers on Lagrange multiplier based domain decomposed problem, but all of them discussing iterative method. Is there any work on direct method of this problem?

Thanks.

$\endgroup$
2
  • $\begingroup$ This is a question that people working on parallel algorithms in numerical linear algebra will be able to answer, so I've re-tagged your question. Is there a particular reason you seek a direct method? Once your system matrices becomes large enough, iterative is the way to go anyway. $\endgroup$ Oct 28, 2014 at 17:43
  • $\begingroup$ Thanks @user_of_math . The memory (like 8GB) of a desk PC is enough for nearly most meshes I will use, and I find factorization like LDLT is much faster than a PCG solver. Based on my experiences, for a 50k * 50k sparse linear system, a direct solver only needed several seconds, but a PCG solver costs tens of seconds. $\endgroup$
    – Yue Xie
    Oct 29, 2014 at 7:05

1 Answer 1

0
$\begingroup$

You should consider the SuperLU or the you can download the Pardiso. These provide good direct solvers for large system.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .