Skip to content

About

Web-based 1D diffusion simulator for Li-rich Li-Mg alloy anodes, modeling concentration profiles, diffusion-limited utilization, and temperature-dependent kinetics with Rust/WASM.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Li-Mg Alloy Diffusion Simulator

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 の再現検討にインスパイアされた研究・教育用シミュレータです。論文そのものの公式実装ではありません。

シミュレータを開く(GitHub Pages)

何ができるか

  • Li-Mg 合金負極内の濃度プロファイルを 1D 拡散モデルで計算する
  • 膜厚、電流密度、拡散係数、温度などの入力条件を変更する
  • Arrhenius 型の温度依存拡散係数を使ってシミュレーションする
  • Krauskopf et al. 2019 Figure 9 風の電流密度別プロファイルを確認する
  • Figure 10 風の温度・電流密度スイープで利用率の傾向を確認する
  • Rust + WASM の数値コアを React UI から呼び出して計算する

恒久的な仕様の正本は docs/ です。README は使い始めるための入口として維持します。

使い方

Nix flakes を使う場合

開発シェルに入ってから依存関係をインストールします。 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 dev

Nix shell 内でビルドまで確認する場合:

nix develop --command bash -lc "pnpm install && pnpm exec vp --help && pnpm wasm:build && pnpm --filter web build"

Nix を使わない場合

ローカルに以下を用意してください。

  • 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 clippy

Node.js と pnpm は、以下で利用可能か確認します。

node --version
pnpm --version
cargo --version
wasm-pack --version

依存関係をインストールします。

pnpm install

Rust/WASM 数値コアをビルドします。

pnpm wasm:build

pnpm 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:build

Rust 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 embed static 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 check

License

MIT assb-lab 2026. See LICENSE.

About

Web-based 1D diffusion simulator for Li-rich Li-Mg alloy anodes, modeling concentration profiles, diffusion-limited utilization, and temperature-dependent kinetics with Rust/WASM.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages