# sfepy.terms.terms_hyperelastic_ul module

class sfepy.terms.terms_hyperelastic_ul.BulkPenaltyULTerm(*args, **kwargs)

  Hyperelastic bulk penalty term. Stress \tau_{ij} = K(J-1)\; J \delta_{ij}.

  Definition:

  \int_{\Omega} \mathcal{L}\tau_{ij}(\ul{u}) e_{ij}(\delta\ul{v})/J

  Call signature:

  dw_ul_bulk_penalty | `(material, virtual, state)`

  Arguments:

    - material : K

    - virtual : \ul{v}

    - state : \ul{u}

  family_data_names = ['det_f']
  name = 'dw_ul_bulk_penalty'
  static stress_function(out, mat, det_f)
  static tan_mod_function(out, mat, det_f)

class sfepy.terms.terms_hyperelastic_ul.BulkPressureULTerm(*args, **kwargs)

  Hyperelastic bulk pressure term. Stress S_{ij} = -p J \delta_{ij}.

  Definition:

  \int_{\Omega} \mathcal{L}\tau_{ij}(\ul{u}) e_{ij}(\delta\ul{v})/J

  Call signature:

  dw_ul_bulk_pressure | `(virtual, state, state_p)`

  Arguments:

    - virtual : \ul{v}

    - state : \ul{u}

    - state_p : p

  arg_geometry_types = {('state_p', None): {'facet_extra': 'facet'}}
  arg_shapes = {'state': 'D', 'state_p': 1, 'virtual': ('D', 'state')}
  arg_types = ('virtual', 'state', 'state_p')
  compute_data(family_data, mode, **kwargs)
  family_data_names = ['det_f', 'sym_b']
  static family_function(mtx_f, det_f, vec_bs, tr_b, in_2b, vec_es, state, cmap, conn)
  get_eval_shape(virtual, state, state_p, mode=None, term_mode=None, diff_var=None, **kwargs)
  get_fargs(virtual, state, state_p, mode=None, term_mode=None, diff_var=None, **kwargs)
  name = 'dw_ul_bulk_pressure'
  static stress_function(out, pressure_qp, det_f)
  static tan_mod_u_function(out, pressure_qp, det_f)
  static weak_dp_function(out, det_f, cmap_s, cmap_v, transpose, mode)
  static weak_function(out, stress, tan_mod, mtx_f, det_f, cmap, is_diff, mode_ul)

class sfepy.terms.terms_hyperelastic_ul.CompressibilityULTerm(*args, **kwargs)

  Compressibility term for the updated Lagrangian formulation

  Definition:

  \int_{\Omega} 1\over \gamma p \, q

  Call signature:

  dw_ul_compressible | `(material, virtual, state, parameter_u)`

  Arguments:

    - material : \gamma

    - virtual : q

    - state : p

    - parameter_u : \ul(u)

  arg_geometry_types = {('state', None): {'facet_extra': 'facet'}, ('virtual', None): {'facet_extra': 'facet'}}
  arg_shapes = {'material': '1, 1', 'parameter_u': 'D', 'state': 1, 'virtual': (1, 'state')}
  arg_types = ('material', 'virtual', 'state', 'parameter_u')
  family_data_names = ['mtx_f', 'det_f']
  static function(out, coef, val_qp, rcmap, ccmap, is_diff)
  get_fargs(bulk, virtual, state, parameter_u, mode=None, term_mode=None, diff_var=None, **kwargs)
  name = 'dw_ul_compressible'

class sfepy.terms.terms_hyperelastic_ul.HyperElasticULBase(*args, **kwargs)

  Base class for all hyperelastic terms in UL formulation family.

  The subclasses should have the following static method attributes: - stress_function() (the stress) - tan_mod_function() (the tangent modulus)

  get_family_data = HyperElasticULFamilyData
  hyperelastic_mode = 1
  static weak_function(out, stress, tan_mod, mtx_f, det_f, cmap, is_diff, mode_ul)

class sfepy.terms.terms_hyperelastic_ul.HyperElasticULFamilyData(**kwargs)

  Family data for UL formulation.

  cache_name = 'ul_common'
  data_names = ('mtx_f', 'det_f', 'sym_b', 'tr_b', 'in2_b', 'green_strain')
  static family_function(mtx_f, det_f, vec_bs, tr_b, in_2b, vec_es, state, cmap, conn)

