Lateral Impact (Viano 1989)#

Model validation information

  • Performed by : Corina Klug

  • Reviewed by : Jobin John

Added to VIVA+ Validation Catalog on : 2022-06-28

Last modified : 2022-12-01

Model version (this notebook run for): 0.3.2

© 2019-2024, OpenVT Organization (OVTO)

Available openly under under Creative Commons Attribution 4.0 International License

Experiment by Viano et al. (1989)#

Summary:#

The simulated outputs are compared to the references from PMHS tests reported by Viano et al., 1989 1

1 Viano, D.C. (1989), “Biomechanical Responses and Injuries in Blunt Lateral Impact”, 33rd Stapp Car Crash Conference Proceedings, 4.10.1989, SAE International.

(figure shows aligned impactors for easier visualisation)

Experiment#

Information on the subjects/specimens#

  • 3 female specimen (average age: 56 yrs, average mass: 57.8 kg, average height: 161.8 kg)

  • 11 male specimen (average age: 53.2 yrs, average mass: 70.25 kg, average height: 173.4 cm)

Loading and Boundary Conditions#

Low-Speed (LS), Medium-Speed (MS) and High-Speed (HS) Impacts at the area of the hip, upper abdomen and thorax.

Impact#

Impact Location

Midpoint of Impactor aligned with

Impact angle

LS

MS

HS

Thoracic Impact

Xiphoid process (XP)

330°

4.4

6.5

-

Abdmoninal Impact

7.5 cm below XP

330°

5.8

6.8

-

Hip Impact

Greater trochanter

270°

5.2

-

9.8

Positioning#

The VIVA+ model is used in the default standing position. No contact is modelled between arms and impactors.

Responses recorded#

The reference values from the paper were digitalised and are incuded in the package. The data corresponds to the unnormalised corridors.

Other Notes for simulation#

Notes on implementation and iterations during the implementation of validation simulations

Results#

Force-Deflection Plots#

Hide code cell source
fig_ft_Hip, (ax1, ax2) = plt.subplots(nrows=2, ncols=1)
fig_ft_Hip.suptitle('Hip Impacts')

ax1.plot(-simData_50F_Hip_HS['IMPACTOR']['Disp_x']['displacement']-2, simData_50F_Hip_HS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50F", **plot50F)
ax1.plot(-simData_50M_Hip_HS['IMPACTOR']['Disp_x']['displacement']-8, simData_50M_Hip_HS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50M", **plot50M)
ax1.plot(Hip_Exp['Pelvis_HS:Deflection [cm]']*10, Hip_Exp['Pelvis_HS:Force_D [kN]'], label = "Experiment", **plotExperiment)
ax1.set(title="High Speed", ylabel="Force [kN]")
ax1.set_xlim(0,60)
ax1.set_ylim(0,15)

ax2.plot(-simData_50F_Hip_LS['IMPACTOR']['Disp_x']['displacement']-10, simData_50F_Hip_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],  **plot50F)
ax2.plot(-simData_50M_Hip_LS['IMPACTOR']['Disp_x']['displacement']-15, simData_50M_Hip_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],  **plot50M)
ax2.plot(Hip_Exp['Pelvis_LS:Deflection [cm]']*10, Hip_Exp['Pelvis_LS:Force_D [kN]'], **plotExperiment)
ax2.set(title="Low Speed", xlabel ="Deflection [mm]", ylabel="Force [kN]")
ax2.set_xlim(0,60)
ax2.set_ylim(0,15)

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

plt.show()
../_images/7a8e7728b4523b2a1d8e6f1f16b98e671a7151ccfce2c9754269483e8aac0523.png
Hide code cell source
fig_ft_Hip, (ax1, ax2) = plt.subplots(nrows=2, ncols=1)
fig_ft_Hip.suptitle('Thorax Impacts')

