skills/jax-modal-analysis/SKILL.md
3D tetrahedral FEM modal analysis of a membrane STL. Takes a binary STL (mm units) + material properties JSON, repairs surface mesh, generates tetrahedral volume mesh via TetGen, assembles 3D stiffness/mass matrices with jax-fem, solves the generalised eigenvalue problem, and reports eigenfrequencies + mode shapes. Returns artifact JSON with eigenfrequencies_hz, eigenfrequencies_khz, modes_in_range, target_range_pass, and paths to summary PNG and CSV.
npx skillsauth add lamm-mit/scienceclaw jax-modal-analysisInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Full 3D tetrahedral FEM eigenvalue solver for ribbed membrane resonators.
Complements fem-analysis (2D Kirchhoff plate approximation) by accounting for
3D volumetric effects, frame stiffness, and out-of-plane deformation.
python3 {baseDir}/scripts/jax_modal_analysis.py \
--stl /path/to/membrane.stl \
--material '{"E_Pa":3e9,"nu":0.35,"rho_kg_m3":1500}' \
--num-modes 12 \
--solver-backend jax-iterative \
--stl-length-scale 1e-3 \
--target-freq-min 2000 \
--target-freq-max 8000 \
--output-dir /tmp/jax_modal_results
| Flag | Type | Default | Description |
|------|------|---------|-------------|
| --stl | path | required | Binary STL file (mm units assumed) |
| --material | JSON str | required | {"E_Pa":3e9,"nu":0.35,"rho_kg_m3":1500} |
| --num-modes | int | 12 | Number of modes to compute |
| --solver-backend | str | jax-iterative | arpack, jax-iterative, or jax-xla |
| --stl-length-scale | float | 1e-3 | Scale factor to convert STL units → metres |
| --target-freq-min | float | 2000 | Lower bound of target frequency band (Hz) |
| --target-freq-max | float | 8000 | Upper bound of target frequency band (Hz) |
| --output-dir | path | auto | Directory for all output files |
{
"stl_path": "/path/to/membrane.stl",
"topology": "v1_cricket_fine",
"num_modes_computed": 12,
"eigenfrequencies_hz": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2153.0, 2388.1, ...],
"eigenfrequencies_khz": [0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 2.153, 2.388, ...],
"modes_in_range_hz": [2153.0, 2388.1, 5401.2, 6890.3],
"modes_in_range_khz": [2.153, 2.388, 5.401, 6.890],
"target_range_hz": [2000, 8000],
"target_range_khz": [2.0, 8.0],
"target_range_pass": true,
"solver_backend": "arpack",
"output_dir": "/tmp/jax_modal_results/v1_cricket_fine_...",
"summary_png": "/tmp/.../summary_figures/modal_run_summary.png",
"csv_path": "/tmp/.../modal_comprehensive_report.csv",
"mesh_vtu": "/tmp/.../mesh/volume_mesh.vtu"
}
fem-analysis and jax-modal-analysis are complementary, not alternatives:
| Skill | Model | Speed | Best for |
|-------|-------|-------|----------|
| fem-analysis | 2D Kirchhoff plate | ~1 s | Fast screening, flat membranes |
| jax-modal-analysis | 3D tetrahedral FEM | 30–120 s | Full 3D validation, ribbed/curved geometries |
Recommended workflow:
fem-analysis to shortlist candidates (fast 2D pass/fail)jax-modal-analysis on shortlisted STLs for full 3D validationtools
Onboard and manage Paperclip AI for research-paper knowledge and agent orchestration
development
Perform AI-powered web searches with real-time information using Perplexity models via LiteLLM and OpenRouter. This skill should be used when conducting web searches for current information, finding recent scientific literature, getting grounded answers with source citations, or accessing information beyond the model knowledge cutoff. Provides access to multiple Perplexity models including Sonar Pro, Sonar Pro Search (advanced agentic search), and Sonar Reasoning Pro through a single OpenRouter API key.
testing
Generate a structured scientific PDF report from a JSON description. Accepts a JSON file specifying title, authors, abstract, sections (headings, text, tables, figures), and inline data panels (heatmap, bar, scatter, line). Produces a publication-style A4 PDF using reportlab with no LaTeX dependency. All figures are either loaded from PNG paths or generated on-the-fly from inline data.
development
Execute arbitrary Python code and return stdout. NumPy, pandas, scipy, matplotlib, and other scientific libraries are available.