Motor Control Modeling

Scalable Musculotendon Unit for Working Model 2D

Many of the characteristics of the force generated by a typical muscle under varying conditions of length and velocity can be represented by a Hill-type musculotendon model. A Hill-type model separates the force-generating capabilities of the musculotendon system into several linked components, including both active and passive elements.  The force generated by each component can be modeled with an equation, as outlined by Brown et al. (1996). As described here, we have created a simple way to simulate a complete musculotendon system on computer, for use with any 2D system.

The basis for our design (first implemented in a preliminary version in Loeb et al., submitted) is the software package Working Model 2D (in Italy, offered by Lista Studio srl).  This motion simulation package contains a scripting language and the capability to communicate with other software packages such as Matlab.  We wrote a generic script that allows us to create a single musculotendon unit with as many scalable parameters as possible.  The musculotendon unit created includes a tendon, fascicle and muscle mass.  Currently, we are limited to simulating slow-twitch muscle properties, pending the completion of ongoing experiments on fast-twitch muscle (feline Caudofemoralis).  In the future, we will include capabilities in this script to simulate heterogeneous muscles composed of both slow- and fast-twitch fibers.

Where possible, mechanical parameters of our musculotendon unit have been defined by a few measureable constants such as optimal fascicle length (L0), pennation angle and muscle mass.  These parameters are then associated with equations to other physiological constants such as optimal muscle force (F0) through intermediate constants (such as specific tension).   All parameters can be redefined by the user at any time.  This setup allows the musculotendon unit to be modified easily for various muscles of different architectures.  The methods for changing constants in the script are described later in this document.

The current version of the script may be downloaded by right-clicking on the link below and choosing Save Link As or Save Link, depending on the browser you are using. Save the script into your working Working Model directory.

Download Working Model script

(Note: if you download this script and use it, please email us [] so that we can create a database of users).

If you are already familiar with the use of Working Model and its scripting language, you can open Working Model, create a new document, and run the script to insert the musculotendon elements. The script can be run multiple times to create multiple musculotendon elements in a single Working Model document. If you are not familiar with Working Model, instructions on using and modifying the musculotendon element are listed below. Note that this script only works with Working Model 2D, and not Working Model 3D, as the latter version has no scripting capabilities.

Inserting the musculotendon element into your model

Assuming you have already downloaded the script, you can then open up Working Model and create a new, blank document in which you wish to insert a musculotendon element. Run the MAKEMUSC.WBS script and a musculotendon element will be inserted, as shown below in Figure 1. For detailed instructions on how to do this, click here.
Figure 1: New document in Working Model with musculotendon element inserted. Numbers in square brackets refer to specific element identifications assigned by Working Model as elements are added

Changing musculotendon parameters

The parameters such as the mass of the muscle, F0, L0, and L0t can be changed in one of two ways. The simplest way is to insert the appropriate values into the input boxes at the top of the screen, which are labeled Muscle Lo, Muscle Mass, Pennation, Tendon Lo, %Fast Twitch and %Act. As stated previously, the % Fast Twitch input is yet to be implemented. Alternately, the default values can be edited directly in the Script Editor in lines 64-103. Note that this method is more tedious and is only useful if you plan on inserting large numbers of muscles of a specific size).

The constants for the various muscle equations were based upon work on feline soleus, an exclusively slow-twitch muscle (Brown et al., 1996), and are listed in lines 21-46 of the MAKEMUSC.WBS file. The default values correspond to those in Table A1 of Loeb et al (submitted). This file can be edited by a text editor such as Notepad or with the built-in Script Editor from Working Model 2D. For details on how to access the Script Editor, click here. The muscle density (Mendez and Keyes, 1960) and specific tension (Scott et al., 1996; Brown et al., submitted) constants can be modified by changing the values in lines 48-50.

If, for some reason, the form of the equations describing the muscle and tendon properties need to be altered, these equations are listed in lines 128-148. Working Model 2D v4.01 script editor has a limitation in that at most 255 characters can be input per row; thus parts of certain lengthy equations had to be split into a temp variable and then appended to the actual desired formula.

Controlling the activation of the muscle

The force generated by the active contractile element of the muscle is controlled by the %Act input box. It may be desirable to allow this value to be controlled dynamically, such as by a simulated motoneuron which can respond to changes in muscle velocity, etc. This was done in our model with Matlab 5.0 (MathWorks, Inc, Natick, MA). An external program such as Matlab can pass data back and forth to Working Model using the Windows Dynamic Data Exchange (DDE) functions. This is implemented in Working Model defining a new application interface and entering the full pathname of the external application (e.g., C:\MATLAB\BIN\MATLAB.EXE) into the Application field and the word ENGINE into the Document field, as shown below in Figure 2.
Figure 2: Linking an external application to Working Model
In the Execute field, enter the command string for the function you wish to call from your external program. For example, the syntax for calling a Matlab function is given below:


Click here for a more detailed explanation on the use of this function.


Brown, I.E., Scott, S.H. and Loeb, G.E. (1996) Mechanics of feline soleus: II Design and validation of a mechanical model. Journal of Muscle Research and Cell Motility, 17:221-233.

Brown, I.E., Satoda, T, Richmond, F.J.R., Loeb, G.E. (Submitted) Feline caudofemoralis muscle: muscle fiber properties, architecture and motor innervation.

Loeb, G.E., Brown, I.E., and Cheng. E.J. (Submitted) A Heirarchical Foundation for Models of Sensorimotor Control.

Mendez, J. and Keys, A. (1960) Density and composition of mammalian muscle. Metabolism, 9: 69-78.

Zajac, F.E. (1989) Muscle and tendon: Properties, models, scaling and application to biomechanics and motor control. Crit.Rev.Biomed.Engng. 17:359-411.

Last updated Oct. 21, 1997

Please email any comments on this page or the associated script to []