Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Thread Subject:
factorization of sparse, complex, symmetric, singular matrix

Subject: factorization of sparse, complex, symmetric, singular matrix

From: Herwig

Date: 20 Jan, 2014 22:14:07

Message: 1 of 8

I use Ansys to build FE matrices using the Shell281 element (it *must* be this specific element). I then export the matrices from Ansys and import them into Matlab, where they are coupled with boundary element matrices. The solution of the overall system requires an iterative solver (GMRES) which of course works best if the system is preconditioned. So, as the title suggests, I need to factorize an FE matrix that is sparse, complex, symmetric and singular :

sparse - Typical for Ansys FE matrices.
complex - Because the system is damped.
symmetric - Typical for Ansys FE matrices (*not* Hermitian).
singular - This is due to the fact that the Shell281 element only has 5 degrees of freedom per node BUT Ansys then adds a sixth degree of freedom (the drilling degree of freedom) so that the Ansys internal standard 6dof solvers can deal with it. This is very very unfortunate but it can't be helped (I've been in contact with Ansys support).

Luckily, the Matlab built-in function ilu() and lu() can both handle this unruly matrix and the results look good (I wonder how they deal with the singularity). The only problem is that both functions do not exploit the matrix symmetry which if they did would make it possible to fit bigger models into memory. Of course, the next step is to try chol() and ichol() but these surrender quickly due to the properties of my matrix (error: Encountered nonpositive pivot). I've also tried Tim Davies' SuiteSparse but the SuiteSparse functions (ldlsparse, ldlchol, cholmod) either expect real input or they want sufficiently positive definite matrices.

So the question is, is there another function out there that can handle a matrix with the properties described above and also exploit the symmetry of the matrix? In the end, the aim is to fit bigger models into memory.

Thanks for reading!

Subject: factorization of sparse, complex, symmetric, singular matrix

From: Bruno Luong

Date: 21 Jan, 2014 08:20:11

Message: 2 of 8

>. Of course, the next step is to try chol() and ichol() but these surrender quickly due to the properties of my matrix (error: Encountered nonpositive pivot).

