Farside Sledtests (Forman 2013)#

Model validation information

  • Performed by : Johan Iraeus

  • Notebook preparation/review by : Corina Klug

Added to VIVA+ Validation Catalog on : 2022-01-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 Forman et al. (2013)#

Summary:#

The simulated outputs are compared to the references from PMHS tests reported by Forman et al., 2013

Forman, J. L., Lopez-Valdes, F., Lessley, D. J., Riley, P., Sochor, M., Heltzel, S., et al. (2013). Occupant kinematics and shoulder belt retention in far-side lateral and oblique collisions: a parametric study. Stapp Car Crash J 57, 343–385.

Experiment#

Information on the subjects/specimens#

Subject #

Age

Mass

Statur

Sex

other comments

557

67

91

174

m

551

67

83

171

m

559

60

73

175

m

limited CPR performed at the time of death, but no rib fractures were observed on the pre-test CT

591

44

86

182

m

possibly two pre-existing rib fractures

587

70

91

180

m

multiple pre-existig rib fractures

602

61

79

178

m

608

56

79

172

m

Loading and Boundary Conditions#

6 different configurations of farside sledtests were used in line with Pipkorn, B., Larsson, K.-J., Perez-Rapela, D., Markusic, C., Whitcomb, B., Ayyagari, M., et al. (2018). “Occupant Protection in Far‐Side Impacts,” in 2018 IRCOBI Conference Proceedings, ed. International Research Council on the Biomechanics of Injury (IRCOBI), 76–105.

Configuration

Delta v [km/h]

Impact Direction [°]

D-Ring position

Pre-tesioning

Pelvis blocked

PMHS ID

Test ID

1

34

60

Middle

Yes

No

591,602

S0124, S0135

2

16

60

Middle

No

No

591,602,608

S0233,S0133,S0136

3

16

60

Middle

Yes

No

591,602,608

S0123

4

16

60

Back

Yes

Yes

587

S0129

5

16

90

Forward

Yes

No

551,559

S0083,S0088

6

34

90

Middle

Yes

No

559

S0091

Positioning#

Positionig happens within the first 350 ms of the simulations, which is considered by a time offset within the graphs. The VIVA+ 50M model was used in its original anthropometry (without scaling/morphing)

Other Notes for simulation#

During the first 350 ms the simulation model is gravity settled, and tensioning the belt. During the first 300 ms global damping is applied.

Results for different configurations#

Configuration 1#

Hide code cell content
simData_50M=simData_50M_Config1
Loadcase="Config1"

In the figure below the energy balance for configuration 1 is shown

Hide code cell source
fig_energy, axs = plt.subplots(nrows=1, ncols=1)
fig_energy.suptitle('Model Energies')
#plt.set_title('Simulation #1')
#plt.set_ylabel('Energies (J)')

