# sfepy.terms.terms_mass module

class sfepy.terms.terms_mass.MassTerm(*args, **kwargs)

  Mass term with lumping and RMM support [1].

  The lumping parameter can be ‘row_sum’, ‘hrz’ or ‘none’ (default). It applies for \beta > 0:

  - \beta = 0 correponds to the consistent mass matrix M^C;

  - 0 < \beta < 1 corresponds to the averaged mass matrix M^A.

  - \beta = 1 corresponds to the lumped mass matrix M^L;

  term_mode can be None (default), ‘DPM’ (diagonal projection matrix A), or ‘RMM’ (reciprocal mass matrix C).

  [1]

  González, J.A., Kolman, R., Cho, S.S., Felippa, C.A., Park, K.C., 2018. Inverse mass matrix via the method of localized Lagrange multipliers. International Journal for Numerical Methods in Engineering 113, 277–295. https://doi.org/10.1002/nme.5613

  Definition:

  M^C = \int_{\cal{D}} \rho \ul{v} \cdot \ul{u} \\ M^L = \mathrm{lumping}(M^C) \\ M^A = (1 - \beta) M^C + \beta M^L \\ A = \sum_e A_e \\ C = \sum_e A_e^T (M_e^A)^{-1} A_e

  Call signature:

  de_mass | `(material_rho, material_lumping, material_beta, virtual, state)`

  Arguments:

    - material: \rho

    - material: lumping

    - material: \beta

    - virtual/parameter_1: \ul{v}

    - state/parameter_2: \ul{u}

  arg_shapes = {'material_beta': '.: 1', 'material_lumping': '.: str', 'material_rho': '1, 1', 'state': 'D', 'virtual': ('D', 'state')}
  arg_types = ('material_rho', 'material_lumping', 'material_beta', 'virtual', 'state')
  get_function(rho, lumping, beta, virtual, state, mode=None, term_mode=None, diff_var=None, **kwargs)
  modes = ('weak', 'eval')
  name = 'de_mass'