Skip to content

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):

import ddacs
with ddacs.open_h5(258864) as f:
    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

  • t is the number of timesteps (3 for OP10 tools, 4 for OP10 blank, 2 for OP20 blank).
  • n is the number of nodes (varies per component).
  • m is 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…