説明

シミュレーション方法、シミュレーション装置及びシミュレーションプログラム

【課題】波高が減衰しない現実に近い解析が行え、水理実験の実施回数を減らすことができるシミュレーション方法を提供する。
【解決手段】所定のカーネル関数により離散化された加速度運動方程式用いて、各粒子の加速度と各粒子が境界面から受ける反発力とを求め、さらに時間積分を行い単位時間経過後の速度を算出し、所定のカーネル関数を用いて密度の時間変化を表す離散化した連続方程式を用いて密度変動を算出し、算出した密度変動に対して単位時間経過後の速度を用いて時間による積分を行い、単位時間経過後の密度を算出し、所定回数毎に密度を平滑化し、単位時間経過後の密度に状態方程式を用いて単位時間経過後の圧力を算出し、単位時間経過後の位置を算出し、速度の算出、密度の算出、圧力の算出及び位置の算出を、初期状態から所定時間が経過するまで繰返し、各単位時間経過後における速度、密度、圧力及び位置の情報を取得する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シミュレーション方法、シミュレーション装置及びシミュレーションプログラムに関する。
【背景技術】
【0002】
従来、数値計算を用いて水や空気といった流体の流れを調べる連続体の運動の解析、すなわち、流体解析において、粒子法と呼ばれる技術が提案されている。具体的には、粒子法とは、連続体の運動を有限の数の粒子の運動として解析する手法である。現在提案されている代表的な粒子法としては、SPH(Smoothed Particles Hydrodynamics)法やMPS(Moving Particles Semi-implicit)法といったものがある。以下では、水や空気といった流体を「連続体」と呼ぶ場合がある。
【0003】
粒子法における標準的な手法としては、着目したある粒子に対して予め領域(以下では、「影響領域」と呼ぶ。)を設定しておき、その影響領域の内に存在する相手粒子のみからの相互作用を計算することで着目したその粒子に加えられる力を求める方法が従来知られている。
【0004】
特に、SPH法を用いて連続体を表現する際の特徴は、複数の粒子の物理量をカーネル関数と呼ぶ重み関数を用いて平滑化処理による近似を行い、基礎方程式を離散化することにある。この平滑化処理によって、メッシュ点上で物理量を評価するといった煩雑なメッシュ操作の計算処理が無くなるため、SPH法は、自由表面における流れを解析する自由表面問題や異なる支配方程式で表される複数の物理現象を解析するマルチフィジックス問題を扱うのに適しているといえる。
【0005】
このため、SPH法は、例えば、海波が護岸に衝突・越波するときの流量や衝撃圧を推定するための手法として適していると考えられている。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】J.J.Monaghan 著 「Smoothed Particle Hydrodynamics」Annu. Rec. Astron. Astrophys., Vol.30, pp.543-574
【非特許文献2】鈴木幸人、越塚誠一、岡芳明 著 「HMPS(Hamiltonian Moving Particle Semi-implicit)法の開発(第2報,シンプレクティックスキームの適用)」 Trans. JSCES, Paper No.20050017(2005)
【非特許文献3】Paul W. Cleary 著 「Modelling confined multi-material heat and mass flows using SPH」 Appl. Math. Modelling, Vol.22,pp.981-993,1998
【非特許文献4】M.G.Gesteira, B.D.Rogers, R.A.Dalrymplem, A.J.C.Crespo, M.Narayanaswamy 著 「User Guide for the SPHysics Code, September 2010」 pp.9-15
【非特許文献5】Fang,J., Parriaux,A., Rentschler,M., Ancey,C. 著 「Improved SPH methods for simulating free surface flows of viscous fluids」 Applied Numerical Mathematics, Vol.59,pp.251-271,2009
【非特許文献6】Morris,J., Fox,P.J., Zhu,Y. 著 「Modeling Low Reynolds number incompressible flows using SPH」 J.comp. Phys., Vol.136,pp.214-226,1997
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、従来の粒子法を用いたシミュレーションの場合、表面波の伝播を長時間扱うと、表面波が減衰してしまうという問題点がある。これについては、実際に標準的なSPH法で波の伝播解析を行ったところ、一定の時間を過ぎると波高の大きな減衰や発散が生じてしまい、造波試験を実施できないことが分かった。このように、従来の粒子法を用いたシミュレーションでは、現実との乖離が大きくなってしまうため、現実の水槽内に設置した造波板により造波を行う水理実験を減らすことができなかった。
【0008】
開示の技術は、上記に鑑みてなされたものであって、波高が減衰しない現実に近い解析を行うことができ、水理実験の実施回数を減らすことができるシミュレーション方法、シミュレーション装置及びシミュレーションプログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
本願の開示するシミュレーション方法、シミュレーション装置及びシミュレーションプログラムは、一つの態様において、連続体を粒子の集合として表現する場合の各粒子の状態を解析するシミュレーション方法において、入力した前記各粒子の初期状態の速度、密度、圧力及び位置の初期値に基づき、一つの粒子が他の粒子に影響を及ぼす寄与の大きさを表すカーネル関数により離散化された加速度運動方程式を用いて、各粒子の加速度と各粒子が境界面から受ける反発力とを算出し、前記算出した各粒子の加速度と各粒子が境界面から受ける反発力とを基に、現在の各粒子の速度に対する時間積分を行い、単位時間経過後の各粒子の速度を算出し、前記カーネル関数を用いて連続体の密度の時間変化を表す離散化した連続方程式を用いて各粒子の密度変動を算出し、前記算出した各粒子の密度変動に対して、前記単位時間経過後の各粒子の速度を用いて時間による積分を行うことで、前記単位時間経過後の各粒子の密度を算出し、前記各粒子の密度を算出する所定回数毎に、前記単位時間経過後の各粒子の密度に対して平滑化を行い、前記単位時間経過後の各粒子の密度を基に、状態方程式を用いて前記単位時間経過後の各粒子の圧力を算出し、前記単位時間経過後の各粒子の速度を基に時間による積分を行い、前記単位時間経過後の各粒子の位置を算出し、前記速度の算出、前記密度の算出、前記圧力の算出及び前記位置の算出を、前記粒子の全てについて前記初期状態から所定時間が経過するまで繰返し、各単位時間経過後における速度、密度、圧力及び位置を取得する。
【発明の効果】
【0010】
本願の開示するシミュレーション方法、シミュレーション装置及びシミュレーションプログラムの一つの態様によれば、波高が減衰しない現実に近い解析を行うことができ、水理実験の実施回数を減らすことができるという効果を奏する。
【図面の簡単な説明】
【0011】
【図1】図1は、実施例に係るシミュレーション装置のブロック図である。
【図2】図2は、影響範囲及び近傍粒子について説明するための図である。
【図3】図3は、実施例で用いた境界からの反発力を説明するための図である。
【図4】図4は、実施例に係るシミュレーションの処理のフローチャートである。
【図5】図5は、水理実験に用いた造波水槽の概念図である。
【図6】図6は、波高計302における波高の解析結果と水理実験との比較を表す図である。
【図7】図7は、波高計303における波高の解析結果と水理実験との比較を表す図である。
【図8】図8は、波高計304における波高の解析結果と水理実験との比較を表す図である。
【図9】図9は、波高計305における波高の解析結果と水理実験との比較を表す図である。
【図10】図10は、波高計306における波高の解析結果と水理実験との比較を表す図である。
【図11】図11は、実施例に係るシミュレーション方法におけるカーネル関数、運動方程式又は時間積分スキームを変化させた場合の波高を表す図である。
【図12】図12は、従来手法におけるカーネル関数、運動方程式又は時間積分スキームを変化させた場合の波高を表す図である。
【図13】図13は、垂直護岸を設置した実験条件を示す図である。
【図14】図14は、外洋条件を用いた場合の波高履歴を示す図である。
【図15】図15は、瀬戸内条件を用いた場合の波高履歴を示す図である。
【図16】図16は、シミュレーションプログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【0012】
以下に、本願の開示するシミュレーション方法、シミュレーション装置及びシミュレーションプログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するシミュレーション方法、シミュレーション装置及びシミュレーションプログラムが限定されるものではない。
【実施例】
【0013】
図1は、実施例に係るシミュレーション装置のブロック図である。図1に示すように、本実施例に係るシミュレーション装置は、ユーザインタフェース1、制御部2、結果記憶部3、速度算出部4、密度算出部5、圧力算出部6、位置算出部7及び平滑化部8を有している。ユーザインタフェース1は、シミュレーション装置を使用するユーザからの数値の入力、ユーザへのシミュレーション結果の出力を行なうインタフェース装置であり、具体的にはキーボード等の入力装置及び表示装置等の出力装置である。
【0014】
制御部2は、初期状態における各粒子の質量、速度、密度、圧力及び位置、すなわち各粒子の質力、並びに、速度、密度、圧力及び位置の初期値の入力をユーザインタフェース1から受ける。そして、制御部2は、受信した各粒子の質量、速度、密度、圧力及び位置の初期値を速度算出部4へ出力する。また、制御部2は、受信した各粒子の質量及び密度の初期値を密度算出部5へ出力する。また、制御部2は、受信した各粒子の圧力の初期値を圧力算出部6へ出力する。また、制御部2は、受信した各粒子の質量を平滑化部8へ出力する。さらに、制御部2は、受信した各粒子の位置の初期値を位置算出部7へ出力する。
【0015】
また、制御部2は、シミュレーションの終了のタイミングの指定をユーザインタフェース1から受ける。本実施例では、シミュレーションの終了のタイミングの指定は、ステップ単位で行うものとし、ここではシミュレーションがLステップ後に終了するよう指定されたものとする。ここで、ステップについて説明する。1ステップとは、本実施例ではΔt時間経過した後の状態をいう。すなわち、n(1≦n≦L)ステップ後とは、nΔt時間経過した後のことを指す。以下では、初期状態を1ステップ目とし、nステップ後のステップのことを「ステップn」と言う。すなわち、初期状態は1回目のステップといえる。以下では、既に各物理量の算出が終わった最新のステップをステップnとし、次に物理量を計算するステップをステップn+1として説明する。
【0016】
ここで、本実施例では、ステップ単位で終了のタイミングを指定したが、これは他の方法でも良く、例えば、初期状態から終了までの時間を指定してもよい。
【0017】
また、制御部2は、ユーザインタフェース1より入力を受けた各粒子の位置の初期値から、各粒子の影響範囲内にある他の粒子のリストを作成する。以下では、各粒子の影響範囲内にある他の粒子を「近傍粒子」と呼ぶ。また、近傍粒子のリストを「近傍粒子リスト」と呼ぶ。
【0018】
図2は、影響範囲及び近傍粒子について説明するための図である。ここで、図2を参照して、各粒子の影響範囲及び近傍粒子について説明する。ここでは、着目粒子と他の粒子との距離が2h以内の場合に、相互に影響を与え合うものとして説明する。ここで、影響とは、例えば、粒子が移動する場合に、他の粒子へ力を加えるなどのことを言う。
【0019】
ここでは、図2の粒子101を例に説明する。粒子101の影響範囲102は、粒子101を中心として半径2hの円の中に含まれる範囲である。この半径2hは、粒子101の影響半径である。そして、影響範囲102の中に含まれる他の粒子が、粒子101の近傍粒子である。図2では、例えば、粒子103のように、斜線で表されている粒子が近傍粒子である。すなわち、粒子101が影響を与えることになる他の粒子は、斜線で表される近傍粒子ということになる。逆に、斜線で表される近傍粒子からのみ、粒子101は影響を受けることになる。ここで、近傍粒子が数十個程度含まれるように半径2hを設定すれば、着目した粒子と他の粒子間の相互作用を解析するには十分であることが経験的に知られている。
【0020】
また、粒子101の位置を表す位置ベクトルをrとし、粒子103の位置を表す位置ベクトルをrとすると、粒子101と粒子103との間の距離は|r−r|となる。すなわち、|r−r|≦2hを満たす場合に、粒子103は粒子101の近傍粒子とされる。
【0021】
制御部2は、例えば図2の粒子101に対する近傍リストを作る場合、まず、影響範囲102に含まれる粒子103のような斜線で表される各粒子を粒子101の近傍粒子として抽出する。例えば、制御部2は、着目粒子である粒子101の位置と他の粒子の位置から粒子101と各他の粒子との距離を求め、その距離が2h以下となる粒子を近傍粒子として抽出する。
【0022】
図1に戻って、制御部2は、近傍粒子の抽出を全ての粒子に対して行う。そして、制御部2は、各着目粒子と抽出した各着目粒子の近傍粒子とが対応する近傍粒子リストを作成する。そして、制御部2は、作成した近傍粒子リストを速度算出部4、密度算出部5、圧力算出部6、位置算出部7及び平滑化部8へ出力する。
【0023】
また、制御部2は、ステップn+1における各着目粒子の速度の入力を速度算出部4から受ける。また、制御部2は、ステップn+1における各着目粒子の密度及び圧力の入力を平滑化部8から受ける。さらに、制御部2は、ステップn+1における各着目粒子の位置の入力を位置算出部7から受ける。ここで、1ステップとは、上述したように、Δt時間経過した後の状態である。そこで、例えば、ステップn+1における速度とは、ステップnにおける速度からΔt時間後の速度である。
【0024】
すなわち、制御部2は、初期状態からΔt時間経過した後の、各着目粒子の速度、密度、圧力及び位置の入力を受ける。次に、制御部2は、初期状態から2Δt時間経過した後の、各着目粒子の速度、密度、圧力及び位置の入力を受ける。このように、制御部2は、既にステップnにおける速度、密度、圧力及び位置を受信している場合には、次にステップn+1における各着目粒子の速度、密度、圧力及び位置を受信する。そして、制御部2は、指定されたシミュレーションの終了のタイミングまで、各ステップにおける各着目粒子の速度、密度、圧力及び位置を順次受信する。
【0025】
さらに、制御部2は、ステップn+1における各着目粒子の最新の速度、密度、圧力及び位置から1ステップ後の情報の入力を受けると、受信したステップn+1における各情報を結果記憶部3へ記憶させる。
【0026】
また、制御部2は、ステップn+1における各着目粒子の密度、圧力及び位置を、次の計算に用いる各着目粒子の密度、圧力及び位置として、速度算出部4へ出力する。
【0027】
また、制御部2は、ステップn+1における各着目粒子の密度を次の計算に用いる密度として密度算出部5へ出力する。
【0028】
また、制御部2は、ステップn+1における各着目粒子の圧力を次の計算に用いる現在の圧力として圧力算出部6へ出力する。
【0029】
また、制御部2は、ステップn+1における各着目粒子の速度を位置算出部7へ出力する。
【0030】
さらに、制御部2は、受信したステップn+1における各着目粒子の位置を用いてステップn+1における各着目粒子の近傍粒子を求め、近傍粒子リストを作成する。そして、制御部2は、作成した近傍粒子リストを速度算出部4、密度算出部5、圧力算出部6、位置算出部7及び平滑化部8へ出力する。このように、制御部2は、ステップ毎の速度、密度、圧力及び位置、並びに近傍粒子リストを各部へ出力する。そして、制御部2は、現在のデータを用いて1ステップ後のデータを算出するよう、速度算出部4、密度算出部5、圧力算出部6、位置算出部7及び平滑化部8に対して指示し、ステップLまで繰り返させる。
【0031】
結果記憶部3は、メモリやハードディスクなどの記憶装置である。
【0032】
速度算出部4は、例えば、カーネル関数として、次の式(1)で表される5次のスプライン関数を記憶している。
【0033】
【数1】

