VBAで粒子法を勉強中

メッシュレスで数値解析できるという、粒子法に興味を持ち、勉強中です。 プログラムのスキルが無い為、ExcelとVBAでのプログラム作成を目指しています。

【SPH粒子法のプログラムをVBAで作ってみる】 3.パブリック変数と関数の設定

パブリック変数と関数を設定する

 次に、モジュールの記述に先立ち、パブリック変数と関数の宣言をします。

先回設定した型を用いています。

 


'===========================
'パブリック変数宣言:
'===========================
Dim nP As Integer               '粒子数
Dim Particles(10000) As Particle '粒子変数(仮に1万粒子)
Dim MAX_LOOP As Integer         '最大ループ数

Dim LOOPs As Integer            'ループのカウンタ
Dim Pi As Double                '円周率

Dim H As Double                 '有効半径
Dim DT As Double                'タイムステップ

Dim SPH_PMASS As Double         '粒子質量
Dim SPH_INTSTIFF As Double      '圧縮硬さ
Dim SPH_EXTSTIFF As Double      '境界圧縮硬さ
Dim SPH_EXTDAMP As Double       '境界速度減衰率

Dim Poly6Kern As Double         '重み係数
Dim SpikyKern As Double         '圧力係数
Dim LapKern As Double           '粘性係数

Dim RADIUS As Double            '境界粒子半径
Dim EPSILON As Double           '境界めりこみ判定

Dim INITMIN As Vec2D            '初期の水塊の範囲(最小)
Dim INITMAX As Vac2D            '初期の水塊の範囲(最大)
Dim MIN As Vac2D                '境界の範囲(最小)
Dim MAX As Vac2D                '境界の範囲(最大)

Dim SPH_PDIST As Double         '初期粒子間隔
Dim SPH_SIMSCALE As Double      '実長/仮長 スケール係数
Dim SPH_RESTDENSITY As Double   '定常密度
Dim SPH_VISC As Double          '粘性係数
Dim SPH_LIMIT As Double         '上限速度


'===========================
'関数宣言:
'===========================

'ベクトルの長さ^2(ノルム^2)を算出する関数
Function Norm2(a As Vec2D) As Double
 Norm2 = a.X * a.X + a.Y * a.Y
End Function

'ベクトルの長さ(ノルム)を算出する関数
Function Norm(a As Vec2D) As Double
 Norm = Sqr(a.X * a.X + a.Y * a.Y)
End Function


 沢山の変数がありますが、内容は追い追い説明します。

 

にほんブログ村 科学ブログ 技術・工学へ
にほんブログ村