class_docstr: First-order activation dynamics based on De Groote et al., 2016 [1]_.
  
  Explanation
  ===========
  
  Gives the first-order activation dynamics equation for the rate of change
  of activation with respect to time as a function of excitation and
  activation.
  
  The function is defined by the equation:
  
  .. math::
  
      \frac{da}{dt} = \left(\frac{\frac{1}{2} + a0}{\tau_a \left(\frac{1}{2}
          + \frac{3a}{2}\right)} + \frac{\left(\frac{1}{2}
          + \frac{3a}{2}\right) \left(\frac{1}{2} - a0\right)}{\tau_d}\right)
          \left(e - a\right)
  
  where
  
  .. math::
  
      a0 = \frac{\tanh{\left(b \left(e - a\right) \right)}}{2}
  
  with constant values of :math:`tau_a = 0.015`, :math:`tau_d = 0.060`, and
  :math:`b = 10`.
  
  References
  ==========
  
  .. [1] De Groote, F., Kinney, A. L., Rao, A. V., & Fregly, B. J., Evaluation
         of direct collocation optimal control problem formulations for
         solving the muscle redundancy problem, Annals of biomedical
         engineering, 44(10), (2016) pp. 2922-2936
class_docstr_tok: ["First-order","activation","dynamics","based","on","De","Groote","et","al.",",","2016","[","1","]","_",".","Explanation","===========","Gives","the","first-order","activation","dynamics","equation","for","the","rate","of","change","of","activation","with","respect","to","time","as","a","function","of","excitation","and","activation",".","The","function","is","defined","by","the","equation",":","..","math",":",":","\\frac","{","da","}","{","dt","}","=","\\left","(","\\frac","{","\\frac","{","1","}","{","2","}","+","a0","}","{","\\tau_a","\\left","(","\\frac","{","1","}","{","2","}","+","\\frac","{","3a","}","{","2","}","\\right",")","}","+","\\frac","{","\\left","(","\\frac","{","1","}","{","2","}","+","\\frac","{","3a","}","{","2","}","\\right",")","\\left","(","\\frac","{","1","}","{","2","}","-","a0\\right",")","}","{","\\tau_d","}","\\right",")","\\left","(","e","-","a\\right",")","where","..","math",":",":","a0","=","\\frac","{","\\tanh","{","\\left","(","b","\\left","(","e","-","a\\right",")","\\right",")","}","}","{","2","}","with","constant","values","of",":","math",":","`","tau_a","=","0.015","`",",",":","math",":","`","tau_d","=","0.060","`",",","and",":","math",":","`","b","=","10","`",".","References","==========","..","[","1","]","De","Groote",",","F.",",","Kinney",",","A.","L.",",","Rao",",","A.","V.",",","&","Fregly",",","B.","J.",",","Evaluation","of","direct","collocation","optimal","control","problem","formulations","for","solving","the","muscle","redundancy","problem",",","Annals","of","biomedical","engineering",",","44","(","10",")",",","(","2016",")","pp",".","2922-2936"]
docstr: Ordered column matrix of non-time varying symbols present in ``M``
  and ``F``.
  
  Only symbolic constants are returned. If a numeric type (e.g. ``Float``)
  has been used instead of ``Symbol`` for a constant then that attribute
  will not be included in the matrix returned by this property. This is
  because the primary use of this property attribute is to provide an
  ordered sequence of the still-free symbols that require numeric values
  during code generation.
  
  Explanation
  ===========
  
  The alias ``p`` can also be used to access the same attribute.
docstr_tok: ["Ordered","column","matrix","of","non-time","varying","symbols","present","in","``","M","``","and","``","F","``",".","Only","symbolic","constants","are","returned",".","If","a","numeric","type","(","e.g",".","``","Float","``",")","has","been","used","instead","of","``","Symbol","``","for","a","constant","then","that","attribute","will","not","be","included","in","the","matrix","returned","by","this","property",".","This","is","because","the","primary","use","of","this","property","attribute","is","to","provide","an","ordered","sequence","of","the","still-free","symbols","that","require","numeric","values","during","code","generation",".","Explanation","===========","The","alias","``","p","``","can","also","be","used","to","access","the","same","attribute","."]
code: def constants(self):
      """Ordered column matrix of non-time varying symbols present in ``M``
      and ``F``.
  
      Only symbolic constants are returned. If a numeric type (e.g. ``Float``)
      has been used instead of ``Symbol`` for a constant then that attribute
      will not be included in the matrix returned by this property. This is
      because the primary use of this property attribute is to provide an
      ordered sequence of the still-free symbols that require numeric values
      during code generation.
  
      Explanation
      ===========
  
      The alias ``p`` can also be used to access the same attribute.
  
      """
      constants = [self._tau_a, self._tau_d, self._b]
      symbolic_constants = [c for c in constants if not c.is_number]
      return (
          Matrix(symbolic_constants)
          if symbolic_constants
          else zeros(0, 1)
      )
  
imports: from abc import ABC, abstractmethod
  from functools import cached_property
  from sympy.core.symbol import Symbol
  from sympy.core.numbers import Float, Integer, Rational
  from sympy.functions.elementary.hyperbolic import tanh
  from sympy.matrices.dense import MutableDenseMatrix, zeros
  from sympy.physics.biomechanics._mixin import _NamedMixin
  from sympy.physics.mechanics import dynamicsymbols
label_desc: Use image node_id 17 for calling the FirstOrderActivationDeGroote2016 obj's underlying member method code with example usage: obj.constants() and returns: unknown