Automated FEA Post-Processing Pipeline for Subsea Equipment Qualification
Method notes for engineering and data workflows.
The challenge
Organise the inputs, calculations and reporting into a repeatable workflow with checks.
Our Approach
Workflow Analysis & Requirements Gathering
Define the post-processing workflow, data extraction patterns, code check calculations and reporting requirements. Record the input formats and equipment types before implementing the extraction steps.
NASTRAN Parser Development
Built a robust Python parser for NASTRAN .f06 and .op2 output files. The parser handles multiple solution sequences (SOL 101, 103, 106), extracts element stresses, nodal displacements, and reaction forces with automatic unit handling.
Code Check Engine Implementation
Implemented automated code checks for API 17D and DNV-OS-F101 requirements, including von Mises stress allowables, linearized stress calculations for pressure vessels, and fatigue screening assessments. All calculations are fully traceable with intermediate results documented.
Interactive Report Generation
Developed HTML report templates with Plotly-based interactive stress contour plots, tabular results with conditional formatting, and executive summaries with pass/fail indicators. Reports include all calculation backup for regulatory review.
Integration & Deployment
The pipeline uses a command-line interface to read a NASTRAN output folder and assemble reports.
Technical Implementation
Pipeline Architecture
The automation pipeline follows a modular architecture designed for maintainability and extensibility:
subsea-fea-pipeline/
-- parsers/
| -- nastran_f06.py # Text output parser
| -- nastran_op2.py # Binary output parser
| -- result_mapper.py # Element-to-component mapping
-- code_checks/
| -- api_17d.py # API 17D stress allowables
| -- dnv_os_f101.py # DNV pipeline code checks
| -- linearization.py # Stress linearization routines
-- reporting/
| -- html_generator.py # Report assembly
| -- plotly_viz.py # Interactive plots
| -- templates/ # Jinja2 report templates
-- main.py # CLI entry point
Key Technical Features
- Multi-format support: Handles both text (.f06) and binary (.op2) NASTRAN outputs for flexibility across different solver configurations
- Automatic unit conversion: Detects input units and converts to consistent output units (SI or US customary) based on project settings
- Component grouping: Maps finite elements to named components using property ID or element set definitions for organized reporting
- Stress linearization: Implements through-thickness stress linearization per ASME Section VIII Division 2 for pressure vessel assessments
- Batch processing: Processes multiple load cases and components in parallel using Python multiprocessing
Code Check Implementation
| Standard | Check Type | Implementation |
|---|---|---|
| API 17D | Primary stress limits | von Mises vs. allowable based on material grade and temperature |
| API 17D | Local stress limits | Peak stress evaluation at geometric discontinuities |
| DNV-OS-F101 | Burst capacity | Hoop stress check with safety factors per location class |
| DNV-OS-F101 | Collapse capacity | External pressure check with ovality effects |
| Combined | Fatigue screening | Stress range extraction for fatigue assessment triggering |
Report Features
Generated HTML reports include:
- Executive summary: Pass/fail status for all code checks with critical locations highlighted
- Interactive stress plots: Plotly-based contour plots with hover data and zoom capability
- Tabular results: Maximum stresses per component with utilization ratios and conditional formatting
- Calculation backup: Full calculation trail with intermediate values for regulatory review
- Load case summary: Applied loads and boundary conditions for traceability
- Material properties: Temperature-dependent allowables used in code checks
Technologies & Tools
FEA Software: MSC NASTRAN, NX NASTRAN
Programming: Python 3.10+
Data Processing: pandas, numpy, scipy
Visualization: Plotly for interactive charts and contour plots
Reporting: Jinja2 templates for HTML generation
Binary Parsing: pyNastran for .op2 file handling
Deployment: PyInstaller for standalone executable distribution
Related methods
Summary
Review the inputs, assumptions and calculation results for the stated scope.
Engineering workflows ยท Technical articles
Use our data that is available. If you want help with any work, whether it is automation, AI automation or workflows, let us know.