How or where can I find the mass matrix of a 10 nodes tetraedron element for FEM computation? Every nodes has 3 dof (x,y,z) so that the element has 30 dof. The Stiffness Matrix is a 30x30 matrix and the Mass matrix should have the same dimensions


1 Answer 1


Generally speaking, denoting $(\phi_i)_i$ the basis functions, the Mass matrix entries are

$M_{ij} = \int_{\Omega} \pmb\phi_i \cdot \pmb\phi_j $

With 10 nodes, I assume you are dealing with the degree $2$ Lagrange basis. The basis can be further split into $(\phi_i^x)_i$, $(\phi_i^y)_i$ and $(\phi_i^z)_i$ with each $\phi_i^\nu$ associated to the $i$-th node and colinear to the basis vector $e_\nu$. This means for instance, that $\phi_i^x \cdot \phi_i^y = 0$, so your matrix can be arranged as a block matrix

$M = \begin{pmatrix} M_x & 0 & 0 \\ 0 & M_y & 0 \\ 0 & 0 & M_z \end{pmatrix}$

if we arrange the degrees of freedom as $\phi_1^x...\phi_N^x, \phi_1^y ...$. The three sub-matrices are identical, each equal to the usual scalar mass matrix. The nodes of the tetrahedron can be ordered as $2000$, $1100$, etc. $2000$ corresponds to the first vertex, $0200$ to the second vertex, $1100$ is the edge node between the first and second vertex, and so on. The associated Lagrange functions are, as a function of the barycentric coordinates $(\xi_1,\xi_2,\xi_3,\xi_4)$,

$\phi_{2000}(\xi) = \xi_1(2\xi_1 - 1)$

$\phi_{1100}(\xi) = 4\xi_1\xi_2$

and so on. This is the advantage of the barycentric coordinates, the expressions are symmetric. To integrate over the reference element $\hat K$, you'll want to replace $\xi_1$ by $1-\xi_2-\xi_3-\xi_4$. To be clear, you need to compute the following integrals:

$6 |K| \int_{\widehat K} \phi_{2000}(\xi)^2 \quad \text{(vertex with itself)}$

$6 |K| \int_{\widehat K} \phi_{2000}(\xi)\phi_{0200}(\xi)\quad \text{(vertex with other vertex)}$

$6 |K| \int_{\widehat K} \phi_{2000}(\xi)\phi_{1100}(\xi)\quad \text{(vertex with adjacent edge)}$

$6 |K| \int_{\widehat K} \phi_{2000}(\xi)\phi_{0110}(\xi)\quad \text{(vertex with opposite edge)}$

$6 |K| \int_{\widehat K} \phi_{1100}(\xi)^2\quad \text{(edge with itself)}$

$6 |K| \int_{\widehat K} \phi_{1100}(\xi)\phi_{1010}(\xi)\quad \text{(edge with adjacent edge)}$

$6 |K| \int_{\widehat K} \phi_{1100}(\xi)\phi_{0011}(\xi)\quad \text{(edge with opposite edge)}$

Then all the others are found from these. You can compute these by hand or use quadrature. The term $|K|$ is the tetrahedron volume, otherwise compute the Jacobian of the element mapping $J_K = \frac{|K|}{6}$.

  • $\begingroup$ thank you for your answer. I think I understand the general procedure. I came across this article and I was wondering: starting from the 10x10 matrix of equation (13) it would be enough for me to triple the rows and columns to get the 30x30 matrix, since apparently the article calculates all the integrals between the possible pairs of shape functions? $\endgroup$
    – aSpagno
    Commented May 29, 2023 at 10:57
  • $\begingroup$ Yes, your basis is basically 3 bases of vectors orthogonal with each other, so those integrals will vanish whenever you consider $\int \phi_i^x \phi_j^y$. If you order the basis as $(\phi_1^x,...,\phi_{10}^x,\phi_1^y...)$, then the associated matrix is block-diagonal and each block is the $M^0$ of Eq. 13 (trusting the derivations there). In the notations of the answer, replace $M_x = M_y = M_z = M^0$. $\endgroup$
    – Sardine
    Commented May 29, 2023 at 13:46
  • $\begingroup$ Thank you. The question can be considered closed. $\endgroup$
    – aSpagno
    Commented May 30, 2023 at 6:23
  • $\begingroup$ In that case, consider marking the answer as "accepted". $\endgroup$
    – Sardine
    Commented May 30, 2023 at 20:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.