def muscle_integrate(muscle, deltaLength, activation=0.5, dt=0.001):
    """ Function steps or integrates the muscle model by the specified time_step
    dt.

    Parameters:
    -----
        muscle : <Muscle>
            Instance of Muscle class
        deltaLength : float
            Change in Muscle Tendon Length
        activation : float
            Activation of the muscle
        dt : float
            Time step to integrate (Good value is 0.001)

    Returns:
    --------
        res : dict

        res['l_CE'] :
            Contracticle element length
        res['v_CE'] :
            Contracticle element velocity
        res['l_MTC'] :
            Length of muscle tendon unit
        res['activeForce'] :
            Contracticle element force
        res['passiveForce'] :
            Passive element force
        res['force'] :
            activeForce + passiveForce
        res['tendonForce'] :
            Muscle tendon Force

    Example:
    ========
         >>> res = muscle_integrate(muscle, deltaLength=0.0, activation=0.05,
                                    dt=0.01)
    """
    muscle.stim = activation
    muscle.deltaLength = deltaLength
    muscle.step(dt)
    res = {}
    res['l_CE'] = muscle.l_CE
    res['v_CE'] = muscle.v_CE
    res['l_MTC'] = muscle.l_MTC
    res['activeForce'] = muscle.activeForce
    res['passiveForce'] = muscle.passiveForce ## why passive force is so small?? always 0??
    res['force'] = muscle.force
    res['tendonForce'] = muscle.tendonForce
    return res