Get the FREE Ultimate OpenClaw Setup Guide →

post-processing

Scanned
npx machina-cli add skill HeshamFS/materials-simulation-skills/post-processing --openclaw
Files (1)
SKILL.md
8.5 KB

Post-Processing Skill

Analyze and extract meaningful information from simulation output data.

Goal

Transform raw simulation output into actionable insights through field extraction, statistical analysis, derived quantities, visualizations, and comparison with reference data.

Inputs to Gather

Before running post-processing scripts, collect:

  1. Output Data Location

    • Path to simulation output files (JSON, CSV, HDF5, VTK)
    • Time step/snapshot indices of interest
    • Field names to extract
  2. Analysis Type

    • Field extraction (spatial data at specific times)
    • Time series (temporal evolution of quantities)
    • Line profiles (1D cuts through domain)
    • Statistical summary (mean, std, distributions)
    • Derived quantities (gradients, integrals, fluxes)
    • Comparison to reference data
  3. Output Requirements

    • Output format (JSON, CSV, tabular)
    • Visualization needs
    • Report format

Scripts

ScriptPurposeKey Inputs
field_extractor.pyExtract field data from output files--input, --field, --timestep
time_series_analyzer.pyAnalyze temporal evolution--input, --quantity, --window
profile_extractor.pyExtract line profiles--input, --field, --start, --end
statistical_analyzer.pyCompute field statistics--input, --field, --region
derived_quantities.pyCalculate derived quantities--input, --quantity, --params
comparison_tool.pyCompare to reference data--simulation, --reference, --metric
report_generator.pyGenerate summary reports--input, --template, --output

Workflow

1. Data Inventory

First, understand what data is available:

# List available fields and timesteps
python scripts/field_extractor.py --input results/ --list --json

2. Field Extraction

Extract spatial field data at specific timesteps:

# Extract concentration field at timestep 100
python scripts/field_extractor.py \
    --input results/field_0100.json \
    --field concentration \
    --json

# Extract multiple fields
python scripts/field_extractor.py \
    --input results/field_0100.json \
    --field "phi,concentration,temperature" \
    --json

3. Time Series Analysis

Analyze temporal evolution of quantities:

# Extract total energy vs time
python scripts/time_series_analyzer.py \
    --input results/history.json \
    --quantity total_energy \
    --json

# Compute moving average with window
python scripts/time_series_analyzer.py \
    --input results/history.json \
    --quantity mass \
    --window 10 \
    --json

# Detect steady state
python scripts/time_series_analyzer.py \
    --input results/history.json \
    --quantity residual \
    --detect-steady-state \
    --tolerance 1e-6 \
    --json

4. Line Profile Extraction

Extract 1D profiles through the domain:

# Extract profile along x-axis at y=0.5
python scripts/profile_extractor.py \
    --input results/field_0100.json \
    --field concentration \
    --start "0,0.5,0" \
    --end "1,0.5,0" \
    --points 100 \
    --json

# Interface profile (through center)
python scripts/profile_extractor.py \
    --input results/field_0100.json \
    --field phi \
    --axis x \
    --slice-position 0.5 \
    --json

5. Statistical Analysis

Compute statistics over field data:

# Global statistics
python scripts/statistical_analyzer.py \
    --input results/field_0100.json \
    --field concentration \
    --json

# Statistics in specific region
python scripts/statistical_analyzer.py \
    --input results/field_0100.json \
    --field phi \
    --region "x>0.3 and x<0.7" \
    --json

# Distribution analysis
python scripts/statistical_analyzer.py \
    --input results/field_0100.json \
    --field phi \
    --histogram \
    --bins 50 \
    --json

6. Derived Quantities

Calculate physical quantities from raw data:

# Compute interface area
python scripts/derived_quantities.py \
    --input results/field_0100.json \
    --quantity interface_area \
    --threshold 0.5 \
    --json

# Compute gradient magnitude
python scripts/derived_quantities.py \
    --input results/field_0100.json \
    --quantity gradient_magnitude \
    --field phi \
    --json

# Compute volume fractions
python scripts/derived_quantities.py \
    --input results/field_0100.json \
    --quantity volume_fraction \
    --field phi \
    --threshold 0.5 \
    --json

# Compute flux through boundary
python scripts/derived_quantities.py \
    --input results/field_0100.json \
    --quantity boundary_flux \
    --field concentration \
    --boundary "x=0" \
    --json

7. Comparison with Reference

Compare simulation results to reference data:

# Compare to analytical solution
python scripts/comparison_tool.py \
    --simulation results/profile.json \
    --reference reference/analytical.json \
    --metric l2_error \
    --json

# Compare to experimental data
python scripts/comparison_tool.py \
    --simulation results/history.json \
    --reference experimental_data.csv \
    --metric rmse \
    --interpolate \
    --json

# Compare two simulations
python scripts/comparison_tool.py \
    --simulation results_fine/field.json \
    --reference results_coarse/field.json \
    --metric max_difference \
    --json