【0034】
ここで、αは、2次元の計算を行なう場合にはα=7/(4πh)という値であり、3次元の計算を行なう場合にはα=21/(16πh)という値である。そして、rは、カーネル関数を用いた計算の対象としている2つの粒子の距離を表し、hは影響範囲を表しており、qはq=r/hと定義される。
【0035】
式(1)は、ある粒子における、他の粒子へ影響を及ぼす寄与の大きさを表している。そして、式(1)は、粒子同士が離れると一方の粒子が他方の粒子に影響を及ぼす寄与の大きさが小さくなることを表わしている。
【0036】
そして、式(1)は、(イ)全空間で積分すると1になる、(ロ)影響範囲が0に近づくと、すなわち、一方の粒子と影響を受ける他の粒子との間の距離が0に近づくと極限値がディラックのデルタ関数になる、(ハ)1階以上微分可能である、という3つの条件を満たしている。
【0037】
さらに、式(1)は、qが0より小さい又は2より大きい場合の値が0になることから、有限の領域の外で値が0となる性質を有している。この性質は、コンパクトサポートと呼ばれる場合がある。
【0038】
ここで、圧縮場では、dW/dqが負の領域でtensile instabilityと呼ばれる数値不安定が生じやすい。そこで、カーネル関数としては、dW/dqが負となる領域が比較的狭く、不安定が発生しにくいと考えられる式(1)で表される5次のスプライン関数を用いることが特に好ましい。ただし、数値的不安定さを抑える要求に応じて、カーネル関数は他のものを用いることもできる。例えば、他のカーネル関数としては、次の式(2)〜(4)のようなものを用いてもよい。
【0039】
【数2】

【0040】
ここで、q=r/hである。また、αは、2次元の計算を行なう場合にはα=1/(πh)という値であり、3次元の計算を行なう場合にはα=1/(π3/2)という値である。式(2)は、ガウシアン関数である。
【0041】
【数3】

【0042】
ここで、αは、2次元の計算を行なう場合にはα=2/(πh)という値であり、3次元の計算を行う場合にはα=5/(4πh)という値である。
【0043】
【数4】

【0044】
ここで、αは、2次元の計算を行なう場合にはα=10/(7πh)という値であり、3次元の計算を行なう場合にはα=1/(πh)という値である。
【0045】
式(2)〜(4)はいずれも、ある粒子における、他の粒子へ影響を及ぼす寄与の大きさを表している。そして、式(2)〜(4)はいずれも、粒子同士が離れると一方の粒子が他方の粒子に影響を及ぼす寄与の大きさが小さくなることを表わしている。そして、式(2)〜(4)はいずれも、(イ)、(ロ)及び(ハ)の条件を満たしている。
【0046】
特に、式(2)のガウシアン関数は、一つの粒子が他の粒子に影響を及ぼす寄与の大きさを正規分布として表現している。そして、式(2)を用いた場合、後で詳述する、速度、密度、圧力及び位置の算出において、数学的には厳密な値が求められる。しかし、式(2)を用いた場合、W(r,h)=0になる点を求めることができない。この場合、影響の範囲がはっきりしなくなることから、影響半径をどの値に取ったらいいのかが不明確になってしまう。そこで、本実施例では、精度とのバランスを考慮してカーネル関数として式(1)を用いている。
【0047】
さらに、速度算出部4は、例えば、粒子の加速度を表す離散化された加速度運動方程式として次の式(5)を記憶している。
【0048】
【数5】

【0049】
また、添字aは、粒子aについての情報であることを表しており、添字bは粒子bについての情報であることを表している(以下、添字のa及びbは同様であるものとする。)。すなわち、式(5)の運動方程式は、粒子aの加速度を表している。ここで、粒子aとは、全ての粒子の中から任意に抽出した粒子である。そして、粒子bとは、粒子aの近傍粒子である。すなわち、和の範囲は粒子aの近傍粒子について亘ることになる。そして、ρは粒子aの密度であり、ρは粒子bの密度である。そして、ρab(ここでは、ρabの上部の横棒の記号を省いて記載している。)はρとρとの算術平均を表している。また、pは粒子aにかかる圧力であり、pは粒子bにかかる圧力である。また、Wabは粒子aと粒子bにおけるカーネル関数であり、本実施例では式(1)で表される。さらに、∇は、粒子aの位置におけるベクトル微分演算子を表している。また、mは粒子bの質量である。また、gの項(ここで、gはベクトルを表しているものとする)は外力項を表している。
【0050】
式(5)の右辺の第1項は圧力勾配を表している。また、式(5)の右辺の第2項は人工粘性を表している。さらに、式(5)の第3項は重力を表している。
【0051】
さらに、式(5)の右辺の第2項の人工粘性項は、粒子aと粒子bとが互いに近づく場合に限り粒子同士の衝突を妨げる向きに力を及ぼすための項である。人工粘性項におけるβavは、人工粘性の強さを調整するパラメータである。また、人工粘性項におけるφは次の式(6)で表される。
【0052】
【数6】

【0053】
ここで、rba=(r−r)(ここで、rba、r及びrはそれぞれベクトルを表しているものとする。)であり、r、rはそれぞれ、粒子aの位置ベクトルと粒子bの位置ベクトルとを表している。すなわち、rbaは粒子aと粒子bとの距離である。vba=(v−v)(ここで、vba、v及びvはそれぞれベクトルを表しているものとする。)である。また、ηは、分母が発散しないためのパラメータである。
【0054】
ここで、式(5)の導出について説明する。流体の運動方程式は次の式(7)で表される。
【0055】
【数7】

【0056】
ここで、v(ここで、vはベクトルを表しているものとする。)は速度ベクトルを表し、ρは流体の密度を表しており、pは流体の圧力を表しており、gの項(ここで、gはベクトルを表しているものとする。)は外力項を表している。また、Δは、ラプラス演算子を表している。そして、式(7)の右辺の第1項は圧力勾配を表し、第2項は粘性応力による力を表し、第3項は外力を表している。
【0057】
ここで、圧力勾配を表す−∇P/ρは、圧力Pの大きいところから小さなところに向かって加速度が働き、さらに密度ρが大きいほど加速度が小さくなることを表している。さらに、∇P/ρは、次の式(8)のように変形できる。
【0058】
【数8】

【0059】
ここで、式(8)におけるσは、次に行うように式(7)に対して粒子法を用いて離散化を行った場合に、各粒子について対称な形にする場合を一般化するための調整用のパラメータである。
【0060】
次に、式(7)の圧力勾配を、式(8)を用いて変形したうえで、SPH法を用いて離散化を行う。ここで、SPH法では、粒子aの物理量Aは、次の式(9)のように離散化表現される。物理量Aは例えば、圧力や密度などである。
【0061】
【数9】

【0062】
そこで、式(7)の圧力勾配を式(8)を用いて変形した式を、式(9)を用いて離散化表現することで、次の式(10)のように表すことができる。
【0063】
【数10】

【0064】
ここで、式(10)では、式(7)における粘性応力の項が省かれている。これは、本実施例で解析の対象としている波などの粘性が低い流体においては、粘性応力が無視してよいほどの力であるためであり、離散化後の式から除いている。この式(10)で分かるように、運動方程式が、粒子a及び粒子bのそれぞれに対して対称な式として表されている。すなわち、式(10)を用いることで、粒子aと粒子bとの間で相互に働く力が等しくなる。このため、式(10)を用いた解析においては、運動量保存側やエネルギー保存則を守ることが容易となる。
【0065】
そして、調整用のパラメータをσ=1とすると、式(5)が求まる。ここで、本実施例では、調整用パラメータをσ=1とした場合としたが、σの値は他の値をとってもよく、例えば、従来粒子法において一般的に用いられてきたσ=0を用いてもよい。
【0066】
さらに、後述するように、本実施例では時間積分をするにあたり、エネルギー散逸が比較的生じにくいSymplectic Euler法を用いる。そして、Symplectic Euler法では、運動方程式は次の式(11)及び式(12)のHamilton方程式で記述される。
【0067】
【数11】

【数12】

【0068】
ここで、e=m(ここで、eはベクトルを表しているものとする。)は、粒子aの運動量ベクトルである。また、∇は位置に関する微分演算子であり、∇は運動量に関する微分演算子である。また、Hは全エネルギ(Hamiltonian)である。
【0069】
Symplectic Euler法は、Hamilton方程式で記述される系を時間積分するスキームであり、次の式(13)及び式(14)で表されるステップで実行される。
【0070】
【数13】

【数14】

【0071】
ここで、添え字nは時間ステップ数を表し、Δtは時間増分を表している。式(13)及び式(14)は両辺にn+1ステップの値を含むので、一般には陰的公式である。しかし、HamiltonianがH(e,r)=T(e)+U(r)とeのみに依存する項と、rのみに依存する項の和として表されるときには、式(13)は次の式(15)として表せ、式(14)は次の式(16)として表される。
【0072】
【数15】

【数16】

【0073】
式(15)及び式(16)は、右辺に未知の値を含まないため、陽的に解くことができる。
【0074】
これを、粒子法に適用すると、Hamiltonianは、次の式(17)のように定義できる。
【0075】
【数17】

【0076】
ここで、Nは総粒子数である。また、式(17)の第1項は運動エネルギーを表し、第2項は粒子間ポテンシャルを表し、第3項は外力ポテンシャルを表している。ただし、∇G=g(ここで、gはベクトルを表しているものとする。)である。
【0077】
そして、式(17)と定義した場合、式(12)から式(5)の運動方程式を得ることができる。さらに、式(13)からdr/dt=vとなる。すなわち、式(5)は、Hamilton systemを形成していることがわかり、式(5)は、Symplectic法を用いる運動方程式として適切であるといえる。
【0078】
ここで、従来は運動方程式として、例えば、次の式(18)などが用いられてきた。
【0079】
【数18】

【0080】
ここで、Πabは、粘性応力を表す粘性項であり、次の式(19)のように表される。
【0081】
【数19】

【0082】
ここで、μは粘性係数であり、水の場合はμ=10−3(Pa・s)である。また、ξは物理粘性を調整するパラメータであり、例えば、ξ=4.96333などである。また、式(19)の右辺の第2項は物理量の不連続に起因する数値誤差を是正する人工粘性項である。
【0083】
そして、式(18)で表される運動方程式を用いてシミュレーションを行った場合、波高に現実よりも大きな減衰などが生じてしまう。
【0084】
これに対して、本実施例における運動方程式である式(5)から人工粘性を省いた運動方程式は、Hamilton方程式で表されるエネルギー保存則から導出される。すなわち、式(5)の運動方程式はエネルギー保存則や運動量保存則を的確に反映することができ、波高の減衰などを抑えることができる。したがって、本実施例における運動方程式である式(5)を用いて解析を行うことで、式(18)のような従来の式を用いた場合と比較して、波動伝播のような安定性が要求される解析をより適切に行うことができる。
【0085】
図1に戻って、速度算出部4の説明を続ける。速度算出部4は、運動方程式(5)を用いて加速度dv/dtを算出する。
【0086】
次に、速度算出部4は、境界からの反発力を次の式(20)を用いて求める。
【0087】
【数20】

【0088】
ここで、図3を参照して、式(20)について説明する。図3は、実施例で用いた境界からの反発力を説明するための図である。ここでは、図3における粒子200に加えられる境界からの反発力について説明する。
【0089】
図3に示すように、dは境界面201からの所定の距離である。そして、境界層202、境界面からdの幅の層を示している。また、sは粒子200の境界層202への侵入距離である。
【0090】
本実施例では、境界面201から幅dの境界層202を考え、境界層202内に粒子200が突入した場合に、粒子200に対して境界面201から粒子200の向きに反発加速度が加わるものとする。反発力fは、弾性ばねによるものと同じ形式でf=ksとして与える。ばね剛性係数kは、音速cの粒子が有する運動エネルギーmc/2となり、粒子が境界層202へdの長さだけ進入したときの弾性歪エネルギーkd/2が同程度となるように定める。すなわち、連続体の運動の解析を行なうシミュレーションにおいては、粒子200は音速を超えることはないと考えられるので、音速で粒子200が進入した場合に境界面201においてエネルギーがなくなるように設定しておけば、粒子200は境界面を突き抜けることはなくなる。このため、βを1程度のパラメータとする。このようにβを設定することで、式(20)が導かれる。
【0091】
式(20)で表される反発力を用いることで、境界壁からの粒子のすり抜けを防止し、導入する摩擦やfree slip条件の正確性を向上でき、さらに、境界で物理的に無意味なエネルギー消費の発生を抑えることができる。また、式(20)は簡単な式で表されているので、式(20)で表される反発力を用いた場合には、計算負荷を抑えることができる。
【0092】
ここで、波高の現実よりも大きな減衰などの各種問題が発生しにくい式として本実施例では式(20)を用いたが、この反発力は他の式を用いてもよい。例えば、反発力が過大になる可能性を考慮して、粒子が境界面に近づいている場合には、弾性ばねを考慮し、逆に粒子が境界面から遠ざかる場合には、弾性ばねを考慮しないように反発力を設定してもよい。このような反発力は一方向弾性ばね法と呼ばれることがある。エネルギー保存の観点からは粒子と境界面の相対速度に関係なく弾性ばねを考慮する式(20)のような反発力が好ましいが、境界での不自然な反発を避けるために一方向弾性ばね法をもちいてもよい。
【0093】
そして、速度算出部4は、運動方程式(5)を用いて算出した加速度dv/dtと式(20)を用いて求めた反発力とを加えてステップnにおける加速度F(ここで、Fは加速度ベクトルを表しているものとする。)を算出する。
【0094】
次に、速度算出部4は、算出した加速度Fを用いて次の式(21)で表される時間積分を行い、ステップn+1における速度を求める。
【0095】
【数21】

【0096】
ここで、vはステップnにおける速度を表している。
【0097】
また、時間増分Δtは、本実施例では次の式(22)とした。以下の説明での時間増分Δtは全て式(22)とした。
【0098】
【数22】

【0099】
ここで、αΔtは発散防止用の係数で、本実施例では一例として0.1とした。
【0100】
速度算出部4は、以上に説明した、運動方程式を用いて算出した加速度に境界面からの反発力を加えてステップnにおける加速度を算出し、この加速度を用いてステップn+1の速度を算出するという処理を、全ての粒子に対して行う。
【0101】
そして、速度算出部4は、算出したステップn+1における各粒子の速度を制御部2、密度算出部5及び位置算出部7へ出力する。
【0102】
密度算出部5は、式(1)で表されるカーネル関数を記憶している。さらに、密度算出部5は、次の式(23)で表される粒子の密度の時間変化を表す密度変動の連続方程式を離散化した式を記憶している。
【0103】
【数23】

【0104】
ここで、式(23)の導出について説明する。離散化しない場合の流体の密度の時間変化の連続方程式は次の式(24)で表される。
【0105】
【数24】

【0106】
この式(24)に対して、上述した式(9)で表されるSPH法における粒子aの物理量Aを用いて離散化することで式(23)が得られる。この連続方程式は、各粒子の質量を重みとして、重みを付けたカーネル関数で表される各粒子が有する密度を重ね合わせたものである。
【0107】
図1に戻って、密度算出部5は、各粒子の質量、ステップnにおける各粒子の位置及びステップnにおける近傍粒子リストの入力を制御部2から受ける。また、密度算出部5は、ステップn+1における速度を速度算出部4から受ける。そして、密度算出部5は、受信した各粒子の質量、ステップn+1における各粒子の速度、ステップnにおける各粒子の位置及びステップnにおける近傍粒子リストを式(23)に代入する。そして、密度算出部5は、ステップn+1における密度変動である密度時間微分dρ/dt=Dn+1を算出する。
【0108】
次に、密度算出部5は、前回のステップで算出したステップnにおける密度及び算出したステップn+1における密度変動を用いて次の式(25)で表される時間積分を行い、ステップn+1の密度を求める。
【0109】
【数25】

【0110】
密度算出部5は、密度変動の算出及び算出した密度変動を用いた密度の算出を全ての粒子に対して行う。
【0111】
そして、密度算出部5は、算出したステップn+1における各粒子の密度を圧力算出部6及び平滑化部8へ出力する。
【0112】
平滑化部8は、ステップn+1における各粒子の密度の入力を密度算出部5から受ける。
【0113】
平滑化部8は、カウンタを有している。そして、平滑化部8は、ステップn+1における各粒子の密度及び圧力の入力の回数をカウンタによりカウントし、20回に一回(例えば、20の倍数のステップ毎)、受信したステップn+1における各粒子の密度及び圧力に対して以下の平滑化を行う。この20回に一回のステップが「所定ステップ」の一例にあたる。ここで、本実施例では、20回に一回の割合としたが、これは他の割合としてもよく、さらに、定期的でなくてもよい。この平滑化を行うステップは、密度及び圧力の算出による表面における粒子のみだれの状態を考慮して決定されることが好ましい。
【0114】
平滑化部8は、受信したステップn+1における密度に対して、次の式(26)を用いて圧力の平滑化を行う。
【0115】
【数26】

【0116】
ここで、ρnewは、平滑化処理後の密度である。
【0117】
そして、平滑化部8は、平滑化処理後の密度をステップn+1における密度として圧力算出部6へ出力する。また、平滑化部8は、平滑化を行わなかった場合は、密度算出部5から受信したステップn+1における各粒子の密度を制御部2に出力し、平滑化を行った場合には、平滑化後のステップn+1の各粒子の密度を制御部2に出力する。
【0118】
後述するように、密度の平滑化に伴い圧力に対しても平滑化が行われる。このように、密度及び圧力の平滑化を行うことで、圧力振動を抑制することができる。
【0119】
ここで、本実施例では、密度算出部5が算出したステップn+1の各粒子の密度は常に平滑化部8に渡されているが、これは次のような方法でもよい。例えば、密度算出部5は、今回処理を行なうステップが20回に一回のステップに該当するか否かを判定し、今回処理を行なうステップが20回に一回のステップの場合には、密度算出部5は、平滑化部8へステップn+1の各粒子の密度を出力する。これに対して、今回処理を行うステップが20回に一回のステップ以外の場合には、密度算出部5は、制御部2へステップn+1の各粒子の密度を出力する。このような方法を取ることで、平滑化部8における処理を軽減できる。
【0120】
圧力算出部6は、ステップn+1における各粒子の密度の入力を密度算出部5から受ける。また、20回に一回のステップにおいて、平滑化されたステップn+1における各粒子の密度の入力を平滑化部8から受ける。そして、圧力算出部6は、平滑化部8からステップn+1における各粒子の密度の入力を受けた場合、圧力算出部6から受信したステップn+1における各粒子の密度を平滑化部8からステップn+1における各粒子の密度に更新する。
【0121】
そして、圧力算出部6は、次の式(27)で表される状態方程式にステップn+1における密度を用いて、ステップn+1における圧力を算出する。
【0122】
【数27】

【0123】
ここで、ρは平均密度を表す。本実施例では、一例として、ρ=1(g/cm)、c=50(m/sec)として計算を行った。
【0124】
ここで、状態方程式により、密度の大きな領域は圧力が大きくなり、その周囲へ向かって圧力勾配が働くため、式(27)を用いた結果として密度の凹凸がならされる。このように、密度の凹凸がならされることで、密度が均一に近くなり、より数値計算の正確性を向上することができる。
【0125】
また、密度の揺らぎの程度δ=(ρ/ρ)−1は、流体の典型的な流速vと音速を用いて表されるv/c以下と見積もることができる。そして、本実施例における流速は、音速(50m/sec)に比べて、十分小さい値であるので、密度の揺らぎも十分小さい値となる。そして、本実施例では流体の体積変化が0.1%程度であったことから、密度変化も同様に0.1%程度であり、数値計算上問題となる値ではない。
【0126】
圧力算出部6は、ステップn+1における圧力の算出を全ての粒子について行う。そして、圧力算出部6は、算出したステップn+1における各粒子の圧力を制御部2へ出力する。
【0127】
ここで、本実施例では、圧力算出部6は、常に密度算出部5からステップn+1における各粒子の密度を受信し、平滑化部8から平滑化が施された密度を受信した場合に、ステップn+1における各粒子の密度を平滑化後の値に更新している。しかし、次のような方法でもよい。すなわち、密度算出部5が、今回処理を行なうステップが20回に一回のステップに該当するか否かを判定し、今回処理を行なうステップが20回に一回のステップであれば、密度算出部5は、圧力算出部6にはステップn+1における各粒子の密度を出力せず、平滑化部8にのみ出力する。そして、圧力算出部6は、平滑化部8からのみステップn+1における各粒子の密度を受信する。一方、密度算出部5が、今回処理を行なうステップが20回に一回のステップ以外のステップと判定した場合、密度算出部5は、圧力算出部6と平滑化部8の双方にステップn+1における各粒子の密度を出力する。そして、圧力算出部6は、密度算出部5及び平滑化部8の双方からステップn+1における各粒子の密度を受信する。このような方法を用いることで、圧力算出部6の処理を軽減することができる。
【0128】
位置算出部7は、各粒子の位置の初期値の入力を制御部2から受ける。さらに、位置算出部7は、n+1ステップにおける各粒子の速度の入力を速度算出部4から受ける。
【0129】
そして、位置算出部7は、受信したn+1ステップにおける速度を用いて、次の式(28)で表される時間積分を行い、ステップn+1における粒子の位置を求める。
【0130】
【数28】

