Gold Standard 2 (Crandall 2011-2016)#

Frontal Sledtests

Model validation information

  • Performed by : Johan Iraeus

  • Reviewed by : Corina Klug

Added to VIVA+ Validation Catalog on : 2022-11-30

Last modified :

Model version (this notebook run for): 0.3.2

© 2019-2023, OpenVT Organization (OVTO)

Available openly under Creative Commons Attribution 4.0 International License

Experiment by Crandall et al. (2011. 2013, and 2016)#

Summary:#

The simulated outputs are compared to the references from two male PMHS tests (S00028 and S00029) reported by Crandall (2011), and two female PMHS tests (S0212 and S0373) reported in Crandall (2013) and Crandall (2016)

Crandall, J. (2011). ATD THORACIC RESPONSE TEST DEVELOPMENT, Gold Standard Buck Condition 2: Force Limited Belt, 30 km/h Frontal, PMHS 494, 492. A Report Prepared for NHTSA, Cooperative Agreement No. DTNH22-09-H-00247, May 2012

Crandall, J. (2011). ATD THORACIC RESPONSE TEST DEVELOPMENT, Gold Standard Buck Condition 2.1: Force Limited Belt, 30 km/h Frontal, PMHS 509, 517, 568, 656, 657. A Report Prepared for NHTSA, Cooperative Agreement No. DTNH22-09-H-00247, January 2014

Crandall, J. (2011). Small Female/Older Occupant Thoracic Biofidelity, Gold Standard Buck Condition 2.1: 2 kN Force Limited Belt, 30 km/h Frontal, PMHS 667, 729, 741, 820, 822. A Report Prepared for NHTSA, Contract Number: DTNH2215D00022, March 2017

(Setup for the VIVA+ 50F model)

Experiment#

Information on the subjects/specimens#

From the test series two male and two female PMHS, close to the average male and female antropometries have been selected for evaluation.

Test No

Sex

Stature

Body Mass

Age

T-score

s0212

F

1640

54.4

88

-1.4

S0373

F

1630

55.9

72

1.2

S0028

M

1780

68.0

59

-2.3

S0029

M

1790

70.0

66

-1.1

Loading and Boundary Conditions#

The pelvis, knees and legs were constrained by a rigid seat and rigid knee and foot supports. The upper body was constrained using a force limited shoulder belt and a separate lap belt. The shoulder belt force limit level in the female tests was about 2kN and in the male tests about 2.7kN.

Impact#

A square crash pulse corresponding to a frontal impact with a change in velocity of 30km/h and a peak acceleration of about 8.5-9 G’s was used (separate crash pulses corresponding to the actual tests have been used for teh simulation of eth female and male models).

Positioning#

For the definitions of the measurements see any of the reports listed above.

Female PMHSs

Test No

Torso Angle

Belt Angle D-ring

Femur Angle

Tibia Angle

Belt Angle across chest

s0212

9

23

12

33

48.0

S0373

8.1

26

12

26

55.0

VIVA+ 50F

7.3

27.7

13.5

33.8

49.5

Male PMHSs

Test No

Torso Angle

Belt Angle D-ring

Femur Angle

Tibia Angle

Belt Angle across chest

S0028

10

25

9

32

46.2

S0029

10

26

11

32

48.5

VIVA+ 50M

7.8

27.8

10

33

43

Responses recorded#

The reference values from the reports were digitalised and are included in the package. The data is not normalized, but inertia compensated (where appropriate). …

Other Notes for simulation#

During the first 350 ms the simulation model is gravity settled, and the foot support and the knee support is moved towards the model. During the first 300 ms global damping is applied.

In the figure below the energy balance is shown for the simulations using the 50F and 50M models.

Hide code cell source
fig_energy, (ax1, ax2) = plt.subplots(1,2, figsize=(10,5))
fig_energy.suptitle('Model Energies', y=1.02)
#plt.set_title('Simulation #1')
#plt.set_ylabel('Energies (J)')
#ax.set_title('Simulation #1')
ax1.set_ylabel('Energies (J)')
ax1.set(title='50F', xlabel='time (ms)')
ax2.set(title='50M', xlabel='time (ms)')

