途中で計算してから作図
数値データが全部データファイルに入っているとは限りませんね.そこで,定義されているデータから何かを計算し,それを作図することができるにゃ.
このCalculatorフィルターを使うにゃ.この例では,元のデータがbody.pvdだにゃ.んでCalculatorでスカラー値をゲットするにゃーーーーー(あ?ベクトルんとこ選んだらフィルターの出力がベクトルになるのじゃ.それでよけりゃーそーするにゃーーーーー)
あたりみゃーだが,式入れそうなところに計算式をかきたまへ
だーかーらー,sqrt(U.U) とかかけばいーわけよ
計算した出力は,【Result Array Name】として使うことができるにゃ.この例ではAHOデータにしちまってるぞこりゃ
んでApplyしたら,その下のContourで使えるようになってるんだにゃ:
おまえ,ベクトルを電卓で入力してみろよ
これは
この辺の謎の iHat などが,基底ベクトル\({\boldsymbol e}_1\), \({\boldsymbol e}_2\),\({\boldsymbol e}_3\)である
だからまあ,多くの場合,かけるのである.
この例ではさらに,Result Array Name を, VTKで定義されているArray Name と同じものを使っている.すると,大混乱するのではなく,Array Nameの値が,式で計算されるやつと交換される.
ほんだば, MassFluxとは
計算式に N*U とか書いたら,数密度と流速の積じゃけん,ますフラックスになるとよ(無次元化してりゃ分子質量は1じゃけん,こいでよか)
面白いから微分してみる
ComputeDerivativesでは微分ができる. でも何を何で微分するんだろ〜
KitWareの申しようによれば,
- 入力関数は,スカラーとベクトルから選びたまい. お前が選んだ量をそれぞれ f, u と表そう
- 出力できるのは次のものである
- ベクトル値 計算しない, grad f, rot u の3択
- テンソル値 計算しない, ∂ u_i / ∂ x_j, (∂ u_i / ∂ x_j + ∂ u_j / ∂ x_i )/2 の3択
だそうだ.
ってことはですね,テンソル計算してTraceができたら div u も計算できるわけねー
・・・って,Traceどうするのfuck
てゆうかtensorの成分がわかんねーぞコラ. CouetteFlowなんだから,結果から考えてみる
- T[0] d u / d X かな.ほとんどゼロだが, u の加減速にちゃんと反応している
- T[1] d u / d Y みたいだ.だいたい0.05 くらいになっており,与えたデータと符合している
- T[2] d u / d Z か, d w / d X めっちゃくちゃ0 そりゃ2Dデータだからなー.ということは, これ d u / d Z だ!
- T[3] d v / d X ±0.02くらいだ
- T[4] d v / dY ±0.02くらいだ
- T[5] d v / dZ めっちゃくちゃ0
- T[6] d w / dX ±0.02くらいだ
- T[7] d w / dY ±0.02くらいだ
- T[8] d w / dZ めっちゃくちゃ0
ふーん.で,この成分を足し合わせるとかできるのか?あいやー,今の所,tensorをどうこうできるフィルターは,なさそうである.
死ねぼけ
で,思いついたんだが, U_U_1とかベクトルの要素はスカラーとしても使えるのだから,そいつのgradientを取ったら良いのでは?ほいたら, ベクトルとして
gradient_U1_1 gradent_U1_2 gradient_U1_3 ,....
ってな感じでベクトルの要素が取れるわけよ.
そしたらモッ発CALCULATEフィルターでそいつらの和を計算したら div U の出来上がり〜 でよくねえか