You confuse me, chol must be applied on Hermitian matrix (because of the form R*R') are Hermitian. And in the earlier statement you said it's not.

Subject: factorization of sparse, complex, symmetric, singular matrix

From: Herwig

Date: 21 Jan, 2014 09:21:08

Message: 3 of 8

Oops, I must have overlooked that Hermitian requirement of chol() !
Anyway, my matrix is *not* Hermitian. Any other thoughts?


"Bruno Luong" <b.luong@fogale.findmycountry> wrote in message <lblajr$fau$1@newscl01ah.mathworks.com>...
> >. Of course, the next step is to try chol() and ichol() but these surrender quickly due to the properties of my matrix (error: Encountered nonpositive pivot).
>
> You confuse me, chol must be applied on Hermitian matrix (because of the form R*R') are Hermitian. And in the earlier statement you said it's not.

Subject: factorization of sparse, complex, symmetric, singular matrix

From: Torsten

Date: 21 Jan, 2014 13:39:08

Message: 4 of 8

"Herwig " <herwig.peters@unsw.edu.au> wrote in message <lble64$29i$1@newscl01ah.mathworks.com>...
> Oops, I must have overlooked that Hermitian requirement of chol() !
> Anyway, my matrix is *not* Hermitian. Any other thoughts?
>
>
> "Bruno Luong" <b.luong@fogale.findmycountry> wrote in message <lblajr$fau$1@newscl01ah.mathworks.com>...
> > >. Of course, the next step is to try chol() and ichol() but these surrender quickly due to the properties of my matrix (error: Encountered nonpositive pivot).
> >
> > You confuse me, chol must be applied on Hermitian matrix (because of the form R*R') are Hermitian. And in the earlier statement you said it's not.

Maybe of interest for you:
http://hal.inria.fr/docs/00/07/02/09/PDF/RR-5816.pdf

Best wishes
Torsten.

Subject: factorization of sparse, complex, symmetric, singular matrix

From: Herwig

Date: 22 Jan, 2014 01:01:09

Message: 5 of 8

Thanks Torsten, that does look interesting indeed. I've requested a copy of the code from the authors. I'll report back how it went in a couple of days.


"Torsten" wrote in message <lblt9s$o90$1@newscl01ah.mathworks.com>...
>
> Maybe of interest for you:
> http://hal.inria.fr/docs/00/07/02/09/PDF/RR-5816.pdf
>
> Best wishes
> Torsten.

Subject: factorization of sparse, complex, symmetric, singular matrix

From: Bruno Luong

Date: 22 Jan, 2014 08:01:08

Message: 6 of 8

"Herwig " <herwig.peters@unsw.edu.au> wrote in message <lbk73f$oll$1@newscl01ah.mathworks.com>...

> So the question is, is there another function out there that can handle a matrix with the properties described above and also exploit the symmetry of the matrix? In the end, the aim is to fit bigger models into memory.

Why you want to factorize the matrix at the first place ? If you want to solve the PDE, why not using "\" where appropriate internal factorization will be performed (if needed).

I doubt there is many factorization that can preserve efficiently the sparseness of the matrix. That's why iterative methods are popular use to solve for solution from sparse system.

Bruno

Subject: factorization of sparse, complex, symmetric, singular matrix

From: Herwig

Date: 22 Jan, 2014 10:01:08

Message: 7 of 8

1) "In the end, the aim is to fit bigger models into memory."
You shouldn't even dream of using "\" for anything of bigger than the smallest models!

2) "The solution of the overall system requires an iterative solver (GMRES) which of course works best if the system is preconditioned."
This is why I want to factorize the matrix. When I look through the engineering literature, I hardly see people using iterative solvers that aren't preconditioned one way or the other.

3) "I doubt there is many factorization that can preserve efficiently the sparseness of the matrix."
Huh? I'm sure you know that preconditioners are *sparse* incomplete factorizations, it doesn't make sense to use full factorizations for iterative solvers. Matlab's ilu(...,'nofill') factors for example have the same sparsity as A. Another very common thing are sparse approximate inverses which can be very sparse indeed.


I don't think we are talking about the same thing here.



"Bruno Luong" <b.luong@fogale.findmycountry> wrote in message <lbnts4$bks$1@newscl01ah.mathworks.com>...
> "Herwig " <herwig.peters@unsw.edu.au> wrote in message <lbk73f$oll$1@newscl01ah.mathworks.com>...
>
> > So the question is, is there another function out there that can handle a matrix with the properties described above and also exploit the symmetry of the matrix? In the end, the aim is to fit bigger models into memory.
>
> Why you want to factorize the matrix at the first place ? If you want to solve the PDE, why not using "\" where appropriate internal factorization will be performed (if needed).
>
> I doubt there is many factorization that can preserve efficiently the sparseness of the matrix. That's why iterative methods are popular use to solve for solution from sparse system.
>
> Bruno

Subject: factorization of sparse, complex, symmetric, singular matrix

From: Bruno Luong

Date: 22 Jan, 2014 19:59:09

Message: 8 of 8

"Herwig " <herwig.peters@unsw.edu.au> wrote in message <lbo4t4$q54$1@newscl01ah.mathworks.com>...

>
> 2) "The solution of the overall system requires an iterative solver (GMRES) which of course works best if the system is preconditioned."
> This is why I want to factorize the matrix. When I look through the engineering literature, I hardly see people using iterative solvers that aren't preconditioned one way or the other.

For preconditioning, it is not smart to use full factorization, but some sort of incomplete one that:
1) preserve the sparseness
2) cheap to solve
3) improve the conditioning.

If full factorization is applied, you won't get any advantage of (1) or (2).

Your matrix is singular (AIUC), so there is no way you can possibly improve the conditioning regardless what kind of conditioner you look for. So (3) is screwed.

Bruno

Tags for this Thread

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Contact us