plt.plot(simData_50M.MODEL.Hourglass_Energy.time,simData_50M.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
plt.plot(simData_50M.MODEL.Internal_Energy.time, simData_50M.MODEL.Internal_Energy.energy, label = "Internal Energy")
plt.plot(simData_50M.MODEL.Kinetic_Energy.time, simData_50M.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
plt.plot(simData_50M.MODEL.Total_Energy.time, simData_50M.MODEL.Total_Energy.energy, label = "Total Energy")

plt.xlabel("Time [ms]") 
plt.ylabel("Energy [kJ]")
plt.legend();
../_images/0b17b86da82f8d76449c76a9244949e39d84f0d3468792424fce34006d8fd36e.png

Belt Forces#

Hide code cell source
fig_1, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_sh_upper'], PMHS_Tests[Loadcase]['Force_belt_sh_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_sh_lower'], PMHS_Tests[Loadcase]['Force_belt_sh_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_shoulder_belt_force=simData_50M['BELT']['Belt-force-Shoulder-1']['force']+simData_50M['BELT']['Belt-force-Shoulder-2']['force']
ax.plot(simData_50M['BELT']['Belt-force-Shoulder-1']['time']-350,sim_shoulder_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Shoulder", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200), ylim=(0,7000))

ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))
<matplotlib.legend.Legend at 0x24708abe4c8>
../_images/22153bca3da54fbd239b20b202a492aea2a4618d1e705114a307fca3c9114c34.png
Hide code cell source
fig_2, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_side_upper'], PMHS_Tests[Loadcase]['Force_belt_side_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_side_lower'], PMHS_Tests[Loadcase]['Force_belt_side_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_shoulder_belt_force=simData_50M['BELT']['Belt-force-Side-1']['force']+simData_50M['BELT']['Belt-force-Side-2']['force']
ax.plot(simData_50M['BELT']['Belt-force-Side-1']['time']-350,sim_shoulder_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Side", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200),ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))
<matplotlib.legend.Legend at 0x24706f93308>
../_images/3352eaf66fd9fe562e0d97cde5e5daa0f32f38a7a28d6400bee5ebd6056f95db.png
Hide code cell source
fig_3, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests['Config1']['Time_belt_lap_upper'], PMHS_Tests['Config1']['Force_belt_lap_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests['Config1']['Time_belt_lap_lower'], PMHS_Tests['Config1']['Force_belt_lap_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_belt_force=simData_50M['BELT']['Lap-Belt-Force']['force']
ax.plot(simData_50M['BELT']['Lap-Belt-Force']['time']-350,sim_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Lap", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200), ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))
<matplotlib.legend.Legend at 0x247089efc08>
../_images/fcb66bf1b086ee54e3c75bf968713140f29cc6921868c37354d15955e495b6f6.png

Kinematics#

The figures below compares the predicted kinematics with teh kinematics from the PMHS tests, for the shoulder, pelvis, head and thoracic spine.

Acromium#

Hide code cell source
fig_4, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_left_acr_x_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_left_acr_x_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['UX-Scapula-PC-L-Disp_x']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Left Acromium x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_left_acr_y_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_left_acr_y_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Left Acromium y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_left_acr_z_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_left_acr_z_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-L-Disp_z']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Left Acromium z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_4.tight_layout(pad=0.1)
ay.legend(loc='upper center', bbox_to_anchor=(0.5, 1.3),
          fancybox=True, shadow=True, ncol=5)
<matplotlib.legend.Legend at 0x247066ed6c8>
../_images/1b9d17a69f165b3f8c041780554398e62547902ed3d3411e043dd5072d4f5189.png
Hide code cell source
fig_5, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_right_acr_x_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_right_acr_x_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['UX-Scapula-PC-R-Disp_x']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Right Acromium x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_right_acr_y_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_right_acr_y_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Right Acromium y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_right_acr_z_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_right_acr_z_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-R-Disp_z']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Right Acromium z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_5.tight_layout(pad=0.1)
ay.legend(loc='upper center', bbox_to_anchor=(0.5, 1.3),
          fancybox=True, shadow=True, ncol=5)
<matplotlib.legend.Legend at 0x24706055808>
../_images/d6c4e91b20ffe43611dce69c3ce00e14f0a9df134f6bfe16d98c62f744b3453e.png

Head CoG#

Hide code cell source
fig_6, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_Head_x_upper'], PMHS_Tests['Config1']['Displ_Head_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_Head_x_lower'], PMHS_Tests['Config1']['Displ_Head_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_x']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Head CoG x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_Head_y_upper'], PMHS_Tests['Config1']['Displ_Head_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_Head_y_lower'], PMHS_Tests['Config1']['Displ_Head_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Head CoG y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_Head_z_upper'], PMHS_Tests['Config1']['Displ_Head_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_Head_z_lower'], PMHS_Tests['Config1']['Displ_Head_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_z']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Head CoG z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_6.tight_layout(pad=0.1)
ay.legend(loc='upper center', bbox_to_anchor=(0.5, 1.3),
          fancybox=True, shadow=True, ncol=5)
<matplotlib.legend.Legend at 0x24706248f88>
../_images/1aeda83f166bd47fa91a735450f5cc9218ffa0e84ff843caff06e52e4dc0baea.png

Pelvis#

Hide code cell source
fig_7, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_pelvis_x_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_pelvis_x_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['PE-Sacrum-posterior-Disp_x']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Pelvis x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_pelvis_y_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_pelvis_y_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Pelvis y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_pelvis_z_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_pelvis_z_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['PE-Sacrum-posterior-Disp_z']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Pelvis z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_7.tight_layout(pad=0.1)
ay.legend(loc='upper center', bbox_to_anchor=(0.5, 1.3),
          fancybox=True, shadow=True, ncol=5)
<matplotlib.legend.Legend at 0x247064a3e48>
../_images/cb7548cea1c0c3b7d56afd116db229ba055cab75b7f43f6a9cf8d99171cb0455.png

Thoraic Spine (T1)#

Hide code cell source
fig_8, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_T1_x_upper'], PMHS_Tests[Loadcase]['Displ_T1_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_T1_x_lower'], PMHS_Tests[Loadcase]['Displ_T1_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['TX-T1_COG-Disp_x']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="T1 x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_T1_y_upper'], PMHS_Tests[Loadcase]['Displ_T1_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_T1_y_lower'], PMHS_Tests[Loadcase]['Displ_T1_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['TX-T1_COG-Disp_y']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['TX-T1_COG-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="T1 y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_T1_z_upper'], PMHS_Tests[Loadcase]['Displ_T1_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_T1_z_lower'], PMHS_Tests[Loadcase]['Displ_T1_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['TX-T1_COG-Disp_z']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M)
az.set(title="T1 z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_8.tight_layout(pad=0.1)
ay.legend(loc='upper center', bbox_to_anchor=(0.5, 1.3),
          fancybox=True, shadow=True, ncol=5)
<matplotlib.legend.Legend at 0x24706527cc8>
../_images/1706869e5490ebb80acdfb2f4caaaf45a5fb2326cb51c086504f9ea46a0ff521.png

Configuration 2#

Energies#

In the figure below the energy balance for configuration 2 is shown

Hide code cell source
### Energies

fig_energy, axs = plt.subplots(nrows=1, ncols=1)
fig_energy.suptitle('Model Energies')

plt.plot(simData_50M.MODEL.Hourglass_Energy.time,simData_50M.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
plt.plot(simData_50M.MODEL.Internal_Energy.time, simData_50M.MODEL.Internal_Energy.energy, label = "Internal Energy")
plt.plot(simData_50M.MODEL.Kinetic_Energy.time, simData_50M.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
plt.plot(simData_50M.MODEL.Total_Energy.time, simData_50M.MODEL.Total_Energy.energy, label = "Total Energy")

plt.xlabel("Time [ms]") 
plt.ylabel("Energy [kJ]")
plt.legend();
../_images/ad83a9cb1f9afb1d44944b335d83616d3fff84b151ffbb6e976e76dcd36bfa52.png

Belt Forces#

Hide code cell source
fig_1, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_sh_upper'], PMHS_Tests[Loadcase]['Force_belt_sh_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_sh_lower'], PMHS_Tests[Loadcase]['Force_belt_sh_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_shoulder_belt_force=simData_50M['BELT']['Belt-force-Shoulder-1']['force']+simData_50M['BELT']['Belt-force-Shoulder-2']['force']
ax.plot(simData_50M['BELT']['Belt-force-Shoulder-1']['time']-350,sim_shoulder_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Shoulder", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200), ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

fig_2, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_side_upper'], PMHS_Tests[Loadcase]['Force_belt_side_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_side_lower'], PMHS_Tests[Loadcase]['Force_belt_side_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_shoulder_belt_force=simData_50M['BELT']['Belt-force-Side-1']['force']+simData_50M['BELT']['Belt-force-Side-2']['force']
ax.plot(simData_50M['BELT']['Belt-force-Side-1']['time']-350,sim_shoulder_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Side", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200),ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

fig_3, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests['Config1']['Time_belt_lap_upper'], PMHS_Tests['Config1']['Force_belt_lap_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests['Config1']['Time_belt_lap_lower'], PMHS_Tests['Config1']['Force_belt_lap_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_belt_force=simData_50M['BELT']['Lap-Belt-Force']['force']
ax.plot(simData_50M['BELT']['Lap-Belt-Force']['time']-350,sim_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Lap", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200), ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5));
<matplotlib.legend.Legend at 0x24708090888>
../_images/8d223cb8117405f811c1ecba0f7e025060fcef82465716362aea24ddbdd8f6a4.png ../_images/a819446349b3a3d5cdda932efac1296a051ee1c5f7e9bee528a385aa4789aaf8.png ../_images/effd9c3119e009b9739bcb62edffc484d07f409611ed5356eb8314fa168c9df8.png

Kinematics#

The figures below compares the predicted kinematics with teh kinematics from the PMHS tests, for the shoulder, pelvis, head and thoracic spine.

Hide code cell source
fig_4, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_left_acr_x_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_left_acr_x_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['UX-Scapula-PC-L-Disp_x']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Left Acromium x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_left_acr_y_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_left_acr_y_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Left Acromium y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_left_acr_z_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_left_acr_z_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-L-Disp_z']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Left Acromium z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))
fig_4.tight_layout(pad=0.1)
ay.legend(loc='upper center', bbox_to_anchor=(0.5, 1.3),fancybox=True, shadow=True, ncol=5)



fig_5, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_right_acr_x_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_right_acr_x_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['UX-Scapula-PC-R-Disp_x']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Right Acromium x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_right_acr_y_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_right_acr_y_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Right Acromium y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_right_acr_z_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_right_acr_z_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-R-Disp_z']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Right Acromium z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_5.tight_layout(pad=0.1)

fig_6, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_Head_x_upper'], PMHS_Tests[Loadcase]['Displ_Head_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_Head_x_lower'], PMHS_Tests[Loadcase]['Displ_Head_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_x']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Head CoG x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_Head_y_upper'], PMHS_Tests[Loadcase]['Displ_Head_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_Head_y_lower'], PMHS_Tests[Loadcase]['Displ_Head_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Head CoG y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_Head_z_upper'], PMHS_Tests[Loadcase]['Displ_Head_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_Head_z_lower'], PMHS_Tests[Loadcase]['Displ_Head_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_z']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Head CoG z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_6.tight_layout(pad=0.1)

fig_7, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_pelvis_x_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_pelvis_x_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['PE-Sacrum-posterior-Disp_x']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Pelvis x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_pelvis_y_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_pelvis_y_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Pelvis y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_pelvis_z_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_pelvis_z_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['PE-Sacrum-posterior-Disp_z']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Pelvis z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_7.tight_layout(pad=0.1)


fig_8, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_T1_x_upper'], PMHS_Tests[Loadcase]['Displ_T1_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_T1_x_lower'], PMHS_Tests[Loadcase]['Displ_T1_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['TX-T1_COG-Disp_x']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="T1 x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_T1_y_upper'], PMHS_Tests[Loadcase]['Displ_T1_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_T1_y_lower'], PMHS_Tests[Loadcase]['Displ_T1_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['TX-T1_COG-Disp_y']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['TX-T1_COG-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="T1 y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_T1_z_upper'], PMHS_Tests[Loadcase]['Displ_T1_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_T1_z_lower'], PMHS_Tests[Loadcase]['Displ_T1_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['TX-T1_COG-Disp_z']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="T1 z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_8.tight_layout(pad=0.1);
../_images/13f88dae6f4c676dd51a39c8dd7ac35b41f7cf64ee5420089594ab19213f617f.png ../_images/412b619f69fc41924f75d414a18b26130bf103b54d9211698848b3d460732754.png ../_images/176008d5e10dbd9ae2f767b63f3edc0e3884c6ec952f1259064501700f3994cb.png ../_images/7b4d94ff7d2cef7277a9863686a42265446d50594ed8e8d9aaebb12ee98ee974.png ../_images/fd3b3aca25723de0e1f55d4d541dbdca217366fc29d60c6b73e326cbde0a0b76.png

Configuration 3#

Energies#

In the figure below the energy balance for configuration 1 is shown

Hide code cell source
### Energies

fig_energy, axs = plt.subplots(nrows=1, ncols=1)
fig_energy.suptitle('Model Energies')

plt.plot(simData_50M.MODEL.Hourglass_Energy.time,simData_50M.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
plt.plot(simData_50M.MODEL.Internal_Energy.time, simData_50M.MODEL.Internal_Energy.energy, label = "Internal Energy")
plt.plot(simData_50M.MODEL.Kinetic_Energy.time, simData_50M.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
plt.plot(simData_50M.MODEL.Total_Energy.time, simData_50M.MODEL.Total_Energy.energy, label = "Total Energy")

plt.xlabel("Time [ms]") 
plt.ylabel("Energy [kJ]")
plt.legend();
../_images/6c0791325e64b882383aa0f2924743ab415624f3b8074ad3a3a827f32e3b2791.png

Belt Forces#

Hide code cell source
fig_1, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_sh_upper'], PMHS_Tests[Loadcase]['Force_belt_sh_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_sh_lower'], PMHS_Tests[Loadcase]['Force_belt_sh_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_shoulder_belt_force=simData_50M['BELT']['Belt-force-Shoulder-1']['force']+simData_50M['BELT']['Belt-force-Shoulder-2']['force']
ax.plot(simData_50M['BELT']['Belt-force-Shoulder-1']['time']-350,sim_shoulder_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Shoulder", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200), ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

fig_2, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_side_upper'], PMHS_Tests[Loadcase]['Force_belt_side_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_side_lower'], PMHS_Tests[Loadcase]['Force_belt_side_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_shoulder_belt_force=simData_50M['BELT']['Belt-force-Side-1']['force']+simData_50M['BELT']['Belt-force-Side-2']['force']
ax.plot(simData_50M['BELT']['Belt-force-Side-1']['time']-350,sim_shoulder_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Side", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200),ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

fig_3, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests['Config1']['Time_belt_lap_upper'], PMHS_Tests['Config1']['Force_belt_lap_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests['Config1']['Time_belt_lap_lower'], PMHS_Tests['Config1']['Force_belt_lap_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_belt_force=simData_50M['BELT']['Lap-Belt-Force']['force']
ax.plot(simData_50M['BELT']['Lap-Belt-Force']['time']-350,sim_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Lap", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200), ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5));
<matplotlib.legend.Legend at 0x247080ce608>
../_images/1e0c03d6f4377ad03b63224bf7fac2323001b034b0868b9d3a76599115739db9.png ../_images/ea5538b6d700af0aca1f5e565dbe5b1e4b73196b3706e17d7acda5ce5426fcd8.png ../_images/3f375aa1a82b90a72addeffac903e47f24c97f75e1e5eeb1b858035dcf8127cd.png

Kinematics#

The figures below compares the predicted kinematics with teh kinematics from the PMHS tests, for the shoulder, pelvis, head and thoracic spine.

Hide code cell source
fig_4, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_left_acr_x_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_left_acr_x_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['UX-Scapula-PC-L-Disp_x']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Left Acromium x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_left_acr_y_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_left_acr_y_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Left Acromium y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_left_acr_z_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_left_acr_z_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-L-Disp_z']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Left Acromium z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))
fig_4.tight_layout(pad=0.1)
ay.legend(loc='upper center', bbox_to_anchor=(0.5, 1.3),fancybox=True, shadow=True, ncol=5)



fig_5, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_right_acr_x_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_right_acr_x_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['UX-Scapula-PC-R-Disp_x']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Right Acromium x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_right_acr_y_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_right_acr_y_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Right Acromium y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_right_acr_z_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_right_acr_z_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-R-Disp_z']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Right Acromium z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_5.tight_layout(pad=0.1)

fig_6, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_Head_x_upper'], PMHS_Tests[Loadcase]['Displ_Head_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_Head_x_lower'], PMHS_Tests[Loadcase]['Displ_Head_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_x']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Head CoG x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_Head_y_upper'], PMHS_Tests[Loadcase]['Displ_Head_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_Head_y_lower'], PMHS_Tests[Loadcase]['Displ_Head_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Head CoG y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_Head_z_upper'], PMHS_Tests[Loadcase]['Displ_Head_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_Head_z_lower'], PMHS_Tests[Loadcase]['Displ_Head_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_z']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Head CoG z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_6.tight_layout(pad=0.1)

fig_7, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_pelvis_x_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_pelvis_x_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['PE-Sacrum-posterior-Disp_x']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Pelvis x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_pelvis_y_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_pelvis_y_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Pelvis y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_pelvis_z_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_pelvis_z_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['PE-Sacrum-posterior-Disp_z']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Pelvis z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_7.tight_layout(pad=0.1)


fig_8, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_T1_x_upper'], PMHS_Tests[Loadcase]['Displ_T1_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_T1_x_lower'], PMHS_Tests[Loadcase]['Displ_T1_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['TX-T1_COG-Disp_x']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="T1 x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_T1_y_upper'], PMHS_Tests[Loadcase]['Displ_T1_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_T1_y_lower'], PMHS_Tests[Loadcase]['Displ_T1_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['TX-T1_COG-Disp_y']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['TX-T1_COG-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="T1 y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_T1_z_upper'], PMHS_Tests[Loadcase]['Displ_T1_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_T1_z_lower'], PMHS_Tests[Loadcase]['Displ_T1_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['TX-T1_COG-Disp_z']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="T1 z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_8.tight_layout(pad=0.1);
../_images/4bc539ef41634aa3f91c2ab1697db98e114c49e3c081f5fbc3b993f30517bdc4.png ../_images/18d83e4213bf1bc4945137580fad42526af48a071309ba60796fca059442d6dd.png ../_images/fcbde4c5d5351310cafcada0a2ba72c8bc1c843a146231ab18228e19997b087d.png ../_images/1b39a6e5d9ca4964d36c8f6d9e7ee3b9fbf759510a969d49f91f25891918cdcf.png ../_images/a1c771e6a507984d309f2cc63dc07113466d3f1703d3c907b8f98821b85949e9.png

Configuration 4#

Energies#

In the figure below the energy balance for configuration 1 is shown

Hide code cell source
### Energies

fig_energy, axs = plt.subplots(nrows=1, ncols=1)
fig_energy.suptitle('Model Energies')

plt.plot(simData_50M.MODEL.Hourglass_Energy.time,simData_50M.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
plt.plot(simData_50M.MODEL.Internal_Energy.time, simData_50M.MODEL.Internal_Energy.energy, label = "Internal Energy")
plt.plot(simData_50M.MODEL.Kinetic_Energy.time, simData_50M.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
plt.plot(simData_50M.MODEL.Total_Energy.time, simData_50M.MODEL.Total_Energy.energy, label = "Total Energy")

plt.xlabel("Time [ms]") 
plt.ylabel("Energy [kJ]")
plt.legend();
../_images/98592117abfd6ee5ad6cdeca9c4e560095c06d3c1c67786525397b1744bb7248.png

Belt Forces#

Hide code cell source
fig_1, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_sh_upper'], PMHS_Tests[Loadcase]['Force_belt_sh_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_sh_lower'], PMHS_Tests[Loadcase]['Force_belt_sh_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_shoulder_belt_force=simData_50M['BELT']['Belt-force-Shoulder-1']['force']+simData_50M['BELT']['Belt-force-Shoulder-2']['force']
ax.plot(simData_50M['BELT']['Belt-force-Shoulder-1']['time']-350,sim_shoulder_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Shoulder", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200), ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

fig_2, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_side_upper'], PMHS_Tests[Loadcase]['Force_belt_side_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_side_lower'], PMHS_Tests[Loadcase]['Force_belt_side_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_shoulder_belt_force=simData_50M['BELT']['Belt-force-Side-1']['force']+simData_50M['BELT']['Belt-force-Side-2']['force']
ax.plot(simData_50M['BELT']['Belt-force-Side-1']['time']-350,sim_shoulder_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Side", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200),ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

fig_3, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests['Config1']['Time_belt_lap_upper'], PMHS_Tests['Config1']['Force_belt_lap_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests['Config1']['Time_belt_lap_lower'], PMHS_Tests['Config1']['Force_belt_lap_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_belt_force=simData_50M['BELT']['Lap-Belt-Force']['force']
ax.plot(simData_50M['BELT']['Lap-Belt-Force']['time']-350,sim_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Lap", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200), ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5));
<matplotlib.legend.Legend at 0x2470661d748>
../_images/75722190283ac3c9f24c8cc5dfe80bb520fee4cc6faaaa4c01c3d4e49fe8c56e.png ../_images/a089831fb069a0539eb456b1587e870a9d8411eb7808d2a8b8a715f2de445a4b.png ../_images/1d91f48776456f2d3b82c232b5e38138de3c364ce1e4a05df46259ef128ee71d.png

Kinematics#

The figures below compares the predicted kinematics with teh kinematics from the PMHS tests, for the shoulder, pelvis, head and thoracic spine.

Hide code cell source
fig_4, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_left_acr_x_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_left_acr_x_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['UX-Scapula-PC-L-Disp_x']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Left Acromium x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_left_acr_y_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_left_acr_y_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Left Acromium y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_left_acr_z_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_left_acr_z_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-L-Disp_z']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Left Acromium z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))
fig_4.tight_layout(pad=0.1)
ay.legend(loc='upper center', bbox_to_anchor=(0.5, 1.3),fancybox=True, shadow=True, ncol=5)



fig_5, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_right_acr_x_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_right_acr_x_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['UX-Scapula-PC-R-Disp_x']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Right Acromium x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_right_acr_y_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_right_acr_y_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Right Acromium y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_right_acr_z_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_right_acr_z_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-R-Disp_z']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Right Acromium z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_5.tight_layout(pad=0.1)

fig_6, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_Head_x_upper'], PMHS_Tests[Loadcase]['Displ_Head_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_Head_x_lower'], PMHS_Tests[Loadcase]['Displ_Head_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_x']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Head CoG x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_Head_y_upper'], PMHS_Tests[Loadcase]['Displ_Head_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_Head_y_lower'], PMHS_Tests[Loadcase]['Displ_Head_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Head CoG y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_Head_z_upper'], PMHS_Tests[Loadcase]['Displ_Head_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_Head_z_lower'], PMHS_Tests[Loadcase]['Displ_Head_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_z']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Head CoG z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_6.tight_layout(pad=0.1)

fig_7, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_pelvis_x_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_pelvis_x_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['PE-Sacrum-posterior-Disp_x']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Pelvis x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_pelvis_y_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_pelvis_y_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Pelvis y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_pelvis_z_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_pelvis_z_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['PE-Sacrum-posterior-Disp_z']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Pelvis z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_7.tight_layout(pad=0.1)


fig_8, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_T1_x_upper'], PMHS_Tests[Loadcase]['Displ_T1_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_T1_x_lower'], PMHS_Tests[Loadcase]['Displ_T1_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['TX-T1_COG-Disp_x']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="T1 x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_T1_y_upper'], PMHS_Tests[Loadcase]['Displ_T1_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_T1_y_lower'], PMHS_Tests[Loadcase]['Displ_T1_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['TX-T1_COG-Disp_y']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['TX-T1_COG-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="T1 y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_T1_z_upper'], PMHS_Tests[Loadcase]['Displ_T1_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_T1_z_lower'], PMHS_Tests[Loadcase]['Displ_T1_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['TX-T1_COG-Disp_z']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="T1 z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_8.tight_layout(pad=0.1);
../_images/00072ac2cd0d0c5026438a9fa07a0f866b319b2d691a7c4e38a3ff3f061c21c0.png ../_images/460d11bc689a415e1bf5d686c4c9b0f7d0194eeac473f1b9c277f2fc0b1f19d4.png ../_images/dbc517b8d3d4a34c6172bb487a3482569d9e4c064f31b3e31feae2e02e34f28c.png ../_images/aff21fcc79783e24c62cde07bf83cca2274edd7b8c573bb2c187dc6cd73305ca.png ../_images/17edea13c98dc5bea2030e699a51a8bad966d107991cfc1e664f77083f901c18.png

Configuration 5#

Energies#

In the figure below the energy balance for configuration 1 is shown

Hide code cell source
### Energies

fig_energy, axs = plt.subplots(nrows=1, ncols=1)
fig_energy.suptitle('Model Energies')

plt.plot(simData_50M.MODEL.Hourglass_Energy.time,simData_50M.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
plt.plot(simData_50M.MODEL.Internal_Energy.time, simData_50M.MODEL.Internal_Energy.energy, label = "Internal Energy")
plt.plot(simData_50M.MODEL.Kinetic_Energy.time, simData_50M.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
plt.plot(simData_50M.MODEL.Total_Energy.time, simData_50M.MODEL.Total_Energy.energy, label = "Total Energy")

plt.xlabel("Time [ms]") 
plt.ylabel("Energy [kJ]")
plt.legend();
../_images/40341fd21a0df3afc88c5b64d9e79db641e7931a124c00ba0e7b56c6751ea6c2.png

Belt Forces#

Hide code cell source
fig_1, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_sh_upper'], PMHS_Tests[Loadcase]['Force_belt_sh_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_sh_lower'], PMHS_Tests[Loadcase]['Force_belt_sh_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_shoulder_belt_force=simData_50M['BELT']['Belt-force-Shoulder-1']['force']+simData_50M['BELT']['Belt-force-Shoulder-2']['force']
ax.plot(simData_50M['BELT']['Belt-force-Shoulder-1']['time']-350,sim_shoulder_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Shoulder", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200), ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

fig_2, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_side_upper'], PMHS_Tests[Loadcase]['Force_belt_side_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_side_lower'], PMHS_Tests[Loadcase]['Force_belt_side_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_shoulder_belt_force=simData_50M['BELT']['Belt-force-Side-1']['force']+simData_50M['BELT']['Belt-force-Side-2']['force']
ax.plot(simData_50M['BELT']['Belt-force-Side-1']['time']-350,sim_shoulder_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Side", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200),ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

fig_3, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests['Config1']['Time_belt_lap_upper'], PMHS_Tests['Config1']['Force_belt_lap_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests['Config1']['Time_belt_lap_lower'], PMHS_Tests['Config1']['Force_belt_lap_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_belt_force=simData_50M['BELT']['Lap-Belt-Force']['force']
ax.plot(simData_50M['BELT']['Lap-Belt-Force']['time']-350,sim_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Lap", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200), ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5));
<matplotlib.legend.Legend at 0x24709dd52c8>
../_images/1291c1e15b4efb45901bc541f99ca60ba070d81d6809b120e1dbcca2cd0c89b5.png ../_images/0f24338519ec3a3220e9fbb916e22a83e342950b4dc034ac1bb5edf9b13bfacf.png ../_images/f66df330c41ea149efa9ce57da4379bc86803f7e46e8a1b584ec7682f155d93a.png

Kinematics#

The figures below compares the predicted kinematics with teh kinematics from the PMHS tests, for the shoulder, pelvis, head and thoracic spine.

Hide code cell source
fig_4, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_left_acr_x_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_left_acr_x_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['UX-Scapula-PC-L-Disp_x']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Left Acromium x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_left_acr_y_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_left_acr_y_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Left Acromium y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_left_acr_z_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_left_acr_z_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-L-Disp_z']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Left Acromium z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))
fig_4.tight_layout(pad=0.1)
ay.legend(loc='upper center', bbox_to_anchor=(0.5, 1.3),fancybox=True, shadow=True, ncol=5)



fig_5, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_right_acr_x_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_right_acr_x_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['UX-Scapula-PC-R-Disp_x']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Right Acromium x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_right_acr_y_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_right_acr_y_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Right Acromium y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_right_acr_z_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_right_acr_z_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-R-Disp_z']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Right Acromium z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_5.tight_layout(pad=0.1)

fig_6, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_Head_x_upper'], PMHS_Tests[Loadcase]['Displ_Head_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_Head_x_lower'], PMHS_Tests[Loadcase]['Displ_Head_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_x']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Head CoG x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_Head_y_upper'], PMHS_Tests[Loadcase]['Displ_Head_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_Head_y_lower'], PMHS_Tests[Loadcase]['Displ_Head_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Head CoG y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_Head_z_upper'], PMHS_Tests[Loadcase]['Displ_Head_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_Head_z_lower'], PMHS_Tests[Loadcase]['Displ_Head_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_z']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Head CoG z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_6.tight_layout(pad=0.1)

fig_7, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_pelvis_x_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_pelvis_x_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['PE-Sacrum-posterior-Disp_x']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Pelvis x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_pelvis_y_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_pelvis_y_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Pelvis y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_pelvis_z_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_pelvis_z_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['PE-Sacrum-posterior-Disp_z']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Pelvis z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_7.tight_layout(pad=0.1)


fig_8, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_T1_x_upper'], PMHS_Tests[Loadcase]['Displ_T1_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_T1_x_lower'], PMHS_Tests[Loadcase]['Displ_T1_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['TX-T1_COG-Disp_x']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="T1 x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_T1_y_upper'], PMHS_Tests[Loadcase]['Displ_T1_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_T1_y_lower'], PMHS_Tests[Loadcase]['Displ_T1_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['TX-T1_COG-Disp_y']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['TX-T1_COG-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="T1 y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_T1_z_upper'], PMHS_Tests[Loadcase]['Displ_T1_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_T1_z_lower'], PMHS_Tests[Loadcase]['Displ_T1_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['TX-T1_COG-Disp_z']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="T1 z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_8.tight_layout(pad=0.1);
../_images/efde82f4024618f7e58bc6eae0cd93b633fe6d1c016b264be8c405abaac6666c.png ../_images/57a02d8272eddb6eb05fec6e897c5b7abf7794af11ead133ad0aa8b62cb6ba51.png ../_images/2b86f975df55a8c2118766be155c234aadffc4644ba19e75ceb8bcd647683476.png ../_images/871a2befbce4ae98c03e112345f99c395c6e682c8b651c915dabf37db7166e51.png ../_images/0a8816ccbffe72f1db0312e59ea740dbbb8a6ce331e7ba79af75ad0a17b94562.png

Configuration 6#

Energies#

In the figure below the energy balance for configuration 1 is shown

Hide code cell source
### Energies

fig_energy, axs = plt.subplots(nrows=1, ncols=1)
fig_energy.suptitle('Model Energies')

plt.plot(simData_50M.MODEL.Hourglass_Energy.time,simData_50M.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
plt.plot(simData_50M.MODEL.Internal_Energy.time, simData_50M.MODEL.Internal_Energy.energy, label = "Internal Energy")
plt.plot(simData_50M.MODEL.Kinetic_Energy.time, simData_50M.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
plt.plot(simData_50M.MODEL.Total_Energy.time, simData_50M.MODEL.Total_Energy.energy, label = "Total Energy")

plt.xlabel("Time [ms]") 
plt.ylabel("Energy [kJ]")
plt.legend();
../_images/a04af20d8a483362e9dc2b2eeceb30cf849f30d82c7127acc3abb0bd428fd03a.png

Belt Forces#

Hide code cell source
fig_1, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_sh_upper'], PMHS_Tests[Loadcase]['Force_belt_sh_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_sh_lower'], PMHS_Tests[Loadcase]['Force_belt_sh_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_shoulder_belt_force=simData_50M['BELT']['Belt-force-Shoulder-1']['force']+simData_50M['BELT']['Belt-force-Shoulder-2']['force']
ax.plot(simData_50M['BELT']['Belt-force-Shoulder-1']['time']-350,sim_shoulder_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Shoulder", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200), ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

fig_2, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_side_upper'], PMHS_Tests[Loadcase]['Force_belt_side_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests[Loadcase]['Time_belt_side_lower'], PMHS_Tests[Loadcase]['Force_belt_side_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_shoulder_belt_force=simData_50M['BELT']['Belt-force-Side-1']['force']+simData_50M['BELT']['Belt-force-Side-2']['force']
ax.plot(simData_50M['BELT']['Belt-force-Side-1']['time']-350,sim_shoulder_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Side", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200),ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

fig_3, ax = plt.subplots(nrows=1, ncols=1)
plt.plot(PMHS_Tests['Config1']['Time_belt_lap_upper'], PMHS_Tests['Config1']['Force_belt_lap_upper'], label = "Experiment_upper_corridor", **plotExperiment)
plt.plot(PMHS_Tests['Config1']['Time_belt_lap_lower'], PMHS_Tests['Config1']['Force_belt_lap_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_belt_force=simData_50M['BELT']['Lap-Belt-Force']['force']
ax.plot(simData_50M['BELT']['Lap-Belt-Force']['time']-350,sim_belt_force*1000, **plot50M, label="VIVA+ 50M")
ax.set(title="Belt Force Lap", xlabel ="Time [ms]", ylabel="Force [N]", xlim=(0,200), ylim=(0,7000))
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5));
<matplotlib.legend.Legend at 0x24708a669c8>
../_images/3d08014f453559436b00d6ee6ab188d95518a4d36c76d5983bced5c10f038efd.png ../_images/f06de711a7c4185ee37ec9011701a9d840c9f848f0e6962e7f63f18841e353e1.png ../_images/3469dee77a49ee773e566c4433c6e4cad7b44521872abd4ad745a2436d9491e2.png

Kinematics#

The figures below compares the predicted kinematics with teh kinematics from the PMHS tests, for the shoulder, pelvis, head and thoracic spine.

Hide code cell source
fig_4, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))
fig_4.suptitle=Loadcase

ax.plot(PMHS_Tests[Loadcase]['Time_left_acr_x_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_left_acr_x_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['UX-Scapula-PC-L-Disp_x']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Left Acromium x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_left_acr_y_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_left_acr_y_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['UX-Scapula-PC-L-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Left Acromium y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_left_acr_z_upper'], PMHS_Tests[Loadcase]['Displ_left_acr_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_left_acr_z_lower'], PMHS_Tests[Loadcase]['Displ_left_acr_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-L-Disp_z']['displacement']-simData_50M['HBM']['UX-Scapula-PC-L-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Left Acromium z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))
fig_4.tight_layout(pad=0.1)
ay.legend(loc='upper center', bbox_to_anchor=(0.5, 1.3),fancybox=True, shadow=True, ncol=5)



fig_5, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_right_acr_x_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_right_acr_x_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['UX-Scapula-PC-R-Disp_x']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Right Acromium x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_right_acr_y_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_right_acr_y_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['UX-Scapula-PC-R-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Right Acromium y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_right_acr_z_upper'], PMHS_Tests[Loadcase]['Displ_right_acr_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_right_acr_z_lower'], PMHS_Tests[Loadcase]['Displ_right_acr_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['UX-Scapula-PC-R-Disp_z']['displacement']-simData_50M['HBM']['UX-Scapula-PC-R-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Right Acromium z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_5.tight_layout(pad=0.1)

fig_6, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_Head_x_upper'], PMHS_Tests[Loadcase]['Displ_Head_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_Head_x_lower'], PMHS_Tests[Loadcase]['Displ_Head_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_x']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Head CoG x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_Head_y_upper'], PMHS_Tests[Loadcase]['Displ_Head_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_Head_y_lower'], PMHS_Tests[Loadcase]['Displ_Head_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Head CoG y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_Head_z_upper'], PMHS_Tests[Loadcase]['Displ_Head_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_Head_z_lower'], PMHS_Tests[Loadcase]['Displ_Head_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_z']['displacement']-simData_50M['HBM']['HE-Head-CoG-Accelerometer-Global-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Head CoG z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_6.tight_layout(pad=0.1)

fig_7, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_pelvis_x_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_pelvis_x_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['PE-Sacrum-posterior-Disp_x']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="Pelvis x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_pelvis_y_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_pelvis_y_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['PE-Sacrum-posterior-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="Pelvis y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_pelvis_z_upper'], PMHS_Tests[Loadcase]['Displ_pelvis_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_pelvis_z_lower'], PMHS_Tests[Loadcase]['Displ_pelvis_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['PE-Sacrum-posterior-Disp_z']['displacement']-simData_50M['HBM']['PE-Sacrum-posterior-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="Pelvis z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_7.tight_layout(pad=0.1)


fig_8, (ax,ay,az) = plt.subplots(nrows=1, ncols=3,figsize=(15,3))

ax.plot(PMHS_Tests[Loadcase]['Time_T1_x_upper'], PMHS_Tests[Loadcase]['Displ_T1_x_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ax.plot(PMHS_Tests[Loadcase]['Time_T1_x_lower'], PMHS_Tests[Loadcase]['Displ_T1_x_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_x']['displacement']-simData_50M['SLED']['Sled_Disp_x']['displacement'].iloc[349])
sim_displacement=simData_50M['HBM']['TX-T1_COG-Disp_x']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_x']['displacement'].iloc[349]-sim_displacement_sled
ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
#ax.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement_sled)
ax.set(title="T1 x-Displacement", xlabel ="Time [ms]", ylabel="x displacement [mm]", xlim=(0,200))

ay.plot(PMHS_Tests[Loadcase]['Time_T1_y_upper'], PMHS_Tests[Loadcase]['Displ_T1_y_upper'], label = "Experiment_upper_corridor", **plotExperiment)
ay.plot(PMHS_Tests[Loadcase]['Time_T1_y_lower'], PMHS_Tests[Loadcase]['Displ_T1_y_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement_sled=(simData_50M['SLED']['Sled_Disp_y']['displacement']-simData_50M['SLED']['Sled_Disp_y']['displacement'].iloc[349])
sim_displacement=(simData_50M['HBM']['TX-T1_COG-Disp_y']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_y']['displacement'].iloc[349]-sim_displacement_sled)*-1
ay.plot(simData_50M['HBM']['TX-T1_COG-Disp_y']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
ay.set(title="T1 y-Displacement", xlabel ="Time [ms]", ylabel="y displacement [mm]", xlim=(0,200))

az.plot(PMHS_Tests[Loadcase]['Time_T1_z_upper'], PMHS_Tests[Loadcase]['Displ_T1_z_upper'], label = "Experiment_upper_corridor", **plotExperiment)
az.plot(PMHS_Tests[Loadcase]['Time_T1_z_lower'], PMHS_Tests[Loadcase]['Displ_T1_z_lower'], label = "Experiment_lower_corridor", **plotExperiment)
sim_displacement=(simData_50M['HBM']['TX-T1_COG-Disp_z']['displacement']-simData_50M['HBM']['TX-T1_COG-Disp_z']['displacement'].iloc[349])*-1
az.plot(simData_50M['SLED']['Sled_Disp_x']['time']-350,sim_displacement, **plot50M, label="VIVA+ 50M")
az.set(title="T1 z-Displacement", xlabel ="Time [ms]", ylabel="z displacement [mm]", xlim=(0,200))

fig_8.tight_layout(pad=0.1);
../_images/4c5c51824a401ba5da2fdfa9474fc30a4f213fd2ed2c97ea8b26b92b0295bb63.png ../_images/1f3160c6f28f93db95bf12ada1028d2408a38ce3e71fdac75db9c70a1d1faff8.png ../_images/a207150a3903c78cc64946bf11ecff3e2ba901c5c42096a2695308a5629e09b5.png ../_images/559b27a606e41c03812a57a19e68f7b66a108107de88d186cb5599d1102bf4f7.png ../_images/1f6e6bfb8d3f03382c3812e7b031171bb8f6a32f6dcf05b83162db035788375a.png