assembly.py

Assemble a series of sparse matrices using two gathering matrices. For more information about assembling routines, see, for example, [F. Cuvelier, C. Japhet and G. Scarella, An efficient way to assemble finite element matrices in vector languages, 2016].

⭕ To access the source code, click on the [source] button at the right side or click on [assembly.py]. Dependence may exist. In case of error, check import and install required packages or download required scripts. © mathischeap.com

assembly.assemble(Ms, Gr, Gc=None)[source]

A (not very fast) routine for assembling matrices and vectors.

Parameters:
  • Ms – The matrices/vectors to be assembled. Ms[i] refers to the ith (for example, in element No. i) matrix/vector. The matrices/vectors need to be sparse matrices/vectors. A sparse vector is a csc_matrix of shape (n, 1).

  • Gr (np.array) – The row gathering matrix.

  • Gc (None, np.array) – (default: None) The column gathering matrix. When it is None, it means we are assembling vectors. Therefore we will only need the row gathering matrix, Gr.

Returns:

A csc matrix representing the assembled matrix/vector.

Example:

>>> from crazy_mesh import CrazyMeshGlobalNumbering
>>> from scipy import sparse as spspa
>>> K = 2
>>> N = 3
>>> GM = CrazyMeshGlobalNumbering(K, N)
>>> GM_F = GM.FP
>>> GM_V = GM.VP
>>> Ms = [spspa.random(N**3, 3*(N+1)*N**2, 0.1, 'csc')
...     for _ in range(K**3)] # generate a series of sparse matrices
>>> M = assemble(Ms, GM_V, GM_F) # assemble matrices
>>> M.shape
(216, 756)
>>> Vs = [spspa.random(N**3, 1, 0.5, 'csc')
...     for _ in range(K**3)] # generate a series of sparse vectors
>>> V = assemble(Vs, GM_V)
>>> V.shape
(216, 1)

↩️ Back to Ph.D. thesis complements (ptc).