diff --git a/OpenSim/Actuators/Test/lerner_one_muscle.osim b/OpenSim/Actuators/Test/lerner_one_muscle.osim
new file mode 100644
index 0000000000..dfdd5e3b18
--- /dev/null
+++ b/OpenSim/Actuators/Test/lerner_one_muscle.osim
@@ -0,0 +1,3950 @@
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+
+
+
+
+
+ 0 -9.8066499999999994 0
+
+ Lerner, Z.F., DeMers, M.S., Steele, K.M. Delp S.L., Loan J.P., Hoy M.G., Zajac F.E., Topp E.L., Rosen J.M., Thelen D.G., Anderson F.C., Seth A.
+
+ Notes: Knee mechanism for resolving medial and lateral knee joint contact forces added by Zach Lerner, Matt DeMers, Scott Delp, and Ray Browning; "How Tibiofemoral Alignment Affect Predictions of Medial and Lateral Tibiofemoral Contact Forces" J Biomech 2015. 3D, 23 DOF gait model created by D.G. Thelen, Univ. of Wisconsin-Madison, and Matt DeMers, Katherine Steele, Ajay Seth, Frank C. Anderson, and Scott L. Delp, Stanford University. Lower extremity joint defintions based on Delp et al. (1990). Low back joint and anthropometry based on Anderson and Pandy (1999, 2001). Planar knee model of Yamaguchi and Zajac (1989). DeMers and Steele redefined the planar patella kinematics as a planar joint between the patella and femur instead of constraints between the patella and tibia. Quadriceps wrap through the patell to the tibial tuberocity in place of a separate patellar ligament. Delp, S.L., Loan, J.P., Hoy, M.G., Zajac, F.E., Topp E.L., Rosen, J.M.: An interactive graphics-based model of the lower extremity to study orthopaedic surgical procedures, IEEE Transactions on Biomedical Engineering, vol. 37, pp. 757-767, 1990. Yamaguchi G.T., Zajac F.E.: A planar model of the knee joint to characterize the knee extensor mechanism." J . Biomecl7. vol. 21. pp. 1-10. 1989. Anderson F.C., Pandy M.G.: A dynamic optimization solution for vertical jumping in three dimensions. Computer Methods in Biomechanics and Biomedical Engineering 2:201-231, 1999. Anderson F.C., Pandy M.G.: Dynamic optimization of human walking. Journal of Biomechanical Engineering 123:381-390, 2001.
+
+ meters
+
+ N
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ sacrum.vtp
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ pelvis.vtp
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ l_pelvis.vtp
+
+
+
+
+
+
+
+
+ 11.776999999999999
+
+ -0.070699999999999999 0 0
+
+ 0.1028 0.087099999999999997 0.0579 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ femur_r.vtp
+
+
+
+
+
+
+
+
+ 9.3013999999999992
+
+ 0 -0.17000000000000001 0
+
+ 0.13389999999999999 0.035099999999999999 0.14119999999999999 0 0 0
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 0 0.59999999999999998 1
+
+
+ fem_cond.vtp
+
+
+
+ ..
+
+ 0.01 0.01 0
+
+ -3.1415899999999999 0.0015926499999999999 3.1415899999999999
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+
+
+
+
+ 0
+
+ 0 0 0
+
+ 0 0 0 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+
+
+
+
+ 0
+
+ 0 0 0
+
+ 0 0 0 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 0.01 0.01 0.01
+
+
+
+ 1
+
+ 0 0.59999999999999998 1
+
+
+ sphere.vtp
+
+
+
+
+
+
+
+
+ 9.9999999999999995e-08
+
+ 0 0 0
+
+ 9.9999999999999995e-08 9.9999999999999995e-08 9.9999999999999995e-08 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 0.01 0.01 0.01
+
+
+
+ 1
+
+ 0 0.59999999999999998 1
+
+
+ sphere.vtp
+
+
+
+
+
+
+
+
+ 9.9999999999999995e-08
+
+ 0 0 0
+
+ 9.9999999999999995e-08 9.9999999999999995e-08 9.9999999999999995e-08 0 0 0
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 0 0.59999999999999998 1
+
+
+ tib_plat.vtp
+
+
+
+ ..
+
+ 0 -0.044999999999999998 0
+
+ 3.1415899999999999 0.0015926499999999999 3.1415899999999999
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+
+
+
+
+ 0
+
+ 0 0 0
+
+ 0 0 0 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ tibia_r.vtp
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ fibula_r.vtp
+
+
+
+
+
+
+
+
+ 3.7075
+
+ 0 -0.1867 0
+
+ 0.0504 0.0051000000000000004 0.0511 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ pat.vtp
+
+
+
+
+
+
+
+
+ 0.10000000000000001
+
+ 0 0 0
+
+ 0.001 0.001 0.001 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ talus_rv.vtp
+
+
+
+
+
+
+
+
+ 0.10000000000000001
+
+ 0 0 0
+
+ 0.001 0.001 0.001 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ foot.vtp
+
+
+
+
+
+
+
+
+ 1.25
+
+ 0.10000000000000001 0.029999999999999999 0
+
+ 0.0014 0.0038999999999999998 0.0041000000000000003 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ bofoot.vtp
+
+
+
+
+
+
+
+
+ 0.21659999999999999
+
+ 0.034599999999999999 0.0060000000000000001 -0.017500000000000002
+
+ 0.0001 0.00020000000000000001 0.001 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ l_femur.vtp
+
+
+
+
+
+
+
+
+ 9.3013999999999992
+
+ 0 -0.17000000000000001 0
+
+ 0.13389999999999999 0.035099999999999999 0.14119999999999999 0 0 0
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 0 0.59999999999999998 1
+
+
+ fem_cond.vtp
+
+
+
+ ..
+
+ 0.01 0.01 0
+
+ -3.1415899999999999 0.0015926499999999999 3.1415899999999999
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+
+
+
+
+ 0
+
+ 0 0 0
+
+ 0 0 0 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+
+
+
+
+ 0
+
+ 0 0 0
+
+ 0 0 0 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 0.01 0.01 0.01
+
+
+
+ 1
+
+ 0 0.59999999999999998 1
+
+
+ sphere.vtp
+
+
+
+
+
+
+
+
+ 0
+
+ 0 0 0
+
+ 0 0 0 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 0.01 0.01 0.01
+
+
+
+ 1
+
+ 0 0.59999999999999998 1
+
+
+ sphere.vtp
+
+
+
+
+
+
+
+
+ 9.9999999999999995e-08
+
+ 0 0 0
+
+ 9.9999999999999995e-08 9.9999999999999995e-08 9.9999999999999995e-08 0 0 0
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 0 0.59999999999999998 1
+
+
+ tib_plat.vtp
+
+
+
+ ..
+
+ 0 -0.044999999999999998 0
+
+ 3.1415899999999999 0.0015926499999999999 3.1415899999999999
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+
+
+
+
+ 0
+
+ 0 0 0
+
+ 0 0 0 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ l_tibia.vtp
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ l_fibula.vtp
+
+
+
+
+
+
+
+
+ 3.7075
+
+ 0 -0.1867 0
+
+ 0.0504 0.0051000000000000004 0.0511 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ l_patella.vtp
+
+
+
+
+
+
+
+
+ 0.10000000000000001
+
+ 0 0 0
+
+ 0.001 0.001 0.001 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ talus_lv.vtp
+
+
+
+
+
+
+
+
+ 0.10000000000000001
+
+ 0 0 0
+
+ 0.001 0.001 0.001 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ l_foot.vtp
+
+
+
+
+
+
+
+
+ 1.25
+
+ 0.10000000000000001 0.029999999999999999 0
+
+ 0.0014 0.0038999999999999998 0.0041000000000000003 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ l_bofoot.vtp
+
+
+
+
+
+
+
+
+ 0.21659999999999999
+
+ 0.034599999999999999 0.0060000000000000001 0.017500000000000002
+
+ 0.0001 0.00020000000000000001 0.001 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ hat_spine.vtp
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ hat_jaw.vtp
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ hat_skull.vtp
+
+
+
+ ..
+
+ 1 1 1
+
+
+
+ 1
+
+ 1 1 1
+
+
+ hat_ribs.vtp
+
+
+
+
+
+
+
+
+ 34.236600000000003
+
+ -0.029999999999999999 0.32000000000000001 0
+
+ 1.4744999999999999 0.75549999999999995 1.4314 0 0 0
+
+
+
+
+
+
+
+
+
+ ground_offset
+
+ pelvis_offset
+
+
+
+
+ 0
+
+ 0
+
+ -1.5707963300000001 1.5707963300000001
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+ 0
+
+ 0
+
+ -1.5707963300000001 1.5707963300000001
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+ 0
+
+ 0
+
+ -1.5707963300000001 1.5707963300000001
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+ 0.12
+
+ 0
+
+ -5 5
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+ 0.93000000000000005
+
+ 0
+
+ -1 2
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+ 0
+
+ 0
+
+ -3 3
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /ground
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/pelvis
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ pelvis_tilt
+
+ 0 0 1
+
+
+ 1 0
+
+
+
+
+ pelvis_list
+
+ 1 0 0
+
+
+ 1 0
+
+
+
+
+ pelvis_rotation
+
+ 0 1 0
+
+
+ 1 0
+
+
+
+
+
+ pelvis_tx
+
+ 1 0 0
+
+
+ 1 0
+
+
+
+
+ pelvis_ty
+
+ 0 1 0
+
+
+ 1 0
+
+
+
+
+ pelvis_tz
+
+ 0 0 1
+
+
+ 1 0
+
+
+
+
+
+
+ pelvis_offset
+
+ femur_r_offset
+
+
+
+
+ 0
+
+ 0
+
+ -2.0943950999999998 2.0943950999999998
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+ 0
+
+ 0
+
+ -2.0943950999999998 2.0943950999999998
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+ 0
+
+ 0
+
+ -2.0943950999999998 2.0943950999999998
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/pelvis
+
+ -0.070699999999999999 -0.066100000000000006 0.083500000000000005
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/femur_r
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ hip_flexion_r
+
+ 0 0 1
+
+
+ 1 0
+
+
+
+
+ hip_adduction_r
+
+ 1 0 0
+
+
+ 1 0
+
+
+
+
+ hip_rotation_r
+
+ 0 1 0
+
+
+ 1 0
+
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+ femur_r_offset
+
+ femoral_cond_r_offset
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/femur_r
+
+ 0 -0.40400000000000003 0
+
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/femoral_cond_r
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+ femoral_cond_r_offset
+
+ sagittal_articulation_frame_r_offset
+
+
+
+
+ 0
+
+ 0
+
+ -2.0943950999999998 0.17453293
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/femoral_cond_r
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/sagittal_articulation_frame_r
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ knee_angle_r
+
+ 0 0 1
+
+
+ 1 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+ knee_angle_r
+
+ 1 0 0
+
+
+ -2.0944 -1.74533 -1.39626 -1.0472 -0.698132 -0.349066 -0.174533 0.197344 0.337395 0.490178 1.52146 2.0944
+ -0.0032 0.00179 0.00411 0.0041 0.00212 -0.001 -0.0031 -0.005227 -0.005435 -0.005574 -0.005435 -0.00525
+
+
+
+
+ knee_angle_r
+
+ 0 1 0
+
+
+ -2.0944 -1.22173 -0.523599 -0.349066 -0.174533 0.159149 2.0944
+ -0.0186 -0.0042 0.005 0.0064 0.0074 0.0087 0.008
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+ sagittal_articulation_frame_r_offset
+
+ med_cond_r_offset
+
+
+
+
+ 0
+
+ 0
+
+ -2.0943950999999998 2.0943950999999998
+
+ true
+
+ false
+
+
+
+ false
+
+ true
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/sagittal_articulation_frame_r
+
+
+ 0 -0.035000000000000003 -0.02
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/med_cond_r
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ med_cond_adduction_r
+
+ 1 0 0
+
+
+ 1 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+ sagittal_articulation_frame_r_offset
+
+ lat_cond_r_offset
+
+
+
+
+ 0
+
+ 0
+
+ -2.0943950999999998 2.0943950999999998
+
+ true
+
+ false
+
+
+
+ false
+
+ true
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/sagittal_articulation_frame_r
+
+
+ 0 -0.035000000000000003 0.02
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/lat_cond_r
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ lat_cond_adduction_r
+
+ 1 0 0
+
+
+ 1 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+ med_cond_r_offset
+
+ tibial_plat_r_offset
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/med_cond_r
+
+
+ 0 0.035000000000000003 0.02
+
+ -0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/tibial_plat_r
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+ tibial_plat_r_offset
+
+ tibia_r_offset
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/tibial_plat_r
+
+ 0 0 0
+
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/tibia_r
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+ femoral_cond_r_offset
+
+ patella_r_offset
+
+
+
+
+ 0
+
+ 0
+
+ -999999.90000000002 999999.90000000002
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/femoral_cond_r
+
+ 0 0 0.0023999999999999998
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/patella_r
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ patella_r_constrained_knee_angle
+
+ 0 0 1
+
+
+ -2.0944 -1.45752 -0.526391 0 0.0523599 0.174533
+ -1.68636 -1.09112 -0.256161 -0.0012 -0.0187016 -0.1054
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+ patella_r_constrained_knee_angle
+
+ 1 0 0
+
+
+ -2.0944 -1.91986 -1.5708 -1.39626 -1.0472 -0.698132 -0.349066 -0.174533 0 0.0872665 0.174533 2.0944
+ -0.03082 -0.02767 -0.01694 -0.00996 0.00548 0.0215 0.03599 0.04069 0.0451 0.04648 0.04761 0.04648
+
+
+
+
+ patella_r_constrained_knee_angle
+
+ 0 1 0
+
+
+ -2.0944 -1.91986 -1.5708 -1.39626 -1.0472 -0.698132 -0.349066 -0.174533 0 0.0872665 0.174533 2.0944
+ -0.02263 -0.02892 -0.0391 -0.0424 -0.0447 -0.0406 -0.0297 -0.023 -0.0145 -0.0098 -0.005 -0.0098
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+ tibia_r_offset
+
+ talus_r_offset
+
+
+
+
+ 0
+
+ 0
+
+ -1.5707963300000001 1.5707963300000001
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/tibia_r
+
+ 0 -0.42999999999999999 0
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/talus_r
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ ankle_angle_r
+
+ -0.10501355 -0.17402245 0.97912631999999999
+
+
+ 1 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0.97912631999999999 -0 0.10501355
+
+
+ 0
+
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+ talus_r_offset
+
+ calcn_r_offset
+
+
+
+
+ 0
+
+ 0
+
+ -1.5707963300000001 1.5707963300000001
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/talus_r
+
+ -0.048770000000000001 -0.041950000000000001 0.00792
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/calcn_r
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ subtalar_angle_r
+
+ 0.78717961000000003 0.60474746000000001 -0.12094949000000001
+
+
+ 1 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ -0.12094949000000001 0 -0.78717961000000003
+
+
+ 0
+
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+ calcn_r_offset
+
+ toes_r_offset
+
+
+
+
+ 0
+
+ 0
+
+ -1.5707963300000001 1.5707963300000001
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/calcn_r
+
+ 0.17879999999999999 -0.002 0.00108
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/toes_r
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ mtp_angle_r
+
+ -0.58095439999999998 0 0.81393610999999999
+
+
+ 1 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0.81393610999999999 -0 0.58095439999999998
+
+
+ 0
+
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+ pelvis_offset
+
+ femur_l_offset
+
+
+
+
+ 0
+
+ 0
+
+ -2.0943950999999998 2.0943950999999998
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+ 0
+
+ 0
+
+ -2.0943950999999998 2.0943950999999998
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+ 0
+
+ 0
+
+ -2.0943950999999998 2.0943950999999998
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/pelvis
+
+ -0.070699999999999999 -0.066100000000000006 -0.083500000000000005
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/femur_l
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ hip_flexion_l
+
+ 0 0 1
+
+
+ 1 0
+
+
+
+
+ hip_adduction_l
+
+ -1 0 0
+
+
+ 1 0
+
+
+
+
+ hip_rotation_l
+
+ 0 -1 0
+
+
+ 1 0
+
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+ femur_l_offset
+
+ femoral_cond_l_offset
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/femur_l
+
+ 0 -0.40400000000000003 0
+
+
+ -0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/femoral_cond_l
+
+ 0 0 0
+
+ -0 0 0
+
+
+
+
+
+ femoral_cond_l_offset
+
+ sagittal_articulation_frame_l_offset
+
+
+
+
+ 0
+
+ 0
+
+ -2.0943950999999998 0.17453293
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/femoral_cond_l
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/sagittal_articulation_frame_l
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ knee_angle_l
+
+ 0 0 1
+
+
+ 1 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+ knee_angle_l
+
+ 1 0 0
+
+
+ -2.0944 -1.74533 -1.39626 -1.0472 -0.698132 -0.349066 -0.174533 0.197344 0.337395 0.490178 1.52146 2.0944
+ -0.0032 0.00179 0.00411 0.0041 0.00212 -0.001 -0.0031 -0.005227 -0.005435 -0.005574 -0.005435 -0.00525
+
+
+
+
+ knee_angle_l
+
+ 0 1 0
+
+
+ -2.0944 -1.22173 -0.523599 -0.349066 -0.174533 0.159149 2.0944
+ -0.0186 -0.0042 0.005 0.0064 0.0074 0.0087 0.008
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+ sagittal_articulation_frame_l_offset
+
+ med_cond_l_offset
+
+
+
+
+ 0
+
+ 0
+
+ -2.0943950999999998 2.0943950999999998
+
+ true
+
+ false
+
+
+
+ false
+
+ true
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/sagittal_articulation_frame_l
+
+
+ 0 -0.035000000000000003 0.02
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/med_cond_l
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ med_cond_adduction_l
+
+ 1 0 0
+
+
+ 1 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+ sagittal_articulation_frame_l_offset
+
+ lat_cond_l_offset
+
+
+
+
+ 0
+
+ 0
+
+ -2.0943950999999998 2.0943950999999998
+
+ true
+
+ false
+
+
+
+ false
+
+ true
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/sagittal_articulation_frame_l
+
+
+ 0 -0.035000000000000003 -0.02
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/lat_cond_l
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ lat_cond_adduction_l
+
+ 1 0 0
+
+
+ 1 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+ med_cond_l_offset
+
+ tibial_plat_l_offset
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/med_cond_l
+
+
+ 0 0.035000000000000003 -0.02
+
+ -0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/tibial_plat_l
+
+ 0 0 0
+
+ -0 0 0
+
+
+
+
+
+ tibial_plat_l_offset
+
+ tibia_l_offset
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/tibial_plat_l
+
+ 0 0 0
+
+
+ -0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/tibia_l
+
+ 0 0 0
+
+ -0 0 0
+
+
+
+
+
+ femoral_cond_l_offset
+
+ patella_l_offset
+
+
+
+
+ 0
+
+ 0
+
+ -999999.90000000002 999999.90000000002
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/femoral_cond_l
+
+ 0 0 -0.0023999999999999998
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/patella_l
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ patella_l_constrained_knee_angle
+
+ 0 0 1
+
+
+ -2.0944 -1.45752 -0.526391 0 0.0523599 0.174533
+ -1.68636 -1.09112 -0.256161 -0.0012 -0.0187016 -0.1054
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+ patella_l_constrained_knee_angle
+
+ 1 0 0
+
+
+ -2.0944 -1.91986 -1.5708 -1.39626 -1.0472 -0.698132 -0.349066 -0.174533 0 0.0872665 0.174533 2.0944
+ -0.03082 -0.02767 -0.01694 -0.00996 0.00548 0.0215 0.03599 0.04069 0.0451 0.04648 0.04761 0.04648
+
+
+
+
+ patella_l_constrained_knee_angle
+
+ 0 1 0
+
+
+ -2.0944 -1.91986 -1.5708 -1.39626 -1.0472 -0.698132 -0.349066 -0.174533 0 0.0872665 0.174533 2.0944
+ -0.02263 -0.02892 -0.0391 -0.0424 -0.0447 -0.0406 -0.0297 -0.023 -0.0145 -0.0098 -0.005 -0.0098
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+ tibia_l_offset
+
+ talus_l_offset
+
+
+
+
+ 0
+
+ 0
+
+ -1.0471975499999999 1.0471975499999999
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/tibia_l
+
+ 0 -0.42999999999999999 0
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/talus_l
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ ankle_angle_l
+
+ 0.10501355 -0.17402245 0.97912631999999999
+
+
+ 1 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0.97912631999999999 0 -0.10501355
+
+
+ 0
+
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+ talus_l_offset
+
+ calcn_l_offset
+
+
+
+
+ 0
+
+ 0
+
+ -1.5707963300000001 1.5707963300000001
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/talus_l
+
+ -0.048770000000000001 -0.041950000000000001 -0.00792
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/calcn_l
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ subtalar_angle_l
+
+ -0.78717961000000003 -0.60474746000000001 -0.12094949000000001
+
+
+ 1 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ -0.12094949000000001 0 0.78717961000000003
+
+
+ 0
+
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+ calcn_l_offset
+
+ toes_l_offset
+
+
+
+
+ 0
+
+ 0
+
+ -1.0471975499999999 1.0471975499999999
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/calcn_l
+
+ 0.17879999999999999 -0.002 -0.00108
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/toes_l
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ mtp_angle_l
+
+ 0.58095439999999998 0 0.81393610999999999
+
+
+ 1 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0.81393610999999999 0 -0.58095439999999998
+
+
+ 0
+
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+ pelvis_offset
+
+ torso_offset
+
+
+
+
+ 0
+
+ 0
+
+ -1.5707963300000001 1.5707963300000001
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+ 0
+
+ 0
+
+ -1.5707963300000001 1.5707963300000001
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+ 0
+
+ 0
+
+ -1.5707963300000001 1.5707963300000001
+
+ true
+
+ false
+
+
+
+ false
+
+
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/pelvis
+
+ -0.1007 0.081500000000000003 0
+
+ 0 0 0
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/torso
+
+ 0 0 0
+
+ 0 0 0
+
+
+
+
+
+
+
+ lumbar_extension
+
+ 0 0 1
+
+
+ 1 0
+
+
+
+
+ lumbar_bending
+
+ 1 0 0
+
+
+ 1 0
+
+
+
+
+ lumbar_rotation
+
+ 0 1 0
+
+
+ 1 0
+
+
+
+
+
+
+
+ 1 0 0
+
+
+ 0
+
+
+
+
+
+
+ 0 1 0
+
+
+ 0
+
+
+
+
+
+
+ 0 0 1
+
+
+ 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+ lat_cond_r_offset
+
+ /bodyset/tibial_plat_r
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/lat_cond_r
+
+
+ 0 0.035000000000000003 -0.02
+
+ 0 0 0
+
+
+
+
+
+ true
+
+ lat_cond_l_offset
+
+ /bodyset/tibial_plat_l
+
+
+
+
+
+
+ ..
+
+ 0.20000000000000001 0.20000000000000001 0.20000000000000001
+
+
+ /bodyset/lat_cond_l
+
+
+ 0 0.035000000000000003 0.02
+
+ 0 0 0
+
+
+
+
+
+ true
+
+
+
+ -2.0944 -1.45752 -0.526391 0 0.0523599 0.174533
+ -2.0944 -1.45752 -0.526391 0 0.0523599 0.174533
+
+
+
+ knee_angle_r
+
+ patella_r_constrained_knee_angle
+
+ 1
+
+
+
+ true
+
+
+
+ -2.0944 -1.99997 -1.45752 -0.526391 0.0279253 0.174533
+ -2.0944 -1.99997 -1.45752 -0.526391 0.0279253 0.174533
+
+
+
+ knee_angle_l
+
+ patella_l_constrained_knee_angle
+
+ 1
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+ /bodyset/tibia_r
+
+ -0.0094000000000000004 -0.1348 0.0019
+
+
+
+ /bodyset/tibia_r
+
+ -0.0144 -0.40510000000000002 -0.0229
+
+
+
+ /bodyset/calcn_r
+
+ 0.041700000000000001 0.033399999999999999 -0.0286
+
+
+
+ /bodyset/calcn_r
+
+ 0.077200000000000005 0.015900000000000001 -0.0281
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.80000000000000004 0.10000000000000001 0.10000000000000001
+
+
+
+ 1
+
+ 1588
+
+ 0.031
+
+ 0.31
+
+ 0.20943951
+
+ 10
+
+ 0.033000000000000002
+
+ 0.59999999999999998
+
+ 0.5
+
+ 4
+
+ 0.29999999999999999
+
+ 1.8
+
+ 0.01
+
+ 0.040000000000000001
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/OpenSim/Actuators/Test/testMuscles.cpp b/OpenSim/Actuators/Test/testMuscles.cpp
index 01d435200b..256d3a5af1 100644
--- a/OpenSim/Actuators/Test/testMuscles.cpp
+++ b/OpenSim/Actuators/Test/testMuscles.cpp
@@ -100,6 +100,7 @@ void testSchutte1993Muscle();
void testDelp1990Muscle();
void testMuscleEquilibriumSolve(const Model& model, const Storage& statesStore);
+void testThelenMuscleEquilibriumInGaitModel();
int main()
{
@@ -121,6 +122,7 @@ int main()
catch (const Exception& e)
{ e.print(cerr); failures.push_back("testDelp1990Muscle"); }
*/
+
try { testRigidTendonMuscle();
cout << "RigidTendonMuscle Test passed" << endl; }
catch (const Exception& e)
@@ -131,6 +133,12 @@ int main()
catch (const Exception& e)
{ e.print(cout); failures.push_back("testThelen2003Muscle"); }
+ try { testThelenMuscleEquilibriumInGaitModel();
+ cout << "testThelenMuscleEquilibriumInGaitModel passed" << endl; }
+ catch (const Exception& e) {
+ e.print(cout);
+ failures.push_back("testThelenMuscleEquilibriumInGaitModel"); }
+
try { testMillard2012EquilibriumMuscle();
cout << "Millard2012EquilibriumMuscle Test passed" << endl;
}catch (const Exception& e){
@@ -1115,3 +1123,62 @@ void testMuscleEquilibriumSolve(const Model& model, const Storage& statesStore)
}
}
}
+
+/** Test case for failure in the equilibrium solve in Thelen2003Muscle.
+ Model and conditions provided by Scott Uhlrich when initializing the
+ Lerner et al. knee model during gait. The model has been stripped down to
+ the single muscle (tib_post_r) where the failure occurs when activation
+ approaches ~0.08 in specific configuration (angles and velocities). The
+ failure does not appear to be due to any approaching singularity in afl or
+ fv multipliers.*/
+void testThelenMuscleEquilibriumInGaitModel()
+{
+ Model model("lerner_one_muscle.osim");
+ const CoordinateSet& coords = model.getCoordinateSet();
+ const Muscle& muscle = model.getMuscles().get("tib_post_r");
+
+ SimTK::State& state = model.initSystem();
+
+ coords.get("subtalar_angle_r").setValue(state, 0.2581);
+ coords.get("ankle_angle_r").setValue(state, 0.2207);
+ coords.get("subtalar_angle_r").setSpeedValue(state, -1.0344);
+ coords.get("ankle_angle_r").setSpeedValue(state, -2.3226);
+
+ double fm = SimTK::NaN, ft = SimTK::NaN;
+
+ for (int i = 1; i < 10; ++i) {
+ cout << i << endl;
+ muscle.setActivation(state, 0.01 * i); // 0.0798916);
+ model.realizeVelocity(state);
+
+ cout << "Input: act=" << muscle.getActivation(state)
+ << " fiberlen=" << muscle.getFiberLength(state)
+ << " afl =" << muscle.getActiveForceLengthMultiplier(state)
+ << " pfl =" << muscle.getPassiveForceMultiplier(state)
+ << " fibervel=" << muscle.getFiberVelocity(state)
+ << " fv =" << muscle.getForceVelocityMultiplier(state)
+ << " fm =" << muscle.getFiberForceAlongTendon(state)
+ << " ft =" << muscle.getTendonForce(state) << endl;
+
+ model.equilibrateMuscles(state);
+
+ fm = muscle.getFiberForceAlongTendon(state);
+ ft = muscle.getTendonForce(state);
+
+ cout << "After: act=" << muscle.getActivation(state)
+ << " fiberlen=" << muscle.getFiberLength(state)
+ << " afl =" << muscle.getActiveForceLengthMultiplier(state)
+ << " pfl =" << muscle.getPassiveForceMultiplier(state)
+ << " fibervel=" << muscle.getFiberVelocity(state)
+ << " fv =" << muscle.getForceVelocityMultiplier(state)
+ << " fm =" << fm
+ << " ft =" << ft << endl;
+
+ // equilibrium demands tendon and muscle fiber forces are equivalent
+ ASSERT_EQUAL(ft, fm, SimTK::SqrtEps, __FILE__, __LINE__,
+ "testThelenMuscleEquilibriumInGaitModel(): " +
+ muscle.getConcreteClassName() +
+ " failed to solve for muscle (fiber) and tendon "
+ "equilibrium. ");
+ }
+}