Engineering Tools — F06 Modes Hz to Excel (00321)

What this tool does

Scans every .f06 file in a directory you choose (optionally recursive), pulls the modal frequency column out of each Nastran REAL EIGENVALUES table, and writes a wide Excel table: column A is the filename, columns B onward are the per-mode frequencies in Hz. One row per F06. A single bulk Range.Value write to Excel at the end, so even a few hundred F06s land in well under a minute.

Failed parses (no eigenvalue table, malformed file, etc.) are marked (no eigenvalues found) in column B and the rest of the sweep continues -- you don't lose a batch because one F06 was bad.

When you want it

  • Parametric modal sweeps. Twenty face-sheet thicknesses × five core densities × three boundary-condition sets = 300 modal runs. You need to plot Mode 1 frequency vs. parameter without hand-opening every F06. This tool reduces "open Excel, copy from Compose, paste, repeat" to a single 5-second action.
  • Sensitivity studies. Same idea on a smaller scale -- sweep one parameter, want to see frequency trends across modes.
  • Regression / archived-run comparisons. Point the tool at an old project folder, get every F06's modal table summarised in one workbook, diff against a current-version sweep.

How to use it

  1. Stash the F06 files you want parsed in a folder (or a folder tree, if you check the recursive option).
  2. Open the tool from Custom Tools > PostProcessing > F06 Modes Hz to Excel. (It's SU-gated -- if you don't see it in the menu, your install class is normal-user; ask Ian to flip your EngineeringTools.ini super_user = yes to surface it.)
  3. Pick the folder via the picker dialog. Toggle "Recursive" if you want sub-folders walked too.
  4. Click OK. Excel opens with the results. Save the workbook to wherever you want it.

Output format

  A                            B               C               D       ...
  ------------------------     ---             ---             ---     ----
  job_t0.05_c1.bdf.f06         42.13           58.91           96.27   ...
  job_t0.05_c1.5.bdf.f06       45.07           62.30           99.84   ...
  job_t0.06_c1.bdf.f06         44.81           61.45           98.71   ...
  ...

Column headers are Mode 1 (Hz), Mode 2 (Hz), ... up to the deepest mode count seen across all F06s. Shorter F06s get blank cells for the modes they don't have.

Performance notes

The parser is streaming line-by-line, so an F06 of any size reads in memory-safe. All Excel writes are batched into a single Range(...).Value = 2D_array call at the end of the collection pass, so the typical bottleneck (cell-by-cell COM round-trips) is sidestepped entirely.

Rough numbers from Ian's consulting use 2026-05-28:

  • 129 F06s, average ~40 modes each, ~250 MB total in input files
  • 4.6 seconds end-to-end on a 2024-era laptop

Failure modes

  • No REAL EIGENVALUES block found. Most common cause: the F06 is from a static or transient run, not a modal extraction. Cell B for that filename will read (no eigenvalues found).
  • Page-break lines confuse the parser. Nastran F06s have 1 (the Fortran "form feed" control char) as the first column on page-break rows -- the parser guards against this by also checking that column 4 of any candidate row is numeric before reading it as a mode. Should be invisible to you, but if you see oddly-low values in column B for some files, that's the gotcha class.
  • Directory has zero F06s. The tool exits with a warning, no Excel workbook is created.

Why SU-gated?

This is a batch-oriented analyst tool, not a per-model utility. Most users running modal analysis are working one model at a time -- a single F06 doesn't need a batch parser, Compose / Femap's own results browser is enough. SU-gating it keeps the menu clean for normal users while remaining one click away for users who do parametric sweeps.

Related tools

  • Mode Identification — per-mode energy breakdown by group, when you need to identify WHICH mode shape you're looking at (vs. just the frequency).
  • Modes to PPT — for visual mode-shape exports of a single run.