HDF5 File Structure¶
Each simulation is one self contained HDF5 file (~20 MB). The nine parameter values from process_parameters.csv appear as root attributes, so a file inspected in isolation is still fully described.
A simulation captures two consecutive process steps. OP10 is the deep drawing operation: the blank holder presses the sheet against the die, the punch travels down to its final depth, and the tools release. OP20 is the cutting operation that trims the formed cup and lets the part relax. The two groups in the file (OP10/ and OP20/) mirror this split. OP10 records the deformable workpiece (the blank) together with the three rigid tools (binder, die, punch); OP20 records only the trimmed blank, because the cutting tools are not modelled explicitly.
File hierarchy¶
The block below is generated by ddacs.inspect_h5(f):
258864.h5
├── @index = 258864
├── @geometry = concave
├── @curvature_radius = 50.0
├── @bottom_radius = 5.0
├── @wall_angle = 10.0
├── @sheet_metal_thickness = 0.99
├── @material_scaling_factor = 1.075
├── @friction_coefficient = 0.05
├── @blankholder_force = 250000.0
├── OP10/
│ ├── blank/
│ │ ├── node_coordinates (11236, 3) float64
│ │ ├── node_displacement (4, 11236, 3) float64
│ │ ├── element_shell_thickness (4, 11025) float64
│ │ ├── element_shell_stress (4, 11025, 3, 6) float64
│ │ └── ...
│ ├── binder/ (3 timesteps, no stress / thickness)
│ ├── die/ (3 timesteps, no stress / thickness)
│ ├── punch/ (3 timesteps, no stress / thickness)
│ └── general/ (global energies, per part metrics)
└── OP20/
└── blank/
├── node_displacement (2, 4233, 3) float64
├── element_shell_thickness (2, 4026) float64
└── element_shell_stress (2, 4026, 3, 6) float64
Lines starting with @ are HDF5 root attributes; trailing / marks a group; bare names list shape and dtype.
Shape notation¶
tis the number of timesteps (3 for OP10 tools, 4 for OP10 blank, 2 for OP20 blank).nis the number of nodes (varies per component).mis the number of shell elements (varies per component).
OP10¶
The deep drawing operation. Four sub groups: the deformable blank, the three rigid tools (binder, die, punch), and a general group with global diagnostic metrics.
Blank¶
The sheet metal workpiece being formed. Captured at four timesteps: initial, 50 % forming, max forming, after springback. Carries the full field set, including stress, strain, thickness and force.
Node fields
| Field | Shape | Description |
|---|---|---|
node_ids |
(n,) | Unique node identifiers |
node_coordinates |
(n, 3) | Initial XYZ positions [mm] |
node_displacement |
(t, n, 3) | Position at each timestep [mm] |
node_velocity |
(t, n, 3) | Velocity vectors [mm/s] |
node_acceleration |
(t, n, 3) | Acceleration vectors [mm/s^2] |
Element connectivity
| Field | Shape | Description |
|---|---|---|
element_shell_ids |
(m,) | Unique element identifiers |
element_shell_node_ids |
(m, 4) | Global node IDs per quad element |
element_shell_node_indexes |
(m, 4) | Local node indices per quad element |
element_shell_part_indexes |
(m,) | Part membership label |
Thickness, stress, strain, force
| Field | Shape | Description |
|---|---|---|
element_shell_thickness |
(t, m) | Current shell thickness [mm] |
element_shell_stress |
(t, m, 3, 6) | Stress tensor at 3 integration points |
element_shell_strain |
(t, m, 2, 6) | Strain tensor at 2 integration points |
element_shell_stress_all_ipt |
(m, 7, 6) | Stress at all 7 through thickness points |
element_shell_stress_all_ipt_thickness |
(1, 7) | Normalised positions of the 7 integration points |
element_shell_effective_plastic_strain |
(t, m, 3) | Effective plastic strain |
element_shell_effective_plastic_strain_all_ipt |
(m, 7) | Effective plastic strain at all 7 integration points |
element_shell_bending_moment |
(t, m, 3) | Bending moments [N*mm] |
element_shell_normal_force |
(t, m, 3) | Normal forces [N] |
element_shell_shear_force |
(t, m, 2) | Shear forces [N] |
element_shell_internal_energy |
(t, m) | Internal energy [mJ] |
Tensor components are [sigmaxx, sigmayy, sigmazz, tauxy, tauyz, tauzx]. Integration point layers within a shell: 0 bottom surface, 1 middle, 2 top.
Binder, Die, Punch¶
The three rigid tools. Captured at three OP10 timesteps (initial, 50 % forming, max forming); springback is not stored for the tools because they are released after max forming. Stress, strain, thickness and force fields are absent because the tools are not deformable.
| Field | Shape | Description |
|---|---|---|
node_ids |
(n,) | Unique node identifiers |
node_coordinates |
(n, 3) | Initial XYZ positions [mm] |
node_displacement |
(t, n, 3) | Position at each timestep [mm] |
node_velocity |
(t, n, 3) | Velocity vectors [mm/s] |
node_acceleration |
(t, n, 3) | Acceleration vectors [mm/s^2] |
element_shell_ids |
(m,) | Unique element identifiers |
element_shell_node_indexes |
(m, 4) | Local node indices per quad element |
element_shell_part_indexes |
(m,) | Part membership label |
General¶
Global energies, velocities and per part diagnostic metrics for the OP10 simulation as a whole. Useful for sanity checks on solver health (hourglass energy, energy balance) and for relating per part behaviour to the overall response.
| Field | Shape | Description |
|---|---|---|
global_timesteps |
(t,) | Simulation time values |
global_internal_energy |
(t,) | Total internal energy [mJ] |
global_kinetic_energy |
(t,) | Total kinetic energy [mJ] |
global_total_energy |
(t,) | Sum of all energy [mJ] |
global_velocity |
(t, 3) | Global velocity [mm/s] |
part_internal_energy |
(t, 4) | Per part internal energy |
part_kinetic_energy |
(t, 4) | Per part kinetic energy |
part_hourglass_energy |
(t, 4) | Per part hourglass energy (mesh quality) |
part_mass |
(t, 4) | Per part mass [kg] |
OP20¶
The cutting operation that follows OP10. Only the blank is stored because the cutting tools are not modelled explicitly.
Blank¶
The trimmed workpiece. Captured at two timesteps: after cutting, after cutting induced springback. Carries the same kind of stress, strain and thickness data as the OP10 blank, on the post trim mesh.
| Field | Shape | Description |
|---|---|---|
node_ids |
(n,) | Unique node identifiers |
node_displacement |
(t, n, 3) | Position at each timestep [mm] |
element_shell_ids |
(m,) | Unique element identifiers |
element_shell_node_ids |
(m, 4) | Global node IDs per quad element |
element_shell_node_indexes |
(m, 4) | Local node indices per quad element |
element_shell_thickness |
(t, m) | Current shell thickness [mm] |
element_shell_stress |
(t, m, 3, 6) | Stress tensor at 3 integration points |
element_shell_strain |
(t, m, 2, 6) | Strain tensor at 2 integration points |
element_shell_stress_all_ipt |
(t, m, 7, 6) | Stress at all 7 through thickness points |
element_shell_stress_all_ipt_thickness |
(1, 7) | Normalised positions of integration points |
element_shell_effective_plastic_strain |
(t, m, 3) | Effective plastic strain |
element_shell_effective_plastic_strain_all_ipt |
(t, m, 7) | Effective plastic strain at all integration points |
Index -1 is not the same physical state everywhere
For the blank in OP10 and OP20, -1 is the timestep after springback. For the OP10 tools (binder, die, punch), -1 is the maximum forming step. There is no springback timestep for the tools.
Reading example¶
import ddacs
import numpy as np
with ddacs.open_h5(258864) as f:
thickness = np.array(f["OP10/blank/element_shell_thickness"])[-1] # after springback
mid_stress = np.array(f["OP10/blank/element_shell_stress"])[-1, :, 1, :] # middle integration point
pos = np.array(f["OP10/blank/node_displacement"])[-1] # node positions after springback
Complete field reference¶
The full list of HDF5 datasets, generated from metadata.json. Each row's Field ID (e.g. op10_blank_node_displacement) is the identifier accepted by ddacs.add_view(..., fields={...}) : the Build your own view tutorial walks through composing custom RecordSets from these IDs and optional timestep slices.
| Field | Description |
|---|---|
op10_binder_element_shell_ids |
OP10 / binder. Unique integer identifiers for each shell element. HDF5 path: OP10/binder/element_shell_ids. Dimensions: … |
op10_binder_element_shell_node_indexes |
OP10 / binder. Local node indices of the 4 corners of each quadrilateral element. HDF5 path: OP10/binder/element_shell_n… |
op10_binder_element_shell_part_indexes |
OP10 / binder. Part membership label for each element (0..3 over die/punch/binder/blank). HDF5 path: OP10/binder/element… |
op10_binder_node_acceleration |
OP10 / binder. Acceleration vectors of nodes. Unit: mm/s^2. HDF5 path: OP10/binder/node_acceleration. Dimensions: (times… |
op10_binder_node_coordinates |
OP10 / binder. Initial XYZ positions of nodes. Unit: mm. HDF5 path: OP10/binder/node_coordinates. Dimensions: (nodes, xy… |
op10_binder_node_displacement |
OP10 / binder. Displacement vectors from initial position, per node, per timestep. Unit: mm. HDF5 path: OP10/binder/node… |
op10_binder_node_ids |
OP10 / binder. Unique integer identifiers for each node point. HDF5 path: OP10/binder/node_ids. Dimensions: (nodes) = (1… |
op10_binder_node_velocity |
OP10 / binder. Velocity vectors of nodes. Unit: mm/s. HDF5 path: OP10/binder/node_velocity. Dimensions: (timesteps, node… |
op10_blank_element_shell_bending_moment |
OP10 / blank. Bending moment components (Mxx, Myy, Mxy) per element. Unit: N*mm. HDF5 path: OP10/blank/element_shell_ben… |
op10_blank_element_shell_effective_plastic_strain |
OP10 / blank. Effective plastic strain at 3 layers per element. Unit: -. HDF5 path: OP10/blank/element_shell_effective_p… |
op10_blank_element_shell_effective_plastic_strain_all_ipt |
OP10 / blank. Effective plastic strain at all 7 integration points per element. Unit: -. HDF5 path: OP10/blank/element_s… |
op10_blank_element_shell_ids |
OP10 / blank. Unique integer identifiers for each shell element. HDF5 path: OP10/blank/element_shell_ids. Dimensions: (e… |
op10_blank_element_shell_internal_energy |
OP10 / blank. Internal energy stored in each element. Unit: mJ. HDF5 path: OP10/blank/element_shell_internal_energy. Dim… |
op10_blank_element_shell_node_ids |
OP10 / blank. Global node IDs of the 4 corners of each quadrilateral element. HDF5 path: OP10/blank/element_shell_node_i… |
op10_blank_element_shell_node_indexes |
OP10 / blank. Local node indices of the 4 corners of each quadrilateral element. HDF5 path: OP10/blank/element_shell_nod… |
op10_blank_element_shell_normal_force |
OP10 / blank. In-plane normal force components (Nxx, Nyy, Nxy) per element. Unit: N. HDF5 path: OP10/blank/element_shell… |
op10_blank_element_shell_part_indexes |
OP10 / blank. Part membership label for each element (0..3 over die/punch/binder/blank). HDF5 path: OP10/blank/element_s… |
op10_blank_element_shell_shear_force |
OP10 / blank. Transverse shear force components (Qxz, Qyz) per element. Unit: N. HDF5 path: OP10/blank/element_shell_she… |
op10_blank_element_shell_strain |
OP10 / blank. Strain tensor (6 components) per element, at top and bottom layer. Unit: -. HDF5 path: OP10/blank/element_… |
op10_blank_element_shell_stress |
OP10 / blank. Cauchy stress tensor (6 components: sxx, syy, szz, sxy, syz, szx) per element, evaluated at 3 through-thic… |
op10_blank_element_shell_stress_all_ipt |
OP10 / blank. Stress at all 7 through-thickness integration points (vs. only 3 layers). Unit: Pa. HDF5 path: OP10/blank/… |
op10_blank_element_shell_stress_all_ipt_thickness |
OP10 / blank. Normalized through-thickness coordinate of each integration point. Unit: -. HDF5 path: OP10/blank/element_… |
op10_blank_element_shell_thickness |
OP10 / blank. Current shell element thickness, per element, per timestep. Unit: mm. HDF5 path: OP10/blank/element_shell_… |
op10_blank_element_shell_unknown_variables |
OP10 / blank. Additional LS-DYNA element variables (UNV1, UNV2) — solver internal. HDF5 path: OP10/blank/element_shell_u… |
op10_blank_node_acceleration |
OP10 / blank. Acceleration vectors of nodes. Unit: mm/s^2. HDF5 path: OP10/blank/node_acceleration. Dimensions: (timeste… |
op10_blank_node_coordinates |
OP10 / blank. Initial XYZ positions of nodes. Unit: mm. HDF5 path: OP10/blank/node_coordinates. Dimensions: (nodes, xyz)… |
op10_blank_node_displacement |
OP10 / blank. Displacement vectors from initial position, per node, per timestep. Unit: mm. HDF5 path: OP10/blank/node_d… |
op10_blank_node_ids |
OP10 / blank. Unique integer identifiers for each node point. HDF5 path: OP10/blank/node_ids. Dimensions: (nodes) = (112… |
op10_blank_node_velocity |
OP10 / blank. Velocity vectors of nodes. Unit: mm/s. HDF5 path: OP10/blank/node_velocity. Dimensions: (timesteps, nodes,… |
op10_die_element_shell_ids |
OP10 / die. Unique integer identifiers for each shell element. HDF5 path: OP10/die/element_shell_ids. Dimensions: (eleme… |
op10_die_element_shell_node_indexes |
OP10 / die. Local node indices of the 4 corners of each quadrilateral element. HDF5 path: OP10/die/element_shell_node_in… |
op10_die_element_shell_part_indexes |
OP10 / die. Part membership label for each element (0..3 over die/punch/binder/blank). HDF5 path: OP10/die/element_shell… |
op10_die_node_acceleration |
OP10 / die. Acceleration vectors of nodes. Unit: mm/s^2. HDF5 path: OP10/die/node_acceleration. Dimensions: (timesteps, … |
op10_die_node_coordinates |
OP10 / die. Initial XYZ positions of nodes. Unit: mm. HDF5 path: OP10/die/node_coordinates. Dimensions: (nodes, xyz) = (… |
op10_die_node_displacement |
OP10 / die. Displacement vectors from initial position, per node, per timestep. Unit: mm. HDF5 path: OP10/die/node_displ… |
op10_die_node_ids |
OP10 / die. Unique integer identifiers for each node point. HDF5 path: OP10/die/node_ids. Dimensions: (nodes) = (2047). … |
op10_die_node_velocity |
OP10 / die. Velocity vectors of nodes. Unit: mm/s. HDF5 path: OP10/die/node_velocity. Dimensions: (timesteps, nodes, xyz… |
op10_general_element_shell_ids |
OP10 / general. Unique integer identifiers for each shell element. HDF5 path: OP10/general/element_shell_ids. Dimensions… |
op10_general_element_shell_node_indexes |
OP10 / general. Local node indices of the 4 corners of each quadrilateral element. HDF5 path: OP10/general/element_shell… |
op10_general_element_shell_part_indexes |
OP10 / general. Part membership label for each element (0..3 over die/punch/binder/blank). HDF5 path: OP10/general/eleme… |
op10_general_global_internal_energy |
OP10 / general. Total internal energy of the entire system per timestep. Unit: mJ. HDF5 path: OP10/general/global_intern… |
op10_general_global_kinetic_energy |
OP10 / general. Total kinetic energy of the system per timestep. Unit: mJ. HDF5 path: OP10/general/global_kinetic_energy… |
op10_general_global_timesteps |
OP10 / general. Simulation time at each output timestep. Unit: s. HDF5 path: OP10/general/global_timesteps. Dimensions: … |
op10_general_global_total_energy |
OP10 / general. Sum of all energy components in the system per timestep. Unit: mJ. HDF5 path: OP10/general/global_total_… |
op10_general_global_velocity |
OP10 / general. Global system centre-of-mass velocity vector per timestep. Unit: mm/s. HDF5 path: OP10/general/global_ve… |
op10_general_node_ids |
OP10 / general. Unique integer identifiers for each node point. HDF5 path: OP10/general/node_ids. Dimensions: (nodes) = … |
op10_general_part_hourglass_energy |
OP10 / general. Hourglass energy per part — indicator of mesh quality / numerical noise. Unit: mJ. HDF5 path: OP10/gener… |
op10_general_part_internal_energy |
OP10 / general. Internal energy per part (die, punch, binder, blank), per timestep. Unit: mJ. HDF5 path: OP10/general/pa… |
op10_general_part_kinetic_energy |
OP10 / general. Kinetic energy per part, per timestep. Unit: mJ. HDF5 path: OP10/general/part_kinetic_energy. Dimensions… |
op10_general_part_mass |
OP10 / general. Mass of each part, per timestep. Unit: kg. HDF5 path: OP10/general/part_mass. Dimensions: (timesteps, pa… |
op10_general_part_material_type |
OP10 / general. Field part_material_type (no curated description). HDF5 path: OP10/general/part_material_type. Dimension… |
op10_general_part_titles |
OP10 / general. Field part_titles (no curated description). HDF5 path: OP10/general/part_titles. Dimensions: (axis0) = (… |
op10_general_part_titles_ids |
OP10 / general. Field part_titles_ids (no curated description). HDF5 path: OP10/general/part_titles_ids. Dimensions: (ax… |
op10_general_part_velocity |
OP10 / general. Field part_velocity (no curated description). HDF5 path: OP10/general/part_velocity. Dimensions: (timest… |
op10_punch_element_shell_ids |
OP10 / punch. Unique integer identifiers for each shell element. HDF5 path: OP10/punch/element_shell_ids. Dimensions: (e… |
op10_punch_element_shell_node_indexes |
OP10 / punch. Local node indices of the 4 corners of each quadrilateral element. HDF5 path: OP10/punch/element_shell_nod… |
op10_punch_element_shell_part_indexes |
OP10 / punch. Part membership label for each element (0..3 over die/punch/binder/blank). HDF5 path: OP10/punch/element_s… |
op10_punch_node_acceleration |
OP10 / punch. Acceleration vectors of nodes. Unit: mm/s^2. HDF5 path: OP10/punch/node_acceleration. Dimensions: (timeste… |
op10_punch_node_coordinates |
OP10 / punch. Initial XYZ positions of nodes. Unit: mm. HDF5 path: OP10/punch/node_coordinates. Dimensions: (nodes, xyz)… |
op10_punch_node_displacement |
OP10 / punch. Displacement vectors from initial position, per node, per timestep. Unit: mm. HDF5 path: OP10/punch/node_d… |
op10_punch_node_ids |
OP10 / punch. Unique integer identifiers for each node point. HDF5 path: OP10/punch/node_ids. Dimensions: (nodes) = (110… |
op10_punch_node_velocity |
OP10 / punch. Velocity vectors of nodes. Unit: mm/s. HDF5 path: OP10/punch/node_velocity. Dimensions: (timesteps, nodes,… |
op20_blank_element_shell_effective_plastic_strain |
OP20 / blank. Effective plastic strain at 3 layers per element. Unit: -. HDF5 path: OP20/blank/element_shell_effective_p… |
op20_blank_element_shell_effective_plastic_strain_all_ipt |
OP20 / blank. Effective plastic strain at all 7 integration points per element. Unit: -. HDF5 path: OP20/blank/element_s… |
op20_blank_element_shell_ids |
OP20 / blank. Unique integer identifiers for each shell element. HDF5 path: OP20/blank/element_shell_ids. Dimensions: (e… |
op20_blank_element_shell_node_ids |
OP20 / blank. Global node IDs of the 4 corners of each quadrilateral element. HDF5 path: OP20/blank/element_shell_node_i… |
op20_blank_element_shell_node_indexes |
OP20 / blank. Local node indices of the 4 corners of each quadrilateral element. HDF5 path: OP20/blank/element_shell_nod… |
op20_blank_element_shell_strain |
OP20 / blank. Strain tensor (6 components) per element, at top and bottom layer. Unit: -. HDF5 path: OP20/blank/element_… |
op20_blank_element_shell_stress |
OP20 / blank. Cauchy stress tensor (6 components: sxx, syy, szz, sxy, syz, szx) per element, evaluated at 3 through-thic… |
op20_blank_element_shell_stress_all_ipt |
OP20 / blank. Stress at all 7 through-thickness integration points (vs. only 3 layers). Unit: Pa. HDF5 path: OP20/blank/… |
op20_blank_element_shell_stress_all_ipt_thickness |
OP20 / blank. Normalized through-thickness coordinate of each integration point. Unit: -. HDF5 path: OP20/blank/element_… |
op20_blank_element_shell_thickness |
OP20 / blank. Current shell element thickness, per element, per timestep. Unit: mm. HDF5 path: OP20/blank/element_shell_… |
op20_blank_node_displacement |
OP20 / blank. Displacement vectors from initial position, per node, per timestep. Unit: mm. HDF5 path: OP20/blank/node_d… |
op20_blank_node_ids |
OP20 / blank. Unique integer identifiers for each node point. HDF5 path: OP20/blank/node_ids. Dimensions: (nodes) = (423… |