動的Smagorinskyモデル

カテゴリ: 流体解析(CFD) | 統合版 2026-04-06
CAE visualization for dynamic smagorinsky theory - technical simulation diagram
動的Smagorinskyモデル

理論と物理

概要

🧑‍🎓

先生、動的SmagorinskyモデルはSmagorinskyモデルのどこを改善したんですか?


🎓

Smagorinskyモデルの最大の問題は、モデル定数 $C_s$ が流れに依存するのに固定値を使う点だ。動的Smagorinskyモデル(Germano et al., 1991; Lilly, 1992)は、計算中に $C_s$ を局所的・動的に求める手法だ。Germano Identity と呼ばれる数学的恒等式を利用する。


Germano Identity

🧑‍🎓

Germano Identityって何ですか?


🎓

グリッドフィルタ $\bar{\phantom{u}}$(幅 $\Delta$)とテストフィルタ $\hat{\phantom{u}}$(幅 $\hat{\Delta} = 2\Delta$)の2段階フィルタリングに関する恒等式だ。


$$ L_{ij} = \widehat{\overline{u_i}\,\overline{u_j}} - \hat{\overline{u}}_i\hat{\overline{u}}_j $$

この $L_{ij}$(Leonard応力テンソル)は既知の解像スケールの量から直接計算できる。一方、SGS応力のモデル式との整合性条件から、


$$ L_{ij} - \frac{1}{3}\delta_{ij}L_{kk} = 2C_s^2 M_{ij} $$

$$ M_{ij} = \hat{\Delta}^2|\hat{\bar{S}}|\hat{\bar{S}}_{ij} - \widehat{\Delta^2|\bar{S}|\bar{S}_{ij}} $$

$C_s^2$ の動的計算

🧑‍🎓

$C_s^2$ はどう求めるんですか?


🎓

Lilly (1992) の最小二乗法を使う。


$$ C_s^2 = \frac{\langle L_{ij}M_{ij}\rangle}{\langle M_{ij}M_{ij}\rangle} $$

$\langle \cdot \rangle$ は空間方向(均質方向)やラグランジュ平均を表す。この平均化がないと $C_s^2$ が局所的に負値になったり激しく振動して計算が不安定になる。


🧑‍🎓

$C_s^2$ が負になるのは物理的にどういう意味ですか?


🎓

負の $C_s^2$ は逆散逸(backscatter)、つまりSGSスケールから解像スケールへのエネルギー逆輸送を意味する。物理的に起こりうる現象だが、数値的には不安定の原因になる。実装では $C_s^2$ の下限をゼロにクリップするか、ラグランジュ平均で負値を抑制する。


動的モデルの利点

🧑‍🎓

動的モデルの具体的な利点は何ですか?


🎓
利点説明
壁面で $C_s \to 0$Van Driest減衰なしで自動的に正しい壁面挙動
遷移流の再現層流域で $C_s \to 0$ となり、過剰な散逸を回避
異なるRe数への適応定数の事前チューニングが不要
バックスキャッタの部分的再現$C_s^2 < 0$ が物理的に許容される
Coffee Break よもやま話

Germanoの「流れ自身に定数を決めさせる」という発想の革新性

1991年にMassimo Germanoが提案した動的手続きの革命的な点は、「SGS定数を人間が決めなくていい」というところです。テストフィルタを使ってGermano恒等式を解き、流れ場から局所的に最適な $C_s$ を求める——この発想は「モデルのパラメータを実験でキャリブレーションする」という従来の考え方を根本から変えました。ただし最初の論文では定数が負になって計算が発散する問題があり、その翌年にLilly(1992)が最小二乗法による平均化で安定化させ、実用的な形になりました。

各項の物理的意味
  • 時間項 $\partial(\rho\phi)/\partial t$:蛇口をひねった瞬間を思い浮かべてください。最初は水がバタバタと不安定に出て、しばらくすると安定した流れになりますよね? この「変化している最中」を記述するのが時間項です。心臓の拍動で血流が脈打つのも、エンジンのバルブが開閉するたびに流れが変動するのも、すべて非定常現象。では定常解析とは? 「十分時間が経って流れが落ち着いた後」だけを見る——つまりこの項をゼロにする。計算コストが大幅に下がるため、まず定常で解いてみるのがCFDの基本戦略です。
  • 対流項 $\nabla \cdot (\rho \mathbf{u} \phi)$:川に落ち葉を落としたらどうなりますか? 流れに乗って下流に運ばれますよね。これが「対流」——流体の動きが物を運ぶ効果です。暖房の温風が部屋の端まで届くのも、空気という「運び屋」が熱を対流で輸送しているから。ここが面白いところ——この項は「速度×速度」を含むため非線形です。つまり、流れが速くなるとこの項が急激に強くなり、制御が難しくなる。これが乱流の根本原因です。よくある勘違い:「対流と伝導は同じようなもの」→ 全然違います! 対流は流れが運ぶ、伝導は分子が伝える。桁違いの効率差があります。
  • 拡散項 $\nabla \cdot (\Gamma \nabla \phi)$:コーヒーにミルクを入れて放置したことはありますか? かき混ぜなくても、しばらく経つと自然に混ざりますよね。あれが分子拡散です。では次の質問——ハチミツとお水、どちらが流しやすいですか? 当然お水ですよね。ハチミツは粘性($\mu$)が高いから流れにくい。粘性が大きいと拡散項が強くなり、流体は「もったりした」動きになります。レイノルズ数が小さい流れ(ゆっくり、ドロドロ)では拡散が支配的。逆にRe数が大きい流れでは対流が圧倒し、拡散は脇役になります。
  • 圧力項 $-\nabla p$:注射器のピストンを押すと、液体が針先から勢いよく出ますよね? なぜでしょう? ピストン側が高圧、針先が低圧——この圧力差が流体を押す力になるからです。ダムの放水も同じ原理。天気図で等圧線がギュッと密になっている場所では? そう、強風が吹きます。「圧力差があるところに流れが生まれる」——これがナビエ-ストークス方程式の圧力項の物理的意味。ここでの勘違いポイント:CFDの「圧力」は絶対圧ではなくゲージ圧のことが多い。圧縮性解析に切り替えたとたんに結果がおかしくなる場合、絶対圧/ゲージ圧の混同が原因かもしれません。
  • ソース項 $S_\phi$:暖められた空気が上に昇る——なぜでしょう? 周囲より軽く(密度が低く)なったから、浮力で押し上げられるのです。この浮力はソース項として方程式に追加されます。他にも、ガスコンロの炎で化学反応熱が発生する、工場の電磁ポンプで金属溶湯にローレンツ力がかかる…これらはすべて「外部から流体にエネルギーや力を注入する」作用であり、ソース項で表現します。ソース項を忘れるとどうなるか? 自然対流の解析で浮力を入れ忘れると、流体は一切動かない——冬の部屋で暖房をつけたのに暖かい空気が上に行かない、という物理的にありえない結果になります。
仮定条件と適用限界
  • 連続体仮定:クヌッセン数 Kn < 0.01(分子平均自由行程 ≪ 代表長さ)で成立
  • ニュートン流体仮定:せん断応力と歪み速度が線形関係(非ニュートン流体では粘度モデルが必要)
  • 非圧縮性仮定(Ma < 0.3の場合):密度を一定として扱う。マッハ数0.3以上では圧縮性効果を考慮
  • ブシネスク近似(自然対流):密度変化を浮力項のみで考慮し、他の項では一定密度を使用
  • 適用外ケース:希薄気体(Kn > 0.1)、超音速・極超音速流れ(衝撃波捕捉が必要)、自由表面流れ(VOF/Level Set等が必要)
次元解析と単位系
変数SI単位注意点・換算メモ
速度 $u$m/s入口条件で体積流量から換算する際、断面積の単位に注意
圧力 $p$Paゲージ圧と絶対圧の区別。圧縮性解析では絶対圧を使用
密度 $\rho$kg/m³空気: 約1.225 kg/m³@20°C、水: 約998 kg/m³@20°C
粘性係数 $\mu$Pa·s動粘性係数 $\nu = \mu/\rho$ [m²/s] との混同に注意
レイノルズ数 $Re$無次元$Re = \rho u L / \mu$。層流/乱流遷移の判定指標
CFL数無次元$CFL = u \Delta t / \Delta x$。時間刻みの安定性に直結

数値解法と実装

テストフィルタの実装

🧑‍🎓

テストフィルタは具体的にどう実装するんですか?


🎓

非構造格子では、セル中心値の隣接セル平均(体積加重)がテストフィルタとして使われることが多い。構造格子ではトップハットフィルタやガウシアンフィルタが使える。


フィルタタイプ実装方法精度
トップハット(ボックス)隣接セルの単純平均低い(非均一格子で問題)
体積加重平均$\hat{\phi}_P = \sum_f V_f \phi_f / \sum_f V_f$中程度
ガウシアン距離に応じたガウス重み高い(構造格子向き)

安定化手法

🧑‍🎓

$C_s^2$ が負になって不安定化する問題はどう対処するんですか?


🎓

主に3つのアプローチがある。


1. クリッピング: $C_s^2 < 0$ の場合にゼロにクリップ。最も単純だが物理的なbackscatterを失う

2. 空間平均: 均質方向(例: スパン方向)で $\langle L_{ij}M_{ij}\rangle$ を平均。チャネル流向き

3. ラグランジュ平均 (Meneveau et al. 1996): 流体粒子の経路に沿って時間平均。非均質流れに適用可能


🎓

ラグランジュ動的モデルは最も汎用的で、OpenFOAMでは dynLagrangian として実装されている。Fluentでも Dynamic Smagorinsky-Lilly モデルとして利用可能。


ソルバーでの設定

🧑‍🎓

各ソルバーでの設定方法を教えてください。


🎓
ソルバー設定方法
FluentViscous > LES > Dynamic Smagorinsky-Lilly
STAR-CCM+LES > Dynamic Smagorinsky SGS Model
OpenFOAMLESModel dynamicKEqn or dynSmagorinsky
🧑‍🎓

動的SmagorinskyはLES SGSモデルの中でも理論的に最もエレガントな手法で、定数のチューニングが不要な点が大きな強みですね。ただし実装の複雑さとコスト(テストフィルタの計算)がトレードオフだと。

Coffee Break よもやま話

テストフィルタ幅は「2倍」でいいのか問題

動的手続きのテストフィルタ幅 $\hat{\Delta}$ は慣習的に $\hat{\Delta} = 2\Delta$ が使われますが、なぜ2倍なのかはっきり問われると答えに詰まる人が多いです。理論的には「慣性域のスケール類似性が成立する範囲で最大の情報を得られる比率」ですが、実はかなり経験則的な選択。$\hat{\Delta} = 3\Delta$ や $4\Delta$ を試した研究もあり、格子依存性が出るケースも報告されています。「なんとなく2倍にした」ではなく、感度テストを実施することをお勧めします。

風上差分(Upwind)

1次風上: 数値拡散が大きいが安定。2次風上: 精度向上するが振動のリスク。高レイノルズ数流れでは必須。

中心差分(Central Differencing)

2次精度だが、Pe数 > 2で数値振動が発生。低レイノルズ数の拡散支配流れに適する。

TVDスキーム(MUSCL、QUICK等)

リミッタ関数により数値振動を抑制しつつ高精度を維持。衝撃波や急勾配の捕捉に有効。

有限体積法 vs 有限要素法

FVM: 保存則を自然に満足。CFDの主流。FEM: 複雑形状・マルチフィジックスに有利。SPH等のメッシュフリー法も発展中。

CFL条件(クーラン数)

陽解法: CFL ≤ 1が安定条件。陰解法: CFL > 1でも安定だが、精度と反復回数に影響。LES: CFL ≈ 1を推奨。物理的意味: 1タイムステップで情報が1セル以上進まないこと。

残差モニタリング

連続の式・運動量・エネルギーの各残差が3〜4桁低下で収束と判断。質量保存の残差は特に重要。

緩和係数

圧力: 0.2〜0.3、速度: 0.5〜0.7が一般的な初期値。発散する場合は緩和係数を下げる。収束後は上げて加速。

非定常計算の内部反復

各タイムステップ内で定常解に収束するまで反復。内部反復数: 5〜20回が目安。残差がタイムステップ間で変動する場合は時間刻みを見直す。

SIMPLE法のたとえ

SIMPLE法は「交互に調整する」手法。まず速度を仮に求め(予測ステップ)、その速度で質量保存が満たされるよう圧力を補正し(補正ステップ)、補正された圧力で速度を修正する——このキャッチボールを繰り返して正解に近づく。2人で棚を水平にする作業に似ている:片方が高さを合わせ、もう片方がバランスを取り、これを交互に繰り返す。

風上差分のたとえ

風上差分は「川の流れに立って上流の情報を重視する」手法。川の中にいる人が下流を見ても水の出所は分からない——上流の情報が下流を決めるという物理を反映した離散化手法。精度は1次だが、流れの方向を正しく捕捉するため安定性が高い。

実践ガイド

適用範囲

🧑‍🎓

動的Smagorinskyモデルはどういう場面で使うべきですか?


🎓
適している用途理由
遷移流(層流→乱流遷移を含む流れ)$C_s$ が層流域で自動的にゼロに
複雑形状の工業LESチューニング不要で汎用的
壁面近傍を解像するLESVan Driest減衰なしで壁面挙動が正しい
異なるRe数の系統的研究定数が自動調整
🧑‍🎓

標準Smagorinskyと比べてどのくらい計算コストが増えますか?


🎓

テストフィルタの計算とGermano Identityの評価で、SGSモデル部分のコストが2〜3倍になる。ただしLES全体のコスト(N-S方程式の求解)に対する割合は小さく、トータルでは10〜15%程度の増加だ。


メッシュ要件

🧑‍🎓

動的Smagorinskyモデルに特有のメッシュ要件はありますか?


🎓

基本的なLESのメッシュ要件に加えて、テストフィルタの品質に関する要件がある。


  • テストフィルタ幅 $\hat{\Delta} = 2\Delta$ が明確に定義できるメッシュ(急激なサイズ変化を避ける)
  • 壁面近傍: $y^+ < 1$、$\Delta x^+ < 50$(流れ方向)、$\Delta z^+ < 20$(スパン方向)
  • 非均一メッシュでは体積加重テストフィルタを使用

検証テストケース

🧑‍🎓

動的Smagorinskyモデルの検証に使えるケースは?


🎓
テストケース検証項目参照データ
完全発達チャネル流 ($Re_\tau = 395$)速度プロファイル、Reynolds応力Moser et al. (1999) DNS
平板上の遷移境界層遷移位置、$C_f$ 分布Sayadi et al. (2013) DNS
後向きステップ ($Re_H = 5100$)再付着長さLe et al. (1997) DNS
円柱周り ($Re_D = 3900$)$C_D$, $St$, 圧力分布Beaudan-Moin (1994)
Coffee Break よもやま話

「$C_s$ がマイナスになった!」——動的モデルあるあるの対処法

動的Smagorinskyを使い始めると必ず遭遇するのが $C_s^2 < 0$ 問題です。局所的にエネルギーが逆流する(バックスキャッタが生じる)物理的な状況を反映しているのですが、そのまま使うと負の渦粘性が計算を発散させます。実務的な対処は「クリッピング($C_s^2$ を0以上にカット)」か「スムージング(空間平均でならす)」の2択。完全に消すのは物理を歪めるジレンマがありますが、安定性を優先するなら前者が無難です。どちらを選ぶかで結果が変わる場合もあるので記録しておきましょう。

解析フローのたとえ

CFDの解析フローは「水族館の水槽を設計する」感覚で考えてみてください。まず水槽の形を決め(計算領域)、水の入り口と出口を設計し(境界条件)、ポンプの強さを設定する(流量条件)。魚がどう泳ぐか見たければ粒子追跡。水温が気になれば熱解析を追加。…どうですか? 意外と直感的ではありませんか?

初心者が陥りやすい落とし穴

「y+って何ですか?」——この質問が出たら要注意。壁面近くのメッシュ解像度を表すy+は、CFDの結果精度を左右する最重要パラメータの1つ。壁関数を使うなら30〜300、壁を完全に解像するなら1以下。これを確認せずに「摩擦抵抗が合わない!」と悩む人がとても多い。体温計の先端をちゃんと脇に挟まないで「熱がないのに37.5度って出た!」と慌てているようなものです。

境界条件の考え方

入口の境界条件は「蛇口をどのくらい開けるか」と同じ。ちょろちょろ出すか(低速)、全開にするか(高速)。でもCFDではもう一つ——「どのくらい暴れた水を出すか」(乱流強度)も指定する必要があります。蛇口の開け方を間違えると、下流のシンク全体の流れが変わりますよね? CFDでも入口条件のミスは下流全体に波及します。

ソフトウェア比較

ソルバー別の実装比較

🧑‍🎓

各ソルバーで動的Smagorinskyの実装に違いはありますか?


🎓
機能FluentSTAR-CCM+OpenFOAM
Dynamic Smagorinsky-Lilly対応対応対応 (dynamicKEqn)
ラグランジュ動的モデル----対応 (dynLagrangian)
テストフィルタの種類体積加重体積加重選択可能
$C_s^2$ のクリッピング自動自動設定可能
Backscatterモデル----コミュニティ実装
🧑‍🎓

Fluentで動的Smagorinskyを使うときの注意点は?


🎓

FluentのDynamic Smagorinsky-Lillyは平面平均(均質方向の平均)を前提にしている。均質方向がない複雑形状では、局所平均がデフォルトで使われるが、精度が劣る可能性がある。その場合はWALEモデルの方が安定して良い結果を与えることが多い。


SGSモデルの選択指針

🧑‍🎓

LESのSGSモデルを選ぶ基準を教えてください。


🎓
SGSモデル定数壁面挙動計算コスト推奨場面
Smagorinsky固定 $C_s = 0.1$〜$0.2$ダンピング必要低い完全発達乱流のベンチマーク
Dynamic Smagorinsky動的計算自動やや高い遷移流、複雑形状
WALE固定 $C_w = 0.325$自動低い産業LESの第一選択
$\sigma$ モデル固定 $C_\sigma = 1.35$自動低い純粋せん断流で優れる
🧑‍🎓

産業用途ではWALEが最も人気で、動的Smagorinskyは精度が求められる研究用途で強い、という棲み分けですね。

Coffee Break よもやま話

動的モデルの計算コストは「本当に高い」のか

「動的Smagorinskyは古典版より遅い」とよく言われますが、実際のオーバーヘッドはソルバーによって大きく異なります。OpenFOAMの実装では追加のフィルタ演算が全体の5〜15%程度というケースが多い一方、メッシュ構造が複雑だと平均化処理のためにデータ通信コストが増えて30%以上のオーバーヘッドになることも。FluentやStarCCM+は内部で最適化済みなのでほぼ透過的という報告もあります。「動的だから遅い」という先入観より、自分の環境でベンチマークする姿勢が大事です。

選定で最も重要な3つの問い

  • 「何を解くか」:動的Smagorinskyモデルに必要な物理モデル・要素タイプが対応しているか。例えば、流体ではLES対応の有無、構造では接触・大変形の対応能力が差になる。
  • 「誰が使うか」:初心者チームならGUIが充実したツール、経験者ならスクリプト駆動の柔軟なツールが適する。自動車のAT車(GUI)とMT車(スクリプト)の違いに似ている。
  • 「どこまで拡張するか」:将来の解析規模拡大(HPC対応)、他部門への展開、他ツールとの連携を見据えた選択が長期的なコスト削減につながる。

先端技術

動的混合モデル

🧑‍🎓

動的手法をさらに発展させた研究はありますか?


🎓

Zang et al. (1993) の動的混合モデル(Dynamic Mixed Model)は、Smagorinskyモデル(eddy viscosity型)にスケール類似モデル(scale-similarity型)を組み合わせ、両方の定数を動的に求める。SGS応力の再現性が向上する。


ラグランジュ動的モデルの発展

🧑‍🎓

ラグランジュ動的モデルの最新の研究動向は?


🎓

Meneveau et al. (1996) のオリジナルに対して、以下の改良が提案されている。


  • 計算効率の改善: テストフィルタの計算を隣接セルの限定的な範囲に制限
  • 非構造格子対応: Vasilyev et al. (1998) の離散フィルタ理論
  • 圧縮性流れ: Moin et al. (1991) のFavre平均版動的モデル

機械学習によるSGSモデル

🧑‍🎓

AIでSGSモデルを置き換える研究もあるんですか?


🎓

ある。DNSデータからニューラルネットワークでSGS応力テンソルを直接予測するアプローチだ。Gamahara-Hattori (2017)、Beck et al. (2019) らの研究では、動的Smagorinskyモデルよりも高精度なSGS応力予測を達成している。ただしa prioriテスト(SGS応力の瞬時値比較)では優れるが、a posterioriテスト(実際のLES計算での使用)では安定性の問題が残る。


🧑‍🎓

動的Smagorinskyモデルは30年以上の歴史がある成熟した手法で、今もLES SGSモデルの理論的基盤として重要な位置を占めているんですね。

Coffee Break よもやま話

動的モデルとバックスキャッタ——「負の粘性」を許すべきか

動的Smagorinskyの研究者が今も議論しているのが「負の渦粘性(バックスキャッタ)をどこまで許すか」という問題です。負値をそのまま使うと乱流エネルギーが逆流してより現実的ですが、計算は不安定になる。完全にクリッピングすると安定するが物理的な精度は落ちる。そのバランスを自動でとる「局所クリッピング+Lagrange平均化」手法(Meneveau 1996)が現在の実用的な最適解とされています。でも完全な解決ではなく、依然として研究課題のままです。

トラブルシューティング

よくある問題と対策

🧑‍🎓

動的Smagorinskyモデルで計算がうまくいかないとき、何を確認すればいいですか?


1. $C_s$ が激しく振動して不安定

🎓

原因: 均質方向の空間平均やラグランジュ平均が不十分


対策:

  • 均質方向がある場合(チャネル流のスパン方向等)はその方向で平均
  • 均質方向がない場合はラグランジュ動的モデルに切替え
  • $C_s^2$ の下限を0にクリップする安定化を有効化
  • テストフィルタの幅を大きくする($\hat{\Delta} = 3\Delta$ 等)

2. 壁面近傍で渦粘性が過大

🧑‍🎓

壁面近傍で$C_s$ がゼロにならないんですが。


🎓

原因: テストフィルタの実装が壁面近傍で正しく機能していない(壁面を跨ぐフィルタリング等)


対策:

  • テストフィルタが壁面を跨がないよう実装を確認
  • OpenFOAMでは壁面BCに対するテストフィルタの処理を確認
  • 代替としてWALEモデルに切替え(壁面挙動が保証される)

3. 遷移が再現されない

🎓

症状: 動的モデルなのに層流域で $C_s > 0$ のまま


対策:

  • メッシュ解像度が十分か確認(遷移を解像するにはDNS級の解像度が必要な場合がある)
  • 入口の乱流変動が適切か確認(過度な変動は強制遷移を引き起こす)

4. 計算コストが高い

🧑‍🎓

動的モデルのオーバーヘッドを減らす方法はありますか?


🎓
  • テストフィルタの計算頻度を下げる(毎ステップではなく数ステップごと)
  • ラグランジュ動的モデルの時間スケール $T$ を調整して平均の安定化と計算頻度のバランスを取る
  • WALEモデルに切替える(定数固定で動的計算不要、壁面挙動は同等)
  • Coffee Break よもやま話

    「Germano恒等式が合わない」——非構造格子での落とし穴

    動的Smagorinskyのトラブルで意外と多いのが、非構造格子(テトラや混合メッシュ)でのGermano恒等式の誤差増大です。理論的にはフィルタ操作とナビエ・ストークス方程式の交換可能性を仮定していますが、非均一格子ではこの交換誤差が無視できなくなります。特に格子サイズが急激に変わる領域(精細部と粗い部の境界付近)でSGS応力の評価が不安定になりやすい。そういう場所では局所クリッピングが頻発していないか確認するのがデバッグの第一歩です。

    「解析が合わない」と思ったら

    1. まず深呼吸——焦って設定をランダムに変えると、問題がさらに複雑になる
    2. 最小再現ケースを作る——動的Smagorinskyモデルの問題を最も単純な形で再現する。「引き算のデバッグ」が最も効率的
    3. 1つだけ変えて再実行——複数の変更を同時に行うと、何が効いたか分からなくなる。科学実験と同じ「対照実験」の原則
    4. 物理に立ち返る——計算結果が「重力に逆らって物が浮く」ような非物理的な結果なら、入力データの根本的な間違いを疑う
    関連シミュレーター

    この分野のインタラクティブシミュレーターで理論を体感しよう

    シミュレーター一覧

    関連する分野

    熱解析V&V・品質保証構造解析
    この記事の評価
    ご回答ありがとうございます!
    参考に
    なった
    もっと
    詳しく
    誤りを
    報告
    参考になった
    0
    もっと詳しく
    0
    誤りを報告
    0
    Written by NovaSolver Contributors
    Anonymous Engineers & AI — サイトマップ
    プロフィールを見る