Composite Curing Simulation

SkillAI & models

This skill lets your AI run composite curing simulations in Abaqus and predict how much a finished part springs back after curing. It accounts for mold contact, friction, and temperature effects, and supports composite layup on a mold. When a job needs deeper work, it hands steps off to specialized sub-skills.

Available today. Use it from your connected AI after setup.

After adding it, ask your AI to run a curing simulation or springback analysis for your composite part in Abaqus. It will bring in specialized sub-skills when a step needs them.

Then ask your AI: use the Composite Curing Simulation skill

What your AI can do with it

  • Run composite curing simulations in Abaqus
  • Predict springback after curing using a Model Change step
  • Model contact and friction between the part and its mold
  • Include temperature effects during curing
  • Set up composite layups on a mold
  • Create a UMAT subroutine for composite materials

What this skill tells your AI

The instructions your AI receives, as published by cai-aa/cae-agent-hub in Skill/abaqus/composite-curing-simulation/SKILL.md and read by ahel’s review.

This is the master routing skill for composite material curing simulation. It provides an overview and routes to specialized sub-skills for each aspect of the workflow.

When to Invoke

  • User requests composite curing simulation with mold
  • User mentions "固化仿真", "脱模回弹", "模具", "铺层"
  • User wants to change ply angles or ply count in a curing model
  • User needs to run Abaqus with UMAT for composite materials
  • User provides a reference INP with mold/contact/temperature and wants to replicate it

Critical: Mold Constraint vs No-Mold Constraint

This is the most important distinction in the curing model. Using the wrong constraint type produces physically incorrect results.

P8_mold (Correct — With Mold Contact + Demolding)

The correct model includes a TOOL part, friction contact pairs, and Model Change demolding in the sp step. This produces asymmetric springback deformation reflecting real physics.

FeatureP8_mold (Correct)
TOOL partPresent (TOOL-1 instance)
Contact paircom-surface (S1) ↔ tool-surface (S4+S6), HARD contact
FrictionTemperature-dependent: 0.45 → 0.2 → 0.169
Curing constraintMold contact (TOOL U1=0, U2=0 via _PickedSet327/328)
Demolding*Model Change, remove on TOOL elements + contact pair in sp step
Springback constraintSet-2 (inner corner nodes): U1=U2=U3=0 via *Boundary, op=NEW
Pressure0.6 MPa on S2 (inner surface), removed in sp step
Springback contourAsymmetric (max displacement at free edges)
Spring-in anglePositive (0.5°-1.6°), physically correct

P8_only (Incorrect — No Mold, ENCASTRE Constraint)

The incorrect model omits the TOOL part and uses ENCASTRE (full fixity) instead of mold contact. This produces center-symmetric deformation that does NOT reflect real curing physics.

FeatureP8_only (Incorrect)
TOOL partAbsent
Contact pairNone
FrictionNone
Curing constraintENCASTRE (U1=U2=U3=UR1=UR2=UR3=0) on inner surface
DemoldingNone (no mold to remove)
Springback constraintSame ENCASTRE remains
Springback contourCenter-symmetric (unphysical)
Spring-in angleDoes not reflect real physics

Why P8_only is Wrong

  1. No mold contact: Without the TOOL part, there is no frictional constraint during curing. The composite is artificially fixed via ENCASTRE, which prevents any thermal expansion-driven slip at the mold interface.
  2. No demolding process: The *Model Change step is what creates the physical springback mechanism — releasing the part from the mold allows residual stresses to relax into the final shape. Without it, the model simply releases a fully constrained part.
  3. Center-symmetric artifact: ENCASTRE creates a symmetric constraint pattern, leading to symmetric deformation. Real curing springback is asymmetric because friction varies across the part surface.
  4. Missing friction history: The temperature-dependent friction (0.45→0.2→0.169) captures the material state transitions (viscous→rubbery→glassy). Without contact, this physics is entirely absent.

Template File

  • Correct template: P8_mold_V2.inp — use this for all new simulations
  • Incorrect template: P8_only_recipe_1.inp — do NOT use; archived for reference only

Skill Architecture

composite-curing-simulation/
├── README.md                          # English overview
├── README.zh-CN.md                    # Chinese overview
├── SKILL.md                           # This file (master router)
├── core/
│   └── composite-curing/              # Main routing logic
├── modeling/
│   ├── composite-layup/               # Ply angles, thickness, count
│   ├── mold-geometry/                 # Tool/mold part setup
│   └── composite-mesh/               # C3D8 mesh, through-thickness
├── setup/
│   ├── curing-material/               # UMAT, COM/TOOL materials
│   ├── curing-contact/                # Contact pairs, friction
│   ├── curing-bc/                     # Boundary conditions, Set-2
│   ├── curing-load/                   # Pressure on inner surface
│   └── curing-temperature/            # Temperature fields
├── analysis/
│   ├── curing-steps/                  # 4-step process (vis/rub/glassy/sp)
│   └── springback-analysis/           # Model Change, mold removal
├── execution/
│   ├── curing-job/                    # Job submission with UMAT
│   └── socket-bridge/                 # Socket bridge connection
├── postprocessing/
│   ├── odb-extraction/                # ODB field output reading
│   └── csv-export/                    # CSV with coords + displacement
└── reference/
    └── curing-parameters/             # Complete parameter tables

