Skip to content

A Python-driven workflow for extracting and visualizing natural frequencies and mode shapes from Abaqus FEA models for Structural Health Monitoring (SHM) applications.

Notifications You must be signed in to change notification settings

hoomanick/Abaqus-Python-Modal-Analysis

Repository files navigation

Abaqus-Python Workflow for Modal Analysis in SHM

This project demonstrates a complete, Python-driven workflow for extracting and visualizing natural frequencies and mode shapes from an Abaqus Finite Element model. The primary application is for establishing a dynamic baseline of a structure for vibration-based Structural Health Monitoring (SHM).

The project also highlights a realistic debugging process required to overcome discrepancies between geometric assumptions and the actual FE mesh.

Key Features

  • Automated Data Extraction: A Python script using the Abaqus odbAccess API to programmatically read modal analysis results.
  • Evidence-Based Node Selection: A robust data filtering method to extract mode shapes along a precise path on a complex mesh, correcting for discrepancies between geometric design and final mesh coordinates.
  • Data Processing: Cleanly formats and saves raw data (frequencies, mode shapes) into machine-readable .txt files.
  • Professional Visualization: A second Python script using Matplotlib and Numpy to generate high-quality, publication-ready plots.

Results & Visualizations

The workflow was applied to a 3D FE model of a simply supported steel beam. The first three primary bending modes were extracted and plotted.

Natural Frequencies

Extracted Natural Frequencies

Mode Shape 6

Mode Shape 6

Mode Shape 32

Mode Shape 32

Mode Shape 83

Mode Shape 83

The Workflow

The process consists of two main scripts:

  1. extract_modal_data.py: This script is run using the Abaqus Python interpreter. It accesses the .odb output file, extracts the natural frequencies and nodal displacements for each mode shape, and saves the data.
  2. plot_modes.py: This is a standard Python script that reads the .txt files generated by the first script. It uses Matplotlib to create and save the final plots.

Abaqus Model Details

The Finite Element model was created in Abaqus/CAE and is based on the experimental work of Tan et al. [https://www.sciencedirect.com/science/article/abs/pii/S1350630717300523].

  • Structure: Simply Supported Steel I-Beam
  • Dimensions: Length: 3m, Height: 150mm, Flange/Web Thickness: 7mm/5mm
  • Material Properties (Isotropic Steel):
    • Young's Modulus: 175 GPa
    • Poisson's Ratio: 0.3
    • Density: 7850 kg/m³
  • Element Type: 8-node linear brick with reduced integration (C3D8R)

Usage

  1. Run the modal analysis in Abaqus/CAE to generate the .odb file.
  2. Run the extraction script using the Abaqus execution environment: abaqus python extract_modal_data.py.
  3. Run the plotting script using a standard Python environment with numpy and matplotlib installed: python plot_modes.py.

Future Work & Extensions

This foundational workflow can be extended for advanced SHM research:

  • Automated Damage Simulation: Parameterize the introduction of damage (e.g., local stiffness reduction) into the FE model and automatically re-run this workflow to build a comprehensive dataset of healthy vs. damaged states.
  • Feature Engineering: Implement algorithms to calculate damage-sensitive features from the modal data, such as the Modal Assurance Criterion (MAC), Mode Shape Curvature (MSC), and Modal Flexibility.
  • AI/ML Integration: Use the generated datasets to train machine learning models (e.g., ANNs, CNNs) for automated damage detection, localization, and quantification.

About

A Python-driven workflow for extracting and visualizing natural frequencies and mode shapes from Abaqus FEA models for Structural Health Monitoring (SHM) applications.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages