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()
コメントを残す