8. Report Generation

Generate automated reports:

# Generate summary report
python scripts/report_generator.py \
    --input results/ \
    --output report.json \
    --json

# Generate with specific sections
python scripts/report_generator.py \
    --input results/ \
    --sections "summary,statistics,convergence" \
    --output report.json \
    --json

Typical Post-Processing Pipeline

For a complete simulation analysis:

# Step 1: Inventory available data
python scripts/field_extractor.py --input results/ --list --json

# Step 2: Extract final state statistics
python scripts/statistical_analyzer.py \
    --input results/field_final.json \
    --field phi \
    --json

# Step 3: Analyze convergence history
python scripts/time_series_analyzer.py \
    --input results/history.json \
    --quantity residual \
    --detect-steady-state \
    --json

# Step 4: Compute derived quantities
python scripts/derived_quantities.py \
    --input results/field_final.json \
    --quantity volume_fraction \
    --field phi \
    --json

# Step 5: Compare to reference (if available)
python scripts/comparison_tool.py \
    --simulation results/profile.json \
    --reference benchmark/expected.json \
    --metric l2_error \
    --json

# Step 6: Generate summary report
python scripts/report_generator.py \
    --input results/ \
    --output analysis_report.json \
    --json

Interpretation Guidelines

Time Series Analysis

  • Monotonic decrease in energy: System approaching equilibrium
  • Oscillations in residual: May indicate time step too large
  • Plateau in quantities: Steady state reached
  • Sudden jumps: Possible numerical instability

Statistical Analysis

  • Bimodal distribution of order parameter: Two-phase mixture
  • High variance: Heterogeneous microstructure
  • Skewed distribution: Asymmetric phase fractions

Comparison Metrics

MetricInterpretation
L2 error < 1%Excellent agreement
L2 error 1-5%Good agreement
L2 error 5-10%Moderate agreement
L2 error > 10%Poor agreement, investigate

Output Format

All scripts support --json flag for machine-readable output:

{
    "script": "field_extractor",
    "version": "1.0.0",
    "input_file": "results/field_0100.json",
    "field": "concentration",
    "data": {
        "shape": [100, 100],
        "min": 0.1,
        "max": 0.9,
        "mean": 0.5
    },
    "values": [[...], [...]]
}

References

For detailed information, see:

  • references/data_formats.md - Supported input/output formats
  • references/statistical_methods.md - Statistical analysis methods
  • references/derived_quantities_guide.md - Physical quantity calculations
  • references/comparison_metrics.md - Error metrics and interpretation

Requirements

  • Python 3.8+
  • NumPy (for numerical operations)
  • No other external dependencies for core functionality

Version History

  • v1.0.0 (2024-12-24): Initial release

Source

git clone https://github.com/HeshamFS/materials-simulation-skills/blob/main/skills/simulation-workflow/post-processing/SKILL.mdView on GitHub

Overview

Post-processing analyzes simulation output data to extract meaningful information and support decision making. It covers field extraction, time-series analysis, line profiles, statistics, derived quantities, reference comparisons, and automated report generation.

How This Skill Works

Run a set of scripts (field_extractor.py, time_series_analyzer.py, profile_extractor.py, statistical_analyzer.py, derived_quantities.py, comparison_tool.py, report_generator.py) to harvest data, compute metrics, and create visualizations. The workflow starts with a data inventory, then targeted extraction, analysis, and finally reporting, with outputs exported as JSON or CSV for downstream use.

When to Use It

  • Need spatial field data at specific timesteps.
  • Analyze how quantities evolve over time through a history or time series.
  • Extract 1D profiles (line profiles) through the domain.
  • Compute statistics or derived quantities like gradients or fluxes.
  • Validate results by comparing to reference data and automatically generating a report.

Quick Start

  1. Step 1: python scripts/field_extractor.py --input results/ --list --json
  2. Step 2: python scripts/field_extractor.py --input results/field_0100.json --field concentration --json; python scripts/time_series_analyzer.py --input results/history.json --quantity total_energy --json
  3. Step 3: python scripts/report_generator.py --input summary.json --template templates/report.md --output report.html

Best Practices

  • Plan a data inventory with explicit fields, timesteps, and formats before processing.
  • Use clear input parameters and consistent naming for repeatable runs.
  • Export results in common formats (JSON/CSV) and log provenance for traceability.
  • Validate units, shapes, and tolerances across all extracted data.
  • Follow a stepwise workflow (field extraction, time series, profiles, statistics, reports) and document results.

Example Use Cases

  • Extract a concentration field from CFD results at multiple timesteps for comparison with experiments.
  • Build a time-series of total energy and identify when steady state is reached.
  • Generate a centerline or cross-section profile to inspect gradients across a boundary.
  • Compute regional means and standard deviations to quantify material property variability.
  • Compare simulation output to a reference dataset and auto-generate a summarized report.

Frequently Asked Questions

Add this skill to your agents
Sponsor this space

Reach thousands of developers