Farside Sledtests (Forman 2013)#

Model validation information

Version

Date

Performed by

LS-Dyna

0.3.2

2022-01-30

Johan Iraeus

9.3.1

1.1.1

2024-05-22

Johan Iraeus

12.2.1

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

© 2019-2024, 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.

# Your name 
name="Johan_Iraeus"

# LS-Dyna version (if you have not run the simulations on your own, fill in "example"):
dyna_executable_name="ls-dyna_mpp_s_R12_2_1_x64_centos79_ifort160_avx2_intelmpi-2018_sharelib"

# Overall number of CPUs
n_cpu = "32"

# Platform (from d3hsp file)
platform = "Intel-MPI 2018 Xeon64"

# OS Level (from d3hsp file)
os_level = "Linux CentOS 7.9 uom" 

# Do not change! Date is filled in automatically
date = datetime.date.today().strftime("%Y-%m-%d")
# write metadata
metadata={
  "date": date,
  "name": name,
  "n_cpu": n_cpu,
  "dyna_executable_name": dyna_executable_name,
  "platform": platform,
  "os_level": os_level
}

with open(os.path.join(processed_data_dir, simulation_meta_file_name), 'w+') as f:
  json.dump(metadata, f, indent=4)

Results for different configurations#

Configuration 1#

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

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

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

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

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

Belt Forces#

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

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

Kinematics#

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

Acromium#

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

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

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

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

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

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

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

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

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

Head CoG#

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

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

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

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

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

Pelvis#

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

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

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

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

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

Thoraic Spine (T1)#

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

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

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

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

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

Configuration 2#

Energies#

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

Hide code cell source
### Energies

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

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

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

Belt Forces#

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

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

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

Kinematics#

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

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

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

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

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



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

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

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

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

fig_5.tight_layout(pad=0.1)

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

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

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

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

fig_6.tight_layout(pad=0.1)

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

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

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

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

fig_7.tight_layout(pad=0.1)


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

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

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

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

fig_8.tight_layout(pad=0.1);
../_images/85711dd1560ca733540bc1df171e4bf74718ebd06c141b8c31be0d2953f665ad.png ../_images/6f7ddf81dafd28bdf5815cf13183349a63201e23d16440bfc3a6c6ed1ad8e9a7.png ../_images/6a8927931a29d254a6730bbd1be85f1f792d1195b77208dbc5d0fc80a6811923.png ../_images/14998389dbdbb80d53ddf99553996f2af0865f7672926fa5c5661ebd301bf3cc.png ../_images/cf5db447ec2c1e9eeef08c12547f54a58ffadaa6b030953836ac1ec75ce3855b.png

Configuration 3#

Energies#

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

Hide code cell source
### Energies

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

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

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

Belt Forces#

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

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

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

Kinematics#

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

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

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

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

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



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

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

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

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

fig_5.tight_layout(pad=0.1)

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

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

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

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

fig_6.tight_layout(pad=0.1)

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

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

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

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

fig_7.tight_layout(pad=0.1)


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

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

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

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

fig_8.tight_layout(pad=0.1);
../_images/a9807c754c0d966a8c3a1084058e84822ba66412e203a3111edc720ec424f952.png ../_images/a79655b5f137e00edd379d29ad345403b9bff71310cefb81952cf6caa1338fc4.png ../_images/70aed7c3fd5fc172d28da2146f061fd68d2cee1140c7d3e1b2569c0a5a54086d.png ../_images/4fab763cb4360c7d6aa54e4548bd7fb43bddbc9a651361f66a9f6462b2cd4f63.png ../_images/e9c825f595fcb2ba94c11aeba9ebe2224069b11f296d70b3e5ce790c0eb6feed.png

Configuration 4#

Energies#

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

Hide code cell source
### Energies

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

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

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

Belt Forces#

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

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

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

Kinematics#

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

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

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

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

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



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

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

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

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

fig_5.tight_layout(pad=0.1)

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

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

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

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

fig_6.tight_layout(pad=0.1)

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

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

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

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

fig_7.tight_layout(pad=0.1)


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

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

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

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

fig_8.tight_layout(pad=0.1);
../_images/89b068e7a6c634bec518a7bec9abe905b33ba1c5f28ac7e39f8fb20017fa8cc2.png ../_images/5bcbfcf12ab09b666a69a38d4c032a598d98765752e5d8b29b86c705f43d1672.png ../_images/f7719bb604ea0be4043f412fbf851e01273d5dbd6155e67c91f387ff6a3e2dfa.png ../_images/0069fe67b36fafa53a089098f62def8fa344cd9206a3ba889c518b5da7021606.png ../_images/897a3b143bda57d34f5ce0ea21dcd4ca37aaae12573b31cb3c45e4069db21316.png

Configuration 5#

Energies#

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

Hide code cell source
### Energies

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

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

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

Belt Forces#

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

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

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

Kinematics#

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

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

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

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

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



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

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

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

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

fig_5.tight_layout(pad=0.1)

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

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

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

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

fig_6.tight_layout(pad=0.1)

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

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

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

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

fig_7.tight_layout(pad=0.1)


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

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

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

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

fig_8.tight_layout(pad=0.1);
../_images/ee228bbcf9aa2111a352b31d4da8c20a8d7ebe90dde44e019dad7cd5697e6a24.png ../_images/ee13112d035f01c1c7d6a7f7181df28b1644b2f25d7e3c803d9228622d1f6996.png ../_images/8a061984741b4399133e996247ad767801751023c0bdd96bdc28e64696830420.png ../_images/6d2d1f8e49195736a8e2c737b7fb53c46a9a3d86b30bca36a1330174e68e4add.png ../_images/eaec4952bada9652239beff2cd4dcbfcbdc8d0ff4b1015bc838bfa230053c813.png

Configuration 6#

Energies#

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

Hide code cell source
### Energies

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

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

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

Belt Forces#

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

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

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

Kinematics#

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

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

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

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

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



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

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

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

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

fig_5.tight_layout(pad=0.1)

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

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

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

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

fig_6.tight_layout(pad=0.1)

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

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

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

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

fig_7.tight_layout(pad=0.1)


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

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

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

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

fig_8.tight_layout(pad=0.1);
../_images/d5adc2b4713fc947bb448983eaf0d4e4a08ec60a93d387b70ccfaa96693d3325.png ../_images/42b46291dd4e1f012b575aff2ebd50d4b4e61261dea2fc9d5bad8b81b418b837.png ../_images/ff5450ed68c1c7e3f24487db9a1bed7ef944f8098205bc9047760385671c4b81.png ../_images/e2550ddb29d74b9542c1627a439f0e4451dc89154ba663d09f6a75e247878c05.png ../_images/4a696e98778a7f7f56979b30953d0ddff393005d4d53121f799869c9de3b65e4.png