ax1.plot(simData_50F.MODEL.Hourglass_Energy.time, simData_50F.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
ax1.plot(simData_50F.MODEL.Internal_Energy.time, simData_50F.MODEL.Internal_Energy.energy, label = "Internal Energy")
ax1.plot(simData_50F.MODEL.Kinetic_Energy.time, simData_50F.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
ax1.plot(simData_50F.MODEL.Sliding_Energy.time, simData_50F.MODEL.Sliding_Energy.energy, label = "Contact Energy")
ax1.plot(simData_50F.MODEL.Total_Energy.time, simData_50F.MODEL.Total_Energy.energy, label = "Total Energy")
ax2.plot(simData_50M.MODEL.Hourglass_Energy.time, simData_50M.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
ax2.plot(simData_50M.MODEL.Internal_Energy.time, simData_50M.MODEL.Internal_Energy.energy, label = "Internal Energy")
ax2.plot(simData_50M.MODEL.Kinetic_Energy.time, simData_50M.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
ax2.plot(simData_50M.MODEL.Sliding_Energy.time, simData_50M.MODEL.Sliding_Energy.energy, label = "Contact Energy")
ax2.plot(simData_50M.MODEL.Total_Energy.time, simData_50M.MODEL.Total_Energy.energy, label = "Total Energy")


ax1.legend();
ax2.legend();
../_images/09b347d5b088cffa3b62ee50df37d1cf511b4f0ffc31a4bde90ac3a794c0b29e.png

Seat Belt Force Plots#

The figure below shows the comparison between teh predicted seat belt forces for the 50F and 50M models compared to the PMHS tests. Note that different seat belt force limiters were used in the male and female tests.

Hide code cell source
fig_Belt, (ax1, ax2, ax3) = plt.subplots(nrows=1, ncols=3, figsize=(15,5))
fig_Belt.suptitle('Seat Belt Forces')

ax1.set_ylabel('Force (N)')
ax1.set(title='Upper Shoulder belt', xlabel='time (ms)')
ax2.set(title='Lower Shoulder belt', xlabel='time (ms)')
ax3.set(title='Lap belt', xlabel='time (ms)')

ax1.plot(simData_50F.BELT.Belt_force_Shoulder_upper_F.time-350., 1000*simData_50F.BELT.Belt_force_Shoulder_upper_F.force, label = "VIVA+ 50F", **plot50F)
ax1.plot(simData_50M.BELT.Belt_force_Shoulder_upper_M.time-350, 1000*simData_50M.BELT.Belt_force_Shoulder_upper_M.force, label = "VIVA+ 50M", **plot50M)
ax1.plot(experiment_50F['Time_Upper_sh_S0212'], experiment_50F['Force_Upper_sh_S0212'], label = "s0212",  **plotExperimentFemale)
ax1.plot(experiment_50F['Time_Upper_sh_S0373'], experiment_50F['Force_Upper_sh_S0373'], label = "s0373",  **plotExperimentFemale2)
ax1.plot(experiment_50M['Time_Upper_sh_s0028'], experiment_50M['Force_Upper_sh_s0028'], label = "s0028",  **plotExperimentMale)
ax1.plot(experiment_50M['Time_Upper_sh_s0029'], experiment_50M['Force_Upper_sh_s0029'], label = "s0029",  **plotExperimentMale2)
ax1.set_xlim(0,200)
ax1.set_ylim(0 ,3500)

ax2.plot(simData_50F.BELT.Belt_force_Shoulder_lower_F.time-350., 1000*simData_50F.BELT.Belt_force_Shoulder_lower_F.force, **plot50F)
ax2.plot(simData_50M.BELT.Belt_force_Shoulder_lower_M.time-350, 1000*simData_50M.BELT.Belt_force_Shoulder_lower_M.force, **plot50M)
ax2.plot(experiment_50F['Time_lower_sh_S0212'], experiment_50F['Force_lower_sh_S0212'],  **plotExperimentFemale)
ax2.plot(experiment_50F['Time_lower_sh_S0373'], experiment_50F['Force_lower_sh_S0373'],  **plotExperimentFemale2)
ax2.plot(experiment_50M['Time_lower_sh_s0028'], experiment_50M['Force_lower_sh_s0028'],  **plotExperimentMale)
ax2.plot(experiment_50M['Time_lower_sh_s0029'], experiment_50M['Force_lower_sh_s0029'],  **plotExperimentMale2)
ax2.set_xlim(0,200)
ax2.set_ylim(0,3500)

ax3.plot(simData_50F.BELT.Belt_force_Lap_F.time-350., 1000*simData_50F.BELT.Belt_force_Lap_F.force,  **plot50F)
ax3.plot(simData_50M.BELT.Belt_force_Lap_M.time-350, 1000*simData_50M.BELT.Belt_force_Lap_M.force,  **plot50M)
ax3.plot(experiment_50F['Time_outer_lap_S0212'], experiment_50F['Force_outer_lap_S0212'], **plotExperimentFemale)
ax3.plot(experiment_50F['Time_outer_lap_S0373'], experiment_50F['Force_outer_lap_S0373'], **plotExperimentFemale2)
ax3.plot(experiment_50M['Time_outer_lap_s0028'], experiment_50M['Force_outer_lap_s0028'], **plotExperimentMale)
ax3.plot(experiment_50M['Time_outer_lap_s0029'], experiment_50M['Force_outer_lap_s0029'], **plotExperimentMale2)
ax3.set_xlim(0,200)
ax3.set_ylim(0,3500)


fig_Belt.legend(loc='center left', bbox_to_anchor=(1, 0.5));
fig_Belt.tight_layout(pad=0.5)

plt.show()
../_images/bf8be779a001c2fe4d77b387e2f518b9977f670262573c14b8373c019574afcf.png

Other BC Force Plots#

In the figure below boundary condition forces (except) the seat belt are shown.

Hide code cell source
fig_BC, ((ax1, ax2, ax3), (ax4, ax5, ax6)) = plt.subplots(nrows=2, ncols=3, figsize=(15,10))
fig_BC.suptitle('Other BC Forces')

ax1.set_ylabel('Force (N)')
ax4.set_ylabel('Force (N)')
ax1.set(title='Seat X force', xlabel='time (ms)')
ax2.set(title='Seat Z force', xlabel='time (ms)')
ax3.set(title='Left Knee X-force', xlabel='time (ms)')
ax4.set(title='Right Knee X-force', xlabel='time (ms)')
ax5.set(title='Feet resultant X-Z force', xlabel='time (ms)')

ax1.plot(simData_50F.BC.Contactforce_seat_CFC_180_x.time-350., -1000*simData_50F.BC.Contactforce_seat_CFC_180_x.force-70, label = "VIVA+ 50F", **plot50F)
ax1.plot(simData_50M.BC.Contactforce_seat_CFC_180_x.time-350, -1000*simData_50M.BC.Contactforce_seat_CFC_180_x.force-100, label = "VIVA+ 50M", **plot50M)
ax1.plot(experiment_50F['Time_seat_FX_s0212'], experiment_50F['Force_seat_FX_s0212'], label = "s0212", **plotExperimentFemale)
ax1.plot(experiment_50F['Time_seat_FX_s0373'], experiment_50F['Force_seat_FX_s0373'], label = "s0373", **plotExperimentFemale2)
ax1.plot(experiment_50M['Time_seat_FX_s0028'], experiment_50M['Force_seat_FX_s0028'], label = "s0028", **plotExperimentMale)
ax1.plot(experiment_50M['Time_seat_FX_s0029'], experiment_50M['Force_seat_FX_s0029'], label = "s0029", **plotExperimentMale2)
ax1.set_xlim(0,200)


ax2.plot(simData_50F.BC.Contactforce_seat_CFC_180_z.time-350., -1000*simData_50F.BC.Contactforce_seat_CFC_180_z.force+512, **plot50F)
ax2.plot(simData_50M.BC.Contactforce_seat_CFC_180_z.time-350, -1000*simData_50M.BC.Contactforce_seat_CFC_180_z.force+700, **plot50M)
ax2.plot(experiment_50F['Time_seat_FZ_s0212'], experiment_50F['Force_seat_FZ_s0212'], **plotExperimentFemale)
ax2.plot(experiment_50F['Time_seat_FZ_s0373'], experiment_50F['Force_seat_FZ_s0373'], **plotExperimentFemale2)
ax2.plot(experiment_50M['Time_seat_FZ_s0028'], experiment_50M['Force_seat_FZ_s0028'], **plotExperimentMale)
ax2.plot(experiment_50M['Time_seat_FZ_s0029'], experiment_50M['Force_seat_FZ_s0029'], **plotExperimentMale2)
ax2.set_xlim(0,200)


ax3.plot(simData_50F.BC.Contactforce_left_knee_CFC_180_x.time-350., -1000*(math.cos(36*3.1415/180)*simData_50F.BC.Contactforce_left_knee_CFC_180_x.force-math.sin(36*3.1415/180)*simData_50F.BC.Contactforce_left_knee_CFC_180_z.force), **plot50F)
ax3.plot(simData_50M.BC.Contactforce_left_knee_CFC_180_x.time-350., -1000*(math.cos(36*3.1415/180)*simData_50M.BC.Contactforce_left_knee_CFC_180_x.force-math.sin(36*3.1415/180)*simData_50M.BC.Contactforce_left_knee_CFC_180_z.force), **plot50M)
ax3.plot(experiment_50F['Time_Left_knee_FX_s0212'], experiment_50F['Force_Left_knee_FX_s0212'], **plotExperimentFemale)
ax3.plot(experiment_50F['Time_Left_knee_FX_s0373'], experiment_50F['Force_Left_knee_FX_s0373'], **plotExperimentFemale2)
ax3.plot(experiment_50M['Time_Left_knee_FX_s0028'], experiment_50M['Force_Left_knee_FX_s0028'], **plotExperimentMale)
ax3.plot(experiment_50M['Time_Left_knee_FX_s0029'], experiment_50M['Force_Left_knee_FX_s0029'], **plotExperimentMale2)
ax3.set_xlim(0,200)


ax4.plot(simData_50F.BC.Contactforce_Right_knee_CFC_180_x.time-350., -1000*(math.cos(36*3.1415/180)*simData_50F.BC.Contactforce_Right_knee_CFC_180_x.force-math.sin(36*3.1415/180)*simData_50F.BC.Contactforce_Right_knee_CFC_180_z.force), **plot50F)
ax4.plot(simData_50M.BC.Contactforce_Right_knee_CFC_180_x.time-350., -1000*(math.cos(36*3.1415/180)*simData_50M.BC.Contactforce_Right_knee_CFC_180_x.force-math.sin(36*3.1415/180)*simData_50M.BC.Contactforce_Right_knee_CFC_180_z.force), **plot50M)
ax4.plot(experiment_50F['Time_Right_knee_FX_s0212'], experiment_50F['Force_Right_knee_FX_s0212'], **plotExperimentFemale)
ax4.plot(experiment_50F['Time_Right_knee_FX_s0373'], experiment_50F['Force_Right_knee_FX_s0373'], **plotExperimentFemale2)
ax4.plot(experiment_50M['Time_Right_knee_FX_s0028'], experiment_50M['Force_Right_knee_FX_s0028'], **plotExperimentMale)
ax4.plot(experiment_50M['Time_Right_knee_FX_s0029'], experiment_50M['Force_Right_knee_FX_s0029'], **plotExperimentMale2)
ax4.set_xlim(0,200)


ax5.plot(simData_50F.BC.Contactforce_Left_foot_CFC_180_x.time-350., -1000*((simData_50F.BC.Contactforce_Left_foot_CFC_180_x.force+simData_50F.BC.Contactforce_Left_foot_CFC_180_z.force)**2+(simData_50F.BC.Contactforce_Right_foot_CFC_180_x.force+simData_50F.BC.Contactforce_Right_foot_CFC_180_z.force)**2)**0.5, **plot50F)
ax5.plot(simData_50M.BC.Contactforce_Left_foot_CFC_180_x.time-350., -1000*((simData_50M.BC.Contactforce_Left_foot_CFC_180_x.force+simData_50M.BC.Contactforce_Left_foot_CFC_180_z.force)**2+(simData_50M.BC.Contactforce_Right_foot_CFC_180_x.force+simData_50M.BC.Contactforce_Right_foot_CFC_180_z.force)**2)**0.5, **plot50M)
ax5.plot(experiment_50F['Time_feet_FZ_s0373'], experiment_50F['Force_feet_FZ_s0373'], **plotExperimentFemale2)
ax5.plot(experiment_50M['Time_feet_FZ_s0028'], experiment_50M['Force_feet_FZ_s0028'], **plotExperimentMale)
ax5.plot(experiment_50M['Time_feet_FZ_s0029'], experiment_50M['Force_feet_FZ_s0029'], **plotExperimentMale2)
ax5.set_xlim(0,200)
ax5.set_ylim(-3500 ,500)

fig_BC.legend(loc='center left', bbox_to_anchor=(0.8, 0.3));
fig_BC.tight_layout(pad=0.5)
fig_BC.delaxes(ax6)

plt.show()
../_images/ee2c802ab6e5ecc2bc85ffc5a14ec56f150b60c96769f3842033c042a1d21bf2.png

Spine and head kinematic Plots#

In the figure below the predicted spine kinematics is compared to PMHS results for teh 50F and 50M models.

Hide code cell source
fig_Kin, ((ax1, ax2, ax3),(ax4, ax5, ax6),
            (ax7, ax8, ax9),(ax10, ax11, ax12),(ax13, ax14, ax15)) = plt.subplots(nrows=5, ncols=3, figsize=(15,15),
                        sharex=True)
fig_Kin.suptitle('Head and spine kinematics')

ax1.set_ylabel('Displacement (mm)')
ax4.set_ylabel('Displacement (mm)')
ax7.set_ylabel('Displacement (mm)')
ax10.set_ylabel('Displacement (mm)')
ax13.set_ylabel('Displacement (mm)')
ax1.set(title='Head X', xlabel='time (ms)')
ax2.set(title='Head Y', xlabel='time (ms)')
ax3.set(title='Head Z', xlabel='time (ms)')
ax4.set(title='T1 X', xlabel='time (ms)')
ax5.set(title='T1 Y', xlabel='time (ms)')
ax6.set(title='T1 Z', xlabel='time (ms)')
ax7.set(title='T8 X', xlabel='time (ms)')
ax8.set(title='T8 Y', xlabel='time (ms)')
ax9.set(title='T8 Z', xlabel='time (ms)')
ax10.set(title='L2 X', xlabel='time (ms)')
ax11.set(title='L2 Y', xlabel='time (ms)')
ax12.set(title='L2 Z', xlabel='time (ms)')
ax13.set(title='Pelvis X', xlabel='time (ms)')
ax14.set(title='Pelvis Y', xlabel='time (ms)')
ax15.set(title='Pelvis Z', xlabel='time (ms)')

ax1.plot(simData_50F.SLED.Head_Disp_x.time-350., simData_50F.SLED.Head_Disp_x.displacement-simData_50F.SLED.Sled_Disp_x.displacement, label = "VIVA+ 50F", **plot50F)
ax1.plot(simData_50M.SLED.Head_Disp_x.time-350, simData_50M.SLED.Head_Disp_x.displacement-simData_50M.SLED.Sled_Disp_x.displacement-50, label = "VIVA+ 50M", **plot50M)
ax1.plot(experiment_50F['Time_Head_x_disp_s0212'], experiment_50F['Disp_Head_x_disp_s0212'], label = "s0212",  **plotExperimentFemale)
ax1.plot(experiment_50F['Time_Head_x_disp_s0373'], experiment_50F['Disp_Head_x_disp_s0373'], label = "s0373",  **plotExperimentFemale2)
ax1.plot(experiment_50M['Time_Head_x_disp_s0028'], experiment_50M['Disp_Head_x_disp_s0028'], label = "s0028",  **plotExperimentMale)
ax1.plot(experiment_50M['Time_Head_x_disp_s0029'], experiment_50M['Disp_Head_x_disp_s0029'], label = "s0029",  **plotExperimentMale2)
ax1.set_xlim(0,200)
ax1.set_ylim(0 ,500)

ax2.plot(simData_50F.SLED.Head_Disp_y.time-350., simData_50F.SLED.Head_Disp_y.displacement, **plot50F)
ax2.plot(simData_50M.SLED.Head_Disp_y.time-350, simData_50M.SLED.Head_Disp_y.displacement, **plot50M)
ax2.plot(experiment_50F['Time_Head_y_disp_s0212'], experiment_50F['Disp_Head_y_disp_s0212'], **plotExperimentFemale)
ax2.plot(experiment_50F['Time_Head_y_disp_s0373'], experiment_50F['Disp_Head_y_disp_s0373'], **plotExperimentFemale2)
ax2.plot(experiment_50M['Time_Head_y_disp_s0028'], experiment_50M['Disp_Head_y_disp_s0028'], **plotExperimentMale)
ax2.plot(experiment_50M['Time_Head_y_disp_s0029'], experiment_50M['Disp_Head_y_disp_s0029'], **plotExperimentMale2)
ax2.set_ylim(0 ,500)

ax3.plot(simData_50F.SLED.Head_Disp_z.time-350., simData_50F.SLED.Head_Disp_z.displacement-38,  **plot50F)
ax3.plot(simData_50M.SLED.Head_Disp_z.time-350, simData_50M.SLED.Head_Disp_z.displacement-48,  **plot50M)
ax3.plot(experiment_50F['Time_Head_z_disp_s0212'], experiment_50F['Disp_Head_z_disp_s0212'],  **plotExperimentFemale)
ax3.plot(experiment_50F['Time_Head_z_disp_s0373'], experiment_50F['Disp_Head_z_disp_s0373'],  **plotExperimentFemale2)
ax3.plot(experiment_50M['Time_Head_z_disp_s0028'], experiment_50M['Disp_Head_z_disp_s0028'],  **plotExperimentMale)
ax3.plot(experiment_50M['Time_Head_z_disp_s0029'], experiment_50M['Disp_Head_z_disp_s0029'],  **plotExperimentMale2)
ax3.set_ylim(-100 ,500)

ax4.plot(simData_50F.SLED.T1_Disp_x.time-350., simData_50F.SLED.T1_Disp_x.displacement-simData_50F.SLED.Sled_Disp_x.displacement+6, **plot50F)
ax4.plot(simData_50M.SLED.T1_Disp_x.time-350, simData_50M.SLED.T1_Disp_x.displacement-simData_50M.SLED.Sled_Disp_x.displacement, **plot50M)
ax4.plot(experiment_50F['Time_T1_x_disp_s0212'], experiment_50F['Disp_T1_x_disp_s0212'], **plotExperimentFemale)
ax4.plot(experiment_50F['Time_T1_x_disp_s0373'], experiment_50F['Disp_T1_x_disp_s0373'], **plotExperimentFemale2)
ax4.plot(experiment_50M['Time_T1_x_disp_s0028'], experiment_50M['Disp_T1_x_disp_s0028'], **plotExperimentMale)
ax4.plot(experiment_50M['Time_T1_x_disp_s0029'], experiment_50M['Disp_T1_x_disp_s0029'], **plotExperimentMale2)
ax4.set_ylim(-100 ,400)

ax5.plot(simData_50F.SLED.T1_Disp_y.time-350., simData_50F.SLED.T1_Disp_y.displacement, **plot50F)
ax5.plot(simData_50M.SLED.T1_Disp_y.time-350, simData_50M.SLED.T1_Disp_y.displacement, **plot50M)
ax5.plot(experiment_50F['Time_T1_y_disp_s0212'], experiment_50F['Disp_T1_y_disp_s0212'], **plotExperimentFemale)
ax5.plot(experiment_50F['Time_T1_y_disp_s0373'], experiment_50F['Disp_T1_y_disp_s0373'], **plotExperimentFemale2)
ax5.plot(experiment_50M['Time_T1_y_disp_s0028'], experiment_50M['Disp_T1_y_disp_s0028'], **plotExperimentMale)
ax5.plot(experiment_50M['Time_T1_y_disp_s0029'], experiment_50M['Disp_T1_y_disp_s0029'], **plotExperimentMale2)
ax5.set_ylim(-100 ,400)

ax6.plot(simData_50F.SLED.T1_Disp_z.time-350., simData_50F.SLED.T1_Disp_z.displacement-35, **plot50F)
ax6.plot(simData_50M.SLED.T1_Disp_z.time-350, simData_50M.SLED.T1_Disp_z.displacement-35, **plot50M)
ax6.plot(experiment_50F['Time_T1_z_disp_s0212'], experiment_50F['Disp_T1_z_disp_s0212'], **plotExperimentFemale)
ax6.plot(experiment_50F['Time_T1_z_disp_s0373'], experiment_50F['Disp_T1_z_disp_s0373'], **plotExperimentFemale2)
ax6.plot(experiment_50M['Time_T1_z_disp_s0028'], experiment_50M['Disp_T1_z_disp_s0028'], **plotExperimentMale)
ax6.plot(experiment_50M['Time_T1_z_disp_s0029'], experiment_50M['Disp_T1_z_disp_s0029'], **plotExperimentMale2)
ax6.set_ylim(-100 ,400)

ax7.plot(simData_50F.SLED.T8_Disp_x.time-350., simData_50F.SLED.T8_Disp_x.displacement-simData_50F.SLED.Sled_Disp_x.displacement+10, **plot50F)
ax7.plot(simData_50M.SLED.T8_Disp_x.time-350, simData_50M.SLED.T8_Disp_x.displacement-simData_50M.SLED.Sled_Disp_x.displacement+10, **plot50M)
ax7.plot(experiment_50F['Time_T8_x_disp_s0212'], experiment_50F['Disp_T8_x_disp_s0212'], **plotExperimentFemale)
ax7.plot(experiment_50F['Time_T8_x_disp_s0373'], experiment_50F['Disp_T8_x_disp_s0373'], **plotExperimentFemale2)
ax7.plot(experiment_50M['Time_T8_x_disp_s0028'], experiment_50M['Disp_T8_x_disp_s0028'], **plotExperimentMale)
ax7.plot(experiment_50M['Time_T8_x_disp_s0029'], experiment_50M['Disp_T8_x_disp_s0029'], **plotExperimentMale2)
ax7.set_ylim(0 ,500)

ax8.plot(simData_50F.SLED.T8_Disp_y.time-350., simData_50F.SLED.T8_Disp_y.displacement, **plot50F)
ax8.plot(simData_50M.SLED.T8_Disp_y.time-350, simData_50M.SLED.T8_Disp_y.displacement, **plot50M)
ax8.plot(experiment_50F['Time_T8_y_disp_s0212'], experiment_50F['Disp_T8_y_disp_s0212'], **plotExperimentFemale)
ax8.plot(experiment_50F['Time_T8_y_disp_s0373'], experiment_50F['Disp_T8_y_disp_s0373'], **plotExperimentFemale2)
ax8.plot(experiment_50M['Time_T8_y_disp_s0028'], experiment_50M['Disp_T8_y_disp_s0028'], **plotExperimentMale)
ax8.plot(experiment_50M['Time_T8_y_disp_s0029'], experiment_50M['Disp_T8_y_disp_s0029'], **plotExperimentMale2)
ax8.set_ylim(-100 ,400)

ax9.plot(simData_50F.SLED.T8_Disp_z.time-350., simData_50F.SLED.T8_Disp_z.displacement-33, **plot50F)
ax9.plot(simData_50M.SLED.T8_Disp_z.time-350, simData_50M.SLED.T8_Disp_z.displacement-33, **plot50M)
ax9.plot(experiment_50F['Time_T8_z_disp_s0212'], experiment_50F['Disp_T8_z_disp_s0212'], **plotExperimentFemale)
ax9.plot(experiment_50F['Time_T8_z_disp_s0373'], experiment_50F['Disp_T8_z_disp_s0373'], **plotExperimentFemale2)
ax9.plot(experiment_50M['Time_T8_z_disp_s0028'], experiment_50M['Disp_T8_z_disp_s0028'], **plotExperimentMale)
ax9.plot(experiment_50M['Time_T8_z_disp_s0029'], experiment_50M['Disp_T8_z_disp_s0029'], **plotExperimentMale2)
ax9.set_ylim(-100 ,400)

ax10.plot(simData_50F.SLED.L2_Disp_x.time-350., simData_50F.SLED.L2_Disp_x.displacement-simData_50F.SLED.Sled_Disp_x.displacement+7, **plot50F)
ax10.plot(simData_50M.SLED.L2_Disp_x.time-350, simData_50M.SLED.L2_Disp_x.displacement-simData_50M.SLED.Sled_Disp_x.displacement+7, **plot50M)
ax10.plot(experiment_50F['Time_L2_x_disp_s0212'], experiment_50F['Disp_L2_x_disp_s0212'], **plotExperimentFemale)
ax10.plot(experiment_50F['Time_L2_x_disp_s0373'], experiment_50F['Disp_L2_x_disp_s0373'], **plotExperimentFemale2)
ax10.plot(experiment_50M['Time_L2_x_disp_s0028'], experiment_50M['Disp_L2_x_disp_s0028'], **plotExperimentMale)
ax10.plot(experiment_50M['Time_L2_x_disp_s0029'], experiment_50M['Disp_L2_x_disp_s0029'], **plotExperimentMale2)
ax10.set_ylim(-100 ,400)

ax11.plot(simData_50F.SLED.L2_Disp_y.time-350., simData_50F.SLED.L2_Disp_y.displacement, **plot50F)
ax11.plot(simData_50M.SLED.L2_Disp_y.time-350, simData_50M.SLED.L2_Disp_y.displacement, **plot50M)
ax11.plot(experiment_50F['Time_L2_y_disp_s0212'], experiment_50F['Disp_L2_y_disp_s0212'], **plotExperimentFemale)
ax11.plot(experiment_50F['Time_L2_y_disp_s0373'], experiment_50F['Disp_L2_y_disp_s0373'], **plotExperimentFemale2)
ax11.plot(experiment_50M['Time_L2_y_disp_s0028'], experiment_50M['Disp_L2_y_disp_s0028'], **plotExperimentMale)
ax11.plot(experiment_50M['Time_L2_y_disp_s0029'], experiment_50M['Disp_L2_y_disp_s0029'], **plotExperimentMale2)
ax11.set_ylim(-100 ,400)

ax12.plot(simData_50F.SLED.L2_Disp_z.time-350., simData_50F.SLED.L2_Disp_z.displacement-30, **plot50F)
ax12.plot(simData_50M.SLED.L2_Disp_z.time-350, simData_50M.SLED.L2_Disp_z.displacement-30, **plot50M)
ax12.plot(experiment_50F['Time_L2_z_disp_s0212'], experiment_50F['Disp_L2_z_disp_s0212'], **plotExperimentFemale)
ax12.plot(experiment_50F['Time_L2_z_disp_s0373'], experiment_50F['Disp_L2_z_disp_s0373'], **plotExperimentFemale2)
ax12.plot(experiment_50M['Time_L2_z_disp_s0028'], experiment_50M['Disp_L2_z_disp_s0028'], **plotExperimentMale)
ax12.plot(experiment_50M['Time_L2_z_disp_s0029'], experiment_50M['Disp_L2_z_disp_s0029'], **plotExperimentMale2)
ax12.set_ylim(-100 ,400)

ax13.plot(simData_50F.SLED.Pelvis_Disp_x.time-350., simData_50F.SLED.Pelvis_Disp_x.displacement-simData_50F.SLED.Sled_Disp_x.displacement+12, **plot50F)
ax13.plot(simData_50M.SLED.Pelvis_Disp_x.time-350, simData_50M.SLED.Pelvis_Disp_x.displacement-simData_50M.SLED.Sled_Disp_x.displacement+7, **plot50M)
ax13.plot(experiment_50F['Time_Pelvis_x_disp_s0212'], experiment_50F['Disp_Pelvis_x_disp_s0212'], **plotExperimentFemale)
ax13.plot(experiment_50F['Time_Pelvis_x_disp_s0373'], experiment_50F['Disp_Pelvis_x_disp_s0373'], **plotExperimentFemale2)
ax13.plot(experiment_50M['Time_Pelvis_x_disp_s0028'], experiment_50M['Disp_Pelvis_x_disp_s0028'], **plotExperimentMale)
ax13.plot(experiment_50M['Time_Pelvis_x_disp_s0029'], experiment_50M['Disp_Pelvis_x_disp_s0029'], **plotExperimentMale2)
ax13.set_ylim(-100 ,400)

ax14.plot(simData_50F.SLED.Pelvis_Disp_y.time-350., simData_50F.SLED.Pelvis_Disp_y.displacement, **plot50F)
ax14.plot(simData_50M.SLED.Pelvis_Disp_y.time-350, simData_50M.SLED.Pelvis_Disp_y.displacement, **plot50M)
ax14.plot(experiment_50F['Time_Pelvis_y_disp_s0212'], experiment_50F['Disp_Pelvis_y_disp_s0212'], **plotExperimentFemale)
ax14.plot(experiment_50F['Time_Pelvis_y_disp_s0373'], experiment_50F['Disp_Pelvis_y_disp_s0373'], **plotExperimentFemale2)
ax14.plot(experiment_50M['Time_Pelvis_y_disp_s0028'], experiment_50M['Disp_Pelvis_y_disp_s0028'], **plotExperimentMale)
ax14.plot(experiment_50M['Time_Pelvis_y_disp_s0029'], experiment_50M['Disp_Pelvis_y_disp_s0029'], **plotExperimentMale2)
ax14.set_ylim(-100 ,400)

ax15.plot(simData_50F.SLED.Pelvis_Disp_z.time-350., simData_50F.SLED.Pelvis_Disp_z.displacement-29, **plot50F)
ax15.plot(simData_50M.SLED.Pelvis_Disp_z.time-350, simData_50M.SLED.Pelvis_Disp_z.displacement-20, **plot50M)
ax15.plot(experiment_50F['Time_Pelvis_z_disp_s0212'], experiment_50F['Disp_Pelvis_z_disp_s0212'], **plotExperimentFemale)
ax15.plot(experiment_50F['Time_Pelvis_z_disp_s0373'], experiment_50F['Disp_Pelvis_z_disp_s0373'], **plotExperimentFemale2)
ax15.plot(experiment_50M['Time_Pelvis_z_disp_s0028'], experiment_50M['Disp_Pelvis_z_disp_s0028'], **plotExperimentMale)
ax15.plot(experiment_50M['Time_Pelvis_z_disp_s0029'], experiment_50M['Disp_Pelvis_z_disp_s0029'], **plotExperimentMale2)
ax15.set_ylim(-100 ,400)

fig_Kin.legend(loc='center left', bbox_to_anchor=(1, 0.5));
fig_Kin.tight_layout(pad=0.9);
../_images/31f5490b9c5a1629235b64dc23ef66b44c7f4dc5e89967e4a7ab822a44c7110f.png

Shoulder kinematic Plots#

In the figure below the predicted shoulder kinematics is compared to PMHS results for the 50F and 50M models.

Hide code cell source
fig_Sh, ((ax1, ax2, ax3),(ax4, ax5, ax6)) = plt.subplots(nrows=2, ncols=3, figsize=(15,10), 
                                                    sharex=True, sharey=True)
fig_Sh.suptitle('Shoulder kinematics')

ax1.set_ylabel('Displacement (mm)')
ax4.set_ylabel('Displacement (mm)')
ax1.set(title='Right Shoulder X', xlabel='time (ms)')
ax2.set(title='Right Shoulder Y', xlabel='time (ms)')
ax3.set(title='Right Shoulder Z', xlabel='time (ms)')
ax4.set(title='Left Shoulder X', xlabel='time (ms)')
ax5.set(title='Left Shoulder Y', xlabel='time (ms)')
ax6.set(title='Left Shoulder Z', xlabel='time (ms)')

ax1.plot(simData_50F.SLED.Right_shoulder_Disp_x.time-350., simData_50F.SLED.Right_shoulder_Disp_x.displacement-simData_50F.SLED.Sled_Disp_x.displacement+7, label = "VIVA+ 50F", **plot50F)
ax1.plot(simData_50M.SLED.Right_shoulder_Disp_x.time-350, simData_50M.SLED.Right_shoulder_Disp_x.displacement-simData_50M.SLED.Sled_Disp_x.displacement, label = "VIVA+ 50M", **plot50M)
ax1.plot(experiment_50F['Time_R_shoulder_x_disp_s0212'], experiment_50F['Disp_R_shoulder_x_disp_s0212'], label = "s0212",  **plotExperimentFemale)
ax1.plot(experiment_50F['Time_R_shoulder_x_disp_s0373'], experiment_50F['Disp_R_shoulder_x_disp_s0373'], label = "s0373",  **plotExperimentFemale2)
ax1.plot(experiment_50M['Time_R_shoulder_x_disp_s0028'], experiment_50M['Disp_R_shoulder_x_disp_s0028'], label = "s0028",  **plotExperimentMale)
ax1.plot(experiment_50M['Time_R_shoulder_x_disp_s0029'], experiment_50M['Disp_R_shoulder_x_disp_s0029'], label = "s0029",  **plotExperimentMale2)


ax2.plot(simData_50F.SLED.Right_shoulder_Disp_y.time-350., simData_50F.SLED.Right_shoulder_Disp_y.displacement, **plot50F)
ax2.plot(simData_50M.SLED.Right_shoulder_Disp_y.time-350, simData_50M.SLED.Right_shoulder_Disp_y.displacement, **plot50M)
ax2.plot(experiment_50F['Time_R_shoulder_y_disp_s0212'], experiment_50F['Disp_R_shoulder_y_disp_s0212'], **plotExperimentFemale)
ax2.plot(experiment_50F['Time_R_shoulder_y_disp_s0373'], experiment_50F['Disp_R_shoulder_y_disp_s0373'], **plotExperimentFemale2)
ax2.plot(experiment_50M['Time_R_shoulder_y_disp_s0028'], experiment_50M['Disp_R_shoulder_y_disp_s0028'], **plotExperimentMale)
ax2.plot(experiment_50M['Time_R_shoulder_y_disp_s0029'], experiment_50M['Disp_R_shoulder_y_disp_s0029'], **plotExperimentMale2)
ax2.set_xlim(0,200)
ax2.set_ylim(-200 ,450)

ax3.plot(simData_50F.SLED.Right_shoulder_Disp_z.time-350., simData_50F.SLED.Right_shoulder_Disp_z.displacement-42,  **plot50F)
ax3.plot(simData_50M.SLED.Right_shoulder_Disp_z.time-350, simData_50M.SLED.Right_shoulder_Disp_z.displacement-40,  **plot50M)
ax3.plot(experiment_50F['Time_R_shoulder_z_disp_s0212'], experiment_50F['Disp_R_shoulder_z_disp_s0212'],  **plotExperimentFemale)
ax3.plot(experiment_50F['Time_R_shoulder_z_disp_s0373'], experiment_50F['Disp_R_shoulder_z_disp_s0373'],  **plotExperimentFemale2)
ax3.plot(experiment_50M['Time_R_shoulder_z_disp_s0028'], experiment_50M['Disp_R_shoulder_z_disp_s0028'],  **plotExperimentMale)
ax3.plot(experiment_50M['Time_R_shoulder_z_disp_s0029'], experiment_50M['Disp_R_shoulder_z_disp_s0029'],  **plotExperimentMale2)


ax4.plot(simData_50F.SLED.Left_shoulder_Disp_x.time-350., simData_50F.SLED.Left_shoulder_Disp_x.displacement-simData_50F.SLED.Sled_Disp_x.displacement+7,  **plot50F)
ax4.plot(simData_50M.SLED.Left_shoulder_Disp_x.time-350, simData_50M.SLED.Left_shoulder_Disp_x.displacement-simData_50M.SLED.Sled_Disp_x.displacement,  **plot50M)
ax4.plot(experiment_50F['Time_L_shoulder_x_disp_s0212'], experiment_50F['Disp_L_shoulder_x_disp_s0212'], **plotExperimentFemale)
ax4.plot(experiment_50F['Time_L_shoulder_x_disp_s0373'], experiment_50F['Disp_L_shoulder_x_disp_s0373'], **plotExperimentFemale2)
ax4.plot(experiment_50M['Time_L_shoulder_x_disp_s0028'], experiment_50M['Disp_L_shoulder_x_disp_s0028'], **plotExperimentMale)
ax4.plot(experiment_50M['Time_L_shoulder_x_disp_s0029'], experiment_50M['Disp_L_shoulder_x_disp_s0029'], **plotExperimentMale2)


ax5.plot(simData_50F.SLED.Left_shoulder_Disp_y.time-350., simData_50F.SLED.Left_shoulder_Disp_y.displacement, **plot50F)
ax5.plot(simData_50M.SLED.Left_shoulder_Disp_y.time-350, simData_50M.SLED.Left_shoulder_Disp_y.displacement, **plot50M)
ax5.plot(experiment_50F['Time_L_shoulder_y_disp_s0212'], experiment_50F['Disp_L_shoulder_y_disp_s0212'], **plotExperimentFemale)
ax5.plot(experiment_50F['Time_L_shoulder_y_disp_s0373'], experiment_50F['Disp_L_shoulder_y_disp_s0373'], **plotExperimentFemale2)
ax5.plot(experiment_50M['Time_L_shoulder_y_disp_s0028'], experiment_50M['Disp_L_shoulder_y_disp_s0028'], **plotExperimentMale)
ax5.plot(experiment_50M['Time_L_shoulder_y_disp_s0029'], experiment_50M['Disp_L_shoulder_y_disp_s0029'], **plotExperimentMale2)

ax6.plot(simData_50F.SLED.Left_shoulder_Disp_z.time-350., simData_50F.SLED.Left_shoulder_Disp_z.displacement-42,  **plot50F)
ax6.plot(simData_50M.SLED.Left_shoulder_Disp_z.time-350, simData_50M.SLED.Left_shoulder_Disp_z.displacement-40,  **plot50M)
ax6.plot(experiment_50F['Time_L_shoulder_z_disp_s0212'], experiment_50F['Disp_L_shoulder_z_disp_s0212'],  **plotExperimentFemale)
ax6.plot(experiment_50F['Time_L_shoulder_z_disp_s0373'], experiment_50F['Disp_L_shoulder_z_disp_s0373'],  **plotExperimentFemale2)
ax6.plot(experiment_50M['Time_L_shoulder_z_disp_s0028'], experiment_50M['Disp_L_shoulder_z_disp_s0028'],  **plotExperimentMale)
ax6.plot(experiment_50M['Time_L_shoulder_z_disp_s0029'], experiment_50M['Disp_L_shoulder_z_disp_s0029'],  **plotExperimentMale2)


fig_Sh.legend(loc='center left', bbox_to_anchor=(1, 0.5));
fig_Sh.tight_layout(pad=0.9)
../_images/07e78e2e4cc8dec90875b2a4bf5afdcfe92d520624fa1721233d37c5f24f90e2.png

Chest compression#

In the figure below the predicted chest compression is compared to PMHS results for the 50F and 50M models.

Hide code cell source
fig_Chest, ((ax1, ax2, ax3),(ax4, ax5 , ax6),(ax7, ax8 , ax9)) = plt.subplots(nrows=3, ncols=3, figsize=(15,15),
                                                                            sharex=True, sharey=True)
fig_Chest.suptitle('Chest compression')

ax1.set_ylabel('Displacement (mm)')
ax4.set_ylabel('Displacement (mm)')
ax1.set(title='Sternum X', xlabel='time (ms)')
ax2.set(title='Sternum Y', xlabel='time (ms)')
ax3.set(title='Sternum Z', xlabel='time (ms)')
ax4.set(title='Upper Right X', xlabel='time (ms)')
ax6.set(title='Upper Left X', xlabel='time (ms)')
ax7.set(title='Lower Right X', xlabel='time (ms)')
ax9.set(title='Lower Left X', xlabel='time (ms)')

ax1.plot(simData_50F.SLED.Sternum_Disp_x.time-350., simData_50F.SLED.Sternum_Disp_x.displacement-1, label = "VIVA+ 50F", **plot50F)
ax1.plot(simData_50M.SLED.Sternum_Disp_x.time-350, simData_50M.SLED.Sternum_Disp_x.displacement-4, label = "VIVA+ 50M", **plot50M)
ax1.plot(experiment_50F['Time_sternum_x_s0212'], experiment_50F['Disp_sternum_x_s0212'], label = "s0212",  **plotExperimentFemale)
ax1.plot(experiment_50F['Time_sternum_x_s0373'], experiment_50F['Disp_sternum_x_s0373'], label = "s0373",  **plotExperimentFemale2)
ax1.plot(experiment_50M['Time_sternum_x_s0028'], experiment_50M['Disp_sternum_x_s0028'], label = "s0028",  **plotExperimentMale)
ax1.plot(experiment_50M['Time_sternum_x_s0029'], experiment_50M['Disp_sternum_x_s0029'], label = "s0029",  **plotExperimentMale2)
# ax1.set_xlim(0,200)
# ax1.set_ylim(-40 ,10)

ax2.plot(simData_50F.SLED.Sternum_Disp_y.time-350., simData_50F.SLED.Sternum_Disp_y.displacement, **plot50F)
ax2.plot(simData_50M.SLED.Sternum_Disp_y.time-350, simData_50M.SLED.Sternum_Disp_y.displacement, **plot50M)
ax2.plot(experiment_50F['Time_sternum_y_s0212'], experiment_50F['Disp_sternum_y_s0212'], **plotExperimentFemale)
ax2.plot(experiment_50F['Time_sternum_y_s0373'], experiment_50F['Disp_sternum_y_s0373'], **plotExperimentFemale2)
ax2.plot(experiment_50M['Time_sternum_y_s0028'], experiment_50M['Disp_sternum_y_s0028'], **plotExperimentMale)
ax2.plot(experiment_50M['Time_sternum_y_s0029'], experiment_50M['Disp_sternum_y_s0029'], **plotExperimentMale2)
# ax2.set_xlim(0,200)
# ax2.set_ylim(-20 ,30)

ax3.plot(simData_50F.SLED.Sternum_Disp_z.time-350., simData_50F.SLED.Sternum_Disp_z.displacement-6,  **plot50F)
ax3.plot(simData_50M.SLED.Sternum_Disp_z.time-350, simData_50M.SLED.Sternum_Disp_z.displacement-3,  **plot50M)
ax3.plot(experiment_50F['Time_sternum_z_s0212'], experiment_50F['Disp_sternum_z_s0212'],  **plotExperimentFemale)
ax3.plot(experiment_50F['Time_sternum_z_s0373'], experiment_50F['Disp_sternum_z_s0373'],  **plotExperimentFemale2)
ax3.plot(experiment_50M['Time_sternum_z_s0028'], experiment_50M['Disp_sternum_z_s0028'],  **plotExperimentMale)
ax3.plot(experiment_50M['Time_sternum_z_s0029'], experiment_50M['Disp_sternum_z_s0029'],  **plotExperimentMale2)
# ax3.set_xlim(0,200)
# ax3.set_ylim(-20 ,30)

ax4.plot(simData_50F.SLED.Upper_right_Disp_x.time-350., simData_50F.SLED.Upper_right_Disp_x.displacement,  **plot50F)
ax4.plot(simData_50M.SLED.Upper_right_Disp_x.time-350, simData_50M.SLED.Upper_right_Disp_x.displacement-4, **plot50M)
ax4.plot(experiment_50F['Time_Upper_right_x_s0212'], experiment_50F['Disp_Upper_right_x_s0212'], **plotExperimentFemale)
ax4.plot(experiment_50F['Time_Upper_right_x_s0373'], experiment_50F['Disp_Upper_right_x_s0373'], **plotExperimentFemale2)
ax4.plot(experiment_50M['Time_Upper_right_x_s0028'], experiment_50M['Disp_Upper_right_x_s0028'], **plotExperimentMale)
ax4.plot(experiment_50M['Time_Upper_right_x_s0029'], experiment_50M['Disp_Upper_right_x_s0029'], **plotExperimentMale2)
# ax4.set_xlim(0,200)
# ax4.set_ylim(-30 ,20)

ax6.plot(simData_50F.SLED.Upper_left_Disp_x.time-350., simData_50F.SLED.Upper_left_Disp_x.displacement,  **plot50F)
ax6.plot(simData_50M.SLED.Upper_left_Disp_x.time-350, simData_50M.SLED.Upper_left_Disp_x.displacement-4, **plot50M)
ax6.plot(experiment_50F['Time_Upper_left_x_s0212'], experiment_50F['Disp_Upper_left_x_s0212'], **plotExperimentFemale)
ax6.plot(experiment_50F['Time_Upper_left_x_s0373'], experiment_50F['Disp_Upper_left_x_s0373'], **plotExperimentFemale2)
ax6.plot(experiment_50M['Time_Upper_left_x_s0028'], experiment_50M['Disp_Upper_left_x_s0028'], **plotExperimentMale)
ax6.plot(experiment_50M['Time_Upper_left_x_s0029'], experiment_50M['Disp_Upper_left_x_s0029'], **plotExperimentMale2)
# ax6.set_xlim(0,200)
# ax6.set_ylim(-40 ,10)

ax7.plot(simData_50F.SLED.Lower_right_Disp_x.time-350., simData_50F.SLED.Lower_right_Disp_x.displacement+3,  **plot50F)
ax7.plot(simData_50M.SLED.Lower_right_Disp_x.time-350, simData_50M.SLED.Lower_right_Disp_x.displacement-3, **plot50M)
ax7.plot(experiment_50F['Time_Lower_right_x_s0212'], experiment_50F['Disp_Lower_right_x_s0212'], **plotExperimentFemale)
ax7.plot(experiment_50F['Time_Lower_right_x_s0373'], experiment_50F['Disp_lower_right_x_s0373'], **plotExperimentFemale2)
ax7.plot(experiment_50M['Time_Lower_right_x_s0028'], experiment_50M['Disp_Lower_right_x_s0028'], **plotExperimentMale)
ax7.plot(experiment_50M['Time_Lower_right_x_s0029'], experiment_50M['Disp_lower_right_x_s0029'], **plotExperimentMale2)
# ax7.set_xlim(0,200)
# ax7.set_ylim(-10 ,40)

ax9.plot(simData_50F.SLED.Lower_left_Disp_x.time-350., simData_50F.SLED.Lower_left_Disp_x.displacement+3,  **plot50F)
ax9.plot(simData_50M.SLED.Lower_left_Disp_x.time-350, simData_50M.SLED.Lower_left_Disp_x.displacement-3, **plot50M)
ax9.plot(experiment_50F['Time_Lower_left_x_s0212'], experiment_50F['Disp_Lower_left_x_s0212'], **plotExperimentFemale)
ax9.plot(experiment_50F['Time_Lower_left_x_s0373'], experiment_50F['Disp_lower_left_x_s0373'], **plotExperimentFemale2)
ax9.plot(experiment_50M['Time_Lower_left_x_s0028'], experiment_50M['Disp_Lower_left_x_s0028'], **plotExperimentMale)
ax9.plot(experiment_50M['Time_Lower_left_x_s0029'], experiment_50M['Disp_lower_left_x_s0029'], **plotExperimentMale2)
ax9.set_xlim(0,200)
#ax9.set_ylim(-40 ,20)
ax9.set_ylim(-40 ,50)


fig_Chest.legend(loc='center left', bbox_to_anchor=(0.5, 0.5));
fig_Chest.tight_layout(pad=1.0)
fig_Chest.delaxes(ax5)
fig_Chest.delaxes(ax8);
../_images/7998f0de8d54cbbc90a7714271fb8d553c54f3d03856c112c61e68d8dc3fa7d1.png