【0131】
位置算出部7は、ステップn+1における粒子の位置の算出を全ての粒子に対して行う。そして、位置算出部7は、算出したステップn+1における各粒子の位置を制御部2へ出力する。
【0132】
このように、時間積分により次のステップの速度をまず求め、次に、求めた次のステップの速度を用いて時間積分を行い、次のステップの密度、圧力及び位置を算出する時間積分法はSymplectic Euler法と呼ばれることがある。シミュレーションにおいて時間積分を行なう手順を時間積分スキームと称することがあり、このSymplectic Euler法は、Hamilton方程式で記述される系に対する時間積分スキームの一種である。
【0133】
以上に説明したように、本実施例にかかるシミュレーションでは、まず速度を時間微分し、次のステップの速度を求め、その後に次のステップの密度及び圧力を求め、最後に次のステップの位置を求めることになる。すなわち、本実施例に係るシミュレーションにおいては、ステップn+1における密度及びステップn+1の位置のいずれにおいても、それらを求める場合にステップnの位置を用いている。すなわち、密度及び位置を求めるタイミングを一致することができる。これに対して、従来一般的に用いられている、leap-frog法は、計算の最初に位置座標を半ステップ進め、以降、位置座標と速度を半ステップずつずらしたまま時間積分を行う方法である。この方法では、密度と位置を求めるタイミングがずれてしまう。この点、密度の算出においては、位置が大きく影響する。そのため、密度と位置とは同じタイミングで算出することが数値計算を適正に行ううえで好ましい。すなわち、本実施例で用いたSymplectic Euler法による時間微分を行うことで、エネルギーの保存を数値計算上正確に保存することができる。
【0134】
次に、図4を参照して、本実施例に係るシミュレーションの処理の流れについて説明する。図4は、実施例に係るシミュレーションの処理のフローチャートである。ここでは、平滑化部8が、平滑化処理を施す20回に1回のステップとして、20の倍数のステップ毎に平滑化を施す場合を例に説明する。
【0135】
制御部2は、各粒子の質量、並びに各粒子の速度、密度、圧力及び位置の初期値を含む入力データをユーザインタフェース1から取得する(ステップS1)。そして、制御部2は、受信した各粒子の質量、速度、密度、圧力及び位置の初期値を速度算出部4へ出力する。また、制御部2は、受信した各粒子の質量及び密度の初期値を密度算出部5へ出力する。また、制御部2は、受信した各粒子の圧力の初期値を圧力算出部6へ出力する。また、制御部2は、受信した各粒子の質量を平滑化部8へ出力する。さらに、制御部2は、受信した各粒子の位置の初期値を位置算出部7へ出力する。
【0136】
制御部2は、受信した各粒子の位置を用いて近傍粒子リストを作成する(ステップS2)。
【0137】
速度算出部4は、式(5)の運動方程式を用いて粒子の現在のステップにおける加速度を算出する(ステップS3)。
【0138】
次に、速度算出部4は、粒子が境界近傍層に含まれる位置にある境界近傍の粒子か否かを判定する(ステップS4)。速度算出部4が境界近傍の粒子で無いと判定した場合(ステップS4否定)、ステップS6へ進む。
【0139】
これに対して、境界近傍の粒子である場合(ステップS4肯定)、速度算出部4は、式(20)を用いて境界からの反発力を算出する(ステップS5)。そして、速度算出部4は、現在のステップにおける加速度に反発力を加えた粒子の加速度を求める(ステップS6)。
【0140】
次に、速度算出部4は、現在のステップにおける速度及び算出した現在のステップにおける加速度を用いて式(21)の時間積分を行い、次のステップにおける粒子の速度を算出する。
【0141】
そして、制御部2は、速度算出部4によって次のステップにおける速度の算出が全ての粒子について行われたか否かを判定する(ステップS7)。制御部2は、次のステップにおける速度の算出を行っていない粒子があると判定した場合(ステップS7否定)、速度算出部4に対してステップS3からステップS6までを繰り返させる。
【0142】
これに対して、全ての粒子について次のステップにおける速度の算出が完了している場合(ステップS7肯定)、密度算出部5は、式(23)の連続方程式を用いて次のステップにおける密度時間微分を算出する(ステップS8)。そして、速度算出部4は、算出した次のステップにおける各粒子の速度を、制御部2、密度算出部5及び位置算出部7へ出力する。
【0143】
次に、密度算出部5は、現在のステップにおける密度及び次のステップにおける密度時間微分を用いて式(25)の時間積分を行い、次のステップにおける密度を算出する(ステップS9)。そして、密度算出部5は、算出した密度を圧力算出部6及び平滑化部8へ出力する。
【0144】
圧力算出部6は、密度算出部5から受信した次のステップにおける密度を式(27)の状態方程式に用いて次のステップにおける圧力を算出する(ステップS10)。
【0145】
位置算出部7は、速度算出部4から受信した次のステップにおける速度を用いて式(28)の時間積分を行い、次のステップの粒子の位置を算出する(ステップS11)。
【0146】
平滑化部8は、次のステップにおける密度の入力を密度算出部5から受ける。そして、平滑化部8は、現在のステップが20の倍数のステップか否かを判定する(ステップS12)。平滑化部8は、現在のステップが20の倍数のステップで無いと判定した場合(ステップS12否定)、密度算出部5から受信した次のステップを制御部2へ出力し、ステップS15へ進む。
【0147】
これに対して、現在のステップが20の倍数のステップの場合(ステップS12肯定)、平滑化部8は、受信した次のステップにおける密度に式(26)を用いて平滑化を行う(ステップS13)。そして、平滑化部8は、平滑化を施した次のステップの密度を制御部2及び圧力算出部6へ出力する。
【0148】
そして、圧力算出部6は、平滑化部8から受信した平滑化が施された次のステップの密度を式(27)の状態方程式に用いて次のステップにおける平滑化された圧力を算出する(ステップS14)。そして、圧力算出部6は、平滑化された圧力に次のステップの圧力を更新する。その後、圧力算出部6は、算出した次のステップにおける圧力を制御部2へ出力する。
【0149】
そして、制御部2は、密度算出部5、圧力算出部6、位置算出部7及び平滑化部8によって次のステップにおける密度、圧力及び位置の算出が全ての粒子について行われたか否かを判定する(ステップS15)。制御部2は、次のステップにおける密度、圧力及び位置の算出を行っていない粒子があると判定した場合(ステップS15否定)、密度算出部5、圧力算出部6、位置算出部7及び平滑化部8に対してステップS8からステップS14までを繰り返させる。
【0150】
これに対して、全ての粒子について次のステップにおける密度、圧力及び位置の算出が完了している場合(ステップS15肯定)、制御部2は、今回のステップの計算を完了し、計算対象の時刻を1ステップ進める(ステップS16)。
【0151】
そして、制御部2は、今回のステップの各粒子の速度、密度、圧力及び位置を含む計算結果データをユーザインタフェース1に出力する(ステップS17)。さらに、制御部2は、今回のステップの結果データを結果記憶部3に格納する。
【0152】
そして、制御部2は、指定された最終ステップが完了したか否かを判定する(ステップS18)。制御部2は、全ステップが完了していないと判定した場合(ステップS18否定)、ステップS2へ戻る。これに対して、最終ステップが完了している場合(ステップS18肯定)、制御部2は、シミュレーションの処理を終了する。
【0153】
〔水理実験との比較〕
次に、本実施例に係るシミュレーションの正確さを調べるため、水理実験との比較を行った場合の結果について説明する。
【0154】
図5は、水理実験に用いた造波水槽の概念図である。この水理実験では、垂直護岸概要条件を用いて実験を行った。そして、この水理実験では、図5に示す位置に、波高計301〜306を配置し、波高記録を得た。
【0155】
図5の護岸401は模擬的な防波堤であり、斜面402は模擬的な水底から護岸401に向かう模擬的な斜面である。そして、造波板403が振幅運動を行うことによって、造波がなされる。そして、水槽の波高計301から護岸401までの距離を18.5mとし、水深を0.679mとした。また、斜面402は、10分の1の勾配を有している。
【0156】
そして、この検証では、図5と同様の水槽の波高計301から護岸401に亘る解析モデルを用いて、上述したシミュレーション方法により解析を行い、波高履歴及び越波量を図5で示される水槽を用いた水理実験の結果と比較した。ここで、シミュレーションに用いた造波板は、図5の水槽の造波板と同じ位置にあると想定して解析を行なっている。そして、波高計306において、水槽実験によって得られた波高履歴を再現するよう、造波板403の移動速度を無反射造波条件式の定常波項を省略した次の式(29)を用いて計算を行った。
【0157】
【数29】

【0158】
ここで、ηは目標波形、ηは造波板前面の水位変動、ωは角周波数であり、xwallは造波板403の位置座標である。また、Bは次の式(30)を満たす。
【0159】
【数30】

【0160】
さらに、Hは静水面高さ、Kは波数である。Kは次の式(31)から求めることができる。
【0161】
【数31】

