# sfepy.terms.terms_contact module

class sfepy.terms.terms_contact.ContactIPCTerm(*args, **kwargs)

  Contact term based on IPC Toolkit.

  This term has a dynamic connectivity of DOFs in its region.

  Definition:

  \int_{\Gamma_{c}} \sum_{k \in C} \nabla b(d_k, \ul{u})

  Call signature:

  dw_contact_ipc | `(material_m, material_k, material_d, material_p, virtual, state)`

  Arguments:

    - material_m : m

    - material_k : k

    - material_d : \hat{d}

    - material_p : PSDProjectionMethod

    - virtual : \ul{v}

    - state : \ul{u}

  arg_shapes = {'material_d': '.: 1', 'material_k': '.: 1', 'material_m': '.: 1', 'material_p': '.: str', 'state': 'D', 'virtual': ('D', 'state')}
  arg_types = ('material_m', 'material_k', 'material_d', 'material_p', 'virtual', 'state')
  call_function(out, fargs)
  eval_real(shape, fargs, mode='eval', term_mode=None, diff_var=None, **kwargs)
  static function(out, fun, *args)
  static function_weak(out, out_cc)
  geometries = ['3_4', '3_8']
  get_contact_info(state)
  get_fargs(avg_mass, stiffness, dhat, spd_projection, virtual, state, mode=None, term_mode=None, diff_var=None, ci=None, **kwargs)
  integration = 'facet'
  name = 'dw_contact_ipc'

class sfepy.terms.terms_contact.ContactInfo(region, integral, geo, state)

  Various contact-related data of contact terms.

  update(xx)

    A dict-like update for Struct attributes.

class sfepy.terms.terms_contact.ContactTerm(*args, **kwargs)

  Contact term with a penalty function.

  The penalty function is defined as \varepsilon_N \langle g_N(\ul{u}) \rangle, where \varepsilon_N is the normal penalty parameter and \langle g_N(\ul{u}) \rangle are the Macaulay’s brackets of the gap function g_N(\ul{u}).

  This term has a dynamic connectivity of DOFs in its region.

  Definition:

  \int_{\Gamma_{c}} \varepsilon_N \langle g_N(\ul{u}) \rangle \ul{n} \ul{v}

  Call signature:

  dw_contact | `(material, virtual, state)`

  Arguments:

    - material : \varepsilon_N

    - virtual : \ul{v}

    - state : \ul{u}

  arg_shapes = {'material': '.: 1', 'state': 'D', 'virtual': ('D', 'state')}
  arg_types = ('material', 'virtual', 'state')
  call_function(out, fargs)
  eval_real(shape, fargs, mode='eval', term_mode=None, diff_var=None, **kwargs)
  static function(out, fun, *args)
  static function_weak(out, out_cc)
  get_contact_info(geo, state, init_gps=False)
  get_eval_shape(epss, virtual, state, mode=None, term_mode=None, diff_var=None, **kwargs)
  get_fargs(epss, virtual, state, mode=None, term_mode=None, diff_var=None, **kwargs)
  static integrate(out, val_qp, geo, fmode)
  integration = 'facet'
  name = 'dw_contact'