Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
7030 Discussions

Fast assembly with sparse storage structure?


I'm using the Pardiso sparse solver (i.e. with the ia, ja and aa arrays storage structure)for a finite element code I have written. The problem I solve with this ishighly non-linear so the stiffness matrix changes on almost every iteration of the algorithm.

The stiffness matrix (K)is established by assembly of smallerelement stiffness matrices (Ke)to appropriate positions in aa. TheKe matrices areusually fully dense. The way I do this now is by setting up an index array for each element at the start of the algorithm, which I then use to assemble rows of Ke to K (stored in aa) at each iteration.

I suspect that this indexing might be slow, but any other method I have thought of includes a lot of index searching and I suspect that to be even slower (at least if I write it myself).

Does anyone know or have any experience with this, and if it is possible to speed this up?

0 Kudos
1 Reply


The problem you described is really general and depends from type of dimension of problem (1D, 2D, 3D), type of finite elements (their domain and unknowns points) and domain of your problem.In some cases there is simple way of global numbering, but in common this problem is really hard.

With best regards,

Alexander Kalinkin

0 Kudos