【0162】
ここで、gは重力加速度である。
【0163】
表面波伝播の過程のみを調べるためにまず、護岸を設置しない状態での水理実験、本実施例に係るシミュレーション方法の数値解析結果、及び従来手法による数値解析結果を比較する。実験条件は、波高20cm、周期2secである。数値解析における粒子数は12万1980体、初期粒子間隔は1cm、影響半径(=2h)は3cmである。従来手法による数値解析としては、次の点が本実施例に係るシミュレーション方法と異なるものを採用した。すなわち、従来手法による数値解析では、(A)カーネル関数として、数式(4)で表されるcubic spline関数を用いる。(B)運動方程式として式(18)を用いる。ここで、式(19)において、βav=0.1、η=0.01hとした。(C)時間積分スキームとしてはleap-frog法を用いる。ここで、leap-frog法とは、計算の最初に位置座標を半ステップ進め、以降、位置座標と速度を半ステップずつずらしたまま時間積分を行う方法である。
【0164】
図6は、波高計302の位置における波高の解析結果と水理実験との比較を表す図である。図7は、波高計303の位置における波高の解析結果と水理実験との比較を表す図である。図8は、波高計304の位置における波高の解析結果と水理実験との比較を表す図である。図9は、波高計305の位置における波高の解析結果と水理実験との比較を表す図である。図10は、波高計306の位置における波高の解析結果と水理実験との比較を表す図である。図6〜図10における実線511〜551で表されるグラフが本実施例に係るシミュレーション方法を用いた数値解析結果である。図6〜図10は、いずれも、横軸が時刻であり、縦軸が波高である。また、図6〜図10における点線512〜552で表されるグラフが水理実験による結果である。また、図6〜図10における一点鎖線513〜553で表されるグラフが本実施例に係るシミュレーション方法を用いた数値解析結果である。
【0165】
図6〜図10から分かるように、従来手法においては、造波板403に近い波高計302では水理実験と波高がほぼ一致しているが、波の伝播距離が増すにつれて波高が大きく減衰している。そして、波高計306の位置では、従来手法で求められた波高が水理実験と大きく乖離している。例えば、図6の点線512と一点鎖線513とは近似している。しかし、図10の点線552と一点鎖線553とは大きなズレが生じている。
【0166】
これに対して、本実施例に係るシミュレーション方法を用いた数値解析の場合には、図6〜図10に示すように、造波板403から遠くなり波の伝播距離が長くなっても、解析結果が水理実験とほぼ一致している。例えば、図6の点線512と実線511とは近似しており、さらに図10の点線552と実線551とも近似している。すなわち、従来手法と比較して本実施例に係るシミュレーション方法は、より水理実験に近い結果を得ることができる。
【0167】
次に、カーネル関数、運動方程式又は時間積分スキームによる、数値解析の正確性の向上に対する寄与の度合いを測るため、カーネル関数、運動方程式又は時間積分スキームのそれぞれを変更した場合の計算結果について説明する。図11は、実施例に係るシミュレーション方法におけるカーネル関数、運動方程式又は時間積分スキームを変化させた場合の波高を表す図である。図11では、カーネル関数、運動方程式又は時間積分スキームをそれぞれ前述した従来手法における(A)〜(C)に切り替えている。図11は、横軸が時刻であり、縦軸が波高である。
【0168】
ここで、太実線601が水理実験を示し、細実線602が本発明を示し、点線603がカーネル関数を切り替えた場合を示し、一点鎖線604が運動方程式を切り替えた場合を示し、二点鎖線605が時間積分スキームを切り替えた場合を示している。
【0169】
図11から分かるように、太実線601と細実線602とはもっとも近似している。そして、カーネル関数、運動方程式又は時間積分スキームのそれぞれを切り替えた場合、細実線602と比べて、太実線601から離れていく。その中で、カーネル関数を切り替えた点線603が最も大きく太実線601から乖離している。
【0170】
また、図12は、従来手法におけるカーネル関数、運動方程式又は時間積分スキームを変化させた場合の波高を表す図である。図12では、従来手法として(A)〜(C)を満たす式を用いた場合とし、それら(A)〜(C)を、本実施例で用いた式(1)のカーネル関数、式(5)の運動方程式及びSymplectic Euler法を用いた時間積分に切り替えている。図12は、横軸が時刻であり、縦軸が波高である。
【0171】
ここで、太実線611が水理実験を示し、細実線612が本発明を示し、点線613がカーネル関数を切り替えた場合を示し、一点鎖線614が運動方程式を切り替えた場合を示し、二点鎖線615が時間積分スキームを切り替えた場合を示している。
【0172】
図12から分かるように、太実線611と細実線612とはもっとも乖離している。そして、カーネル関数、運動方程式又は時間積分スキームのそれぞれを切り替えた場合、細実線612と比べて、太実線611に近づいていく。その中で、カーネル関数を切り替えた点線613が最も太実線601に近似している。
【0173】
すなわち、カーネル関数として、式(1)で表される5次のスプライン関数を用いることが、シミュレーションの正確性の向上に最も効果が大きいといえる。
【0174】
さらに、護岸からの反射波の影響について調べるために直立護岸を設置した状態での水理実験と本実施例に係るシミュレーション方法による数値解析結果との比較を行う。実験条件として、「瀬戸内条件」及び「外洋条件」の2種類の条件を設定した。図13は、垂直護岸を設置した実験条件を示す図である。ここでは、「瀬戸内条件」及び「外洋条件」の条件として、図13に示すそれぞれの値を用いた。
【0175】
図14は、外洋条件を用いた場合の波高履歴を示す図である。また、図15は、瀬戸内条件を用いた場合の波高履歴を示す図である。図14及び図15のいずれも横軸が時刻であり、縦軸が波高である。そして、実線701及び実線711が本実施例に係るシミュレーション方法を用いた数値解析結果である。また、点線702及び点線712が水理実験による結果である。
【0176】
図14において、実線701と点線702とは波高、周期及び波形のいずれも十分に近似している。また、図15において、実線711と点線712とは波高、周期及び波形のいずれも十分に近似している。すなわち、本実施例に係るシミュレーション方法を用いた数値解析では、波高、周期及び波形とも、水理実験が十分に再現できているといえる。
【0177】
以上に説明したように、本実施例に係るシミュレーション方法を用いた場合と従来の粒子法を用いた数値解析とを比較した場合、後者では水理実験の結果と比較して波高が大きく減衰するが、前者では波高の減衰がほとんど無く、水理実験の波高とよく一致する。また、護岸前面の砕波を生じる非線形性の高い領域においても、本実施例に係るシミュレーション方法を用いた場合、波高が実測と良く一致する。これにより、護岸砕波過程における越波量や衝撃圧については造波水槽を用いた水理実験が行われるが、本実施例に係るシミュレーション方法による数値解析を行えば、水理実験をシミュレーションに置き換えることにより水理実験の回数の低減ができ、さらに、実海域の波浪に対する応答も直接評価できる。したがって、護岸設計コストの低減及び合理化に大きく寄与することができる。
【0178】
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図16を用いて、図1に示したシミュレーション装置と同様の機能を有するシミュレーションプログラムを実行するコンピュータの一例を説明する。
【0179】
図16は、シミュレーションプログラムを実行するコンピュータを示す図である。図16に示すように、コンピュータ1000は、キャッシュ1010と、CPU(Central Processing Unit)1020と、HDD(Hard Disk Drive)1030と、RAM(Random Access Memory)1040及びROM(Read Only Memory)1050を有する。キャッシュ1010、CPU1020、HDD1030、RAM1040及びROM1050は、それぞれバスによって接続されている。
【0180】
HDD1040には、図1に示したシミュレーション装置と同様の機能を発揮する各種のシミュレーションプログラム1031が予め記憶されている。
【0181】
そして、CPU1020は、これらの携帯端末制御プログラム1031を読み出して実行する。これにより、図16に示すように、シミュレーションプログラム1031は、シミュレーションプロセス1021になる。
【0182】
なお、上記したシミュレーションプログラム1031については、必ずしもHDD1030に記憶させなくてもよい。例えば、コンピュータ1000に挿入されるフレキシブルディスク、CD(Compact Disk)−ROM、DVD(Digital Versatile Disc)、光磁気ディスク、IC(Integrated Circuit)カードなどの「可搬用の物理媒体」にシミュレーションプログラム1031を記憶させてもよい。または、コンピュータ1000の内外に備えられるハードディスクドライブ(HDD)などの「固定用の物理媒体」にシミュレーションプログラム1031を記憶させてもよい。または、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などを介してコンピュータ1000に接続される「他のコンピュータ(またはサーバ)」にシミュレーションプログラム1031を記憶させてもよい。そして、コンピュータ1000は、上述したフレキシブルディスク等から各プログラムを読み出して実行するようにしてもよい。
【符号の説明】
【0183】
1 ユーザインタフェース
2 制御部
3 結果記憶部
4 速度算出部
5 密度算出部
6 圧力算出部
7 位置算出部
8 平滑化部

