スワール流れの評価

ParaViewの標準機能では、直交座標系で定義された速度場をスワール流れの3成分に変換することができない。本スクリプトを適用すれば、任意の(節点値として定義された)速度ベクトルをCalculatorフィルタ経由でスワール3成分に変換することができる。

速度ベクトルの変数名をnvecに指定する。また、スワール軸をflag(0: X方向、1: Y方向、2: Z方向)およびorg(原点座標)で定義する。軸方向を反転したい場合は、dirにマイナス記号を指定する。(※反転しない場合はプラス記号とする。)

スワール成分を計算する際に軸からの距離で除する都合上、軸上の周方向および径方向成分を計算する際にエラーが発生する。現行のParaViewはゼロ割りに起因するエラー処理に対応していないため、軸からの距離を変数err分だけ水増ししている。errの値は、扱うモデルのスケールに応じて調節する。

動作確認環境

ParaView 3.14.1 64bit(Linux)、ParaView 3.14.1 32bit(Windows)、CentOS 6.2 64bit、Windows XP SP3 32bit、Python 2.7.3

Script

swirl.py

nvec = "Velocity"
flag = 2 # Direction of Axial Vector.
org = [0.0, 0.0, 0.0]
dir = "-"
err = 1e-10

axs = ["coordsX", "coordsY", "coordsZ"]
vec = [nvec + "_X", nvec + "_Y", nvec + "_Z"]
pos = [axs[flag % 3], axs[(flag + 1) % 3], axs[(flag + 2) % 3]] # pos[0] is dummy.
swl = [vec[flag % 3], vec[(flag + 1) % 3], vec[(flag + 2) % 3]]
for i in range(0, len(org)):
    if org[i] != 0:
        pos[i] = "(" + pos[i] + str(-org[i]) + ")"

calc = Calculator()
calc.AttributeMode = "point_data"
calc.Function = swl[0] + "*iHat+(("\
    + pos[1] + "*" + swl[1] + "+" + pos[2] + "*" + swl[2] + ")*jHat"\
    + dir + "(-" + pos[2] + "*" + swl[1] + "+" + pos[1] + "*" + swl[2] + ")*kHat)\
    /(sqrt(" + pos[1] + "^2+" + pos[2] + "^2)+" + str(err) + ")"\
calc.ResultArrayName = 'SwirlVect'
Show()
タグ: , , ,

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*