いわて駐在研究日誌

OpenCAE、電子工作、R/C等、徒然なるままに

2011-01-01から1年間の記事一覧

VF計算(その7)

今日は、セルjをi以外のすべてのセルとし、マッピングする際にdepth判定を行って、全てのjをiのヘミキューブにマッピングしてみる。

Hemi-cube法によるフォームファクタ計算

これは、セルi上にHemi-cube(表面はピクセルに分割)を発生させ、ターゲットとなるセルjをマッピングし、そのピクセル(解析的に形態係数がもとまる)の和を計算する「点体面」のアルゴリズムで、さらに高精度化のためのいろいろバリエーションはある。 ピ…

フォームファクタ計算のまえおき

現在のコードでは、いわゆる面積分によるS2S(Surface to Surface)計算をやっている。 この計算では、面同士が向かい合っていて障害物がない条件であれば(球の内壁など)、 プログラム的には、あまり能のない、というか、straightforwardな手法である。 し…

いよいよ本丸へとりかかる。

まず、形態係数の計算結果がおかしかったのを修正。 図のように、底面中心からみたVFは球の後ろはチェック計算しないはずが、 アルゴリズムの記述ミスで計算対象になってしまっていた。 これを修正すると 36000s→ 17368.24sに半減できた。 Before After

VF計算の見直し

現在、 Geometry計算 1810s → 775s 障害物判定 86911s VF計算 893s(もともとは1895s程度で相反則を利用) という結果に....。 一番計算時間のかかっている障害物判定を置いておいて、VF計算を減らす工夫をしてみる。 微小要素間の形態係数計算ルーチンでare…

再度, iadjの見直し(8/17)