【特許請求の範囲】
【請求項1】
連続体を粒子の集合として表現する場合の各粒子の状態を解析するシミュレーション方法において、
入力した前記各粒子の初期状態の速度、密度、圧力及び位置の初期値に基づき、一つの粒子が他の粒子に影響を及ぼす寄与の大きさを表すカーネル関数により離散化された加速度運動方程式を用いて、各粒子の加速度と各粒子が境界面から受ける反発力とを算出し、
前記算出した各粒子の加速度と各粒子が境界面から受ける反発力とを基に、現在の各粒子の速度に対する時間積分を行い、単位時間経過後の各粒子の速度を算出し、
前記カーネル関数を用いて連続体の密度の時間変化を表す離散化した連続方程式を用いて各粒子の密度変動を算出し、
前記算出した各粒子の密度変動に対して、前記単位時間経過後の各粒子の速度を用いて時間による積分を行うことで、前記単位時間経過後の各粒子の密度を算出し、
前記各粒子の密度を算出する所定回数毎に、前記単位時間経過後の各粒子の密度に対して平滑化を行い、
前記単位時間経過後の各粒子の密度を基に、状態方程式を用いて前記単位時間経過後の各粒子の圧力を算出し、
前記単位時間経過後の各粒子の速度を基に時間による積分を行い、前記単位時間経過後の各粒子の位置を算出し、
前記速度の算出、前記密度の算出、前記圧力の算出及び前記位置の算出を、前記粒子の全てについて前記初期状態から所定時間が経過するまで繰返し、各単位時間経過後における速度、密度、圧力及び位置を取得する
ことを特徴とするシミュレーション方法。
【請求項2】
前記シミュレーション方法において、
前記カーネル関数は、全空間で積分すると1になり、前記粒子のうち、一つの粒子と影響を受ける他の粒子との間の距離が0に近づくと極限値がディラックのデルタ関数になり、さらに1階以上微分可能であることを特徴とする請求項1記載のシミュレーション方法。
【請求項3】
前記シミュレーション方法において、
前記カーネル関数は、一つの粒子が他の粒子に影響を及ぼす寄与の大きさを正規分布として表現するガウシアン関数であることを特徴とする請求項1又は請求項2記載のシミュレーション方法。
【請求項4】
前記シミュレーション方法において、
前記カーネル関数は、有限の領域外で0になる5次のスプライン関数であることを特徴とする請求項1又は請求項2記載のシミュレーション方法。
【請求項5】
前記シミュレーション方法において、
前記離散化された加速度運動方程式は、圧力勾配に応じた加速度を表すとともに、密度が大きいほど加速度が小さくなるように加速度を表すことを特徴とする請求項1〜請求項4のいずれか一項に記載のシミュレーション方法。
【請求項6】
前記シミュレーション方法において、
前記離散化された加速度運動方程式は、ハミルトン方程式を満たすことを特徴とする請求項5記載のシミュレーション方法。
【請求項7】
前記シミュレーション方法において、
前記離散化された加速度運動方程式は、各粒子について対称形となるように調整用パラメータを用いて前記加速度運動方程式を変形したことを特徴とする請求項5又は請求項6記載のシミュレーション方法。
【請求項8】
前記シミュレーション方法において、
前記調整用パラメータが1であることを特徴とする請求項7記載のシミュレーション方法。
【請求項9】
前記シミュレーション方法において、
前記調整用パラメータが0であることを特徴とする請求項7記載のシミュレーション方法。
【請求項10】
連続体を粒子の集合として表現する場合の各粒子の状態を解析するシミュレーション装置において、
前記各粒子のうち、一つの粒子が他の粒子に影響を及ぼす寄与の大きさを表すカーネル関数により離散化された加速度運動方程式を用いて、各粒子の加速度と境界面からの反発力とを算出し、前記算出した各粒子の加速度と各粒子が境界面から受ける反発力とを基に、現在の各粒子の速度に対する時間積分を行うことで、単位時間経過後の各粒子の速度を算出する速度算出部と、
前記カーネル関数を用いて連続体の密度の時間変化を表す離散化した連続方程式を用いて求めた各粒子の密度変動に対して、前記単位時間経過後の各粒子の速度を用いて時間による積分を行うことで、前記単位時間経過後の各粒子の密度を算出する密度算出部と、
前記密度算出部が各粒子の密度を算出する所定回数毎に、前記単位時間経過後の各粒子の密度に対して平滑化を行う前記平滑化部と、
前記単位時間経過後の各粒子の密度を基に、状態方程式を用いて前記単位時間経過後の各粒子の圧力を算出する圧力算出部と、
前記単位時間経過後の各粒子の速度を基に時間による積分を行うことで、前記単位時間経過後の各粒子の位置を算出する位置算出部と、
前記速度算出部、前記密度算出部、前記圧力算出部、前記平滑化部及び前記位置算出部に対して、初期状態の速度、密度、圧力及び位置の初期値を与え、前記初期状態から所定時間経過後までの各単位時間経過後における速度、密度、圧力及び位置の算出を行わせ、算出された各単位時間経過後における速度、密度、圧力及び位置を取得する制御部と、
を備えたことを特徴とするシミュレーション装置。
【請求項11】
連続体を粒子の集合として表現する場合の各粒子の状態を解析するシミュレーションプログラムにおいて、
コンピュータに、
入力した前記各粒子の初期状態の速度、密度、圧力及び位置の初期値に基づき、前記各粒子のうち、一つの粒子が他の粒子に影響を及ぼす寄与の大きさを表すカーネル関数により離散化された加速度運動方程式を用いて、各粒子の加速度と各粒子が境界面から受ける反発力とを算出させ、
前記算出した各粒子の加速度と各粒子が境界面から受ける反発力とを基に、現在の各粒子の速度に対する時間積分を行うことで、単位時間経過後の各粒子の速度を算出させ、
前記カーネル関数を用いて連続体の密度の時間変化を表す離散化した連続方程式を用いて各粒子の密度変動を算出させ、
前記算出した各粒子の密度変動に対して、前記単位時間経過後の各粒子の速度を用いて時間による積分を行うことで、前記単位時間経過後の各粒子の密度を算出させ、
前記各粒子の密度を算出する所定回数毎に、前記単位時間経過後の各粒子の密度に対して平滑化を行わせ、
前記単位時間経過後の各粒子の密度を基に、状態方程式を用いて前記単位時間経過後の各粒子の圧力を算出させ、
前記単位時間経過後の各粒子の速度を基に時間による積分を行うことで、前記単位時間経過後の各粒子の位置を算出させ、
前記速度の算出、前記密度の算出、前記圧力の算出及び前記位置の算出を、前記各粒子の全てについて前記初期状態から所定時間が経過するまで繰り返させ、各単位時間経過後における速度、密度、圧力及び位置を取得させる
ことを特徴とするシミュレーションプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2012−243288(P2012−243288A)
【公開日】平成24年12月10日(2012.12.10)
【国際特許分類】
【出願番号】特願2011−116344(P2011−116344)
【出願日】平成23年5月24日(2011.5.24)
【出願人】(000005223)富士通株式会社 (25,993)
【出願人】(000001199)株式会社神戸製鋼所 (5,860)