Thorax response to steering wheel impact (Shaw 2004)¶
Experiment by Shaw et al. (2004)¶
Summary:¶
The simulated outputs are compared to the references from PMHS tests reported by Shaw et al., 2004
Shaw, G., Lessley, D., Bolton, J [Jim], & Crandall, J. (2004). Assessment of the Thor and Hybrid III Crash Dummies: Steering Wheel Rim Impacts to the Upper Abdomen. In SAE Technical Paper Series, SAE Technical Paper Series. SAE International400 Commonwealth Drive, Warrendale, PA, United States. https://doi.org/10.4271/2004-01-0310
Example animations illustrating the impact locations in simulations with THUMS v4.1 50M are provided below:

Experiment¶
Information on the subjects/specimens¶
- 4 male subjects (average weight: 61.0 kg, average height: 169.8 cm, average age: 57.5 yrs)
¶
| Subject Number | Weight (kg) | Height (cm) | Age (yrs) |
|---|---|---|---|
| 135 | 69.1 | 172.6 | 63 |
| 159 | 65.9 | 166.5 | 66 |
| 149 | 43.1 | 158.3 | 40 |
| 161 | 65.8 | 181.7 | 61 |
| Average | 61.0 | 169.8 | 57.71 |
Loading and Boundary Conditions¶
- Total of 4 tests. 1 for each subject.
- Frontal steering wheel impact at 50mm below sternum up to different penetration levels.
Impact¶
|Subject|Impactor velocity (m/s)|Impactor penetration level |---|:---:|:---:| |135|4|30% of chest depth| |159|4|30% of chest depth| |149|4|30% of chest depth| |161|4|50% of chest depth|
Responses recorded¶
- Deflection and velocity of the steering wheel
- Load cell on the steering wheel
- The reference values from the paper were digitised and are included in the package.
Simulation - Outputs¶
- Contact force between the hub and the thorax
- Steering wheel displacement
- Model Energies
How to use this Notebook¶
- Copy your simulation results (only binouts are used) to the folder sim_results, into the correct subfolder (i.e. sim_results\1-Hub).
- Make sure the dynasaur ID file is provided for your HBM and the path in the respective cell ('Path to Dynasaur definition files') is set accordingly. For reference, an example file is provided in(data\metadata) and update which HBM you're using.
- Run the notebook and check your results for plausibility. Particularly, make sure that the automatically selected offset makes sense.
Disclaimer¶
The rib fracture predictions remain in the experimental stage for now and will be monitored for 2026 only. A criterion will be developed based on the data received for 2029.
# Libraries for plotting
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
sns.set_style("whitegrid")
plot50M = { "linestyle" :'-', "color" : 'b', 'linewidth' : 3}
plot50F = { "linestyle" :'-', "color" : 'r', 'linewidth' : 3}
plotExperiment = {"linestyle" :'--', "color" : 'grey', "alpha" : 0.7 }
plotExperimentMale = {"linestyle" :'--', "color" : 'b',"alpha" : 0.7,}
plotExperimentFemale = {"linestyle" :'--', "color" : 'r', "alpha" : 0.7 }
plt.rcParams['figure.dpi'] = 140
unit_time_plot = 'millisecond'
unit_deflection_plot = 'millimeter'
unit_force_plot = 'kilonewton'
unit_energy_plot = 'joule'
unit_mass_plot = 'kilogram'
# Import dynasaur library
from dynasaur.plugins.data_visualization_controller import DataVisualizationController
from dynasaur.plugins.criteria_controller import CriteriaController
# Read in version
# If you encounter an error message saying "Line does not start with "Version: " but..."
# please make sure that the main file header is unchanged from the file available at
# https://openvt.eu/EuroNCAP/hbm4vt-validation-catalogue/ls-dyna/shaw_2004.
setup_dict={'LPL': 'Steering wheel penetration up to 30% of chest depth',
'HPL': 'Steering wheel penetration up to 50% of chest depth'}
file_master = '00_Master_SteeringWheel_VIVA+50M_HPL.k'
with open(file_master, 'r') as fp:
lines = fp.readlines()
version_line = lines[2]
if not version_line.startswith('Version: '):
raise ValueError(f'Line does not start with "Version: " but {version_line}.')
version = version_line.split(' ')[1].strip()
setup_type = None
for line in lines:
if line.strip() == 'R LPL 1.':
setup_type = 'LPL'
break
if line.strip() == 'R HPL 1.':
setup_type = 'HPL'
break
if setup_type is None:
raise ValueError('Setup type not found in 00_Master_SteeringWheel.k.')
print('Simulation setup type:', setup_dict[setup_type])
Simulation setup type: Steering wheel penetration up to 50% of chest depth
# Adjust settings here.
settings = {
"HBM": "VIVA+_50M", # E.g. THUMS_v4.1_05F, THUMS_v4.1_50M, VIVA+_50F
"units": "ms_mm_kg", # E.g. s_mm_ton, ms_mm_kg
"def_id_file": "00_vivaplus_IDs.def", # E.g. 00_THUMS_v4.1_05F_IDs.def, 00_THUMS_v4.1_50M_IDs.def, 00_VIVA+_50F_IDs.def
"HBM_char_file": 'HBM_characteristics_VIVA+_50M.csv', # E.g. HBM_characteristics_THUMS_v4.1_50M.csv, HBM_characteristics_VIVA+_50F.csv
"rib_max_defl": 40, # There are 10 deflection levels up to rib_max_defl with step size given by step_size_defl. E.g. for "rib_max_defl": 90 and "step_size_defl": 5, deflection levels are [45, 50, ... 85, 90].
"step_size_defl": 5, # Deflection levels which are not reached are ignored.
"rib_criterion": "Larsson2021", # E.g. Larsson2021 or alternative tuned to THUMS v4.1 AM50: 'Forman2022_3plus'
"t_settle": 0.1, # Settling time in seconds. IMPORTANT: If settling time (parameter "SetHBM" in the master file) is changed, it needs to be adjusted here accordingly.
"solver_used": "LS-Dyna R12.2.2 SP",
"organisation": "OVTO",
"version": version,
"setup_type": setup_type,
"date": date.today().strftime('%Y-%m-%d')
}
# Length is expected to be in mm. If this changes, adjustments e.g. to rib_max_defl, step_size_defl are necessary.
assert settings["units"].split("_")[1] == "mm"
unit_system_to_time = {"s_mm_ton": "second", "ms_mm_kg": "millisecond"}
# Settling time to unit system.
t_settle = (settings["t_settle"] * ureg("seconds")).to(unit_system_to_time[settings["units"]]).magnitude
print('---- starting complete assessment ----')
sim = DataVisualizationController(calculation_procedure_def_file=dynasaur_def,
object_def_file=dynasaur_def_id,
user_function_object=UserFunction,
data_source= binout_path_sim +'/binout*')
for command in sim.get_defined_calculation_procedures():
sim.calculate(command)
sim.write_CSV(result_output_dir, filename=setup_type+"_Dynasaur_diagram_output_" + settings["HBM"] + ".csv")
---- starting complete assessment ---- [READ DYNASAUR DEF] read data/metadata/01_units_ms_mm_kg.def [READ DYNASAUR DEF] read data/metadata/02_quality_criteria.def [READ DYNASAUR DEF] read data/metadata/04_hub.def [READ DYNASAUR DEF] read data/metadata/06_HBM_ribs_criteria.def [READ DYNASAUR DEF] read data/metadata/06a_HBM_ribs_visualisation.def [READ DYNASAUR DEF] read data/metadata/07a_HBM_ribs_NFR_risk_Larsson_2021.def [READ DYNASAUR DEF] read data/metadata/07b_HBM_ribs_NFR_risk_Larsson_2021_deflection_limits.def [READ DYNASAUR DEF] read data/metadata/07c_HBM_THUMS_50M_ribs_NFR_risk_Forman2022_3plus.def [READ DYNASAUR DEF] read data/metadata/07d_HBM_THUMS_50M_ribs_NFR_risk_Forman2022_3plus_deflection_limits.def [READ DYNASAUR DEF] done [READ DYNASAUR DEF] read data/metadata/00_Shaw_2004_env_ID.def [READ DYNASAUR DEF] read data/metadata/00_Shaw_2004_hub_ID.def [READ DYNASAUR DEF] read data/metadata/00_vivaplus_IDs.def [READ DYNASAUR DEF] done [READ BINOUT] read glstat data ... [READ BINOUT] done reading glstat! [READ BINOUT] read matsum data ... [WARNING] binout keys: brick_id legend z_rbvelocity shell_id build_id total_kinetic_energy revision y_momentum time hourglass_energy z_momentum version date internal_energy y_rbvelocity x_momentum eroded_internal_energy kinetic_energy ids max_brick_mass max_shell_mass legend_ids eroded_kinetic_energy x_rbvelocity mass title [WARNING] Your definition file tries to access the following undefined keys : x_acceleration [READ BINOUT] done reading matsum! [READ BINOUT] read nodout data ... [READ BINOUT] done reading nodout! [READ BINOUT] read rcforc data ... [READ BINOUT] done reading rcforc! [READ BINOUT] read elout data ... [READ BINOUT] elout: initialize stress shell [READ BINOUT] assign stresses for shell elements [READ BINOUT] extract data took : 5.049900054931641 [READ BINOUT] calc eigenvalue [READ BINOUT] calc eigenvalues took : 3.943300724029541 [READ BINOUT] assign strains for shell elements [READ BINOUT] elout: initialize strain shell [READ BINOUT] extract data took : 2.895660877227783 [READ BINOUT] calc eigenvalue [READ BINOUT] calc eigenvalues took : 1.5711579322814941 [READ BINOUT] elout: initialize stress solid [READ BINOUT] assign stresses for solid elements [READ BINOUT] extract data took : 1.1430227756500244 [READ BINOUT] calc eigenvalue [READ BINOUT] calc eigenvalues took : 0.7660927772521973 [READ BINOUT] assign strains for solid elements [READ BINOUT] elout: initialize strain solid [READ BINOUT] extract data took : 1.1917710304260254 [READ BINOUT] calc eigenvalue [READ BINOUT] calc eigenvalues took : 0.7777175903320312 [READ BINOUT] elout: initialize stress beam [READ BINOUT] assign stresses for beam elements [READ BINOUT] nothing to extract [READ BINOUT] assign strains for beam elements [READ BINOUT] nothing to extract [READ BINOUT] done reading elout! [CALCULATION] Calculating Visualization: MODEL_Total_Energy_time [DATA] ENERGY_GLOBAL read from channel name: total_energy [CALCULATION] Calculating Visualization: MODEL_Internal_Energy_time [DATA] ENERGY_GLOBAL read from channel name: internal_energy [CALCULATION] Calculating Visualization: MODEL_Kinetic_Energy_time [DATA] ENERGY_GLOBAL read from channel name: kinetic_energy [CALCULATION] Calculating Visualization: MODEL_Hourglass_Energy_time [DATA] ENERGY_GLOBAL read from channel name: hourglass_energy [CALCULATION] Calculating Visualization: MODEL_Added_mass_time [DATA] ENERGY_GLOBAL read from channel name: added_mass [CALCULATION] Calculating Visualization: MODEL_Added_mass_percent_increase_time [DATA] ENERGY_GLOBAL read from channel name: percent_increase [DATA] ENERGY_GLOBAL read from channel name: percent_increase [CALCULATION] Calculating Visualization: MODEL_Sliding_Energy_time [DATA] ENERGY_GLOBAL read from channel name: sliding_interface_energy [CALCULATION] Calculating Visualization: HBM_HBM_added_mass_time [DATA] read id 101101 from channel name: mass [DATA] read id 101102 from channel name: mass [DATA] read id 101105 from channel name: mass [DATA] read id 101201 from channel name: mass [DATA] read id 101202 from channel name: mass [DATA] read id 101205 from channel name: mass [DATA] read id 101302 from channel name: mass [DATA] read id 101402 from channel name: mass [DATA] read id 101501 from channel name: mass [DATA] read id 101502 from channel name: mass [DATA] read id 101503 from channel name: mass [DATA] read id 101505 from channel name: mass [DATA] read id 101601 from channel name: mass [DATA] read id 101602 from channel name: mass [DATA] read id 101603 from channel name: mass [DATA] read id 101605 from channel name: mass [DATA] read id 101701 from channel name: mass [DATA] read id 101702 from channel name: mass [DATA] read id 101703 from channel name: mass [DATA] read id 101801 from channel name: mass [DATA] read id 101802 from channel name: mass [DATA] read id 101901 from channel name: mass [DATA] read id 101902 from channel name: mass [DATA] read id 101903 from channel name: mass [DATA] read id 101991 from channel name: mass [DATA] read id 101992 from channel name: mass [DATA] read id 103000 from channel name: mass [DATA] read id 103001 from channel name: mass [DATA] read id 103003 from channel name: mass [DATA] read id 104000 from channel name: mass [DATA] read id 104002 from channel name: mass [DATA] read id 105000 from channel name: mass [DATA] read id 105003 from channel name: mass [DATA] read id 105059 from channel name: mass [DATA] read id 105069 from channel name: mass [DATA] read id 106000 from channel name: mass [DATA] read id 106003 from channel name: mass [DATA] read id 107000 from channel name: mass [DATA] read id 151101 from channel name: mass [DATA] read id 151102 from channel name: mass [DATA] read id 151105 from channel name: mass [DATA] read id 151201 from channel name: mass [DATA] read id 151202 from channel name: mass [DATA] read id 151205 from channel name: mass [DATA] read id 151302 from channel name: mass [DATA] read id 151402 from channel name: mass [DATA] read id 151501 from channel name: mass [DATA] read id 151502 from channel name: mass [DATA] read id 151503 from channel name: mass [DATA] read id 151505 from channel name: mass [DATA] read id 151601 from channel name: mass [DATA] read id 151602 from channel name: mass [DATA] read id 151605 from channel name: mass [DATA] read id 151701 from channel name: mass [DATA] read id 151702 from channel name: mass [DATA] read id 151801 from channel name: mass [DATA] read id 151802 from channel name: mass [DATA] read id 151901 from channel name: mass [DATA] read id 151902 from channel name: mass [DATA] read id 151903 from channel name: mass [DATA] read id 151991 from channel name: mass [DATA] read id 151992 from channel name: mass [DATA] read id 153000 from channel name: mass [DATA] read id 153003 from channel name: mass [DATA] read id 154000 from channel name: mass [DATA] read id 154002 from channel name: mass [DATA] read id 155000 from channel name: mass [DATA] read id 155003 from channel name: mass [DATA] read id 155059 from channel name: mass [DATA] read id 155069 from channel name: mass [DATA] read id 156000 from channel name: mass [DATA] read id 156003 from channel name: mass [DATA] read id 157000 from channel name: mass [DATA] read id 200101 from channel name: mass [DATA] read id 200510 from channel name: mass [DATA] read id 200520 from channel name: mass [DATA] read id 200530 from channel name: mass [DATA] read id 200540 from channel name: mass [DATA] read id 200550 from channel name: mass [DATA] read id 200560 from channel name: mass [DATA] read id 200570 from channel name: mass [DATA] read id 200580 from channel name: mass [DATA] read id 200610 from channel name: mass [DATA] read id 200710 from channel name: mass [DATA] read id 200720 from channel name: mass [DATA] read id 200730 from channel name: mass [DATA] read id 200740 from channel name: mass [DATA] read id 200750 from channel name: mass [DATA] read id 200760 from channel name: mass [DATA] read id 201011 from channel name: mass [DATA] read id 201012 from channel name: mass [DATA] read id 201021 from channel name: mass [DATA] read id 201022 from channel name: mass [DATA] read id 201025 from channel name: mass [DATA] read id 201026 from channel name: mass [DATA] read id 201031 from channel name: mass [DATA] read id 201032 from channel name: mass [DATA] read id 201033 from channel name: mass [DATA] read id 201034 from channel name: mass [DATA] read id 201035 from channel name: mass [DATA] read id 201036 from channel name: mass [DATA] read id 201041 from channel name: mass [DATA] read id 201042 from channel name: mass [DATA] read id 201043 from channel name: mass [DATA] read id 201044 from channel name: mass [DATA] read id 201045 from channel name: mass [DATA] read id 201046 from channel name: mass [DATA] read id 201051 from channel name: mass [DATA] read id 201052 from channel name: mass [DATA] read id 201053 from channel name: mass [DATA] read id 201054 from channel name: mass [DATA] read id 201055 from channel name: mass [DATA] read id 201056 from channel name: mass [DATA] read id 201061 from channel name: mass [DATA] read id 201062 from channel name: mass [DATA] read id 201063 from channel name: mass [DATA] read id 201064 from channel name: mass [DATA] read id 201065 from channel name: mass [DATA] read id 201066 from channel name: mass [DATA] read id 201071 from channel name: mass [DATA] read id 201072 from channel name: mass [DATA] read id 201073 from channel name: mass [DATA] read id 201074 from channel name: mass [DATA] read id 201075 from channel name: mass [DATA] read id 201076 from channel name: mass [DATA] read id 201104 from channel name: mass [DATA] read id 201111 from channel name: mass [DATA] read id 201112 from channel name: mass [DATA] read id 201113 from channel name: mass [DATA] read id 201114 from channel name: mass [DATA] read id 201121 from channel name: mass [DATA] read id 201122 from channel name: mass [DATA] read id 201123 from channel name: mass [DATA] read id 201124 from channel name: mass [DATA] read id 201131 from channel name: mass [DATA] read id 201132 from channel name: mass [DATA] read id 201133 from channel name: mass [DATA] read id 201134 from channel name: mass [DATA] read id 201141 from channel name: mass [DATA] read id 201142 from channel name: mass [DATA] read id 201143 from channel name: mass [DATA] read id 201144 from channel name: mass [DATA] read id 201151 from channel name: mass [DATA] read id 201152 from channel name: mass [DATA] read id 201153 from channel name: mass [DATA] read id 201154 from channel name: mass [DATA] read id 201161 from channel name: mass [DATA] read id 201162 from channel name: mass [DATA] read id 201163 from channel name: mass [DATA] read id 201164 from channel name: mass [DATA] read id 201171 from channel name: mass [DATA] read id 201172 from channel name: mass [DATA] read id 201173 from channel name: mass [DATA] read id 201174 from channel name: mass [DATA] read id 201521 from channel name: mass [DATA] read id 201522 from channel name: mass [DATA] read id 201523 from channel name: mass [DATA] read id 201524 from channel name: mass [DATA] read id 201525 from channel name: mass [DATA] read id 201531 from channel name: mass [DATA] read id 201532 from channel name: mass [DATA] read id 201533 from channel name: mass [DATA] read id 201534 from channel name: mass [DATA] read id 201535 from channel name: mass [DATA] read id 201541 from channel name: mass [DATA] read id 201542 from channel name: mass [DATA] read id 201543 from channel name: mass [DATA] read id 201544 from channel name: mass [DATA] read id 201545 from channel name: mass [DATA] read id 201551 from channel name: mass [DATA] read id 201552 from channel name: mass [DATA] read id 201553 from channel name: mass [DATA] read id 201554 from channel name: mass [DATA] read id 201555 from channel name: mass [DATA] read id 201561 from channel name: mass [DATA] read id 201562 from channel name: mass [DATA] read id 201563 from channel name: mass [DATA] read id 201564 from channel name: mass [DATA] read id 201565 from channel name: mass [DATA] read id 201571 from channel name: mass [DATA] read id 201572 from channel name: mass [DATA] read id 201573 from channel name: mass [DATA] read id 201574 from channel name: mass [DATA] read id 201575 from channel name: mass [DATA] read id 202021 from channel name: mass [DATA] read id 202022 from channel name: mass [DATA] read id 202031 from channel name: mass [DATA] read id 202032 from channel name: mass [DATA] read id 202041 from channel name: mass [DATA] read id 202042 from channel name: mass [DATA] read id 202051 from channel name: mass [DATA] read id 202052 from channel name: mass [DATA] read id 202061 from channel name: mass [DATA] read id 202062 from channel name: mass [DATA] read id 202071 from channel name: mass [DATA] read id 202072 from channel name: mass [DATA] read id 202121 from channel name: mass [DATA] read id 202122 from channel name: mass [DATA] read id 202123 from channel name: mass [DATA] read id 202124 from channel name: mass [DATA] read id 202125 from channel name: mass [DATA] read id 202126 from channel name: mass [DATA] read id 202131 from channel name: mass [DATA] read id 202132 from channel name: mass [DATA] read id 202133 from channel name: mass [DATA] read id 202134 from channel name: mass [DATA] read id 202135 from channel name: mass [DATA] read id 202136 from channel name: mass [DATA] read id 202141 from channel name: mass [DATA] read id 202142 from channel name: mass [DATA] read id 202143 from channel name: mass [DATA] read id 202144 from channel name: mass [DATA] read id 202145 from channel name: mass [DATA] read id 202146 from channel name: mass [DATA] read id 202151 from channel name: mass [DATA] read id 202152 from channel name: mass [DATA] read id 202153 from channel name: mass [DATA] read id 202154 from channel name: mass [DATA] read id 202155 from channel name: mass [DATA] read id 202156 from channel name: mass [DATA] read id 202161 from channel name: mass [DATA] read id 202162 from channel name: mass [DATA] read id 202163 from channel name: mass [DATA] read id 202164 from channel name: mass [DATA] read id 202165 from channel name: mass [DATA] read id 202166 from channel name: mass [DATA] read id 202171 from channel name: mass [DATA] read id 202172 from channel name: mass [DATA] read id 202173 from channel name: mass [DATA] read id 202174 from channel name: mass [DATA] read id 202175 from channel name: mass [DATA] read id 202176 from channel name: mass [DATA] read id 203001 from channel name: mass [DATA] read id 203002 from channel name: mass [DATA] read id 203003 from channel name: mass [DATA] read id 203004 from channel name: mass [DATA] read id 203010 from channel name: mass [DATA] read id 205110 from channel name: mass [DATA] read id 205140 from channel name: mass [DATA] read id 205150 from channel name: mass [DATA] read id 205170 from channel name: mass [DATA] read id 205180 from channel name: mass [DATA] read id 205210 from channel name: mass [DATA] read id 205220 from channel name: mass [DATA] read id 205230 from channel name: mass [DATA] read id 205240 from channel name: mass [DATA] read id 205260 from channel name: mass [DATA] read id 205270 from channel name: mass [DATA] read id 205310 from channel name: mass [DATA] read id 205320 from channel name: mass [DATA] read id 205330 from channel name: mass [DATA] read id 205340 from channel name: mass [DATA] read id 205410 from channel name: mass [DATA] read id 205420 from channel name: mass [DATA] read id 205430 from channel name: mass [DATA] read id 205440 from channel name: mass [DATA] read id 205450 from channel name: mass [DATA] read id 205460 from channel name: mass [DATA] read id 205470 from channel name: mass [DATA] read id 205510 from channel name: mass [DATA] read id 205520 from channel name: mass [DATA] read id 205530 from channel name: mass [DATA] read id 205540 from channel name: mass [DATA] read id 205550 from channel name: mass [DATA] read id 205560 from channel name: mass [DATA] read id 205610 from channel name: mass [DATA] read id 205620 from channel name: mass [DATA] read id 205630 from channel name: mass [DATA] read id 205640 from channel name: mass [DATA] read id 205650 from channel name: mass [DATA] read id 205660 from channel name: mass [DATA] read id 205710 from channel name: mass [DATA] read id 205720 from channel name: mass [DATA] read id 205730 from channel name: mass [DATA] read id 205740 from channel name: mass [DATA] read id 205750 from channel name: mass [DATA] read id 205760 from channel name: mass [DATA] read id 205810 from channel name: mass [DATA] read id 205820 from channel name: mass [DATA] read id 205830 from channel name: mass [DATA] read id 205840 from channel name: mass [DATA] read id 205910 from channel name: mass [DATA] read id 205920 from channel name: mass [DATA] read id 205930 from channel name: mass [DATA] read id 205940 from channel name: mass [DATA] read id 205950 from channel name: mass [DATA] read id 205960 from channel name: mass [DATA] read id 205970 from channel name: mass [DATA] read id 206010 from channel name: mass [DATA] read id 206020 from channel name: mass [DATA] read id 206030 from channel name: mass [DATA] read id 206040 from channel name: mass [DATA] read id 206050 from channel name: mass [DATA] read id 206060 from channel name: mass [DATA] read id 206070 from channel name: mass [DATA] read id 206080 from channel name: mass [DATA] read id 206090 from channel name: mass [DATA] read id 206110 from channel name: mass [DATA] read id 206120 from channel name: mass [DATA] read id 206130 from channel name: mass [DATA] read id 206140 from channel name: mass [DATA] read id 206150 from channel name: mass [DATA] read id 206160 from channel name: mass [DATA] read id 206210 from channel name: mass [DATA] read id 206220 from channel name: mass [DATA] read id 206230 from channel name: mass [DATA] read id 206240 from channel name: mass [DATA] read id 206250 from channel name: mass [DATA] read id 206260 from channel name: mass [DATA] read id 206270 from channel name: mass [DATA] read id 206310 from channel name: mass [DATA] read id 206320 from channel name: mass [DATA] read id 206330 from channel name: mass [DATA] read id 206360 from channel name: mass [DATA] read id 206370 from channel name: mass [DATA] read id 206410 from channel name: mass [DATA] read id 206420 from channel name: mass [DATA] read id 206430 from channel name: mass [DATA] read id 206440 from channel name: mass [DATA] read id 206450 from channel name: mass [DATA] read id 206460 from channel name: mass [DATA] read id 206470 from channel name: mass [DATA] read id 206480 from channel name: mass [DATA] read id 206510 from channel name: mass [DATA] read id 206520 from channel name: mass [DATA] read id 206530 from channel name: mass [DATA] read id 206540 from channel name: mass [DATA] read id 206560 from channel name: mass [DATA] read id 206570 from channel name: mass [DATA] read id 206600 from channel name: mass [DATA] read id 206610 from channel name: mass [DATA] read id 206620 from channel name: mass [DATA] read id 206630 from channel name: mass [DATA] read id 206640 from channel name: mass [DATA] read id 206650 from channel name: mass [DATA] read id 206660 from channel name: mass [DATA] read id 206670 from channel name: mass [DATA] read id 206680 from channel name: mass [DATA] read id 206690 from channel name: mass [DATA] read id 206700 from channel name: mass [DATA] read id 206710 from channel name: mass [DATA] read id 206720 from channel name: mass [DATA] read id 206730 from channel name: mass [DATA] read id 206740 from channel name: mass [DATA] read id 206760 from channel name: mass [DATA] read id 206770 from channel name: mass [DATA] read id 206780 from channel name: mass [DATA] read id 206790 from channel name: mass [DATA] read id 206800 from channel name: mass [DATA] read id 206810 from channel name: mass [DATA] read id 206820 from channel name: mass [DATA] read id 206830 from channel name: mass [DATA] read id 206840 from channel name: mass [DATA] read id 206850 from channel name: mass [DATA] read id 206860 from channel name: mass [DATA] read id 206870 from channel name: mass [DATA] read id 206880 from channel name: mass [DATA] read id 206890 from channel name: mass [DATA] read id 206910 from channel name: mass [DATA] read id 206920 from channel name: mass [DATA] read id 206930 from channel name: mass [DATA] read id 206960 from channel name: mass [DATA] read id 206970 from channel name: mass [DATA] read id 214002 from channel name: mass [DATA] read id 250560 from channel name: mass [DATA] read id 250730 from channel name: mass [DATA] read id 253001 from channel name: mass [DATA] read id 253003 from channel name: mass [DATA] read id 253010 from channel name: mass [DATA] read id 255110 from channel name: mass [DATA] read id 255140 from channel name: mass [DATA] read id 255150 from channel name: mass [DATA] read id 255170 from channel name: mass [DATA] read id 255180 from channel name: mass [DATA] read id 255210 from channel name: mass [DATA] read id 255220 from channel name: mass [DATA] read id 255230 from channel name: mass [DATA] read id 255240 from channel name: mass [DATA] read id 255260 from channel name: mass [DATA] read id 255270 from channel name: mass [DATA] read id 255310 from channel name: mass [DATA] read id 255320 from channel name: mass [DATA] read id 255330 from channel name: mass [DATA] read id 255340 from channel name: mass [DATA] read id 255410 from channel name: mass [DATA] read id 255420 from channel name: mass [DATA] read id 255430 from channel name: mass [DATA] read id 255440 from channel name: mass [DATA] read id 255450 from channel name: mass [DATA] read id 255460 from channel name: mass [DATA] read id 255470 from channel name: mass [DATA] read id 255510 from channel name: mass [DATA] read id 255520 from channel name: mass [DATA] read id 255530 from channel name: mass [DATA] read id 255540 from channel name: mass [DATA] read id 255550 from channel name: mass [DATA] read id 255560 from channel name: mass [DATA] read id 255610 from channel name: mass [DATA] read id 255620 from channel name: mass [DATA] read id 255630 from channel name: mass [DATA] read id 255640 from channel name: mass [DATA] read id 255650 from channel name: mass [DATA] read id 255660 from channel name: mass [DATA] read id 255710 from channel name: mass [DATA] read id 255720 from channel name: mass [DATA] read id 255730 from channel name: mass [DATA] read id 255740 from channel name: mass [DATA] read id 255750 from channel name: mass [DATA] read id 255760 from channel name: mass [DATA] read id 255810 from channel name: mass [DATA] read id 255820 from channel name: mass [DATA] read id 255830 from channel name: mass [DATA] read id 255840 from channel name: mass [DATA] read id 255910 from channel name: mass [DATA] read id 255920 from channel name: mass [DATA] read id 255930 from channel name: mass [DATA] read id 255940 from channel name: mass [DATA] read id 255950 from channel name: mass [DATA] read id 255960 from channel name: mass [DATA] read id 255970 from channel name: mass [DATA] read id 256010 from channel name: mass [DATA] read id 256020 from channel name: mass [DATA] read id 256030 from channel name: mass [DATA] read id 256040 from channel name: mass [DATA] read id 256050 from channel name: mass [DATA] read id 256060 from channel name: mass [DATA] read id 256070 from channel name: mass [DATA] read id 256080 from channel name: mass [DATA] read id 256090 from channel name: mass [DATA] read id 256110 from channel name: mass [DATA] read id 256120 from channel name: mass [DATA] read id 256130 from channel name: mass [DATA] read id 256140 from channel name: mass [DATA] read id 256150 from channel name: mass [DATA] read id 256160 from channel name: mass [DATA] read id 256210 from channel name: mass [DATA] read id 256220 from channel name: mass [DATA] read id 256230 from channel name: mass [DATA] read id 256240 from channel name: mass [DATA] read id 256250 from channel name: mass [DATA] read id 256260 from channel name: mass [DATA] read id 256270 from channel name: mass [DATA] read id 256310 from channel name: mass [DATA] read id 256320 from channel name: mass [DATA] read id 256330 from channel name: mass [DATA] read id 256360 from channel name: mass [DATA] read id 256370 from channel name: mass [DATA] read id 256410 from channel name: mass [DATA] read id 256420 from channel name: mass [DATA] read id 256430 from channel name: mass [DATA] read id 256440 from channel name: mass [DATA] read id 256450 from channel name: mass [DATA] read id 256460 from channel name: mass [DATA] read id 256470 from channel name: mass [DATA] read id 256480 from channel name: mass [DATA] read id 256510 from channel name: mass [DATA] read id 256520 from channel name: mass [DATA] read id 256530 from channel name: mass [DATA] read id 256540 from channel name: mass [DATA] read id 256560 from channel name: mass [DATA] read id 256570 from channel name: mass [DATA] read id 256600 from channel name: mass [DATA] read id 256610 from channel name: mass [DATA] read id 256620 from channel name: mass [DATA] read id 256630 from channel name: mass [DATA] read id 256640 from channel name: mass [DATA] read id 256650 from channel name: mass [DATA] read id 256660 from channel name: mass [DATA] read id 256670 from channel name: mass [DATA] read id 256680 from channel name: mass [DATA] read id 256690 from channel name: mass [DATA] read id 256700 from channel name: mass [DATA] read id 256710 from channel name: mass [DATA] read id 256720 from channel name: mass [DATA] read id 256730 from channel name: mass [DATA] read id 256740 from channel name: mass [DATA] read id 256760 from channel name: mass [DATA] read id 256770 from channel name: mass [DATA] read id 256780 from channel name: mass [DATA] read id 256790 from channel name: mass [DATA] read id 256800 from channel name: mass [DATA] read id 256810 from channel name: mass [DATA] read id 256820 from channel name: mass [DATA] read id 256830 from channel name: mass [DATA] read id 256840 from channel name: mass [DATA] read id 256850 from channel name: mass [DATA] read id 256860 from channel name: mass [DATA] read id 256870 from channel name: mass [DATA] read id 256880 from channel name: mass [DATA] read id 256890 from channel name: mass [DATA] read id 256910 from channel name: mass [DATA] read id 256920 from channel name: mass [DATA] read id 256930 from channel name: mass [DATA] read id 256960 from channel name: mass [DATA] read id 256970 from channel name: mass [DATA] read id 301101 from channel name: mass [DATA] read id 301102 from channel name: mass [DATA] read id 301113 from channel name: mass [DATA] read id 301123 from channel name: mass [DATA] read id 301201 from channel name: mass [DATA] read id 301202 from channel name: mass [DATA] read id 301213 from channel name: mass [DATA] read id 301223 from channel name: mass [DATA] read id 301309 from channel name: mass [DATA] read id 301311 from channel name: mass [DATA] read id 301312 from channel name: mass [DATA] read id 301313 from channel name: mass [DATA] read id 301321 from channel name: mass [DATA] read id 301331 from channel name: mass [DATA] read id 301332 from channel name: mass [DATA] read id 301333 from channel name: mass [DATA] read id 301409 from channel name: mass [DATA] read id 301411 from channel name: mass [DATA] read id 301412 from channel name: mass [DATA] read id 301413 from channel name: mass [DATA] read id 301421 from channel name: mass [DATA] read id 301431 from channel name: mass [DATA] read id 301432 from channel name: mass [DATA] read id 301433 from channel name: mass [DATA] read id 301509 from channel name: mass [DATA] read id 301511 from channel name: mass [DATA] read id 301512 from channel name: mass [DATA] read id 301513 from channel name: mass [DATA] read id 301521 from channel name: mass [DATA] read id 301531 from channel name: mass [DATA] read id 301532 from channel name: mass [DATA] read id 301533 from channel name: mass [DATA] read id 301603 from channel name: mass [DATA] read id 303001 from channel name: mass [DATA] read id 305112 from channel name: mass [DATA] read id 305119 from channel name: mass [DATA] read id 305121 from channel name: mass [DATA] read id 305122 from channel name: mass [DATA] read id 305131 from channel name: mass [DATA] read id 305141 from channel name: mass [DATA] read id 305142 from channel name: mass [DATA] read id 305161 from channel name: mass [DATA] read id 305162 from channel name: mass [DATA] read id 305172 from channel name: mass [DATA] read id 305201 from channel name: mass [DATA] read id 305202 from channel name: mass [DATA] read id 306001 from channel name: mass [DATA] read id 306002 from channel name: mass [DATA] read id 351101 from channel name: mass [DATA] read id 351102 from channel name: mass [DATA] read id 351113 from channel name: mass [DATA] read id 351123 from channel name: mass [DATA] read id 351201 from channel name: mass [DATA] read id 351202 from channel name: mass [DATA] read id 351213 from channel name: mass [DATA] read id 351223 from channel name: mass [DATA] read id 351309 from channel name: mass [DATA] read id 351311 from channel name: mass [DATA] read id 351312 from channel name: mass [DATA] read id 351313 from channel name: mass [DATA] read id 351321 from channel name: mass [DATA] read id 351331 from channel name: mass [DATA] read id 351332 from channel name: mass [DATA] read id 351333 from channel name: mass [DATA] read id 351409 from channel name: mass [DATA] read id 351411 from channel name: mass [DATA] read id 351412 from channel name: mass [DATA] read id 351413 from channel name: mass [DATA] read id 351421 from channel name: mass [DATA] read id 351431 from channel name: mass [DATA] read id 351432 from channel name: mass [DATA] read id 351433 from channel name: mass [DATA] read id 351509 from channel name: mass [DATA] read id 351511 from channel name: mass [DATA] read id 351512 from channel name: mass [DATA] read id 351513 from channel name: mass [DATA] read id 351521 from channel name: mass [DATA] read id 351531 from channel name: mass [DATA] read id 351532 from channel name: mass [DATA] read id 351533 from channel name: mass [DATA] read id 351603 from channel name: mass [DATA] read id 353001 from channel name: mass [DATA] read id 355112 from channel name: mass [DATA] read id 355119 from channel name: mass [DATA] read id 355121 from channel name: mass [DATA] read id 355122 from channel name: mass [DATA] read id 355131 from channel name: mass [DATA] read id 355141 from channel name: mass [DATA] read id 355142 from channel name: mass [DATA] read id 355161 from channel name: mass [DATA] read id 355162 from channel name: mass [DATA] read id 355172 from channel name: mass [DATA] read id 355201 from channel name: mass [DATA] read id 355202 from channel name: mass [DATA] read id 356001 from channel name: mass [DATA] read id 356002 from channel name: mass [DATA] read id 401011 from channel name: mass [DATA] read id 401012 from channel name: mass [DATA] read id 401013 from channel name: mass [DATA] read id 401014 from channel name: mass [DATA] read id 401021 from channel name: mass [DATA] read id 401022 from channel name: mass [DATA] read id 401031 from channel name: mass [DATA] read id 401032 from channel name: mass [DATA] read id 401041 from channel name: mass [DATA] read id 401042 from channel name: mass [DATA] read id 401051 from channel name: mass [DATA] read id 401052 from channel name: mass [DATA] read id 401061 from channel name: mass [DATA] read id 401062 from channel name: mass [DATA] read id 401071 from channel name: mass [DATA] read id 401072 from channel name: mass [DATA] read id 401081 from channel name: mass [DATA] read id 401082 from channel name: mass [DATA] read id 401091 from channel name: mass [DATA] read id 401092 from channel name: mass [DATA] read id 401101 from channel name: mass [DATA] read id 401102 from channel name: mass [DATA] read id 401111 from channel name: mass [DATA] read id 401112 from channel name: mass [DATA] read id 401121 from channel name: mass [DATA] read id 401122 from channel name: mass [DATA] read id 401211 from channel name: mass [DATA] read id 401212 from channel name: mass [DATA] read id 401511 from channel name: mass [DATA] read id 401512 from channel name: mass [DATA] read id 401513 from channel name: mass [DATA] read id 401514 from channel name: mass [DATA] read id 401515 from channel name: mass [DATA] read id 401516 from channel name: mass [DATA] read id 401517 from channel name: mass [DATA] read id 402010 from channel name: mass [DATA] read id 402020 from channel name: mass [DATA] read id 402030 from channel name: mass [DATA] read id 402040 from channel name: mass [DATA] read id 402050 from channel name: mass [DATA] read id 402060 from channel name: mass [DATA] read id 402070 from channel name: mass [DATA] read id 402080 from channel name: mass [DATA] read id 402090 from channel name: mass [DATA] read id 402100 from channel name: mass [DATA] read id 402110 from channel name: mass [DATA] read id 402121 from channel name: mass [DATA] read id 402122 from channel name: mass [DATA] read id 402123 from channel name: mass [DATA] read id 402124 from channel name: mass [DATA] read id 402125 from channel name: mass [DATA] read id 402126 from channel name: mass [DATA] read id 402127 from channel name: mass [DATA] read id 402128 from channel name: mass [DATA] read id 403013 from channel name: mass [DATA] read id 403014 from channel name: mass [DATA] read id 403015 from channel name: mass [DATA] read id 403023 from channel name: mass [DATA] read id 403024 from channel name: mass [DATA] read id 403025 from channel name: mass [DATA] read id 403033 from channel name: mass [DATA] read id 403034 from channel name: mass [DATA] read id 403035 from channel name: mass [DATA] read id 403043 from channel name: mass [DATA] read id 403044 from channel name: mass [DATA] read id 403045 from channel name: mass [DATA] read id 403053 from channel name: mass [DATA] read id 403054 from channel name: mass [DATA] read id 403055 from channel name: mass [DATA] read id 403063 from channel name: mass [DATA] read id 403064 from channel name: mass [DATA] read id 403065 from channel name: mass [DATA] read id 403073 from channel name: mass [DATA] read id 403074 from channel name: mass [DATA] read id 403075 from channel name: mass [DATA] read id 403083 from channel name: mass [DATA] read id 403084 from channel name: mass [DATA] read id 403085 from channel name: mass [DATA] read id 403093 from channel name: mass [DATA] read id 403094 from channel name: mass [DATA] read id 403095 from channel name: mass [DATA] read id 403103 from channel name: mass [DATA] read id 403104 from channel name: mass [DATA] read id 403105 from channel name: mass [DATA] read id 403113 from channel name: mass [DATA] read id 403114 from channel name: mass [DATA] read id 403115 from channel name: mass [DATA] read id 403123 from channel name: mass [DATA] read id 403124 from channel name: mass [DATA] read id 403125 from channel name: mass [DATA] read id 403501 from channel name: mass [DATA] read id 403502 from channel name: mass [DATA] read id 403503 from channel name: mass [DATA] read id 403601 from channel name: mass [DATA] read id 403602 from channel name: mass [DATA] read id 403603 from channel name: mass [DATA] read id 403604 from channel name: mass [DATA] read id 404001 from channel name: mass [DATA] read id 404009 from channel name: mass [DATA] read id 404010 from channel name: mass [DATA] read id 404201 from channel name: mass [DATA] read id 404401 from channel name: mass [DATA] read id 404409 from channel name: mass [DATA] read id 404501 from channel name: mass [DATA] read id 404502 from channel name: mass [DATA] read id 404503 from channel name: mass [DATA] read id 404504 from channel name: mass [DATA] read id 404601 from channel name: mass [DATA] read id 404602 from channel name: mass [DATA] read id 404603 from channel name: mass [DATA] read id 404604 from channel name: mass [DATA] read id 404605 from channel name: mass [DATA] read id 404606 from channel name: mass [DATA] read id 404607 from channel name: mass [DATA] read id 404608 from channel name: mass [DATA] read id 404609 from channel name: mass [DATA] read id 404610 from channel name: mass [DATA] read id 404611 from channel name: mass [DATA] read id 404612 from channel name: mass [DATA] read id 404702 from channel name: mass [DATA] read id 404703 from channel name: mass [DATA] read id 404704 from channel name: mass [DATA] read id 404705 from channel name: mass [DATA] read id 404706 from channel name: mass [DATA] read id 404707 from channel name: mass [DATA] read id 404708 from channel name: mass [DATA] read id 405001 from channel name: mass [DATA] read id 405003 from channel name: mass [DATA] read id 406001 from channel name: mass [DATA] read id 406002 from channel name: mass [DATA] read id 406003 from channel name: mass [DATA] read id 406013 from channel name: mass [DATA] read id 453013 from channel name: mass [DATA] read id 453014 from channel name: mass [DATA] read id 453015 from channel name: mass [DATA] read id 453023 from channel name: mass [DATA] read id 453024 from channel name: mass [DATA] read id 453025 from channel name: mass [DATA] read id 453033 from channel name: mass [DATA] read id 453034 from channel name: mass [DATA] read id 453035 from channel name: mass [DATA] read id 453043 from channel name: mass [DATA] read id 453044 from channel name: mass [DATA] read id 453045 from channel name: mass [DATA] read id 453053 from channel name: mass [DATA] read id 453054 from channel name: mass [DATA] read id 453055 from channel name: mass [DATA] read id 453063 from channel name: mass [DATA] read id 453064 from channel name: mass [DATA] read id 453065 from channel name: mass [DATA] read id 453073 from channel name: mass [DATA] read id 453074 from channel name: mass [DATA] read id 453075 from channel name: mass [DATA] read id 453083 from channel name: mass [DATA] read id 453084 from channel name: mass [DATA] read id 453085 from channel name: mass [DATA] read id 453093 from channel name: mass [DATA] read id 453094 from channel name: mass [DATA] read id 453095 from channel name: mass [DATA] read id 453103 from channel name: mass [DATA] read id 453104 from channel name: mass [DATA] read id 453105 from channel name: mass [DATA] read id 453113 from channel name: mass [DATA] read id 453114 from channel name: mass [DATA] read id 453115 from channel name: mass [DATA] read id 453123 from channel name: mass [DATA] read id 453124 from channel name: mass [DATA] read id 453125 from channel name: mass [DATA] read id 453503 from channel name: mass [DATA] read id 453601 from channel name: mass [DATA] read id 453602 from channel name: mass [DATA] read id 453603 from channel name: mass [DATA] read id 453604 from channel name: mass [DATA] read id 454001 from channel name: mass [DATA] read id 454009 from channel name: mass [DATA] read id 454010 from channel name: mass [DATA] read id 454201 from channel name: mass [DATA] read id 454400 from channel name: mass [DATA] read id 454409 from channel name: mass [DATA] read id 454501 from channel name: mass [DATA] read id 454502 from channel name: mass [DATA] read id 454503 from channel name: mass [DATA] read id 454504 from channel name: mass [DATA] read id 454601 from channel name: mass [DATA] read id 454602 from channel name: mass [DATA] read id 454603 from channel name: mass [DATA] read id 454604 from channel name: mass [DATA] read id 454605 from channel name: mass [DATA] read id 454606 from channel name: mass [DATA] read id 454607 from channel name: mass [DATA] read id 454608 from channel name: mass [DATA] read id 454609 from channel name: mass [DATA] read id 454610 from channel name: mass [DATA] read id 454611 from channel name: mass [DATA] read id 454612 from channel name: mass [DATA] read id 454702 from channel name: mass [DATA] read id 454703 from channel name: mass [DATA] read id 454704 from channel name: mass [DATA] read id 454705 from channel name: mass [DATA] read id 454706 from channel name: mass [DATA] read id 454707 from channel name: mass [DATA] read id 454708 from channel name: mass [DATA] read id 455001 from channel name: mass [DATA] read id 455003 from channel name: mass [DATA] read id 456001 from channel name: mass [DATA] read id 456002 from channel name: mass [DATA] read id 456003 from channel name: mass [DATA] read id 456013 from channel name: mass [DATA] read id 501011 from channel name: mass [DATA] read id 501012 from channel name: mass [DATA] read id 501013 from channel name: mass [DATA] read id 501014 from channel name: mass [DATA] read id 501015 from channel name: mass [DATA] read id 501016 from channel name: mass [DATA] read id 501021 from channel name: mass [DATA] read id 501022 from channel name: mass [DATA] read id 501023 from channel name: mass [DATA] read id 501024 from channel name: mass [DATA] read id 501025 from channel name: mass [DATA] read id 501026 from channel name: mass [DATA] read id 501031 from channel name: mass [DATA] read id 501032 from channel name: mass [DATA] read id 501033 from channel name: mass [DATA] read id 501034 from channel name: mass [DATA] read id 501035 from channel name: mass [DATA] read id 501036 from channel name: mass [DATA] read id 501041 from channel name: mass [DATA] read id 501042 from channel name: mass [DATA] read id 501043 from channel name: mass [DATA] read id 501044 from channel name: mass [DATA] read id 501045 from channel name: mass [DATA] read id 501046 from channel name: mass [DATA] read id 501051 from channel name: mass [DATA] read id 501052 from channel name: mass [DATA] read id 501053 from channel name: mass [DATA] read id 501054 from channel name: mass [DATA] read id 501055 from channel name: mass [DATA] read id 501056 from channel name: mass [DATA] read id 501511 from channel name: mass [DATA] read id 501512 from channel name: mass [DATA] read id 501513 from channel name: mass [DATA] read id 501514 from channel name: mass [DATA] read id 501515 from channel name: mass [DATA] read id 501516 from channel name: mass [DATA] read id 501517 from channel name: mass [DATA] read id 501521 from channel name: mass [DATA] read id 501522 from channel name: mass [DATA] read id 501523 from channel name: mass [DATA] read id 501524 from channel name: mass [DATA] read id 501525 from channel name: mass [DATA] read id 501526 from channel name: mass [DATA] read id 501527 from channel name: mass [DATA] read id 501531 from channel name: mass [DATA] read id 501532 from channel name: mass [DATA] read id 501533 from channel name: mass [DATA] read id 501534 from channel name: mass [DATA] read id 501535 from channel name: mass [DATA] read id 501536 from channel name: mass [DATA] read id 501537 from channel name: mass [DATA] read id 501541 from channel name: mass [DATA] read id 501542 from channel name: mass [DATA] read id 501543 from channel name: mass [DATA] read id 501544 from channel name: mass [DATA] read id 501545 from channel name: mass [DATA] read id 501546 from channel name: mass [DATA] read id 501547 from channel name: mass [DATA] read id 501551 from channel name: mass [DATA] read id 501552 from channel name: mass [DATA] read id 501554 from channel name: mass [DATA] read id 501555 from channel name: mass [DATA] read id 501557 from channel name: mass [DATA] read id 501558 from channel name: mass [DATA] read id 502011 from channel name: mass [DATA] read id 502012 from channel name: mass [DATA] read id 502021 from channel name: mass [DATA] read id 502022 from channel name: mass [DATA] read id 502031 from channel name: mass [DATA] read id 502032 from channel name: mass [DATA] read id 502041 from channel name: mass [DATA] read id 502042 from channel name: mass [DATA] read id 502051 from channel name: mass [DATA] read id 502052 from channel name: mass [DATA] read id 502111 from channel name: mass [DATA] read id 502112 from channel name: mass [DATA] read id 502113 from channel name: mass [DATA] read id 502114 from channel name: mass [DATA] read id 502115 from channel name: mass [DATA] read id 502116 from channel name: mass [DATA] read id 502121 from channel name: mass [DATA] read id 502122 from channel name: mass [DATA] read id 502123 from channel name: mass [DATA] read id 502124 from channel name: mass [DATA] read id 502125 from channel name: mass [DATA] read id 502126 from channel name: mass [DATA] read id 502131 from channel name: mass [DATA] read id 502132 from channel name: mass [DATA] read id 502133 from channel name: mass [DATA] read id 502134 from channel name: mass [DATA] read id 502135 from channel name: mass [DATA] read id 502136 from channel name: mass [DATA] read id 502141 from channel name: mass [DATA] read id 502142 from channel name: mass [DATA] read id 502143 from channel name: mass [DATA] read id 502144 from channel name: mass [DATA] read id 502145 from channel name: mass [DATA] read id 502146 from channel name: mass [DATA] read id 502151 from channel name: mass [DATA] read id 502152 from channel name: mass [DATA] read id 502153 from channel name: mass [DATA] read id 502154 from channel name: mass [DATA] read id 502155 from channel name: mass [DATA] read id 502156 from channel name: mass [DATA] read id 505001 from channel name: mass [DATA] read id 505009 from channel name: mass [DATA] read id 505019 from channel name: mass [DATA] read id 506001 from channel name: mass [DATA] read id 506002 from channel name: mass [DATA] read id 506003 from channel name: mass [DATA] read id 506006 from channel name: mass [DATA] read id 506007 from channel name: mass [DATA] read id 555001 from channel name: mass [DATA] read id 555009 from channel name: mass [DATA] read id 555019 from channel name: mass [DATA] read id 556001 from channel name: mass [DATA] read id 556002 from channel name: mass [DATA] read id 556003 from channel name: mass [DATA] read id 556006 from channel name: mass [DATA] read id 556007 from channel name: mass [DATA] read id 601011 from channel name: mass [DATA] read id 601012 from channel name: mass [DATA] read id 601021 from channel name: mass [DATA] read id 601022 from channel name: mass [DATA] read id 601031 from channel name: mass [DATA] read id 601032 from channel name: mass [DATA] read id 601041 from channel name: mass [DATA] read id 601042 from channel name: mass [DATA] read id 601051 from channel name: mass [DATA] read id 601052 from channel name: mass [DATA] read id 601054 from channel name: mass [DATA] read id 602010 from channel name: mass [DATA] read id 602020 from channel name: mass [DATA] read id 603110 from channel name: mass [DATA] read id 604001 from channel name: mass [DATA] read id 605001 from channel name: mass [DATA] read id 605003 from channel name: mass [DATA] read id 606001 from channel name: mass [DATA] read id 606002 from channel name: mass [DATA] read id 606003 from channel name: mass [DATA] read id 606004 from channel name: mass [DATA] read id 651011 from channel name: mass [DATA] read id 651012 from channel name: mass [DATA] read id 651021 from channel name: mass [DATA] read id 651022 from channel name: mass [DATA] read id 651031 from channel name: mass [DATA] read id 651032 from channel name: mass [DATA] read id 651041 from channel name: mass [DATA] read id 651042 from channel name: mass [DATA] read id 651051 from channel name: mass [DATA] read id 651052 from channel name: mass [DATA] read id 651054 from channel name: mass [DATA] read id 652010 from channel name: mass [DATA] read id 652020 from channel name: mass [DATA] read id 653110 from channel name: mass [DATA] read id 654001 from channel name: mass [DATA] read id 655001 from channel name: mass [DATA] read id 655003 from channel name: mass [DATA] read id 656001 from channel name: mass [DATA] read id 656002 from channel name: mass [DATA] read id 656003 from channel name: mass [DATA] read id 656004 from channel name: mass [DATA] read id 701111 from channel name: mass [DATA] read id 701112 from channel name: mass [DATA] read id 701114 from channel name: mass [DATA] read id 701121 from channel name: mass [DATA] read id 701122 from channel name: mass [DATA] read id 701131 from channel name: mass [DATA] read id 701132 from channel name: mass [DATA] read id 701141 from channel name: mass [DATA] read id 701142 from channel name: mass [DATA] read id 701151 from channel name: mass [DATA] read id 701152 from channel name: mass [DATA] read id 701161 from channel name: mass [DATA] read id 701171 from channel name: mass [DATA] read id 701172 from channel name: mass [DATA] read id 701181 from channel name: mass [DATA] read id 701182 from channel name: mass [DATA] read id 701184 from channel name: mass [DATA] read id 701191 from channel name: mass [DATA] read id 701192 from channel name: mass [DATA] read id 701201 from channel name: mass [DATA] read id 701202 from channel name: mass [DATA] read id 701301 from channel name: mass [DATA] read id 701302 from channel name: mass [DATA] read id 701411 from channel name: mass [DATA] read id 701412 from channel name: mass [DATA] read id 701414 from channel name: mass [DATA] read id 701421 from channel name: mass [DATA] read id 701431 from channel name: mass [DATA] read id 701432 from channel name: mass [DATA] read id 701433 from channel name: mass [DATA] read id 701434 from channel name: mass [DATA] read id 701611 from channel name: mass [DATA] read id 701621 from channel name: mass [DATA] read id 701631 from channel name: mass [DATA] read id 701701 from channel name: mass [DATA] read id 701703 from channel name: mass [DATA] read id 702111 from channel name: mass [DATA] read id 702112 from channel name: mass [DATA] read id 702113 from channel name: mass [DATA] read id 702114 from channel name: mass [DATA] read id 702121 from channel name: mass [DATA] read id 702122 from channel name: mass [DATA] read id 702123 from channel name: mass [DATA] read id 702124 from channel name: mass [DATA] read id 702131 from channel name: mass [DATA] read id 702132 from channel name: mass [DATA] read id 702141 from channel name: mass [DATA] read id 702142 from channel name: mass [DATA] read id 702151 from channel name: mass [DATA] read id 702152 from channel name: mass [DATA] read id 702153 from channel name: mass [DATA] read id 702154 from channel name: mass [DATA] read id 702210 from channel name: mass [DATA] read id 702220 from channel name: mass [DATA] read id 702310 from channel name: mass [DATA] read id 702320 from channel name: mass [DATA] read id 702410 from channel name: mass [DATA] read id 704111 from channel name: mass [DATA] read id 704113 from channel name: mass [DATA] read id 704133 from channel name: mass [DATA] read id 705111 from channel name: mass [DATA] read id 705112 from channel name: mass [DATA] read id 705114 from channel name: mass [DATA] read id 705121 from channel name: mass [DATA] read id 705131 from channel name: mass [DATA] read id 705134 from channel name: mass [DATA] read id 705141 from channel name: mass [DATA] read id 705142 from channel name: mass [DATA] read id 705184 from channel name: mass [DATA] read id 705191 from channel name: mass [DATA] read id 705192 from channel name: mass [DATA] read id 705193 from channel name: mass [DATA] read id 706110 from channel name: mass [DATA] read id 706120 from channel name: mass [DATA] read id 706210 from channel name: mass [DATA] read id 751111 from channel name: mass [DATA] read id 751112 from channel name: mass [DATA] read id 751114 from channel name: mass [DATA] read id 751121 from channel name: mass [DATA] read id 751122 from channel name: mass [DATA] read id 751131 from channel name: mass [DATA] read id 751132 from channel name: mass [DATA] read id 751141 from channel name: mass [DATA] read id 751142 from channel name: mass [DATA] read id 751151 from channel name: mass [DATA] read id 751152 from channel name: mass [DATA] read id 751161 from channel name: mass [DATA] read id 751171 from channel name: mass [DATA] read id 751172 from channel name: mass [DATA] read id 751181 from channel name: mass [DATA] read id 751182 from channel name: mass [DATA] read id 751184 from channel name: mass [DATA] read id 751191 from channel name: mass [DATA] read id 751192 from channel name: mass [DATA] read id 751201 from channel name: mass [DATA] read id 751202 from channel name: mass [DATA] read id 751301 from channel name: mass [DATA] read id 751302 from channel name: mass [DATA] read id 751411 from channel name: mass [DATA] read id 751412 from channel name: mass [DATA] read id 751414 from channel name: mass [DATA] read id 751421 from channel name: mass [DATA] read id 751431 from channel name: mass [DATA] read id 751432 from channel name: mass [DATA] read id 751433 from channel name: mass [DATA] read id 751434 from channel name: mass [DATA] read id 751611 from channel name: mass [DATA] read id 751621 from channel name: mass [DATA] read id 751631 from channel name: mass [DATA] read id 751701 from channel name: mass [DATA] read id 751703 from channel name: mass [DATA] read id 752111 from channel name: mass [DATA] read id 752112 from channel name: mass [DATA] read id 752113 from channel name: mass [DATA] read id 752114 from channel name: mass [DATA] read id 752121 from channel name: mass [DATA] read id 752122 from channel name: mass [DATA] read id 752123 from channel name: mass [DATA] read id 752124 from channel name: mass [DATA] read id 752131 from channel name: mass [DATA] read id 752132 from channel name: mass [DATA] read id 752141 from channel name: mass [DATA] read id 752142 from channel name: mass [DATA] read id 752151 from channel name: mass [DATA] read id 752152 from channel name: mass [DATA] read id 752153 from channel name: mass [DATA] read id 752154 from channel name: mass [DATA] read id 752210 from channel name: mass [DATA] read id 752220 from channel name: mass [DATA] read id 752310 from channel name: mass [DATA] read id 752320 from channel name: mass [DATA] read id 752410 from channel name: mass [DATA] read id 754111 from channel name: mass [DATA] read id 754113 from channel name: mass [DATA] read id 754133 from channel name: mass [DATA] read id 755111 from channel name: mass [DATA] read id 755112 from channel name: mass [DATA] read id 755114 from channel name: mass [DATA] read id 755121 from channel name: mass [DATA] read id 755131 from channel name: mass [DATA] read id 755134 from channel name: mass [DATA] read id 755141 from channel name: mass [DATA] read id 755142 from channel name: mass [DATA] read id 755184 from channel name: mass [DATA] read id 755191 from channel name: mass [DATA] read id 755192 from channel name: mass [DATA] read id 755193 from channel name: mass [DATA] read id 756110 from channel name: mass [DATA] read id 756120 from channel name: mass [DATA] read id 756210 from channel name: mass [CALCULATION] Calculating Visualization: LOAD_Hub_displ_over_time_CFC1000 [DATA] read id 21000112 from channel name: x_displacement
c:\Users\johan\anaconda3\envs\HBM4VT-env\lib\site-packages\dynasaur\calc\cfc.py:66: UnitStrippedWarning: The unit of the quantity is stripped when downcasting to ndarray. sampled_array = np.array(sampled_array)
[CALCULATION] Calculating Visualization: LOAD_Hub_displ_over_time [DATA] read id 21000112 from channel name: x_displacement [CALCULATION] Calculating Visualization: LOAD_Hub_dx [DATA] read id 21000112 from channel name: x_coordinate [CALCULATION] Calculating Visualization: LOAD_Hub_dy [DATA] read id 21000112 from channel name: y_coordinate [CALCULATION] Calculating Visualization: LOAD_Hub_dz [DATA] read id 21000112 from channel name: z_coordinate [CALCULATION] Calculating Visualization: LOAD_Hub_res_displ_over_time [DATA] read id 21000112 from channel name: x_displacement [DATA] read id 21000112 from channel name: y_displacement [DATA] read id 21000112 from channel name: z_displacement [CALCULATION] Calculating Visualization: LOAD_Hub_displ_over_time_Step1 [DATA] read id 21000112 from channel name: x_displacement [CALCULATION] Calculating Visualization: LOAD_Hub_displ_over_time_Step2 [DATA] read id 21000112 from channel name: x_displacement [CALCULATION] Calculating Visualization: LOAD_Hub_displ_over_time_Step3 [DATA] read id 21000112 from channel name: x_displacement [CALCULATION] Calculating Visualization: LOAD_Hub_displ_over_time_Step4 [DATA] read id 21000112 from channel name: x_displacement [CALCULATION] Calculating Visualization: LOAD_Hub_displ_over_time_Step5 [DATA] read id 21000112 from channel name: x_displacement [CALCULATION] Calculating Visualization: LOAD_Hub_displ_over_time_Step6 [DATA] read id 21000112 from channel name: x_displacement [CALCULATION] Calculating Visualization: LOAD_Hub_displ_over_time_Step7 [DATA] read id 21000112 from channel name: x_displacement [CALCULATION] Calculating Visualization: HBM_Hub_displ_over_time_Step8 [DATA] read id 21000112 from channel name: x_displacement [CALCULATION] Calculating Visualization: LOAD_Hub_displ_over_time_Step9 [DATA] read id 21000112 from channel name: x_displacement [CALCULATION] Calculating Visualization: LOAD_Hub_displ_over_time_Step10 [DATA] read id 21000112 from channel name: x_displacement [CALCULATION] Calculating Visualization: LOAD_Hub_x_acc_over_time_CFC1000 [DATA] read id 21000112 from channel name: x_acceleration [CALCULATION] Calculating Visualization: CONTACT_Contactforce_HBM_to_hub [DATA] read id 21000000m from channel name: x_force [DATA] read id 21000000m from channel name: y_force [DATA] read id 21000000m from channel name: z_force [CALCULATION] Calculating Visualization: CONTACT_Contactforce_HBM_to_hub_CFC600 [DATA] read id 21000000m from channel name: x_force [DATA] read id 21000000m from channel name: y_force [DATA] read id 21000000m from channel name: z_force [CALCULATION] Calculating Visualization: CONTACT_Contactforce_HBM_to_hub_CFC180 [DATA] read id 21000000m from channel name: x_force [DATA] read id 21000000m from channel name: y_force [DATA] read id 21000000m from channel name: z_force [CALCULATION] Calculating Visualization: BONES_RibL_1_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibL_1_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibL_2_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibL_2_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibL_3_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibL_3_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibL_4_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibL_4_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibL_5_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibL_5_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibL_6_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibL_6_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibL_7_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibL_7_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibL_8_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibL_8_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibL_9_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibL_9_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibL_10_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibL_10_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibL_11_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibL_11_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibL_12_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibL_12_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibR_1_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibR_1_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibR_2_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibR_2_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibR_3_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibR_3_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibR_4_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibR_4_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibR_5_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibR_5_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibR_6_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibR_6_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibR_7_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibR_7_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibR_8_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibR_8_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibR_9_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibR_9_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibR_10_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibR_10_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibR_11_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibR_11_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: BONES_RibR_12_95p_maxIP_overall_time [CALCULATION] Calculating Visualization: BONES_RibR_12_MPS_meanIP_tensile_time [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Larsson2021 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Larsson2021 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Larsson2021 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Larsson2021_Step1 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Larsson2021_Step1 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Larsson2021_Step1 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Larsson2021_Step2 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Larsson2021_Step2 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Larsson2021_Step2 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Larsson2021_Step3 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Larsson2021_Step3 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Larsson2021_Step3 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Larsson2021_Step4 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Larsson2021_Step4 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Larsson2021_Step4 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Larsson2021_Step5 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Larsson2021_Step5 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Larsson2021_Step5 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Larsson2021_Step6 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Larsson2021_Step6 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Larsson2021_Step6 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Larsson2021_Step7 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Larsson2021_Step7 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Larsson2021_Step7 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Larsson2021_Step8 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Larsson2021_Step8 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Larsson2021_Step8 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Larsson2021_Step9 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Larsson2021_Step9 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Larsson2021_Step9 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Larsson2021_Step10 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Larsson2021_Step10 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Larsson2021_Step10 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Forman2022_3plus [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Forman2022_3plus [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Forman2022_3plus [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Forman2022_3plus_Step1 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Forman2022_3plus_Step1 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Forman2022_3plus_Step1 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Forman2022_3plus_Step2 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Forman2022_3plus_Step2 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Forman2022_3plus_Step2 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Forman2022_3plus_Step3 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Forman2022_3plus_Step3 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Forman2022_3plus_Step3 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Forman2022_3plus_Step4 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Forman2022_3plus_Step4 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Forman2022_3plus_Step4 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Forman2022_3plus_Step5 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Forman2022_3plus_Step5 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Forman2022_3plus_Step5 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Forman2022_3plus_Step6 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Forman2022_3plus_Step6 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Forman2022_3plus_Step6 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Forman2022_3plus_Step7 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Forman2022_3plus_Step7 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Forman2022_3plus_Step7 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Forman2022_3plus_Step8 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Forman2022_3plus_Step8 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Forman2022_3plus_Step8 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Forman2022_3plus_Step9 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Forman2022_3plus_Step9 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Forman2022_3plus_Step9 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_25YO_Forman2022_3plus_Step10 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_50YO_Forman2022_3plus_Step10 [CALCULATION] Calculating Visualization: RIBS_Overall_Rib_Risk_75YO_Forman2022_3plus_Step10 [CALCULATION] DATA VISUALIZATION writing csv to data/processed/sim_results [CALCULATION] DATA VISUALIZATION done writing csv to data/processed/sim_results\HPL_Dynasaur_diagram_output_VIVA+_50M.csv
# Read experimental data
def read_data_experiments(file_name):
df = pd.read_csv(file_name, sep=';')
displacement_IMP30_cols = [col for col in df.columns if col.startswith('Displacement_') and col.endswith('IMP30')]
displacement_IMP50_cols = [col for col in df.columns if col.startswith('Displacement_') and col.endswith('IMP50')]
force_IMP30_cols = [col for col in df.columns if col.startswith('Force_') and col.endswith('IMP30')]
force_IMP50_cols = [col for col in df.columns if col.startswith('Force_') and col.endswith('IMP50')]
assert len(displacement_IMP30_cols) == len(force_IMP30_cols)
assert len(displacement_IMP50_cols) == len(force_IMP50_cols)
displacement_IMP30 = (df[displacement_IMP30_cols].to_numpy() * ureg('millimeter')).to(unit_deflection_plot).magnitude
displacement_IMP50 = (df[displacement_IMP50_cols].to_numpy() * ureg('millimeter')).to(unit_deflection_plot).magnitude
force_IMP30 = (df[force_IMP30_cols].to_numpy() * ureg('kilogram * meter / second ** 2')).to(unit_force_plot).magnitude
force_IMP50 = (df[force_IMP50_cols].to_numpy() * ureg('kilogram * meter / second ** 2')).to(unit_force_plot).magnitude
return displacement_IMP30, force_IMP30, displacement_IMP50, force_IMP50
displacement_IMP30_exp, force_IMP30_exp, displacement_IMP50_exp, force_IMP50_exp = read_data_experiments(experimental_data_dir + 'Test_data.csv')
def get_unit_from_column_name(pd_df):
unit = list(pd_df.columns)
assert len(unit) == 1
assert type(unit[0]) == str
return unit[0]
def convert_to_unit(pd_df, unit, offset=None):
data = pd_df.dropna().to_numpy()
# Offset is done before conversion.
if offset is not None:
data = data[offset:] - data[offset]
data_unit = get_unit_from_column_name(pd_df)
data = data * ureg(data_unit)
return data.to(ureg(unit)).magnitude
def force_displ_values_from_df(df, channel_displ_1, channel_displ_2, channel_force_1, channel_force_2, offset):
time_offset = convert_to_unit(df[channel_displ_1][channel_displ_2]['time'], unit_time_plot, offset=offset)
defl_offset = -convert_to_unit(df[channel_displ_1][channel_displ_2]['z-displacement'], unit_deflection_plot, offset=offset)
assert get_unit_from_column_name(df[channel_displ_1][channel_displ_2]['time']) == get_unit_from_column_name(df[channel_force_1][channel_force_2]['time'])
# Contact force sampled at displacement time (in case there are different sampling frequencies).
contact_force_interpolated = np.interp(x=df[channel_displ_1][channel_displ_2]['time'].dropna().to_numpy().flatten(),
xp=df[channel_force_1][channel_force_2]['time'].dropna().to_numpy().flatten(),
fp=df[channel_force_1][channel_force_2]['force'].dropna().to_numpy().flatten())
# Create pandas dataframe from dict so function convert_to_unit can be used.
force_offset = convert_to_unit(pd.DataFrame.from_dict({df[channel_force_1, channel_force_2, 'force'].columns[0]: contact_force_interpolated}), unit_force_plot, offset=offset)
return force_offset, defl_offset, time_offset
Results¶
# Define contact force threshold
fT = 0.005 # Update this value if needed (In kilonewton)
# Calculate hub contact time
time_series = convert_to_unit(sim_data_results['CONTACT']['Contactforce_HBM_to_hub_CFC180']['time'], unit_time_plot)
force_series = convert_to_unit(sim_data_results['CONTACT']['Contactforce_HBM_to_hub_CFC180']['force'], unit_force_plot)
start_loading_idx_contact = np.argmax(force_series >= fT)
assert start_loading_idx_contact > 0
start_loading_time = time_series[start_loading_idx_contact]
offset = np.argmax(time_series >= start_loading_time)-1
force = convert_to_unit(sim_data_results['CONTACT']['Contactforce_HBM_to_hub_CFC180']['force'], unit_force_plot, offset=offset)
force_no_offset = convert_to_unit(sim_data_results['CONTACT']['Contactforce_HBM_to_hub_CFC180']['force'], unit_force_plot)
print (f"The maximum force value with an offset is {max(force)[0]:.4f} {unit_force_plot}")
print (f"The maximum actual force value is {max(force_no_offset)[0]:.4f} {unit_force_plot}")
force_diff = max(force_no_offset)[0] - max(force)[0]
print(f"The difference between the actual max. force and the max. force with offset is {force_diff:.4f} {unit_force_plot}")
print("If the force difference is considerably high, update the parameter fT in the beginning of this cell.")
print("-----------------------------------------------------------------------------------------------------------------------------------")
# Save settings file
settings["force_tolerance"] = fT
with open(os.path.join(result_output_dir, setup_type+"_settings_" + settings["HBM"] + ".txt"), 'w') as fp:
json.dump(settings, fp, indent=4)
The maximum force value with an offset is 16.4704 kilonewton The maximum actual force value is 16.4733 kilonewton The difference between the actual max. force and the max. force with offset is 0.0029 kilonewton If the force difference is considerably high, update the parameter fT in the beginning of this cell. -----------------------------------------------------------------------------------------------------------------------------------
Force-deflection plots¶
Rib criterion plots¶
# This cell prints the maximum rib fracture risk.
NFR1 = ("NFR=0", "NFR=1", "NFR=2", "NFR=3+")
NFR2 = ("NFR=0", "NFR=1+", "NFR=2+", "NFR=3+")
rib_criterion = settings["rib_criterion"]
rib_risks = {
'25 yo': (np.round(np.squeeze(100*sim_data_results['RIBS']['Overall_Rib_Risk_25YO_' + rib_criterion]['risk'][0:4].values),1)),
'50 yo': (np.round(np.squeeze(100*sim_data_results['RIBS']['Overall_Rib_Risk_50YO_' + rib_criterion]['risk'][0:4].values),1)),
'75 yo': (np.round(np.squeeze(100*sim_data_results['RIBS']['Overall_Rib_Risk_75YO_' + rib_criterion]['risk'][0:4].values),1))
}
x = np.arange(len(NFR1)) # the label locations
width = 0.25 # the width of the bars
multiplier1 = 0
multiplier2 = 0
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, constrained_layout=True, figsize=(10,5))
for attribute, measurement in rib_risks.items():
offset_rib = width * multiplier1
rects = ax1.bar(x + offset_rib, measurement, width, label=attribute)
ax1.bar_label(rects, padding=3)
multiplier1 += 1
ax1.set_ylabel('Risk / %')
ax1.set_title('Rib fracture risk max')
ax1.set_xticks(x + width)
ax1.set_xticklabels(NFR1)
ax1.legend(loc='best')
ax1.set_ylim(0, 110)
for attribute, measurement in rib_risks.items():
measurement[2] += measurement[3]
measurement[1] += measurement[2]
offset_rib = width * multiplier2
rects = ax2.bar(x + offset_rib, measurement, width, label=attribute)
ax2.bar_label(rects, padding=3)
multiplier2 += 1
ax2.set_ylabel('Risk / %')
ax2.set_title('Rib fracture risk max')
ax2.set_xticks(x + width)
ax2.set_xticklabels(NFR2)
ax2.legend(loc='best')
ax2.set_ylim(0, 110)
fig.savefig(os.path.join(figures_dir, 'Shaw_2004_' + setup_type +'_rib_risks_' + settings["HBM"] + '__Max' + '.png'), format='png', bbox_inches='tight')
plt.show()
fig_energy, (ax1) = plt.subplots(nrows=1, ncols=1, figsize=(5,6))
fig_energy.suptitle('Model Energies Complete')
ax1.plot(convert_to_unit(sim_data_results.MODEL.Hourglass_Energy_time.time, unit_time_plot),
convert_to_unit(sim_data_results.MODEL.Hourglass_Energy_time.hourglass_energy, unit_energy_plot), label = "Hourglass Energy")
ax1.plot(convert_to_unit(sim_data_results.MODEL.Internal_Energy_time.time, unit_time_plot),
convert_to_unit(sim_data_results.MODEL.Internal_Energy_time.internal_energy, unit_energy_plot), label = "Internal Energy")
ax1.plot(convert_to_unit(sim_data_results.MODEL.Kinetic_Energy_time.time, unit_time_plot),
convert_to_unit(sim_data_results.MODEL.Kinetic_Energy_time.kinetic_energy, unit_energy_plot), label = "Kinetic Energy")
ax1.plot(convert_to_unit(sim_data_results.MODEL.Total_Energy_time.time, unit_time_plot),
convert_to_unit(sim_data_results.MODEL.Total_Energy_time.total_energy, unit_energy_plot), label = "Total Energy")
ax1.set(title="Belt Loading", xlabel ="Time / ms", ylabel="Energy / J")
fig_energy.legend(loc='center left', bbox_to_anchor=(1, 0.5))
fig_energy.tight_layout(pad=0.5)
filename_save = os.path.join(figures_dir, 'Shaw_2004_'+ setup_type + '_energies_complete_' + settings["HBM"] + '.png')
fig_energy.savefig(filename_save, format='png', bbox_inches='tight')
fig_energy, (ax1) = plt.subplots(nrows=1, ncols=1, figsize=(5,6))
fig_energy.suptitle('Model Energies Loading Phase')
offset = np.argmax(sim_data_results.MODEL.Hourglass_Energy_time.time > t_settle) -1
assert offset > 0
ax1.plot(convert_to_unit(sim_data_results.MODEL.Hourglass_Energy_time.time, unit_time_plot, offset=offset),
convert_to_unit(sim_data_results.MODEL.Hourglass_Energy_time.hourglass_energy, unit_energy_plot, offset=offset), label = "Hourglass Energy")
ax1.plot(convert_to_unit(sim_data_results.MODEL.Internal_Energy_time.time, unit_time_plot, offset=offset),
convert_to_unit(sim_data_results.MODEL.Internal_Energy_time.internal_energy, unit_energy_plot, offset=offset), label = "Internal Energy")
ax1.plot(convert_to_unit(sim_data_results.MODEL.Kinetic_Energy_time.time, unit_time_plot, offset=offset),
convert_to_unit(sim_data_results.MODEL.Kinetic_Energy_time.kinetic_energy, unit_energy_plot, offset=offset), label = "Kinetic Energy")
ax1.plot(convert_to_unit(sim_data_results.MODEL.Total_Energy_time.time, unit_time_plot, offset=offset),
convert_to_unit(sim_data_results.MODEL.Total_Energy_time.total_energy, unit_energy_plot, offset=offset), label = "Total Energy")
ax1.plot(convert_to_unit(sim_data_results.MODEL.Sliding_Energy_time.time, unit_time_plot, offset=offset),
convert_to_unit(sim_data_results.MODEL.Sliding_Energy_time.sliding_interface_energy, unit_energy_plot, offset=offset), label = "Sliding Interface Energy")
ax1.set(title="Belt Loading", xlabel ="Time / ms", ylabel="Energy / J")
fig_energy.legend(loc='center left', bbox_to_anchor=(1, 0.5))
fig_energy.tight_layout(pad=0.5)
filename_save = os.path.join(figures_dir, 'Shaw_2004_'+ setup_type + '_energies_loading_' + settings["HBM"] + '.png')
fig_energy.savefig(filename_save, format='png', bbox_inches='tight')
Added mass of HBM¶
# Data
HBM_mass = df_hbm_characteristics['HBM_mass'].to_numpy()
HBM_added_mass = convert_to_unit(sim_data_results['HBM']['HBM_added_mass_time']['added_mass'], unit_mass_plot)
HBM_added_mass_max = np.max(HBM_added_mass)
Percentage_increase = 100/HBM_mass * HBM_added_mass_max
# Table
col_labels = ["HBM", "Added mass / kg", "Percentage on HBM mass / %"]
table = []
table.append(settings["HBM"])
table.append(round(float(HBM_added_mass_max),3))
table.append(round(float(Percentage_increase),3))
criteria_table = []
criteria_table.append(table)
# Plot
fig_added_mass, ax = plt.subplots(figsize=(6, 1))
ax.set_title('Belt Loading', fontsize=12)
ax.axis('off')
bbox = [0, 0, 1, 1]
mpl_table = ax.table(cellText = criteria_table, bbox = bbox, colLabels = col_labels, cellLoc='center')
mpl_table.auto_set_font_size(False)
mpl_table.set_fontsize(10)
mpl_table.auto_set_column_width(col=[0,1,2,3])
mpl_table[0,0].get_text().set_weight('bold')
mpl_table[0,1].get_text().set_weight('bold')
mpl_table[0,2].get_text().set_weight('bold')
filename_save = os.path.join(figures_dir, 'Shaw_2004_'+ setup_type + '_added_mass_' + settings["HBM"] + '.png')
fig_added_mass.savefig(filename_save, format='png', bbox_inches='tight')
assert Percentage_increase < 5, "The added mass is higher than 5% of the HBM mass."
Objective Metric Score¶
To calculate the objective metric score, the following steps are performed:
Preprocessing test data¶
- Unit conversion from N to kN
- Normalize chest compression based on PMHS chest depth (chest compression * 100 / initial chest depth)
- Cut negative displacement
- Cut at maximum force
Preprocessing simulation data¶
- Normalize chest compression based on HBM chest depth (chest compression * 100 / initial chest depth)
- Cut at maximum force
Remarks¶
- Not enough test data for setup type HPL / 50percent
from arc_length_ellipse_score import ArcLengthEllipseScore
def get_relevant_data_part(data):
# Cut at max force and displacement >= 0
idx_disp_geq_0 = np.argmax(data[:, 0] >= 0.0)
idx_max_force = np.argmax(data[:, 1])
assert idx_max_force > 0
assert idx_disp_geq_0 < idx_max_force
return data[idx_disp_geq_0: idx_max_force + 1, :]
def scaling_xy_array(xy_array, factor_x=None, factor_y=None):
if factor_x is not None:
xy_array[:, 0] *= factor_x
if factor_y is not None:
xy_array[:, 1] *= factor_y
def read_exp_data_multiindex(path_csv):
df = pd.read_csv(path_csv, sep=';')
idx = df.columns.str.split('_', expand=True)
idx = idx.swaplevel(0, 1)
df.columns = idx
return df
def remove_nan_rows(data):
return data[~np.isnan(data).any(axis=1), :]
cut_at_arc_length = False
num_warp_ctrl_points_arcgen = 1
# Only for setup_type 30percent since there is only one test case for 50percent
if settings['setup_type'] == 'LPL':
imp = 'IMP30'
# Prepare test data.
df_parameters = pd.read_csv(os.path.join(experimental_data_dir, 'PMHS_characteristics.csv'), sep=';', header=[0, 1])
df_exp = read_exp_data_multiindex(os.path.join(experimental_data_dir, 'Test_data.csv'))
test_data_list = []
for subject, df_subject_t in df_exp.T.groupby(level=0):
id = int(subject[3:])
df_subject = df_subject_t.T
if df_subject.columns[0][2] != imp:
continue
assert df_subject.columns[0][1] == 'Displacement'
assert df_subject.columns[1][1] == 'Force'
parameters = df_parameters.loc[df_parameters['PMHS ID', '-'] == id]
test_data = df_subject.dropna().to_numpy(copy=True)
# N to kN
scaling_xy_array(test_data, factor_y=0.001)
# Normalization of chest compression
scaling_xy_array(test_data, factor_x=(100.0 / parameters['Chest depth', 'mm'].to_numpy()))
test_data = get_relevant_data_part(test_data)
assert test_data[0, 0] >= 0.0
test_data_list.append(test_data)
# Prepare simulation data
sim_data = np.column_stack((-displ, force))
chest_depth_hbm = df_hbm_characteristics['Chest_depth_Shaw_2004'].to_numpy()
scaling_xy_array(sim_data, factor_x=(100.0 / chest_depth_hbm))
sim_data = get_relevant_data_part(sim_data)
assert sim_data[0, 0] >= 0.0
sim_data_list = [sim_data]
# Calculate objective metric scores
ales = ArcLengthEllipseScore(test_data_list, sim_data_list, cut_at_arc_length, num_warp_ctrl_points_arcgen, use_dtw=True)
ales.arc_length_score_for_simulation_data()
score = np.round(ales.scores_simulation_list[0], decimals=2)
score_dtw = np.round(ales.scores_dtw_simulation_list[0], decimals=2)
print(f'Objective metric score: {score}')
print(f'Objective metric score dtw: {score_dtw}')
# Plot arc length score over normalized arc length.
# ales.plot_score_over_arc_length()
label_simulation = f'{settings["HBM"]}\nScore: {score}\nScore (dtw): {score_dtw}'
filename_save = os.path.join(figures_dir, 'Shaw_2004_'+ setup_type + '_impactor_force_score_' + settings["HBM"] + '.png')
fig_list = ales.plot_data_and_results(title_fig='Shaw et al. 2004: ' + setup_dict[setup_type], indices_plot_ellipses=[150, 300, 499], title_ax='Objective Metric Score', xlabel='Compression / %', ylabel='Force / kN',
label_sim=label_simulation, figsize=(7,5), bbox_to_anchor=(1.1, 0.5), loc='center left', tight_layout=False)
fig_list[0].savefig(filename_save, bbox_inches='tight')
else:
print('No objective metric score calculated for high penetration level setup, as only one test curve is available.')
No objective metric score calculated for high penetration level setup, as only one test curve is available.