Skip to content

visualdynamics.io.punch

punch

Nastran punch files (.pch) — eigenvectors, read as a ShapeSet.

Phase 2 of the FEM interchange arc (PLAN.md): the bulk deck carries the mesh and no results, and what a correlation needs is the modes. SOL 103 punches them as text — DISPLACEMENT(PUNCH) = ALL in case control — in a layout documented in every Nastran vendor's reference and stable across them, which is exactly why the punch is read and the .f06 print file is not: the print is a report formatted for eyes and vendors disagree about its columns; the punch says the same numbers in a fixed shape.

The layout, from those references: every line is 72 columns of data with an optional sequence number in 73-80 (dropped unread). A mode starts at a $EIGENVALUE = <lambda> MODE = <k> header — lambda is the eigenvalue in (rad/s)^2, so the frequency in Hz is sqrt(lambda)/2pi — under $ header lines naming the output ($DISPLACEMENTS, $EIGENVECTOR) and its arithmetic ($REAL OUTPUT or $COMPLEX OUTPUT). Each grid then takes one line of id, type and three translations, with -CONT- lines carrying the three rotations.

$COMPLEX OUTPUT refuses loudly: a complex modal solution punches its eigenvalue in a header layout no file here has ever shown, and a guessed frequency on every mode is worse than a refusal naming the gap — sample-and-extend when a real one arrives.

Only G (grid) rows are kept. S (scalar) points carry one value that belongs to no geometric direction, so they are skipped knowingly rather than mapped onto an axis they do not have.

Real normal modes carry no damping; the ShapeSet says 0 and the person fitting against it knows why. A punch is unitless like the deck it came from, so shapes arrive raw.

Functions: