Composite Curing Simulation
SkillAI & modelsThis 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.
No other account needed.
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.
| Feature | P8_mold (Correct) |
|---|---|
| TOOL part | Present (TOOL-1 instance) |
| Contact pair | com-surface (S1) ↔ tool-surface (S4+S6), HARD contact |
| Friction | Temperature-dependent: 0.45 → 0.2 → 0.169 |
| Curing constraint | Mold contact (TOOL U1=0, U2=0 via _PickedSet327/328) |
| Demolding | *Model Change, remove on TOOL elements + contact pair in sp step |
| Springback constraint | Set-2 (inner corner nodes): U1=U2=U3=0 via *Boundary, op=NEW |
| Pressure | 0.6 MPa on S2 (inner surface), removed in sp step |
| Springback contour | Asymmetric (max displacement at free edges) |
| Spring-in angle | Positive (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.
| Feature | P8_only (Incorrect) |
|---|---|
| TOOL part | Absent |
| Contact pair | None |
| Friction | None |
| Curing constraint | ENCASTRE (U1=U2=U3=UR1=UR2=UR3=0) on inner surface |
| Demolding | None (no mold to remove) |
| Springback constraint | Same ENCASTRE remains |
| Springback contour | Center-symmetric (unphysical) |
| Spring-in angle | Does not reflect real physics |
Why P8_only is Wrong
- 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.
- No demolding process: The
*Model Changestep 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. - 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.
- 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
| Step | Temperature | Pressure | Friction | Tool BC | Composite BC | Contact |
|---|---|---|---|---|---|---|
| vis | 25→150°C | 0.6 MPa (S2) | 0.45 | U1=0, U2=0 | — | Active |
| rub | 150→180°C | 0.6 MPa (S2) | 0.2 | U1=0, U2=0 | — | Active |
| glassy | 180→25°C | — | 0.169 | U1=0, U2=0 | — | Active |
| sp | 25°C | — (removed) | — | — (removed) | Set-2: U1=U2=U3=0 | Removed |
Constraint Summary (Critical)
| Phase | What is Constrained | How | Purpose |
|---|---|---|---|
| Curing (vis/rub/glassy) | TOOL-1: U1=0, U2=0 | _PickedSet328, 1, 1 and _PickedSet327, 2, 2 | Fix mold in space; composite held by friction |
| Curing (vis/rub/glassy) | Composite | Mold contact (friction) | Composite can slide/expand against mold |
| Springback (sp) | TOOL-1 | Removed via *Model Change | Mold is gone |
| Springback (sp) | Composite: Set-2 | *Boundary, op=NEW → U1=U2=U3=0 | Prevent rigid body motion only |
Routing Guide
| User Request | Route To |
|---|---|
| Change ply angles | modeling/composite-layup |
| Change ply count | modeling/composite-layup + modeling/composite-mesh |
| Set up mold | modeling/mold-geometry |
| Define UMAT material | setup/curing-material |
| Set up contact/friction | setup/curing-contact |
| Define boundary conditions | setup/curing-bc |
| Apply pressure | setup/curing-load |
| Set temperature fields | setup/curing-temperature |
| Configure curing steps | analysis/curing-steps |
| Set up springback | analysis/springback-analysis |
| Submit job with UMAT | execution/curing-job |
| Connect to Abaqus | execution/socket-bridge |
| Extract ODB results | postprocessing/odb-extraction |
| Export CSV data | postprocessing/csv-export |
| Batch extract + screenshots | abaqus-odb-extraction (standalone skill) |
| Look up parameters | reference/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:
- INP generation: Read template, replace 8 ply lines (indices 14153-14160), format:
0.250, 3, COM, <angle>, Ply-N - Batch submission:
abq2020.bat job=NAME user=Threestep.for cpus=4 interactive - ODB extraction:
abq2020.bat python extract_via_cli.py(bypasses CAE filesystem isolation) - Spring-in calculation: SVD dual-arm plane fit on deformed coordinates
- Screenshots:
abq2020.bat cae noUI=screenshot.pywithLeafFromPartInstanceto hide mold
See the standalone abaqus-odb-extraction skill for complete automation scripts.
Common Pitfalls
- 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.
- Ply count vs ply angles: Changing ply angles is a text edit (replace ply lines); changing ply count requires mesh regeneration.
- Pressure surface: Pressure is on S2 (inner surface), NOT S1 (outer/contact surface).
- Tool node numbering: Tool and composite parts both start from node 1. Parse per-part.
- Set-2 node matching: When mesh changes, match nodes by coordinates, not node ID.
- Filesystem isolation: TRAE sandbox files are invisible to Abaqus CAE. Use
C:\Temporabq2020.batfor file operations. - Python 2 vs 3: Abaqus uses Python 2.7 — no f-strings, no
exist_ok,printis statement in some contexts. - MCP submit_job encoding bug:
TypeError: unicode argument expected, got 'str'— use command-lineabq2020.batinstead.
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