Quick Reference

4-Step Curing Process

StepTemperaturePressureFrictionTool BCComposite BCContact
vis25→150°C0.6 MPa (S2)0.45U1=0, U2=0Active
rub150→180°C0.6 MPa (S2)0.2U1=0, U2=0Active
glassy180→25°C0.169U1=0, U2=0Active
sp25°C— (removed)— (removed)Set-2: U1=U2=U3=0Removed

Constraint Summary (Critical)

PhaseWhat is ConstrainedHowPurpose
Curing (vis/rub/glassy)TOOL-1: U1=0, U2=0_PickedSet328, 1, 1 and _PickedSet327, 2, 2Fix mold in space; composite held by friction
Curing (vis/rub/glassy)CompositeMold contact (friction)Composite can slide/expand against mold
Springback (sp)TOOL-1Removed via *Model ChangeMold is gone
Springback (sp)Composite: Set-2*Boundary, op=NEW → U1=U2=U3=0Prevent rigid body motion only

Routing Guide

User RequestRoute To
Change ply anglesmodeling/composite-layup
Change ply countmodeling/composite-layup + modeling/composite-mesh
Set up moldmodeling/mold-geometry
Define UMAT materialsetup/curing-material
Set up contact/frictionsetup/curing-contact
Define boundary conditionssetup/curing-bc
Apply pressuresetup/curing-load
Set temperature fieldssetup/curing-temperature
Configure curing stepsanalysis/curing-steps
Set up springbackanalysis/springback-analysis
Submit job with UMATexecution/curing-job
Connect to Abaqusexecution/socket-bridge
Extract ODB resultspostprocessing/odb-extraction
Export CSV datapostprocessing/csv-export
Batch extract + screenshotsabaqus-odb-extraction (standalone skill)
Look up parametersreference/curing-parameters

Recommended Workflow Chain

core/composite-curing          → Start here
modeling/composite-layup       → Define plies
modeling/mold-geometry         → Set up mold
modeling/composite-mesh        → Verify mesh
setup/curing-material          → UMAT + TOOL materials
setup/curing-contact           → Contact + friction
setup/curing-bc                → Tool BCs + Set-2
setup/curing-load              → Pressure on S2
setup/curing-temperature       → Temperature fields
analysis/curing-steps          → 4-step sequence
analysis/springback-analysis   → Model Change
execution/curing-job           → Submit with UMAT
execution/socket-bridge        → Connect to Abaqus
postprocessing/odb-extraction  → Read results
postprocessing/csv-export      → Export data
abaqus-odb-extraction          → Batch automate (standalone skill)

Key Files

  • Correct template INP: P8_mold_V2.inp — contains TOOL part, contact, Model Change
  • Incorrect template INP: P8_only_recipe_1.inp — archived, do NOT use
  • UMAT subroutine: Threestep.for (4434 bytes, 4 state variables)
  • Environment file: abaqusis.env (domains=4, no_domain_check=ON, ask_delete=OFF)
  • Abaqus CAE: Must be open with socket bridge plugin (port 48152)

Dataset Generation

For generating large datasets (50-100 cases) from the P8_mold_V2 template:

  1. INP generation: Read template, replace 8 ply lines (indices 14153-14160), format: 0.250, 3, COM, <angle>, Ply-N
  2. Batch submission: abq2020.bat job=NAME user=Threestep.for cpus=4 interactive
  3. ODB extraction: abq2020.bat python extract_via_cli.py (bypasses CAE filesystem isolation)
  4. Spring-in calculation: SVD dual-arm plane fit on deformed coordinates
  5. Screenshots: abq2020.bat cae noUI=screenshot.py with LeafFromPartInstance to hide mold

See the standalone abaqus-odb-extraction skill for complete automation scripts.

Common Pitfalls

  1. Using P8_only instead of P8_mold: Always use P8_mold_V2.inp as template. P8_only lacks mold contact and produces center-symmetric (unphysical) results.
  2. Ply count vs ply angles: Changing ply angles is a text edit (replace ply lines); changing ply count requires mesh regeneration.
  3. Pressure surface: Pressure is on S2 (inner surface), NOT S1 (outer/contact surface).
  4. Tool node numbering: Tool and composite parts both start from node 1. Parse per-part.
  5. Set-2 node matching: When mesh changes, match nodes by coordinates, not node ID.
  6. Filesystem isolation: TRAE sandbox files are invisible to Abaqus CAE. Use C:\Temp or abq2020.bat for file operations.
  7. Python 2 vs 3: Abaqus uses Python 2.7 — no f-strings, no exist_ok, print is statement in some contexts.
  8. MCP submit_job encoding bug: TypeError: unicode argument expected, got 'str' — use command-line abq2020.bat instead.

Signals

GitHub stars
891
Forks
115
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
composite-curing-simulation
Source
github.com/cai-aa/cae-agent-hub