Install
$ agentstack add skill-haibarakiku-abaqus-ml-skills-abaqus-odb-to-grid-csv Open-source listing — not yet scanned by AgentStack. Follow the source repository for install instructions.
Security review
⚠ Flagged1 finding(s); flagged for manual review. · v0.1.0 How review works →
- • Prompt-injection patterns
- • Secret / credential exfiltration
- • Dangerous shell & filesystem operations
- • Untrusted network calls
- • Known-malicious package signatures
- high Dangerous shell/eval execution.
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ● Shell / process execution Used
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Abaqus ODB → ML-Ready Grid CSV
The post-processing half of a surrogate-model pipeline. Takes a folder of completed Abaqus FEA cases (typically produced by the abaqus-lhs-batch-dataset skill) and produces two flat CSVs ready for numpy.loadtxt / pandas.read_csv / scikit-learn:
X_amplitude.csv—sample_id, amplitude_0000, amplitude_0001, ..., amplitude_(D-1)— the input design vectorsY_grid_uz.csv—sample_id, uz_0000, uz_0001, ..., uz_(N²-1)— the resulting deformation field flattened from N×N grid (row-major)
These are the two matrices a surrogate model trains on: shape (N_samples, D) and (N_samples, N²).
When to Use This Skill
Activate when the user wants to:
- Convert a directory of
sample_*/Membrane2D1.odb(ornode_displacement.csv) cases into ML-ready training matrices - Resample a fine FEA mesh (e.g. 81×81) onto a coarser learning grid (e.g. 41×41 or 21×21)
- Aggregate multiple dataset runs and deduplicate by input vector
- Inspect / validate a dataset before training
Do NOT use this skill for:
- Single-case ODB inspection (use
abaqus-odbinstead) - Time-series outputs where you need every frame (this skill takes the final frame by default)
- Stress / strain field extraction (this skill is targeted at displacement; extending to other fields is straightforward, see below)
The Two Mesh-to-Grid Paths
Path A — Structured FEA mesh (preferred, fast)
The FEA mesh is a regular grid (e.g. 81×81 nodes for a square membrane), and you want to either keep it or downsample to a smaller learning grid. This is the case for membrane / plate problems where you set the mesh seed to give exact node spacing.
Steps:
- Detect mesh size:
unique(x0)andunique(y0)fromnode_displacement.csvgiveMESH_N - Use rounded
(x0, y0)as a hash key → directly bin each node into a(MESH_N, MESH_N)array - If
target_N != MESH_N: bilinear resample to(target_N, target_N)using precomputed weights (10-100× faster thanscipy.interpolate) - Flatten row-major to length
target_N²
Latency: ~50 ms / case. 1000 cases = ~1 minute.
Path B — Unstructured FEA mesh (fallback)
The FEA mesh is unstructured (tet / triangular / mixed). Need scattered interpolation.
Steps:
- Stack
(x0, y0, uz)from final frame - Build a regular target grid:
linspace(x_min, x_max, N)×linspace(y_min, y_max, N) scipy.interpolate.griddata((x0, y0), uz, (xq, yq), method="linear")- Fill NaNs (outside-hull points) with 0 or nearest-neighbor value
- Flatten row-major
Latency: ~1-3 s / case. 1000 cases = ~30 minutes. Requires scipy.
Required Inputs
The user must provide:
- Dataset root — A folder produced by a batch FEA run, with subfolders
sample_*/each containing:
node_displacement.csv— produced by the Abaqus solver script. Schema:frame_id, time, node_id, x0, y0, z0, ux, uy, uz, x_def, y_def, z_definput_vector.csv(orForceAmplitude.dat) — the design vector for that casedataset_index.csv(at the dataset root) — the per-case status log; onlystatus == "completed"cases are processed
- Target grid size
N— typically 21, 41, or 81 nodes per side. IfNmatches the FEA mesh, no resampling is done.
- Frame selection — by default, the last frame (final deformed state). For dynamic problems, the user may want a specific time or all frames.
Workflow Steps
Step 1 — Scan and validate
dataset_root = Path(...)
index = pd.read_csv(dataset_root / "dataset_index.csv")
completed = index[index["status"] == "completed"]
Reject the run if .csv per frame
- Multi-target stacking: concatenate
[Y_grid_ux, Y_grid_uy, Y_grid_uz]column-wise → 3N² output dim
Quick Sanity Checks
After producing X_amplitude.csv and Y_grid_uz.csv:
- Shape match:
len(X) == len(Y)and both index by the samesample_id - Y range:
Y.abs().max()between sane bounds (notinf, not0) - Linear fit baseline: train a Ridge with
alpha=1.0and checkR²on a 80/20 split. Should be > 0.9 for well-behaved problems. R² < 0.5 implies the design space is too noisy or the FEA setup is suspect — surface this to the user. - Dedup ratio: if
n_dedup / n_total < 0.7, the design space sampler is producing too many duplicates — narrow the precision threshold or use a different sampler.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Haibarakiku
- Source: Haibarakiku/abaqus-ml-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.