Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

fluidsim

Pythonを使った数値流体力学シミュレーションのフレームワーク。Navier-Stokes方程式(2D/3D)、浅水方程式、成層流などの流体シミュレーションの実行や、乱流・渦動力学・地球物理流体の解析を行う際に使用します。FFTを用いた擬スペクトル法、HPC対応、充実した出力解析機能を提供します。

description の原文を見る

Framework for computational fluid dynamics simulations using Python. Use when running fluid dynamics simulations including Navier-Stokes equations (2D/3D), shallow water equations, stratified flows, or when analyzing turbulence, vortex dynamics, or geophysical flows. Provides pseudospectral methods with FFT, HPC support, and comprehensive output analysis.

SKILL.md 本文

FluidSim

概要

FluidSimは、高性能な計算流体力学(CFD)シミュレーション向けのオブジェクト指向Pythonフレームワークです。FFTを用いた疑似スペクトル法で周期領域方程式のソルバーを提供し、Fortran/C++に匹敵するパフォーマンスとPythonの使いやすさを両立しています。

主な強み:

  • 複数のソルバー: 2D/3D Navier-Stokes、浅水方程式、成層流
  • 高パフォーマンス: Pythran/Transonic コンパイル、MPI並列化
  • 完全なワークフロー: パラメータ設定、シミュレーション実行、出力解析
  • インタラクティブな解析: Pythonベースの後処理と可視化

コア機能

1. インストールとセットアップ

uvを使用して、適切な機能フラグでfluidsimをインストールします:

# 基本インストール
uv uv pip install fluidsim

# FFTサポート付き(ほとんどのソルバーに必須)
uv uv pip install "fluidsim[fft]"

# 並列計算用MPI付き
uv uv pip install "fluidsim[fft,mpi]"

出力ディレクトリ用の環境変数を設定します(オプション):

export FLUIDSIM_PATH=/path/to/simulation/outputs
export FLUIDDYN_PATH_SCRATCH=/path/to/working/directory

APIキーや認証は不要です。

完全なインストール手順と環境設定については references/installation.md を参照してください。

2. シミュレーションの実行

標準的なワークフローは5ステップで構成されます:

ステップ1: ソルバーをインポート

from fluidsim.solvers.ns2d.solver import Simul

ステップ2: パラメータを作成・設定

params = Simul.create_default_params()
params.oper.nx = params.oper.ny = 256
params.oper.Lx = params.oper.Ly = 2 * 3.14159
params.nu_2 = 1e-3
params.time_stepping.t_end = 10.0
params.init_fields.type = "noise"

ステップ3: シミュレーションをインスタンス化

sim = Simul(params)

ステップ4: 実行

sim.time_stepping.start()

ステップ5: 結果を解析

sim.output.phys_fields.plot("vorticity")
sim.output.spatial_means.plot()

完全な例、シミュレーションの再開、クラスタデプロイメントについては references/simulation_workflow.md を参照してください。

3. 利用可能なソルバー

物理的な問題に応じてソルバーを選択します:

2D Navier-Stokes (ns2d): 2D乱流、渦動力学

from fluidsim.solvers.ns2d.solver import Simul

3D Navier-Stokes (ns3d): 3D乱流、現実的な流れ

from fluidsim.solvers.ns3d.solver import Simul

成層流 (ns2d.strat, ns3d.strat): 海洋・大気流

from fluidsim.solvers.ns2d.strat.solver import Simul
params.N = 1.0  # Brunt-Väisälä周波数

浅水方程式 (sw1l): 地球物理的流れ、回転系

from fluidsim.solvers.sw1l.solver import Simul
params.f = 1.0  # Coriolis パラメータ

完全なソルバーリストと選択ガイダンスについては references/solvers.md を参照してください。

4. パラメータ設定

パラメータは階層的に構成され、ドット表記でアクセスします:

領域と解像度:

params.oper.nx = 256  # グリッドポイント
params.oper.Lx = 2 * pi  # 領域サイズ

物理パラメータ:

params.nu_2 = 1e-3  # 粘度
params.nu_4 = 0     # ハイパー粘度(オプション)

時間ステッピング:

params.time_stepping.t_end = 10.0
params.time_stepping.USE_CFL = True  # 適応的なタイムステップ
params.time_stepping.CFL = 0.5

初期条件:

params.init_fields.type = "noise"  # または "dipole", "vortex", "from_file", "in_script"

出力設定:

params.output.periods_save.phys_fields = 1.0  # 1.0時間単位ごとに保存
params.output.periods_save.spectra = 0.5
params.output.periods_save.spatial_means = 0.1

Parametersオブジェクトはタイプミスに対して AttributeError を発生させ、サイレント設定エラーを防ぎます。

包括的なパラメータドキュメントについては references/parameters.md を参照してください。

5. 出力と解析

FluidSimは複数の出力タイプを自動生成し、シミュレーション中に保存します:

物理場: HDF5形式の速度、渦度

sim.output.phys_fields.plot("vorticity")
sim.output.phys_fields.plot("vx")

空間平均: 体積平均量の時系列

sim.output.spatial_means.plot()

スペクトラ: エネルギーとエンストロフィスペクトラ

sim.output.spectra.plot1d()
sim.output.spectra.plot2d()

前回のシミュレーションを読み込む:

