Langford Analytic · Knowledge Base

Python for Test and FEA Data Comparison

How to use Python to compare strain-gauge and modal test data with FEA results — data parsing, interpolation, correlation metrics and reporting.

Article 07.02Python for Engineering5 min read
Pythoncorrelationstrain gaugemodaltestFEA

Engineering Task

Comparing physical test measurements with FEA predictions to validate the model.

Strain-Gauge Correlation

# Compare FE strain with gauge measurements
import numpy as np
import pandas as pd

# FE strain at gauge locations
fe_strain = pd.read_csv("fe_strain_at_gauges.csv")
# Test data
test_strain = pd.read_csv("test_results.csv")

# Correlation
correlation = pd.merge(fe_strain, test_strain, on="gauge_id")
correlation["error_pct"] = (correlation["fe_microstrain"] - correlation["test_microstrain"]) / correlation["test_microstrain"] * 100

mean_error = correlation["error_pct"].mean()
max_error = correlation["error_pct"].abs().max()

Modal Correlation

  • Compare natural frequencies: percentage error per mode pair
  • Calculate MAC (Modal Assurance Criterion) between FE and test mode shapes
  • Use numpy.dot for MAC calculation: MAC = |φ_test^T × φ_fe|² / (|φ_test|² × |φ_fe|²)
  • Plot MAC matrix as a heatmap to identify mode pairing

Key Considerations

  • Extract FE strain at the exact gauge location and orientation — interpolate, do not use nearest node
  • Account for gauge integration length — average FE strain over the gauge active length
  • Scale test data to the FE load level if different (verify linearity first)
  • Account for measurement uncertainty — a 3% match may be within test uncertainty

Related Knowledge