ax1.plot(-simData_50F_Thorax_MS['IMPACTOR']['Disp_x']['displacement']-35, simData_50F_Thorax_MS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50F", **plot50F)
ax1.plot(-simData_50M_Thorax_MS['IMPACTOR']['Disp_x']['displacement']-35, simData_50M_Thorax_MS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50M", **plot50M)
ax1.plot(Thorax_Exp['Thorax_MS:Deflection [cm]']*10, Thorax_Exp['Thorax_MS:Force_D [kN]'], label = "Experiment", **plotExperiment)
ax1.set(title="Medium Speed", ylabel="Force [kN]")
ax1.set_xlim(0,120)
ax1.set_ylim(0,5)


ax2.plot(-simData_50F_Thorax_LS['IMPACTOR']['Disp_x']['displacement']-30, simData_50F_Thorax_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],  **plot50F)
ax2.plot(-simData_50M_Thorax_LS['IMPACTOR']['Disp_x']['displacement']-30, simData_50M_Thorax_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],  **plot50M)
ax2.plot(Thorax_Exp['Thorax_LS:Deflection [cm]']*10, Thorax_Exp['Thorax_LS:Force_D [kN]'], **plotExperiment)
ax2.set(title="Low Speed", xlabel ="Deflection [mm]", ylabel="Force [kN]")
ax2.set_xlim(0,120)
ax2.set_ylim(0,5)

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

plt.show()
../_images/af8e862f689ecd6d9f206cc779cfcd0a81b1d73499d9d8c00d0b2b6cd690d586.png
Hide code cell source
fig_ft_Abdomen, (ax1, ax2) = plt.subplots(nrows=2, ncols=1)
fig_ft_Abdomen.suptitle('Abdomen Impacts')

ax1.plot(-simData_50F_Abdomen_MS['IMPACTOR']['Disp_x']['displacement']-35, simData_50F_Abdomen_MS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50F", **plot50F)
ax1.plot(-simData_50M_Abdomen_MS['IMPACTOR']['Disp_x']['displacement']-40, simData_50M_Abdomen_MS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50M", **plot50M)
ax1.plot(Abdomen_Exp['Abdomen_MS:Deflection [cm]']*10, Abdomen_Exp['Abdomen_MS:Force_D [kN]'], label = "Experiment", **plotExperiment)
ax1.set(title="Medium Speed", ylabel="Force [kN]")
ax1.set_xlim(0,150)
ax1.set_ylim(0,5)


ax2.plot(-simData_50F_Abdomen_LS['IMPACTOR']['Disp_x']['displacement']-30, simData_50F_Abdomen_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],  **plot50F)
ax2.plot(-simData_50M_Abdomen_LS['IMPACTOR']['Disp_x']['displacement']-42, simData_50M_Abdomen_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],  **plot50M)
ax2.plot(Abdomen_Exp['Abdomen_LS:Deflection [cm]']*10, Abdomen_Exp['Abdomen_LS:Force_D [kN]'], **plotExperiment)
ax2.set(title="Low Speed", xlabel ="Deflection [mm]", ylabel="Force [kN]")
ax2.set_xlim(0,150)
ax2.set_ylim(0,5)

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

plt.show()
../_images/369495a0ac8e50591eb7e74b3f413550dbb7430c99e3acf7788c522a3806e6c8.png

Summary of low-speed impacts#

Hide code cell source
fig_fd_LS, (ax1, ax2, ax3) = plt.subplots(nrows=1, ncols=3, figsize=(10,3))

ax1.plot(-simData_50F_Hip_LS['IMPACTOR']['Disp_x']['displacement']-7, simData_50F_Hip_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50F", **plot50F)
ax1.plot(-simData_50M_Hip_LS['IMPACTOR']['Disp_x']['displacement']-13, simData_50M_Hip_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],label = "VIVA+ 50M",  **plot50M)
ax1.plot(Hip_Exp['Pelvis_LS:Deflection [cm]']*10, Hip_Exp['Pelvis_LS:Force_D [kN]'], label = "Experiment", **plotExperiment)
ax1.set(title="Hip 5.2 m/s", xlabel ="Deflection [mm]", ylabel="Force [kN]")
ax1.set_xlim(0,150)
ax1.set_ylim(0,6)

