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#
Show code cell content
simData_50M=simData_50M_Config1
Loadcase="Config1"
In the figure below the energy balance for configuration 1 is shown
Show 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();
Belt Forces#
Show 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>
Show 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>
Show 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>
Kinematics#
The figures below compares the predicted kinematics with teh kinematics from the PMHS tests, for the shoulder, pelvis, head and thoracic spine.
Acromium#
Show 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>
Show 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>
Head CoG#
Show 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>
Pelvis#
Show 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>
Thoraic Spine (T1)#
Show 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>
Configuration 2#
Energies#
In the figure below the energy balance for configuration 2 is shown
Show 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();
Belt Forces#
Show 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>
Kinematics#
The figures below compares the predicted kinematics with teh kinematics from the PMHS tests, for the shoulder, pelvis, head and thoracic spine.
Show 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);
Configuration 3#
Energies#
In the figure below the energy balance for configuration 1 is shown
Show 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();
Belt Forces#
Show 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>
Kinematics#
The figures below compares the predicted kinematics with teh kinematics from the PMHS tests, for the shoulder, pelvis, head and thoracic spine.
Show 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);
Configuration 4#
Energies#
In the figure below the energy balance for configuration 1 is shown
Show 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();
Belt Forces#
Show 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>
Kinematics#
The figures below compares the predicted kinematics with teh kinematics from the PMHS tests, for the shoulder, pelvis, head and thoracic spine.
Show 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);
Configuration 5#
Energies#
In the figure below the energy balance for configuration 1 is shown
Show 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();
Belt Forces#
Show 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>
Kinematics#
The figures below compares the predicted kinematics with teh kinematics from the PMHS tests, for the shoulder, pelvis, head and thoracic spine.
Show 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);
Configuration 6#
Energies#
In the figure below the energy balance for configuration 1 is shown
Show 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();
Belt Forces#
Show 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>
Kinematics#
The figures below compares the predicted kinematics with teh kinematics from the PMHS tests, for the shoulder, pelvis, head and thoracic spine.
Show 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);