electrostaticFoamについて

1,662 views
Skip to first unread message

初心者

unread,
Jun 7, 2013, 8:02:12 PM6/7/13
to open...@googlegroups.com
始めまして、OpenFOAM初心者の者です。
 
電磁波解析のMaxwell方程式を将来的に解析してみたく、
一番近そうなelectrostaticFoamのtutorialを実施してみました。
 
chargedWireケースファイルには./Allrunが存在しないため、
blockMeshを端末からコマンドしたところ成功しました。
 
次にelectrostaticFoamをコマンドしたところ、下記のように
計算途中でエラーとなってしまいました。
 
解決法が分かればご教授頂けると有難いです。
           記
 
dexcs@dexcs-virtual-machine ~/OpenFOAM/dexcs-2.1.x/run/electrostaticFoam/chargedWire $ electrostaticFoam
/*---------------------------------------------------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  2.1.x                                 |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
Build  : 2.1.x-fa2c23b05ebe
Exec   : electrostaticFoam
Date   : Jun 08 2013
Time   : 08:46:53
Host   : "dexcs-virtual-machine"
PID    : 3146
Case   : /opt/OpenFOAM/dexcs-2.1.x/run/electrostaticFoam/chargedWire
nProcs : 1
sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster
allowSystemOperations : Disallowing user-supplied system call operations
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time
Create mesh for time = 0
Reading physicalProperties
Reading field phi
Reading field rho
Calculating field rhoFlux

Starting iteration loop
Iteration = 5e-05
DICPCG:  Solving for phi, Initial residual = 1, Final residual = 0.195335, No Iterations 47
DILUPBiCG:  Solving for rho:  solution singularity
ExecutionTime = 0.22 s  ClockTime = 0 s
Iteration = 0.0001
DICPCG:  Solving for phi, Initial residual = 0.331782, Final residual = 0.0545784, No Iterations 71
DILUPBiCG:  Solving for rho, Initial residual = 0.98541, Final residual = 0.0757165, No Iterations 348
ExecutionTime = 0.48 s  ClockTime = 0 s
Iteration = 0.00015
DICPCG:  Solving for phi, Initial residual = 0.373975, Final residual = 0.0734736, No Iterations 78
DILUPBiCG:  Solving for rho, Initial residual = 0.999806, Final residual = 15263.4, No Iterations 1001
ExecutionTime = 1.14 s  ClockTime = 1 s
Iteration = 0.0002
DICPCG:  Solving for phi, Initial residual = 1, Final residual = 0.186995, No Iterations 75
DILUPBiCG:  Solving for rho, Initial residual = 0.99183, Final residual = 0.198215, No Iterations 118
ExecutionTime = 1.23 s  ClockTime = 1 s
Iteration = 0.00025
DICPCG:  Solving for phi, Initial residual = 0.159745, Final residual = 0.0304519, No Iterations 61
DILUPBiCG:  Solving for rho, Initial residual = 0.997597, Final residual = 0.00399449, No Iterations 2
ExecutionTime = 1.25 s  ClockTime = 1 s
Iteration = 0.0003
DICPCG:  Solving for phi, Initial residual = 1, Final residual = 0.115647, No Iterations 2
DILUPBiCG:  Solving for rho, Initial residual = 1, Final residual = 0.196931, No Iterations 1
ExecutionTime = 1.26 s  ClockTime = 1 s
Iteration = 0.00035
DICPCG:  Solving for phi, Initial residual = 0.999972, Final residual = 0.18868, No Iterations 85
DILUPBiCG:  Solving for rho, Initial residual = 0.999784, Final residual = 0.180516, No Iterations 5
ExecutionTime = 1.29 s  ClockTime = 1 s
Iteration = 0.0004
DICPCG:  Solving for phi, Initial residual = 1, Final residual = 0.196619, No Iterations 28
#0  Foam::error::printStack(Foam::Ostream&) in "/home/dexcs/OpenFOAM/OpenFOAM-2.1.x/platforms/linuxGccDPOpt/lib/libOpenFOAM.so"
#1  Foam::sigFpe::sigHandler(int) in "/home/dexcs/OpenFOAM/OpenFOAM-2.1.x/platforms/linuxGccDPOpt/lib/libOpenFOAM.so"
#2  Uninterpreted:
#3  Foam::DILUPreconditioner::calcReciprocalD(Foam::Field<double>&, Foam::lduMatrix const&) in "/home/dexcs/OpenFOAM/OpenFOAM-2.1.x/platforms/linuxGccDPOpt/lib/libOpenFOAM.so"
#4  Foam::DILUPreconditioner::DILUPreconditioner(Foam::lduMatrix::solver const&, Foam::dictionary const&) in "/home/dexcs/OpenFOAM/OpenFOAM-2.1.x/platforms/linuxGccDPOpt/lib/libOpenFOAM.so"
#5  Foam::lduMatrix::preconditioner::addasymMatrixConstructorToTable<Foam::DILUPreconditioner>::New(Foam::lduMatrix::solver const&, Foam::dictionary const&) in "/home/dexcs/OpenFOAM/OpenFOAM-2.1.x/platforms/linuxGccDPOpt/lib/libOpenFOAM.so"
#6  Foam::lduMatrix::preconditioner::New(Foam::lduMatrix::solver const&, Foam::dictionary const&) in "/home/dexcs/OpenFOAM/OpenFOAM-2.1.x/platforms/linuxGccDPOpt/lib/libOpenFOAM.so"
#7  Foam::PBiCG::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/home/dexcs/OpenFOAM/OpenFOAM-2.1.x/platforms/linuxGccDPOpt/lib/libOpenFOAM.so"
#8  Foam::fvMatrix<double>::solve(Foam::dictionary const&) in "/home/dexcs/OpenFOAM/OpenFOAM-2.1.x/platforms/linuxGccDPOpt/lib/libfiniteVolume.so"
#9 
 in "/home/dexcs/OpenFOAM/OpenFOAM-2.1.x/platforms/linuxGccDPOpt/bin/electrostaticFoam"
#10 
 in "/home/dexcs/OpenFOAM/OpenFOAM-2.1.x/platforms/linuxGccDPOpt/bin/electrostaticFoam"
#11  __libc_start_main in "/lib/i386-linux-gnu/libc.so.6"
#12 
 in "/home/dexcs/OpenFOAM/OpenFOAM-2.1.x/platforms/linuxGccDPOpt/bin/electrostaticFoam"
浮動小数点例外 (コアダンプ)

大渕真志

unread,
Jun 7, 2013, 9:38:23 PM6/7/13
to OpenFOAM
4ヶ月前にチュートリアルのfvSchemesが変更され、divSchemesがupwindに修正されています。
limitedLinearでは発散するそうです。

https://github.com/OpenFOAM/OpenFOAM-2.1.x/commit/2f286908b37f5f25b1357495661493a70a7407c2


2013/6/8 初心者 <taji...@athena.ocn.ne.jp>

--
このメールは Google グループのグループ「OpenFOAM」の登録者に送られています。
このグループから退会し、メールの受信を停止するには、openfoam+u...@googlegroups.com にメールを送信します。
このグループに投稿するには、open...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/openfoam?hl=ja からこのグループにアクセスしてください。
その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
 
 

初心者

unread,
Jun 7, 2013, 11:50:15 PM6/7/13
to open...@googlegroups.com
ohbuchi 様
 
 
早速のご回答有難うございました。
 
fvSchemesの、divSchemesをupwindに修正して計算したところ、
正常に計算が終了しました。有難うございました。
limitedLinearでは発散するようです。
 
このケースファイルは定常の電場解析でしょうか。
もう一つの、 
 
mhdFoam > hartmann
ケースファイルは非定常の流れ場のある磁場解析なのではと
感じましたが正しいでしょうか。
 
電磁波解析のMaxwell方程式を将来的に解析したいのですが、
参考のケースファイルがなく、これらのtutorialを修正して
使用しなければならないかもと考えていました。
 
もし参考になるケースファイルが公開されている事例がありましたら
教えて頂けると参考になります。
イメージとしては室内で携帯電話などから発生する電磁波が
どのような電場と磁場を形成するかというイメージを解析したいと
考えていました。
 
今回はアドバイス有難うございました。
 
 
 
 
 

ohbuchi

unread,
Jun 8, 2013, 2:21:25 AM6/8/13
to open...@googlegroups.com
electrostaticFoamは静電場の計算、mhdFoamは磁場による力を受ける電磁流体の計算を行うものです。
マクスウェル方程式を直接扱えるソルバはOpenFOAMにはありません。
本格的な電磁場解析が目的であれば、他のソフトウエアを探したほうが良いと思います。
マクスウェル方程式では、磁場と電場が強く相互作用していますので、連成させて解く必要がありますが
正規版OpenFOAMにはブロック連成ソルバがないので弱連成になってしまい不利です。
また一般的な電磁場の計算法は、FDTD法や境界要素法、FEMだと思いますが、OpenFOAMはあくまで
FVM中心のライブラリです。
以上、ご参考まで。


2013年6月8日土曜日 12時50分15秒 UTC+9 初心者:

初心者

unread,
Jun 8, 2013, 2:44:32 AM6/8/13
to open...@googlegroups.com
ohbuchi 様
 
 
早速のご回答有難うございました。
 
下記の資料でOpenFOAMで解析している事例があり、
将来的に実施してみたいと考えていました。
 
Figure 3.1のケース、

SingleBarFoam1 (with A-V solver)
SingleBarFoam2 (with A-J solver)
 
のコードがAppendixに記載されていました。
電場と磁場を別々に解析して連成していないようにも
感じます。
 
FDTD法のご紹介有難うございます。
少しずつ勉強していきたいと思います。
 
                 記
 
 
 
 

初心者

unread,
Jun 10, 2013, 6:10:11 AM6/10/13
to OpenFOAM
paraFoamについて伺いたい事があり投稿させて頂きました。

FDTD法により単純な長方形の電磁波解析をMaxwell方程式を解析して
計算しました。3次元で電界E(V/m)、磁界H(V/m)がそれぞれ数値で
解析されました。時間発展で解析しています。

例えば電界の3次元数値をparaFoamで可視化することは可能なのでしょうか。
DEXCS2012を使用しています。

正規にOpenFOAMで計算すると時間発展フォルダーが自動的に
作成されていますが、このようなフォルダーを作成して可視化可能
なのでしょうか?

それは無理であり、別途、paraViewをインストールしてそちらで
単独に操作するのが良いのでしょうか。


アドバイス頂けると参考になります。




大渕真志

unread,
Jun 10, 2013, 6:58:41 AM6/10/13
to OpenFOAM
paraFoamは、paraview + OpenFOAM readerです。自作ソルバの可視化をしたいのならば
paraviewがサポートしているフォーマット(plot3dやvtkなど)を調べてその形式でファイル保存すれば良いです。ファイル名に追い番をつければ、時系列データとして認識させることも可能です。paraviewのマニュアルを本家のサイトから入手して調べると良いでしょう。
オープンCAE学会のHPに和訳版があります。



2013年6月10日 19:10 初心者 <taji...@athena.ocn.ne.jp>:

初心者

unread,
Jun 10, 2013, 8:59:21 AM6/10/13
to OpenFOAM
大渕 様


ご丁寧な解説ありがとうございました。

和訳版を勉強して、paraviewがサポートしているフォーマット(plot3dやvtkなど)を調べてその形式でファイル保存し、ファイル名に追い
番をつけて、時系列データとして可視化することにトライしてみます。

Youhei Takagi

unread,
Jun 10, 2013, 9:15:27 AM6/10/13
to open...@googlegroups.com
横から失礼します、高木と申します。

自作のfortranプログラムからvtkフォーマット形式の出力をし、
可視化したことがありますが、長方形の矩形領域で計算されて
いるならば、構造格子(structured grid)での出力も可能だと
思います。

可視化用データのコンバーターは各人それぞれですので、
自分のやりやすいように(再生産性重視)処理していただけると
よいかと思います。

以上誤算等までに。

初心者

unread,
Jun 10, 2013, 4:21:54 PM6/10/13
to OpenFOAM
高木 様


アドバイスありがとうございます。

fortranで計算させた結果でした。vtkフォーマット形式で出力できるとは
知りませんでした。
構造格子(structured grid)出力というのも知りませんでした。
色々試してみたいと思います。

ありがとうございました。

初心者

unread,
Jun 11, 2013, 6:07:27 AM6/11/13
to OpenFOAM
いつも大変お世話になっております。

fortranでvtk形式出力を実施してみました。
次のように変換しました。
nx,ny,nzはそれぞれ、20,100,10です。
20000接点の長方形です。

【fortran】

subroutine output

open(200,file="field.vtk")

write(200,"('# vtk DataFile Version 3.0')")
write(200,"('data000.vtk')")
write(200,"('ASCII ')")
write(200,"('DATASET STRUCTURED_POINTS')")
write(200,"('DIMENSIONS ',3(1x,i3))") nx, ny, nz
write(200,"('ORIGIN ',3(f3.1,1x))") 0.0, 0.0, 0.0
write(200,"('ASPECT_RATIO ',3(f3.1,1x))") 1.0, 1.0, 1.0

write(200,"('POINT_DATA ',i9)") nx*ny*nz
write(200,"('SCALARS E(V/m) float')")
write(200,"('LOOKUP_TABLE default')")

do k=1,nz
do j=1,ny
do i=1,nx

write(200,"(3(f9.6,1x))") dabs(ex(i,j,k)), dabs(ey(i,j,k)),
dabs(ez(i,j,k))

end do
end do
end do

close(200)

return
end subroutine

【出力結果】

# vtk DataFile Version 3.0
data000.vtk
ASCII
DATASET STRUCTURED_POINTS
DIMENSIONS 20 100 10
ORIGIN 0.0 0.0 0.0
ASPECT_RATIO 1.0 1.0 1.0
POINT_DATA 20000
SCALARS E(V/m) float
LOOKUP_TABLE default
0.0000 0.0000 0.0000
0.0000 0.0000 0.0019
0.0000 0.0000 0.0038
0.0000 0.0000 0.0055
0.0000 0.0000 0.0070
0.0000 0.0000 0.0084
0.0000 0.0000 0.0095
0.0000 0.0000 0.0103
0.0000 0.0000 0.0108
0.0000 0.0000 0.0109
0.0000 0.0000 0.0108
0.0000 0.0000 0.0103
0.0000 0.0000 0.0095
0.0000 0.0000 0.0084
0.0000 0.0000 0.0070
0.0000 0.0000 0.0055
0.0000 0.0000 0.0038
0.0000 0.0000 0.0019
0.0000 0.0000 0.0000

Ez電界のみに電界ソースを与えたので、Z成分のみ
計算結果が出ました。

paraViewで開いたところ、

ERROR: In C:\DBD\pvs-x32\paraview\src\paraview\VTK\IO\Legacy
\vtkDataReader.cxx, line 921
vtkStructuredPointsReader (165BF880): Unsupported point attribute
type: 0.0049 for file: D:\para\field.vtk

というメッセージが出ました。
どのような意味でどうすればこのエラーメッセージを解消出来るでしょうか。

このメッセージを無視して可視化すると、一応、可視化は実施されました。
しかし、このエラーメッセージの影響なのか、違った可視化となっています。

sliceのZ断面中央で可視化しましたが、違った形となっていました。
vtk出力数値は同じでした。
同じ断面のエクセルでの等値面とparaViewでの画像が違っていました。


アドバイス頂けると参考になります。



nakagawa

unread,
Jun 11, 2013, 6:53:59 AM6/11/13
to open...@googlegroups.com
Dataset Attribute がスカラーになっているのに,ベクトルデータを書き出しているからではないでしょうか。
スカラーだと解釈されていて,データ数があわないためでは。

SCALARS の部分を,VECTORS してはどうでしょう?

2013年6月11日火曜日 19時07分27秒 UTC+9 初心者:

Youhei Takagi

unread,
Jun 11, 2013, 10:05:20 AM6/11/13
to open...@googlegroups.com
高木です。

"0.0049"の値が何行目で出てくるかをチェックすれば、原因が
わかるかもしれません。中川先生がおっしゃるように、ベクトル
データをスカラーデータとして読んでいるならば、読み込みの
1/3ぐらいでエラーとなるはずです。

なお、直交不等間隔格子でしたら、rectilinearというのも使えます。

また、可視化部分のサブルーチンは個別にチェックできるので、
あらかじめ小さなデータ(たとえばnx=ny=nz=3)を作ってチェック
するのもよいかもしれません。

以上ご参考までに。OpenFOAMからは離れてしまいましたが。

初心者

unread,
Jun 11, 2013, 11:18:06 PM6/11/13
to OpenFOAM
中川 様
高木 様


ご回答有難うございます。

電磁場はベクトルのためにSCALARS の部分を,VECTORSにすると
前回より電磁場の拡散の様子が可視化になりました。

ところが、次のようなメッセージが出ました。

Generic Warning: In C:\DBD\pvs-x32\paraview\src\paraview\VTK\IO\Legacy
\vtkDataReader.cxx, line 1388
Error reading ascii data. Possible mismatch of datasize with
declaration.

ASCII形式の読み込みエラー、データーサイズが宣言とミスマッチ
という意味だと思います。

高木様のアドバイスのとおり、サイズを小さくして
(たとえばnx=ny=nz=3)を作ってチェックしてみましたが
エラーメッセージは同様でした。

POINTSサイズは3*3*3=27ですし、合致していると思うのですが。
ポイントサイズと次元も合致しており分からなくなりました。

もしかすると、上のプログラムはvtkファイル書式の要素数等の記載が
足りなくエラーになっているのかもしれません。

昨夜から小サイズでも同様なエラーメッセージが出て、
悪戦苦闘しており返事が大変遅れてしまいました。
申し訳ありませんでした。

すもも

unread,
Jun 11, 2013, 11:53:10 PM6/11/13
to open...@googlegroups.com
こんにちわ。

LOOKUP_TABLE default

の行が必要ないのでは?

S Nakagawa

unread,
Jun 12, 2013, 4:29:02 AM6/12/13
to open...@googlegroups.com
あぁ,たしかに,すももさんのおっしゃる通りですね。
VECTORSにすれば,ルックアップテーブルが不要ですね。
もし,スカラーにするなら,スカラー数を書けば良いみたいですね。(4コまでなら.)
テストファイル添付します。



2013年6月12日 12:53 すもも <penguin...@gmail.com>:
こんにちわ。

LOOKUP_TABLE default

の行が必要ないのでは?


--
このメールは Google グループのグループ「OpenFOAM」の登録者に送られています。
このグループから退会し、メールの受信を停止するには、openfoam+u...@googlegroups.com にメールを送信します。
このグループに投稿するには、open...@googlegroups.com にメールを送信してください。
http://groups.google.com/group/openfoam?hl=ja からこのグループにアクセスしてください。
その他のオプションについては、https://groups.google.com/groups/opt_out にアクセスしてください。
 
 



--
(外出中のため,学外メールから送信しています。)
〒939-0398
富山県射水市黒河5180
富山県立大学 機械システム工学科
機械エネルギー工学講座
准教授 中川慎二
TEL  (0766)56-7500(内線386)
FAX  (0766)56-6131
E-mail snak...@pu-toyama.ac.jp
http://fluid.pu-toyama.ac.jp/
testVector.vtk
testScalar.vtk

初心者

unread,
Jun 12, 2013, 6:17:22 AM6/12/13
to OpenFOAM
中川先生 様
高木   様
すもも  様


ご回答有難うございます。

結論から申しますと解決致しました。
原因は私のVTK形式への認識の低さでした。

計算は3次元の電場スカラー量を計算してZ成分に格納していました。
よって、接点数20,000データーはZ成分だけの20,000として、
SCALARSとしたら可視化が正しく出ました。
エラー表示も消えました。

つい、3次元ではデーターも3成分として、VECTORSにすれが良いかと
勘違いしていました。X,Y成分は全て0であり、さらに接点20,000個と
データー数20,000*3成分でエラーが出ていたのだと思います。

色々とご指導・アドバイスありがとうございました。
DEXCSではGZファイルやblockMeshから作成しなければならず、
paraViewに読み込ませた方が早いと取り組んでいました。

中川先生からのファイルも併せて、今後、ベクトル表示や
他の計算結果からも可視化に取り組んで行きたいと思います。
今回はありがとうございました。勉強になりました。




初心者

unread,
Jun 12, 2013, 9:00:50 AM6/12/13
to OpenFOAM
中川先生 様


添付して頂いたファイルに追加して実行したところ、
スカラーでもベクトルでも成功しました。

VECTORSにすれば,ルックアップテーブルが不要でした。
スカラーなら,スカラー数を書けば良いみたいです。(3成分なので3とする)
たった一行や一文字の違いでエラーになっていました。

色々とご指導ありがとうございました。
大変勉強になりました。
Reply all
Reply to author
Forward
0 new messages