from fluidsim import load_sim_for_plot
sim = load_sim_for_plot("simulation_dir")
sim.output.phys_fields.plot()

高度な可視化: .h5ファイルをParaViewやVisItで開いて3D可視化します。

詳細な解析ワークフロー、パラメトリック研究解析、データエクスポートについては references/output_analysis.md を参照してください。

6. 高度な機能

カスタム外力: 乱流を維持または特定の動力学を駆動

params.forcing.enable = True
params.forcing.type = "tcrandom"  # 時間相関のある乱数外力
params.forcing.forcing_rate = 1.0

カスタム初期条件: スクリプト内で場を定義

params.init_fields.type = "in_script"
sim = Simul(params)
X, Y = sim.oper.get_XY_loc()
vx = sim.state.state_phys.get_var("vx")
vx[:] = sin(X) * cos(Y)
sim.time_stepping.start()

MPI並列化: 複数のプロセッサで実行

mpirun -np 8 python simulation_script.py

パラメトリック研究: 異なるパラメータで複数のシミュレーションを実行

for nu in [1e-3, 5e-4, 1e-4]:
    params = Simul.create_default_params()
    params.nu_2 = nu
    params.output.sub_directory = f"nu{nu}"
    sim = Simul(params)
    sim.time_stepping.start()

外力タイプ、カスタムソルバー、クラスタ投入、パフォーマンス最適化については references/advanced_features.md を参照してください。

一般的なユースケース

2D乱流研究

from fluidsim.solvers.ns2d.solver import Simul
from math import pi

params = Simul.create_default_params()
params.oper.nx = params.oper.ny = 512
params.oper.Lx = params.oper.Ly = 2 * pi
params.nu_2 = 1e-4
params.time_stepping.t_end = 50.0
params.time_stepping.USE_CFL = True
params.init_fields.type = "noise"
params.output.periods_save.phys_fields = 5.0
params.output.periods_save.spectra = 1.0

sim = Simul(params)
sim.time_stepping.start()

# エネルギーカスケードを解析
sim.output.spectra.plot1d(tmin=30.0, tmax=50.0)

成層流シミュレーション

from fluidsim.solvers.ns2d.strat.solver import Simul

params = Simul.create_default_params()
params.oper.nx = params.oper.ny = 256
params.N = 2.0  # 成層化強度
params.nu_2 = 5e-4
params.time_stepping.t_end = 20.0

# 密度層で初期化
params.init_fields.type = "in_script"
sim = Simul(params)
X, Y = sim.oper.get_XY_loc()
b = sim.state.state_phys.get_var("b")
b[:] = exp(-((X - 3.14)**2 + (Y - 3.14)**2) / 0.5)
sim.state.statephys_from_statespect()

sim.time_stepping.start()
sim.output.phys_fields.plot("b")

MPI対応高解像度3Dシミュレーション

from fluidsim.solvers.ns3d.solver import Simul

params = Simul.create_default_params()
params.oper.nx = params.oper.ny = params.oper.nz = 512
params.nu_2 = 1e-5
params.time_stepping.t_end = 10.0
params.init_fields.type = "noise"

sim = Simul(params)
sim.time_stepping.start()

以下で実行します:

mpirun -np 64 python script.py

Taylor-Green 渦の検証

from fluidsim.solvers.ns2d.solver import Simul
import numpy as np
from math import pi

params = Simul.create_default_params()
params.oper.nx = params.oper.ny = 128
params.oper.Lx = params.oper.Ly = 2 * pi
params.nu_2 = 1e-3
params.time_stepping.t_end = 10.0
params.init_fields.type = "in_script"

sim = Simul(params)
X, Y = sim.oper.get_XY_loc()
vx = sim.state.state_phys.get_var("vx")
vy = sim.state.state_phys.get_var("vy")
vx[:] = np.sin(X) * np.cos(Y)
vy[:] = -np.cos(X) * np.sin(Y)
sim.state.statephys_from_statespect()

sim.time_stepping.start()

# エネルギー減衰を検証
df = sim.output.spatial_means.load()
# 解析解と比較

クイックリファレンス

ソルバーをインポート: from fluidsim.solvers.ns2d.solver import Simul

パラメータを作成: params = Simul.create_default_params()

解像度を設定: params.oper.nx = params.oper.ny = 256

粘度を設定: params.nu_2 = 1e-3

終了時刻を設定: params.time_stepping.t_end = 10.0

シミュレーションを実行: sim = Simul(params); sim.time_stepping.start()

結果をプロット: sim.output.phys_fields.plot("vorticity")

シミュレーションを読み込む: sim = load_sim_for_plot("path/to/sim")

リソース

ドキュメント: https://fluidsim.readthedocs.io/

リファレンスファイル:

  • references/installation.md: 完全なインストール手順
  • references/solvers.md: 利用可能なソルバーと選択ガイド
  • references/simulation_workflow.md: 詳細なワークフロー例
  • references/parameters.md: 包括的なパラメータドキュメント
  • references/output_analysis.md: 出力タイプと解析方法
  • references/advanced_features.md: 外力、MPI、パラメトリック研究、カスタムソルバー

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
davila7
リポジトリ
davila7/claude-code-templates
ライセンス
MIT
最終更新
不明

Source: https://github.com/davila7/claude-code-templates / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: davila7 · davila7/claude-code-templates · ライセンス: MIT