+ [0:geometry - iadj] total cpu = 670.3566 [0:geometry - iadjb] total cpu = 3.291199 [0:geometry - elm2nod/bfc2nod] total cpu = 51.43323 [0:geometry - vol/area] total cpu = 0.1775513 [0:geometry - xyz_cg] total cpu = 7.4462891E-03 [0:geome…

bftype/jb計算の見直し

無駄なindex比較を削除 365.52s → 42.15s 次は elm2nod/bfc2nod かな...。

iadj計算の見直し

Gridgenで作成したメッシュデータには、隣接セル情報がないため、ある意味力技で計算している。 したがって、もとの計算ループは、(セル数×セルフェース数)×セル数のループになっている。 一番内側ループでの不要なテンポラリ配列へのコピーを削減 1396.05…

ジオメトリ計算の計算時間の内訳

+ [0:geometry] viewfactor preparation completed: total cpu = 1817.074 + [0:geometry - iadj] total cpu = 1396.056 [0:geometry - iadjb] total cpu = 3.292236 [0:geometry - elm2nod/bfc2nod] total cpu = 51.55615 [0:geometry - vol/area] total cp…

改良コードの計算時間の内訳

+ [0:geometry] viewfactor preparation completed: total cpu = 1812.060 + + [1:isfaced] viewfactor preparation completed: total cpu = 16.15417 + Max. surface mesh edge length: 0.1216534522120750 Now searching obstacle mesh ... + [2:isfinishe…

オリジナルコードの計算時間の内訳

+ [0:geometry] viewfactor preparation completed: total cpu = 1891.191 + + [1:isfaced] viewfactor preparation completed: total cpu = 35.65332 + Max. surface mesh edge length: 0.1216534522120750 + [2:isfinished/isobstacle] viewfactor prepara…

各ポイントの改良

0:Geometry Do nothing 1:isfaced メッシュ同士の対向判定関数の呼び出しを1回に削減 2:isobstacle メッシュ間の障害物存在判定を、半分のメッシュIDのみに変更(結果は対称行例になるので) 障害物となっているメッシュ探索対称を、バウンディングボック…

VF計算(その2)

CUDA化する前にアルゴリズム的に見直してみる。

ホストレベルの低容量化

0/1のフラグを、integer=4byteからinteger(1)=1 byteへ変更 → 2.76GB → VF計算中 7.79GB VFの精度をreal(8)からreal(4)(4byte)へ → 2.76GB(変化なし?) → VF計算中 integer(1),allocatable :: esfaced (:,:) integer(1),allocatable :: swij (:,:) integer(1…

CPUによる計算時間(オリジナルコード)

CentOS 5.6(x86_64) PGI Compiler 2011.07 (x86_64) "pgfortran -fastsse -tp=nehalem-64 -mcmodel=medium -Minfo" CPU time: (対向メッシュサーチ等を含む)

形態係数の計算手法

面積積分に基づくS2S法

問題 「Cube in a square」

3m×3m×3mの立方体の中に、直径1mの球があり、それぞれのサーフェスは三角形メッシュで構成されている。 このサーフェスメッシュ間の形態係数を求める問題 n_bndfc = 25704 n_elmnt = 326559 n_nodes = 60734

CUDA Fortran化

CUDA Fortran ファイル名一例 *.cuf、*.CUF(CUDA Fortran プログラムファイルであることを明示) *.f、*.F、*.f90、*.F90、*.f95、*.F95 (従来の慣習名) -Mcudaオプション -Mcuda=cuda2.0 (CC2.0使用。この他、cuda1.3,emuなど) fastmath (fastmathライブ…

View Factor using CUDA Fortran

8月になってしまいました。 かねてから懸案だったCUDAを使ったView Factor計算の高速化を夏休みの宿題としたい。 といってもToDoリストにはたくさん並んでいるので、どこまで消化しきれるやら...。

境界条件の設定

Plot3DToFoamを実行すると、下記のように全て面がdefaultFacesになってしまうので、適当なコマンドと利用して、境界条件を設定する。 [waku@centosvm airFoil2D]$ more constant/polyMesh/boundary : 1 ( defaultFaces { type wall; nFaces 52000; startFace…

Plot3DファイルからOpenFoam形式への変換(Plot3DToFoamコマンド)

適当なケースフォルダ上(tutorials/incompressible/simpleFoam/airfoail2Dなど)で plot3DToFoamコマンドを実行 [waku@centosvm airFoil2D]$ plot3dToFoam -helpUsage: plot3dToFoam [OPTIONS] options: -2D use when converting a 2-D geometry -case spec…

Paraviewでの読み込み

− Paraviewは、デフォルトで.xyzの拡張子をPlot3D形式とみなす(中身の形式さえ合っていればOK???)。 − ObjectInspectorのプロパティで、MultiGridにチェック (Binaryのときは、HasByteCount,BigOrderなどをいじる) − Wireframe表示

Fortranでのデータ書き出し(マルチブロック、kの次元2としてあるのは、OpenFoamで2D計算の予定のためです)

注意! データの並びは「右手系」で! open(7,form='formatted', file='P3D.xyz') write(7,*) 2 ! # of blocks (ここでは2個) write(7,*) nout+1, nrad+1, 2 ! block 1 の次元 write(7,*) nout+1, nrad+1, 2 ! block 2 の次元 ! Block 1 write(7,*) & ((( x…

Plot3D

Plot3D形式を扱うことになったのでメモPlot3D ASCII/BINARY マルチブロック/IBLANK対応 メッシュデータファイルと変数データファイルは別ファイル メッシュデータファイル拡張子は、.xyz, .x, .p3dなど(このへん色々あるようだ...。)

adjointShapeOptimizationFoam (乱流・ニュートン流体・定常非圧縮ソルバー)

おなじみのpitzDailyで、流路計算をやっている。 このソルバーのポイントは、 adjoint法により随伴方程式(U|Ua, P|Pa)を解いて、blockage(変数alpha)を計算する。 評価は、「圧力損失の最小化」に決め打ち となっているので、HVACとか分流した流路断面形…

Viewファクター計算

チュートリアル:heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation (ちょっと複雑すぎるような) Reference: http://www.ofwikija.org/index.php/OpenFOAM%C2%AE_v2.0.0:_%E6%96%B0%E3%81%97%E3%81%84%E7%86%B1%E7%89%A9%E7%90%86%E3%83%A2…

snappyHexMesh

付属チュートリアル(~/OpenFOAM/ofuser-2.0.x/tutorials/mesh/snappyHexMesh/flange)でテスト snappyHexMeshを使う場合は、 STLファイルを CASE/constant/triSurface に置く(ASCII形式) blockMesh (設定ファイル CASE/constant/polyMesh/blockMeshDict) snap…

OpenFOAM 2.0.x

CentOS5.6にインストールしてみるが、systemコンパイラ(4.1.2, 4.4.4)だとビルドに失敗するので、4.5.3を準備しておく。 SL6.0ではsystemのコンパイラで、ビルドOKだった。今回入った新機能で、個人的に使えそうなのは、 snappyHexMeshのフィーチャーエッ…

OpenCAE学会

サイエンスとか、エンジニアリングも大事だが、こうした学会も大事かなと思い参加。 いろいろ刺激になりました。自分も頑張ろう。http://www.opencae.jp/S先生とか、O先生とかに御挨拶したかったけど、お忙しいのか懇親会には見えられず。 また別の機会とい…

久しぶりのスクリプト書き

VTKファイル(legacy)から、特定の行を抜き出して処理する。ファイルへはリダイレクトを使う。 #!/sbin/bash#temperature header line (VTK) OFFSET=954410#target cell IDs in (FRT, CNT, BCK, CRG) sections case $1 in FRT) TARGET=( 20923 14013 283432…