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
    ------  -------
    ------  -------
      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?



migrated from mathematica.stackexchange.com Oct 28 '14 at 15:54

This question came from our site for users of Wolfram Mathematica.

  • $\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$ – user_of_math Oct 28 '14 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 '14 at 7:05

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


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.