class sfepy.terms.terms_hyperelastic_ul.HyperelasticByFunULTerm(*args, **kwargs)

  General hyperelastic term: the tangent modulus and the stress tensor are calculated by a user defined function fun.

  Definition:

  \int_{\Omega} \mathcal{L}\tau_{ij}(\ul{u}) e_{ij}(\delta\ul{v})/J

  Call signature:

  dw_ul_he_by_fun | `(fun, virtual, state)`

  Arguments:

    - material : fun

    - virtual : \ul{v}

    - state : \ul{u}

  arg_shapes = [{'fun': <function HyperelasticByFunULTerm.<lambda>>, 'state': 'D', 'virtual': ('D', 'state')}]
  arg_types = ('fun', 'virtual', 'state')
  family_data_names = ['mtx_f', 'det_f', 'sym_b', 'tr_b', 'in2_b', 'green_strain']
  get_fargs(mat_fun, virtual, state, mode=None, term_mode=None, diff_var=None, **kwargs)
  name = 'dw_ul_he_by_fun'

class sfepy.terms.terms_hyperelastic_ul.MooneyRivlinULTerm(*args, **kwargs)

  Hyperelastic Mooney-Rivlin term.

  Definition:

  \int_{\Omega} \mathcal{L}\tau_{ij}(\ul{u}) e_{ij}(\delta\ul{v})/J

  Call signature:

  dw_ul_he_mooney_rivlin | `(material, virtual, state)`

  Arguments:

    - material : \kappa

    - virtual : \ul{v}

    - state : \ul{u}

  family_data_names = ['det_f', 'tr_b', 'sym_b', 'in2_b']
  name = 'dw_ul_he_mooney_rivlin'
  static stress_function(out, mat, det_f, tr_b, vec_bs, in_2b)
  static tan_mod_function(out, mat, det_f, tr_b, vec_bs, in_2b)

class sfepy.terms.terms_hyperelastic_ul.NeoHookeanULTerm(*args, **kwargs)

  Hyperelastic neo-Hookean term. Effective stress \tau_{ij} = \mu J^{-\frac{2}{3}}(b_{ij} - \frac{1}{3}b_{kk}\delta_{ij}).

  Definition:

  \int_{\Omega} \mathcal{L}\tau_{ij}(\ul{u}) e_{ij}(\delta\ul{v})/J

  Call signature:

  dw_ul_he_neohook | `(material, virtual, state)`

  Arguments:

    - material : \mu

    - virtual : \ul{v}

    - state : \ul{u}

  family_data_names = ['det_f', 'tr_b', 'sym_b']
  name = 'dw_ul_he_neohook'
  static stress_function(out, mat, det_f, tr_b, vec_bs)
  static tan_mod_function(out, mat, det_f, tr_b, vec_bs)

class sfepy.terms.terms_hyperelastic_ul.VolumeULTerm(*args, **kwargs)

  Volume term (weak form) in the updated Lagrangian formulation.

  Definition:

  \begin{array}{l} \int_{\Omega} q J(\ul{u}) \\ \mbox{volume mode: vector for } K \from \Ical_h: \int_{T_K} J(\ul{u}) \\ \mbox{rel\_volume mode: vector for } K \from \Ical_h: \int_{T_K} J(\ul{u}) / \int_{T_K} 1 \end{array}

  Call signature:

  dw_ul_volume | `(virtual, state)`

  Arguments:

    - virtual : q

    - state : \ul{u}

  arg_geometry_types = {('virtual', None): {'facet_extra': 'facet'}}
  arg_shapes = {'state': 'D', 'virtual': (1, None)}
  arg_types = ('virtual', 'state')
  family_data_names = ['mtx_f', 'det_f']
  static function(out, det_f, cmap_s, cmap_v, transpose, mode)
  get_eval_shape(virtual, state, mode=None, term_mode=None, diff_var=None, **kwargs)
  get_fargs(virtual, state, mode=None, term_mode=None, diff_var=None, **kwargs)
  name = 'dw_ul_volume'