I have a small FEM implementation program. And I want to add imposing multifreedom constraints (MFC) feature to it. The theory of master-slave method is given here (page 10 for general case).

Stiffness matrix (static truss) is given in a rearranged block form:

$ \begin{bmatrix} K_{uu} & K_{um} & K_{us} \\ K^{T}_{um} & K_{mm} & K_{ms} \\ K^{T}_{us} & K^{T}_{ms} & K_{ss} \end{bmatrix} \begin{bmatrix} u_{u}\\ u_{m}\\ u_{s} \end{bmatrix} = \begin{bmatrix} f_{u}\\ f_{m}\\ f_{s} \end{bmatrix} $

The form of the general constraints equations is a linear combination of DOFs:

$A_{m}u_{m} + A_{s}u_{s} = g_{A}$

We can find $u_{s}$ from this as follows:

$u_{s} = -A^{-1}_{s}A_{m}u_{m} + A^{-1}_{s}g_{A} = Tu_{m} + g$

Then I should "insert ($u_{s}$) into the partitioned stiffness matrix and symmetrize" to obtain:

$ \begin{bmatrix} K_{uu} & K_{um}+K_{us}T \\ symm & K_{mm}+T^{T}K^{T}_{ms}+K_{ms}T+T^{T}K_{ss}T \end{bmatrix} \begin{bmatrix} u_{u}\\ u_{m} \end{bmatrix} = \begin{bmatrix} f_{u}-K_{us}g\\ f_{m}-K_{ms}g \end{bmatrix} $

I wanted to reproduce the last step but couldn't get the result. What is "to symmetrize"?

  • $\begingroup$ Looking at the source, I see a different set of equations in the PDF. $\endgroup$ Apr 10, 2012 at 21:17
  • $\begingroup$ My mistake. I have an old version of this book and it's a bit different. Now $K_{ss}$ and other $K$'s with $s$ subscript don't disappear which is closer to my results but i still can't reproduce it. I found Wikipedia article on symmetrizing but this is for tensors and I'm not sure how to apply it to my case. $\endgroup$
    – danny_23
    Apr 10, 2012 at 21:44
  • $\begingroup$ @danny_23 isn't it just $\frac{1}{2}(K^T+K)$? Assuming $K_{\mu\mu}$ are already symmetric I would assume $symm=(K_{um}+K_{us}T)^T$. $\endgroup$ Apr 13, 2012 at 18:16

2 Answers 2


It's the old trick... (first seen here as far as I know.)

For brevity I will introduce $Ku = f$ with \begin{align} K &= \begin{bmatrix} K_{uu} & K_{um} & K_{us} \\ K^{T}_{um} & K_{mm} & K_{ms} \\ K^{T}_{us} & K^{T}_{ms} & K_{ss} \end{bmatrix} & u &= \begin{bmatrix} u_{u}\\ u_{m}\\ u_{s} \end{bmatrix} & f = \begin{bmatrix} f_{u}\\ f_{m}\\ f_{s} \end{bmatrix} \end{align}

Let \begin{align} v &= \begin{bmatrix} u_u \\ u_m \end{bmatrix} & B &= \begin{bmatrix} I & 0 \\ 0 & I \\ 0 & T \\ \end{bmatrix} & b &= \begin{bmatrix} 0 \\ 0 \\ g \end{bmatrix} \end{align} so that \begin{equation} u = Bv + b \end{equation}


  1. first insert $u_s$ (which by this notation is substituting $u$ from the equation above) \begin{equation} K(Bv+b) = f \end{equation}
  2. then symmetrize by premultiplication by $B^T$ \begin{equation} B^T K(Bv+b) = B^T f \end{equation}

leading to \begin{equation} B^T K B \:v = B^T (f - Kb) \end{equation} which, with a few substitutions, is the result you are looking for.

  • 1
    $\begingroup$ Let me comment my own answer: although $KB$ is not symmetric, I would not call premultiplication by $B^T$ a symmetrization: the point here is that KB is not square, so you have to reduce the number of equations in a way that is constant with the FEM formulation: $\delta u^T K u = \delta u^Tf, \forall \delta u$ becomes $\delta v^T B^T K B v = \delta v^T (\dots), \forall \delta v$: this is the real reason for premultiplying by $B^T$. $\endgroup$
    – Stefano M
    Jul 10, 2012 at 21:31

Just as an addendum to Stefano's answer, this is known in the recent structural mechanics literature as kinematic condensation. By adding the constraint K becomes linearly dependent. You remove one equation by expresing your vector of dependent degrees of freedom $u$ as vector of independent degrees of freedom $\nu$ using stefano's matrix $\; B$ (sometimes called $A$ in the literature: $\; A^T K A \nu = A^T f \;$).


Your Answer

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

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