Li-Mg Alloy Diffusion Simulator は、Li-rich Li-Mg 合金負極中の 1D 化学拡散を計算し、拡散律速による利用率低下を可視化する Web アプリケーションです。
本プロジェクトは、Krauskopf et al., Advanced Energy Materials 2019, DOI: 10.1002/aenm.201902568 の Li0.9Mg0.1 合金負極モデル、特に Figure 9 / Figure 10 の再現検討にインスパイアされた研究・教育用シミュレータです。論文そのものの公式実装ではありません。
- Li-Mg 合金負極内の濃度プロファイルを 1D 拡散モデルで計算する
- 膜厚、電流密度、拡散係数、温度などの入力条件を変更する
- Arrhenius 型の温度依存拡散係数を使ってシミュレーションする
- Krauskopf et al. 2019 Figure 9 風の電流密度別プロファイルを確認する
- Figure 10 風の温度・電流密度スイープで利用率の傾向を確認する
- Rust + WASM の数値コアを React UI から呼び出して計算する
恒久的な仕様の正本は docs/ です。README は使い始めるための入口として維持します。
開発シェルに入ってから依存関係をインストールします。
Nix shell は Node.js、pnpm、Rust toolchain、wasm32-unknown-unknown target、wasm-pack、任意の単体バイナリ配布用 Go を提供します。
Vite Plus (vp) は pnpm install で入る project dependency を使います。
nix develop
pnpm install
pnpm exec vp --help
pnpm wasm:build
pnpm devNix shell 内でビルドまで確認する場合:
nix develop --command bash -lc "pnpm install && pnpm exec vp --help && pnpm wasm:build && pnpm --filter web build"ローカルに以下を用意してください。
- Node.js 26 系(
.node-versionに固定) - pnpm 12.16.1
- Rust toolchain (
cargo,rustc,rustfmt,clippy) - wasm-pack
Vite Plus (vp) はプロジェクト依存として入るため、通常はグローバルインストール不要です。
pnpm install 後に pnpm dev / pnpm build からローカルの vp が呼ばれます。
macOS で Homebrew と rustup を使う例:
brew install node@26 wasm-pack
npm install -g pnpm@12.16.1
rustup toolchain install stable
rustup default stable
rustup component add rustfmt clippyNode.js と pnpm は、以下で利用可能か確認します。
node --version
pnpm --version
cargo --version
wasm-pack --version依存関係をインストールします。
pnpm installRust/WASM 数値コアをビルドします。
pnpm wasm:buildpnpm wasm:build は wasm-pack build --release を使います。
Rust release profile は WASM 配布サイズを優先し、opt-level = "z"、LTO、single codegen unit、panic = "abort"、strip を有効にしています。
wasm-opt は -Oz に加えて、Rust が生成する命令に合わせて --enable-bulk-memory と --enable-nontrapping-float-to-int を有効にしています。
Web アプリを起動します。
pnpm dev起動後、Vite が表示するローカル URL をブラウザで開いてください。
pnpm dev
pnpm build
pnpm fmt
pnpm lint
pnpm test
pnpm test:coverage
pnpm wasm:buildRust core を変更した場合は、以下も実行します。
cargo test --manifest-path packages/diffusion-core/Cargo.toml
cargo fmt --check --manifest-path packages/diffusion-core/Cargo.toml
cargo clippy --manifest-path packages/diffusion-core/Cargo.toml -- -D warnings本番ビルドした静的アセット(WASM 含む)を Go 実行ファイルへ埋め込み、ローカル HTTP で配信できます。計算自体はブラウザ内 WASM のままです。Go toolchain が必要です。
# Apple Silicon
pnpm binary:build:apple-silicon
./bin/li-mg-diffusion-simulator-apple-silicon
# Windows x86_64(macOS/Linux からのクロスコンパイル可)
pnpm binary:build:windows-x64同等の直接スクリプト:
./scripts/build-binary-apple-silicon.sh
./scripts/build-binary-windows-x64.shデフォルトは http://127.0.0.1:4173/ です。
./bin/li-mg-diffusion-simulator-apple-silicon --port 4183- Frontend: Vite React TypeScript
- Toolchain: Vite Plus 1.5.0 (
vp: dev/build/test/lint/format/typecheck) - Package manager: pnpm
- Optional development environment: Nix flakes
- Test runner: Vite Plus bundled Vitest
- Formatter: Vite Plus bundled Oxfmt
- Linter/type checker: Vite Plus bundled Oxlint / tsgolint
- Calculation core: Rust + wasm-bindgen + WASM
- Optional local packaging: Go
embedstatic file server
apps/web/ React UI + optional Go static server
packages/shared/ TypeScript domain types, units, validation
packages/diffusion-core/ Rust solver + WASM package
scripts/ Binary packaging scripts
bin/ Packaged executables (gitignored)
tests/ Integration and acceptance tests
docs/ SSOT specifications
.steering/ Iteration records
コミット前の基本品質ゲートは以下です。
pnpm fmt
pnpm lint
pnpm test
pnpm test:coverageまとめて確認する場合は以下を使えます。
pnpm checkMIT assb-lab 2026. See LICENSE.