Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project!

## Re: [Libmesh-users] matrix inversion...

 Re: [Libmesh-users] matrix inversion... From: Roy Stogner - 2009-03-19 16:19:33 ```On Thu, 19 Mar 2009, Vasilis Vavourakis wrote: > i don't know if this might sound a silly question BUT i want to > perform the inversion of a "DenseMatrix" of a system... There's a reason why the Matlab "inv" help page begins: "In practice, it is seldom necessary to form the explicit inverse of a matrix" - and that's talking with dense matrices in mind! For large sparse matrices inversion is usually much, much less efficient than iterative solves. > to be more specific, i want to implement the "arc-length" procedure > for non-linear structural problems. Check out John Peterson's dissertation. He did arc-length continuation for some nonlinear fluid mechanics problems, and he contributed the physics-indpendent components of his code back to libMesh. You basically augment the nonlinear system with a single scalar arc-length variable and solve an expanded problem with a weird (but still sparse!) operator structure. --- Roy ```

 [Libmesh-users] matrix inversion... From: Vasilis Vavourakis - 2009-03-19 16:08:01 ```i don't know if this might sound a silly question BUT i want to perform the inversion of a "DenseMatrix" of a system... to be more specific, i want to implement the "arc-length" procedure for non-linear structural problems. for this topic see: Crisfield M.A. - Non-Linear Finite Element Analysis of Solids and Structures Vol. 1 (see pages: 266-286) one of the solutions proposed in the book is to invert the "tangent stiffness matrix" (the Jacobian matrix in other words) any ideas? many thanks in advance Vasilis ```
 Re: [Libmesh-users] matrix inversion... From: John Peterson - 2009-03-19 16:16:51 ```On Thu, Mar 19, 2009 at 11:07 AM, Vasilis Vavourakis wrote: > i don't know if this might sound a silly question BUT i want to > perform the inversion of a "DenseMatrix" of a system... > > to be more specific, i want to implement the "arc-length" procedure > for non-linear structural problems. > for this topic see: Crisfield M.A. - Non-Linear Finite Element > Analysis of Solids and Structures Vol. 1 (see pages: 266-286) > one of the solutions proposed in the book is to invert the "tangent > stiffness matrix" (the Jacobian matrix in other words) Yes, this is a standard technique but the Jacobian is not dense if you are using a standard finite element discretization. Usually it is "bordered" which means there is one dense row and column augmenting the original system. -- John ```
 Re: [Libmesh-users] matrix inversion... From: Roy Stogner - 2009-03-19 16:19:33 ```On Thu, 19 Mar 2009, Vasilis Vavourakis wrote: > i don't know if this might sound a silly question BUT i want to > perform the inversion of a "DenseMatrix" of a system... There's a reason why the Matlab "inv" help page begins: "In practice, it is seldom necessary to form the explicit inverse of a matrix" - and that's talking with dense matrices in mind! For large sparse matrices inversion is usually much, much less efficient than iterative solves. > to be more specific, i want to implement the "arc-length" procedure > for non-linear structural problems. Check out John Peterson's dissertation. He did arc-length continuation for some nonlinear fluid mechanics problems, and he contributed the physics-indpendent components of his code back to libMesh. You basically augment the nonlinear system with a single scalar arc-length variable and solve an expanded problem with a weird (but still sparse!) operator structure. --- Roy ```
 Re: [Libmesh-users] matrix inversion... From: Vasilis Vavourakis - 2009-03-19 16:39:54 ```John you are right, the matrix is not DENSE, it's banded ;) i just typed the class of matrix i declared in my assembly function! 2009/3/19 Roy Stogner : > > On Thu, 19 Mar 2009, Vasilis Vavourakis wrote: > >> i don't know if this might sound a silly question BUT i want to >> perform the inversion of a "DenseMatrix" of a system... > > There's a reason why the Matlab "inv" help page begins: "In practice, > it is seldom necessary to form the explicit inverse of a matrix" - and > that's talking with dense matrices in mind!  For large sparse matrices > inversion is usually much, much less efficient than iterative solves. > >> to be more specific, i want to implement the "arc-length" procedure >> for non-linear structural problems. > > Check out John Peterson's dissertation.  He did arc-length > continuation for some nonlinear fluid mechanics problems, and he > contributed the physics-indpendent components of his code back to > libMesh.  You basically augment the nonlinear system with a single > scalar arc-length variable and solve an expanded problem with a weird > (but still sparse!) operator structure. Roy, you are right too, the simplest way to implement the arc-length procedure is to augment the system with one "constraint" equation... the problem is that it's not that clear to me (i'm not that a libmesh expert) to add another "one" degree-of-freedom in the system! however i'll try to have a look at John dissertation :) although Crisfield's book seems to be very clarifying to that issue. many thanks again for the prompt replies > --- > Roy > ```
 Re: [Libmesh-users] matrix inversion... From: Roy Stogner - 2009-03-19 16:49:57 ```On Thu, 19 Mar 2009, Vasilis Vavourakis wrote: > Roy, you are right too, the simplest way to implement the arc-length > procedure is to augment the system with one "constraint" equation... > the problem is that it's not that clear to me (i'm not that a libmesh > expert) to add another "one" degree-of-freedom in the system! Currently there is *no* good way to add another single dof with global (or per-subdomain, whatever) coupling to the algebraic system. So far nobody's needed such a feature enough to do the DofMap work adding it would require. In John's stuff (continuation_system.C) he wanted to keep track of the arc length parameter independently anyway to do adaptive step lengths, so IIRC he just kept it out of the algebraic system and iterated them loosely. --- Roy ```
 Re: [Libmesh-users] matrix inversion... From: John Peterson - 2009-03-19 18:27:03 ```On Thu, Mar 19, 2009 at 11:49 AM, Roy Stogner wrote: > > On Thu, 19 Mar 2009, Vasilis Vavourakis wrote: > >> Roy, you are right too, the simplest way to implement the arc-length >> procedure is to augment the system with one "constraint" equation... >> the problem is that it's not that clear to me (i'm not that a libmesh >> expert) to add another "one" degree-of-freedom in the system! > > Currently there is *no* good way to add another single dof with global > (or per-subdomain, whatever) coupling to the algebraic system.  So far > nobody's needed such a feature enough to do the DofMap work adding it > would require.  In John's stuff (continuation_system.C) he wanted to > keep track of the arc length parameter independently anyway to do > adaptive step lengths, so IIRC he just kept it out of the algebraic > system and iterated them loosely. That's right, although it was more out of laziness than any other reason :-) You have to solve two linear systems per Newton iteration instead of 1, but the benefit is that you don't have to modify your existing matrix assembly code, or worry about changing the DoF coupling or structure in LibMesh. The algorithm (which goes at least back to Herb Keller's work) is discussed in the Section "Numerical Solution of Bordered Systems" (maybe section 4.4.4) of the dissertation. One should also exploit the fact that the two solves involve the same matrix and different right-hand sides, by e.g. reusing matrix factorizations, if possible. -- John ```