Reodrering a massive sparse stiffness matrix

42 views Asked by At

I have assembled a massive sparse stiffness matrix using its DOFs and some rules of assembly. In order to do an efficient Bragg scattering analysis, I would now like to reorder them based on 3 zones: Interior, Input, Output. Each zones are populated by identified DOFs.

After going through a lot of resources and trying to understand them fully, I´ve come to the conclusion that an reverse RCM must be used. Problem is I do not know anything about graph theory, and i´d like some help regarding this. The below code snipped is what i believe works to reorder the matrix (based in MATLAB):

  1. Construct the adjacency matrix A = K ~= 0;

  2. Perform RCM reordering on the adjacency matrix p_rcm = symrcm(A);

  3. Create a permutation vector that orders nodes according to zones p_zone = [internal_nodes, input_nodes, output_nodes];

  4. Combine the RCM permutation and zone-based permutation p_combined = p_zone(p_rcm);

  5. Reorder the stiffness matrix according to the combined permutation vector K_reordered = K(p_combined, p_combined);

Could someone please let me know if this is right? If not, what is the correct method or logic? Any resources that points to the practical implementation of matrix reordering is more than welcome. Thanks a lot

I didn´t try anything as the matrices I´m trying to work on are based on 3D structures with each node having 3 DOFs. So the resulting matrices are massive (20x20x20 cube = 27783 rows and columns).

0

There are 0 answers