ax2.plot(-simData_50F_Abdomen_LS['IMPACTOR']['Disp_x']['displacement']-35, simData_50F_Abdomen_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50F", **plot50F)
ax2.plot(-simData_50M_Abdomen_LS['IMPACTOR']['Disp_x']['displacement']-44, simData_50M_Abdomen_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50M", **plot50M)
ax2.plot(Abdomen_Exp['Abdomen_LS:Deflection [cm]']*10, Abdomen_Exp['Abdomen_LS:Force_D [kN]'], label = "Experiment", **plotExperiment)
ax2.set(title="Abdomen 4.8 m/s", xlabel ="Deflection [mm]")
ax2.set_xlim(0,150)
ax2.set_ylim(0,6)

ax3.plot(-simData_50F_Thorax_LS['IMPACTOR']['Disp_x']['displacement']-30, simData_50F_Thorax_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50F", **plot50F)
ax3.plot(-simData_50M_Thorax_LS['IMPACTOR']['Disp_x']['displacement']-35, simData_50M_Thorax_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50M", **plot50M)
ax3.plot(Thorax_Exp['Thorax_LS:Deflection [cm]']*10, Thorax_Exp['Thorax_LS:Force_D [kN]'], label = "Experiment", **plotExperiment)
ax3.set(title="Thorax 4.4 m/s", xlabel ="Deflection [mm]")
ax3.set_xlim(0,150)
ax3.set_ylim(0,6)

ax3.legend(loc='center left', bbox_to_anchor=(1, 0.5));
fig_fd_LS.tight_layout(pad=0.5)
../_images/58716d7adeef269599fa4f8a6ae950fea443031bedd873ded13f510ab6859d3b.png

Summary of high-speed impacts#

Hide code cell source
fig_fd_MS, (ax1, ax2, ax3) = plt.subplots(nrows=1, ncols=3, figsize=(10,3))

ax1.plot(-simData_50F_Hip_HS['IMPACTOR']['Disp_x']['displacement']-7, simData_50F_Hip_HS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50F", **plot50F)
ax1.plot(-simData_50M_Hip_HS['IMPACTOR']['Disp_x']['displacement']-13, simData_50M_Hip_HS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],label = "VIVA+ 50M",  **plot50M)
ax1.plot(Hip_Exp['Pelvis_HS:Deflection [cm]']*10, Hip_Exp['Pelvis_HS:Force_D [kN]'], label = "Experiment", **plotExperiment)
ax1.set(title="Hip 9.8 m/s", xlabel ="Deflection [mm]", ylabel="Force [kN]")
ax1.set_xlim(0,150)
ax1.set_ylim(0,15)

ax2.plot(-simData_50F_Abdomen_MS['IMPACTOR']['Disp_x']['displacement']-35, simData_50F_Abdomen_MS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50F", **plot50F)
ax2.plot(-simData_50M_Abdomen_MS['IMPACTOR']['Disp_x']['displacement']-45, simData_50M_Abdomen_MS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50M", **plot50M)
ax2.plot(Abdomen_Exp['Abdomen_MS:Deflection [cm]']*10, Abdomen_Exp['Abdomen_MS:Force_D [kN]'], label = "Experiment", **plotExperiment)
ax2.set(title="Abdomen 6.8 m/s", xlabel ="Deflection [mm]")
ax2.set_xlim(0,150)
ax2.set_ylim(0,15)

ax3.plot(-simData_50F_Thorax_MS['IMPACTOR']['Disp_x']['displacement']-30, simData_50F_Thorax_MS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50F", **plot50F)
ax3.plot(-simData_50M_Thorax_MS['IMPACTOR']['Disp_x']['displacement']-35, simData_50M_Thorax_MS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50M", **plot50M)
ax3.plot(Thorax_Exp['Thorax_MS:Deflection [cm]']*10, Thorax_Exp['Thorax_MS:Force_D [kN]'], label = "Experiment", **plotExperiment)
ax3.set(title="Thorax 6.5 m/s", xlabel ="Deflection [mm]")
ax3.set_xlim(0,150)
ax3.set_ylim(0,15)

ax3.legend(loc='center left', bbox_to_anchor=(1, 0.5));
fig_fd_MS.tight_layout(pad=0.5)
../_images/bd5d811768f716c7de29f87842ef87ea982bd8cc71d96f6208e4083fe2c05b62.png

Force-time histories#

Hide code cell source
fig_ft_Hip, (ax1, ax2) = plt.subplots(nrows=2, ncols=1)
fig_ft_Hip.suptitle('Hip Impacts')

ax1.plot(simData_50F_Hip_HS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_600']['time']-1, simData_50F_Hip_HS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50F", **plot50F)
ax1.plot(simData_50M_Hip_HS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_600']['time']-1.5, simData_50M_Hip_HS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50M", **plot50M)
ax1.plot(Hip_Exp['Pelvis_HS:Time [ms]'], Hip_Exp['Pelvis_HS:Force [kN]'], label = "Experiment", **plotExperiment)
ax1.set(title="High Speed", ylabel="Force [kN]")
ax1.set_xlim(0,40)
ax1.set_ylim(0,15)

ax2.plot(simData_50F_Hip_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_600']['time']-1, simData_50F_Hip_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],  **plot50F)
ax2.plot(simData_50M_Hip_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_600']['time']-2, simData_50M_Hip_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],  **plot50M)
ax2.plot(Hip_Exp['Pelvis_LS:Time [ms]'], Hip_Exp['Pelvis_LS:Force [kN]'], **plotExperiment)
ax2.set(title="Low Speed", xlabel ="Time [ms]", ylabel="Force [kN]")
ax2.set_xlim(0,40)
ax2.set_ylim(0,15)


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

plt.show()
../_images/d3f418e0c8c5d1a5630f18591627f0f73385d3a736068032decf12e7834ae501.png
Hide code cell source
fig_ft_Thorax, (ax1, ax2) = plt.subplots(nrows=2, ncols=1)
fig_ft_Thorax.suptitle('Thorax Impacts')

ax1.plot(simData_50F_Thorax_MS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['time']-5, simData_50F_Thorax_MS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50F", **plot50F)
ax1.plot(simData_50M_Thorax_MS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['time']-1, simData_50M_Thorax_MS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50M", **plot50M)
ax1.plot(Thorax_Exp['Thorax_MS:Time [ms]'], Thorax_Exp['Thorax_MS:Force [kN]'], label = "Experiment", **plotExperiment)
ax1.set(title="Medium Speed", ylabel="Force [kN]")
ax1.set_xlim(0,60)
ax1.set_ylim(0,10)

ax2.plot(simData_50F_Thorax_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['time']-6, simData_50F_Thorax_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],  **plot50F)
ax2.plot(simData_50M_Thorax_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['time']-6, simData_50M_Thorax_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],  **plot50M)
ax2.plot(Thorax_Exp['Thorax_LS:Time [ms]'], Thorax_Exp['Thorax_LS:Force [kN]'], **plotExperiment)
ax2.set(title="Low Speed", xlabel ="Time [ms]", ylabel="Force [kN]")
ax2.set_xlim(0,60)
ax2.set_ylim(0,10)


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

plt.show()
../_images/e7d85484ad2fc4997e39dfe4e91d9dda8ff99d69dd37ecb9e7ec0351b3aab5bc.png
Hide code cell source
fig_ft_Abdomen, (ax1, ax2) = plt.subplots(nrows=2, ncols=1)
fig_ft_Abdomen.suptitle('Abdomen Impacts')

ax1.plot(simData_50F_Abdomen_MS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['time']-5, simData_50F_Abdomen_MS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50F", **plot50F)
ax1.plot(simData_50M_Abdomen_MS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['time']-6, simData_50M_Abdomen_MS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50M", **plot50M)
ax1.plot(Abdomen_Exp['Abdomen_MS:Time [ms]'], Abdomen_Exp['Abdomen_MS:Force [kN]'], label = "Experiment", **plotExperiment)
ax1.set(title="Medium Speed", ylabel="Force [kN]")
ax1.set_xlim(0,60)
ax1.set_ylim(0,5)

ax2.plot(simData_50F_Abdomen_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['time']-7, simData_50F_Abdomen_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],  **plot50F)
ax2.plot(simData_50M_Abdomen_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['time']-9, simData_50M_Abdomen_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],  **plot50M)
ax2.plot(Abdomen_Exp['Abdomen_LS:Time [ms]'], Abdomen_Exp['Abdomen_LS:Force [kN]'], **plotExperiment)
ax2.set(title="Low Speed", xlabel ="Time [ms]", ylabel="Force [kN]")
ax2.set_xlim(0,60)
ax2.set_ylim(0,5)

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

plt.show()
../_images/1f892ee2c5e505941b316131b788525f4208e291727c0a813821a2f7d7603dba.png
Hide code cell source
fig_Hip, ((ax1, ax2), (ax3, ax4)) = plt.subplots(nrows=2, ncols=2, figsize=(7,7))
fig_Hip.suptitle('Hip Impacts')

ax1.plot(simData_50F_Hip_HS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['time'], simData_50F_Hip_HS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50F", **plot50F)
ax1.plot(simData_50M_Hip_HS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['time'], simData_50M_Hip_HS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50M", **plot50M)
ax1.plot(Hip_Exp['Pelvis_HS:Time [ms]'], Hip_Exp['Pelvis_HS:Force [kN]'], label = "Experiment", **plotExperiment)
ax1.set(title="High Speed", ylabel="Force [kN]", xlabel ="Time [ms]")
ax1.set_xlim(0,60)
ax1.set_ylim(0,12)

ax2.plot(simData_50F_Hip_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['time']-1, simData_50F_Hip_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],  **plot50F)
ax2.plot(simData_50M_Hip_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['time']-2, simData_50M_Hip_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],  **plot50M)
ax2.plot(Hip_Exp['Pelvis_LS:Time [ms]'], Hip_Exp['Pelvis_LS:Force [kN]'], **plotExperiment)
ax2.set(title="Low Speed", xlabel ="Time [ms]")
ax2.set_xlim(0,60)
ax2.set_ylim(0,12)

ax3.plot(-simData_50F_Hip_HS['IMPACTOR']['Disp_x']['displacement']-1, simData_50F_Hip_HS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50F", **plot50F)
ax3.plot(-simData_50M_Hip_HS['IMPACTOR']['Disp_x']['displacement']-10, simData_50M_Hip_HS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'], label = "VIVA+ 50M", **plot50M)
ax3.plot(Hip_Exp['Pelvis_HS:Deflection [cm]']*10, Hip_Exp['Pelvis_HS:Force_D [kN]'], label = "Experiment", **plotExperiment)
ax3.set( xlabel ="Deflection [mm]", ylabel="Force [kN]")
ax3.set_xlim(0,200)
ax3.set_ylim(0,12)

ax4.plot(-simData_50F_Hip_LS['IMPACTOR']['Disp_x']['displacement']-7, simData_50F_Hip_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],  **plot50F)
ax4.plot(-simData_50M_Hip_LS['IMPACTOR']['Disp_x']['displacement']-15, simData_50M_Hip_LS['IMPACTOR']['Contactforce_impactor_to_HBM_CFC_180']['force'],  **plot50M)
ax4.plot(Hip_Exp['Pelvis_LS:Deflection [cm]']*10, Hip_Exp['Pelvis_LS:Force_D [kN]'], **plotExperiment)
ax4.set( xlabel ="Deflection [mm]")
ax4.set_xlim(0,200)
ax4.set_ylim(0,12)

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

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

Energies#

Hide code cell source
fig_energy, ((ax1F, ax1M), (ax2F, ax2M),(ax3F, ax3M),(ax4F, ax4M),(ax5F, ax5M),(ax6F, ax6M)) = plt.subplots(nrows=6, ncols=2, figsize=(15,30))
fig_energy.suptitle('Model Energies')
#plt.set_title('Simulation #1')
#plt.set_ylabel('Energies (J)')
i="1"
figure=ax1

LC=Loadcases[0]

ax1F.plot(simData_50F_Hip_HS.MODEL.Hourglass_Energy.time, simData_50F_Hip_HS.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
ax1F.plot(simData_50F_Hip_HS.MODEL.Internal_Energy.time, simData_50F_Hip_HS.MODEL.Internal_Energy.energy, label = "Internal Energy")
ax1F.plot(simData_50F_Hip_HS.MODEL.Kinetic_Energy.time, simData_50F_Hip_HS.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
ax1F.plot(simData_50F_Hip_HS.MODEL.Total_Energy.time, simData_50F_Hip_HS.MODEL.Total_Energy.energy, label = "Total Energy")
ax1F.set(title=LC + "_50F", xlabel ="time [ms]", ylabel="Energy [J]")

ax1M.plot(simData_50M_Hip_HS.MODEL.Hourglass_Energy.time, simData_50M_Hip_HS.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
ax1M.plot(simData_50M_Hip_HS.MODEL.Internal_Energy.time, simData_50M_Hip_HS.MODEL.Internal_Energy.energy, label = "Internal Energy")
ax1M.plot(simData_50M_Hip_HS.MODEL.Kinetic_Energy.time, simData_50M_Hip_HS.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
ax1M.plot(simData_50M_Hip_HS.MODEL.Total_Energy.time, simData_50M_Hip_HS.MODEL.Total_Energy.energy, label = "Total Energy")
ax1M.set(title=LC + "_50M", xlabel ="time [ms]", ylabel="Energy [J]")

LC=Loadcases[1]
ax2F.plot(simData_50F_Hip_LS.MODEL.Hourglass_Energy.time, simData_50F_Hip_LS.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
ax2F.plot(simData_50F_Hip_LS.MODEL.Internal_Energy.time, simData_50F_Hip_LS.MODEL.Internal_Energy.energy, label = "Internal Energy")
ax2F.plot(simData_50F_Hip_LS.MODEL.Kinetic_Energy.time, simData_50F_Hip_LS.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
ax2F.plot(simData_50F_Hip_LS.MODEL.Total_Energy.time, simData_50F_Hip_LS.MODEL.Total_Energy.energy, label = "Total Energy")
ax2F.set(title=LC + "_50F", xlabel ="time [ms]", ylabel="Energy [J]")

ax2M.plot(simData_50M_Hip_LS.MODEL.Hourglass_Energy.time, simData_50M_Hip_LS.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
ax2M.plot(simData_50M_Hip_LS.MODEL.Internal_Energy.time, simData_50M_Hip_LS.MODEL.Internal_Energy.energy, label = "Internal Energy")
ax2M.plot(simData_50M_Hip_LS.MODEL.Kinetic_Energy.time, simData_50M_Hip_LS.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
ax2M.plot(simData_50M_Hip_LS.MODEL.Total_Energy.time, simData_50M_Hip_LS.MODEL.Total_Energy.energy, label = "Total Energy")
ax2M.set(title=LC + "_50M", xlabel ="time [ms]", ylabel="Energy [J]")

LC=Loadcases[2]
ax3F.plot(simData_50F_Abdomen_MS.MODEL.Hourglass_Energy.time, simData_50F_Abdomen_MS.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
ax3F.plot(simData_50F_Abdomen_MS.MODEL.Internal_Energy.time, simData_50F_Abdomen_MS.MODEL.Internal_Energy.energy, label = "Internal Energy")
ax3F.plot(simData_50F_Abdomen_MS.MODEL.Kinetic_Energy.time, simData_50F_Abdomen_MS.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
ax3F.plot(simData_50F_Abdomen_MS.MODEL.Total_Energy.time, simData_50F_Abdomen_MS.MODEL.Total_Energy.energy, label = "Total Energy")
ax3F.set(title=LC + "_50F", xlabel ="time [ms]", ylabel="Energy [J]")

ax3M.plot(simData_50M_Abdomen_MS.MODEL.Hourglass_Energy.time, simData_50M_Abdomen_MS.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
ax3M.plot(simData_50M_Abdomen_MS.MODEL.Internal_Energy.time, simData_50M_Abdomen_MS.MODEL.Internal_Energy.energy, label = "Internal Energy")
ax3M.plot(simData_50M_Abdomen_MS.MODEL.Kinetic_Energy.time, simData_50M_Abdomen_MS.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
ax3M.plot(simData_50M_Abdomen_MS.MODEL.Total_Energy.time, simData_50M_Abdomen_MS.MODEL.Total_Energy.energy, label = "Total Energy")
ax3M.set(title=LC + "_50M", xlabel ="time [ms]", ylabel="Energy [J]")

LC=Loadcases[3]
ax4F.plot(simData_50F_Abdomen_LS.MODEL.Hourglass_Energy.time, simData_50F_Abdomen_LS.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
ax4F.plot(simData_50F_Abdomen_LS.MODEL.Internal_Energy.time, simData_50F_Abdomen_LS.MODEL.Internal_Energy.energy, label = "Internal Energy")
ax4F.plot(simData_50F_Abdomen_LS.MODEL.Kinetic_Energy.time, simData_50F_Abdomen_LS.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
ax4F.plot(simData_50F_Abdomen_LS.MODEL.Total_Energy.time, simData_50F_Abdomen_LS.MODEL.Total_Energy.energy, label = "Total Energy")
ax4F.set(title=LC + "_50F", xlabel ="time [ms]", ylabel="Energy [J]")

ax4M.plot(simData_50M_Abdomen_LS.MODEL.Hourglass_Energy.time, simData_50M_Abdomen_LS.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
ax4M.plot(simData_50M_Abdomen_LS.MODEL.Internal_Energy.time, simData_50M_Abdomen_LS.MODEL.Internal_Energy.energy, label = "Internal Energy")
ax4M.plot(simData_50M_Abdomen_LS.MODEL.Kinetic_Energy.time, simData_50M_Abdomen_LS.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
ax4M.plot(simData_50M_Abdomen_LS.MODEL.Total_Energy.time, simData_50M_Abdomen_LS.MODEL.Total_Energy.energy, label = "Total Energy")
ax4M.set(title=LC + "_50M", xlabel ="time [ms]", ylabel="Energy [J]")

LC=Loadcases[4]
ax5F.plot(simData_50F_Thorax_MS.MODEL.Hourglass_Energy.time, simData_50F_Thorax_MS.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
ax5F.plot(simData_50F_Thorax_MS.MODEL.Internal_Energy.time, simData_50F_Thorax_MS.MODEL.Internal_Energy.energy, label = "Internal Energy")
ax5F.plot(simData_50F_Thorax_MS.MODEL.Kinetic_Energy.time, simData_50F_Thorax_MS.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
ax5F.plot(simData_50F_Thorax_MS.MODEL.Total_Energy.time, simData_50F_Thorax_MS.MODEL.Total_Energy.energy, label = "Total Energy")
ax5F.set(title=LC + "_50F", xlabel ="time [ms]", ylabel="Energy [J]")

ax5M.plot(simData_50M_Thorax_MS.MODEL.Hourglass_Energy.time, simData_50M_Thorax_MS.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
ax5M.plot(simData_50M_Thorax_MS.MODEL.Internal_Energy.time, simData_50M_Thorax_MS.MODEL.Internal_Energy.energy, label = "Internal Energy")
ax5M.plot(simData_50M_Thorax_MS.MODEL.Kinetic_Energy.time, simData_50M_Thorax_MS.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
ax5M.plot(simData_50M_Thorax_MS.MODEL.Total_Energy.time, simData_50M_Thorax_MS.MODEL.Total_Energy.energy, label = "Total Energy")
ax5M.set(title=LC + "_50M", xlabel ="time [ms]", ylabel="Energy [J]")

LC=Loadcases[5]
ax6F.plot(simData_50F_Thorax_LS.MODEL.Hourglass_Energy.time, simData_50F_Thorax_LS.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
ax6F.plot(simData_50F_Thorax_LS.MODEL.Internal_Energy.time, simData_50F_Thorax_LS.MODEL.Internal_Energy.energy, label = "Internal Energy")
ax6F.plot(simData_50F_Thorax_LS.MODEL.Kinetic_Energy.time, simData_50F_Thorax_LS.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
ax6F.plot(simData_50F_Thorax_LS.MODEL.Total_Energy.time, simData_50F_Thorax_LS.MODEL.Total_Energy.energy, label = "Total Energy")
ax6F.set(title=LC + "_50F", xlabel ="time [ms]", ylabel="Energy [J]")

ax6M.plot(simData_50M_Thorax_LS.MODEL.Hourglass_Energy.time, simData_50M_Thorax_LS.MODEL.Hourglass_Energy.energy, label = "Hourglass Energy")
ax6M.plot(simData_50M_Thorax_LS.MODEL.Internal_Energy.time, simData_50M_Thorax_LS.MODEL.Internal_Energy.energy, label = "Internal Energy")
ax6M.plot(simData_50M_Thorax_LS.MODEL.Kinetic_Energy.time, simData_50M_Thorax_LS.MODEL.Kinetic_Energy.energy, label = "Kinetic Energy")
ax6M.plot(simData_50M_Thorax_LS.MODEL.Total_Energy.time, simData_50M_Thorax_LS.MODEL.Total_Energy.energy, label = "Total Energy")
ax6M.set(title=LC + "_50M", xlabel ="time [ms]", ylabel="Energy [J]")


plt.legend(loc='best', bbox_to_anchor=(0, 7.5),
          fancybox=True, shadow=True);

#plt.tight_layout(pad=0.5)
<matplotlib.legend.Legend at 0x1ea628bb048>
../_images/2729678cb6c204b5b0fd81e28e9413f655c70631978d303527cc3e25a94039f1.png