Download OpenFOAM Programmer's Guide PDF

TitleOpenFOAM Programmer's Guide
LanguageEnglish
File Size5.4 MB
Total Pages102
Table of Contents
                            原文著作権表示
	1 Definitions
	2 Fair Dealing Rights.
	3 License Grant.
	4 Restrictions.
	5 Representations, Warranties and Disclaimer
	6 Limitation on Liability.
	7 Termination
	8 Miscellaneous
目次
第1章 テンソル数学
	1.1 座標系
	1.2 テンソル
		1.2.1 テンソル表記
	1.3 テンソルの代数演算
		1.3.1 内積
		1.3.2 二つのテンソルの二重内積
		1.3.3 二つの3階テンソルの三重内積
		1.3.4 外積
		1.3.5 二つのベクトルのクロス積
		1.3.6 その他の一般的なテンソル演算
		1.3.7 幾何変換と単位テンソル
		1.3.8 便利なテンソルの恒等式
		1.3.9 2階テンソル特有の演算
		1.3.10 スカラ特有の演算
	1.4 OpenFOAMのテンソルクラス
		1.4.1 OpenFOAMにおけるテンソルの代数演算
	1.5 物理次元の単位
第2章 離散化手法
	2.1 微分演算子
		2.1.1 勾配
		2.1.2 発散
		2.1.3 回転
		2.1.4 ラプラシアン
		2.1.5 時間微分
	2.2 離散化の概要
		2.2.1 OpenFOAMのリストと場
	2.3 解析領域の離散化
		2.3.1 OpenFOAMにおけるメッシュ定義
		2.3.2 OpenFOAMにおけるgeometricFieldの定義
	2.4 方程式の離散化
		2.4.1 ラプラシアン項
		2.4.2 対流項
		2.4.3 1階の時間微分
		2.4.4 2階の時間微分
		2.4.5 発散
		2.4.6 勾配
		2.4.7 勾配の勾配の平方
		2.4.8 回転
		2.4.9 湧き出し項
		2.4.10 その他の陽的な離散化スキーム
	2.5 時間の離散化
		2.5.1 OpenFOAMにおける時間微分の取扱い
	2.6 境界条件
		2.6.1 物理的な境界条件
第3章 OpenFOAMの使用例
	3.1 円柱まわりの流れ
		3.1.1 問題設定
		3.1.2 potentialFoamについて
		3.1.3 メッシュ生成
		3.1.4 境界条件と初期条件
		3.1.5 ケースの実行
	3.2 バック・ステップ上の定常乱流
		3.2.1 問題設定
		3.2.2 メッシュ生成
		3.2.3 境界条件と初期条件
		3.2.4 ケースの制御
		3.2.5 ケースの実行とポスト処理
	3.3 フォワード・ステップ上の超音速流れ
		3.3.1 問題設定
		3.3.2 メッシュ生成
		3.3.3 ケースの実行
		3.3.4 課題
	3.4 加圧された水タンクの減圧
		3.4.1 問題設定
		3.4.2 メッシュ生成
		3.4.3 実行の準備
		3.4.4 ケースの実行
		3.4.5 メッシュの改良による解の改善
	3.5 磁性液体流れ
		3.5.1 問題設定
		3.5.2 メッシュ生成
		3.5.3 ケースの実行
索引
                        
Document Text Contents
Page 51

3.1 円柱まわりの流れ P-51

38 writePrecision 6;
39
40 writeCompression off;
41
42 timeFormat general;
43
44 timePrecision 6;
45
46 runTimeModifiable true;
47
48 functions
49 {
50 difference
51 {
52 // Load the library containing the ’coded’ functionObject
53 functionObjectLibs ("libutilityFunctionObjects.so");
54 type coded;
55 // Name of on-the-fly generated functionObject
56 redirectType error;
57 code
58 #{
59 // Lookup U
60 Info<< "Looking up field U\n" << endl;
61 const volVectorField& U = mesh().lookupObject<volVectorField>("U");
62
63 Info<< "Reading inlet velocity uInfX\n" << endl;
64
65 scalar ULeft = 0.0;
66 label leftI = mesh().boundaryMesh().findPatchID("left");
67 const fvPatchVectorField& fvp = U.boundaryField()[leftI];
68 if (fvp.size())
69 {
70 ULeft = fvp[0].x();
71 }
72 reduce(ULeft, maxOp<scalar>());
73
74 dimensionedScalar uInfX
75 (
76 "uInfx",
77 dimensionSet(0, 1, -1, 0, 0),
78 ULeft
79 );
80
81 Info << "U at inlet = " << uInfX.value() << " m/s" << endl;
82
83
84 scalar magCylinder = 0.0;
85 label cylI = mesh().boundaryMesh().findPatchID("cylinder");
86 const fvPatchVectorField& cylFvp = mesh().C().boundaryField()[cylI];
87 if (cylFvp.size())
88 {
89 magCylinder = mag(cylFvp[0]);
90 }
91 reduce(magCylinder, maxOp<scalar>());
92
93 dimensionedScalar radius
94 (
95 "radius",
96 dimensionSet(0, 1, 0, 0, 0),
97 magCylinder
98 );
99

100 Info << "Cylinder radius = " << radius.value() << " m" << endl;
101
102 volVectorField UA
103 (
104 IOobject
105 (
106 "UA",
107 mesh().time().timeName(),
108 U.mesh(),

Open∇FOAM-2.1.1

Page 52

P-52 第 3章 OpenFOAMの使用例

109 IOobject::NO_READ,
110 IOobject::AUTO_WRITE
111 ),
112 U
113 );
114
115 Info<< "\nEvaluating analytical solution" << endl;
116
117 const volVectorField& centres = UA.mesh().C();
118 volScalarField magCentres(mag(centres));
119 volScalarField theta(acos((centres & vector(1,0,0))/magCentres));
120
121 volVectorField cs2theta
122 (
123 cos(2*theta)*vector(1,0,0)
124 + sin(2*theta)*vector(0,1,0)
125 );
126
127 UA = uInfX*(dimensionedVector(vector(1,0,0))
128 - pow((radius/magCentres),2)*cs2theta);
129
130 // Force writing of UA (since time has not changed)
131 UA.write();
132
133 volScalarField error("error", mag(U-UA)/mag(UA));
134
135 Info<<"Writing relative error in U to " << error.objectPath()
136 << endl;
137
138 error.write();
139 #};
140 }
141 }
142
143
144 // ************************************************************************* //

potentialFoamは,圧力の方程式について反復計算を行い,反復が成功すればラプラシアン項
の非直交補正に合致する陽的な項が更新されます.圧力の方程式についての反復計算の回数

は,controlDictの中の nNonOrthogonalCorrectorsキーワードで制御します.一つの例とし
て,nNonOrthogonalCorrectorsを 0に設定すれば,反復は行われません.つまり,圧力の方
程式が 1回だけ解かれ,非直交補正は行われません.その解を図 3.3 (a) に示します(定常状態
の解析が完了した t = 1において).図 3.3 (c) に示す解析解のように,領域を横切るなめらかな
流線となる解を期待しているのですが,例えば,ブロック 0,1,そして 3の交点のように,メッ
シュの非直交性が強い領域において,明らかな誤差があります.nNonOrthogonalCorrectors

を 3に設定し,非直交補正を加えて再度ケースを実行してみましょう.図 3.3 (b) のように,解
はなめらかな流線となり,非直交性に起因する顕著な誤差はありません.

3.2 バック・ステップ上の定常乱流

この例題では,後方に面する段差上を流れる定常乱流について調べます.この問題設定は,

PitzとDailyが実験的に調べたものに由来しており,数値解との比較することができます.こ
の例題では,新たにOpenFOAMの以下のような特徴を紹介します.

• 完全なメッシュの勾配付け機能を利用した,blockMeshによるメッシュ生成
• 定常乱流

Open∇FOAM-2.1.1

Page 101

P-101

smapToFoam U-96
snappyHexMesh U-94, U-147
splitCells U-96
splitMesh U-96
splitMeshRegions U-96
star3ToFoam U-95
star4ToFoam U-95
starToFoam U-155
steadyParticleTracks U-97
stitchMesh U-96
streamFunction U-97
stressComponents U-97
subsetMesh U-96
surfaceAdd U-98
surfaceAutoPatch U-98
surfaceCheck U-98
surfaceClean U-98
surfaceCoarsen U-98
surfaceConvert U-98
surfaceFeatureConvert U-98
surfaceFeatureExtract U-98, U-150
surfaceFind U-98
surfaceInertia U-98
surfaceMeshConvert U-98
surfaceMeshConvertTesting U-98
surfaceMeshExport U-98
surfaceMeshImport U-98
surfaceMeshInfo U-98
surfaceMeshTriangulate U-98
surfaceOrient U-98
surfacePointMerge U-98
surfaceRedistributePar U-99
surfaceRefineRedGreen U-99
surfaceSmooth U-99
surfaceSplitByPatch U-99
surfaceSplitNonManifolds U-99
surfaceSubset U-99
surfaceToPatch U-99
surfaceTransformPoints U-99
tetgenToFoam U-95
topoSet U-96
transformPoints U-96
uprime U-97
viewFactorGen U-94
vorticity U-97
wallFunctionTable U-94
wallGradU U-97
wallHeatFlux U-97
wallShearStress U-97
wdot U-98
writeCellCentres U-98
writeMeshObj U-95
yPlusLES U-97
yPlusRAS U-97
zipUpMesh U-96

陽解法
時間の離散化 P-41


ライブラリ U-73

autoMesh U-100
barotropicCompressibilityModels U-102
basicSolidThermo U-102
basicThermophysicalModels U-101
blockMesh U-100
chemistryModel U-102
Chung U-102
coalCombustion U-101
compressibleLESmodels U-104
compressibleRASModels U-103
conversion U-101
decompositionMethods U-101
dieselSpray U-101
distributed U-101
distributionModels U-101
dsmc U-101
dynamicFvMesh U-101
dynamicMesh U-100
edgeMesh U-101
engine U-101
fieldFunctionObjects U-100
fileFormats U-101
finiteVolume U-100
foamCalcFunctions U-100
forces U-100
fvDOM U-102
fvMotionSolvers U-101
genericFvPatchField U-101
incompressibleLESmodels U-103
incompressibleRASModels U-103
incompressibleTransportModels P-55,

U-104
incompressibleTurbulenceModels P-55
jobControl U-100
lagrangian U-101
lagrangianIntermediate U-101
laminarFlameSpeedModels U-102
LESdeltas U-103
LESfilters U-103
linear U-102
liquidMixtureProperties U-102
liquidProperties U-102
meshTools U-101
MGridGenGAMGAgglomeration U-101
molecularMeasurements U-101
molecule U-101
ODE U-101
OpenFOAM U-100
OSspecific U-101
P1 U-102
pairPatchAgglomeration U-101
postCalc U-100
potential U-101
primitive P-23
ptscotchDecomp U-101

Open∇FOAM-2.1.1

Page 102

P-102 索引

PV3FoamReader U-165
PVFoamReader U-165
radiationModels U-102
randomProcesses U-101
reactionThermophysicalModels U-101
reconstruct U-101
sampling U-100
scotchDecomp U-101
SLGThermo U-102
solid U-102
solidMixtureProperties U-102
solidParticle U-101
solidProperties U-102
specie U-102
surfMesh U-101
systemCall U-100
thermalPorousZone U-103
thermophysical U-183
thermophysicalFunctions U-102
topoChangeFvMesh U-101
triSurface U-101
utilityFunctionObjects U-100
viewFactor U-102
vtkFoam U-165
vtkPV3Foam U-165
Wallis U-102

ラプラシアン P-36
乱流
運動エネルギ U-43
消散 U-43
定常 P-52
長さスケール U-43

乱流モデル
RAS U-43

リスタート U-41
リスト P-29
例題
円柱まわりの流れ P-45
タンクの減圧 P-63
バック・ステップ上の流れ P-52
フォワード・ステップ上の超音速流れ P-59

レイノルズ数 U-19, U-23
連続体
力学 P-15

Open∇FOAM-2.1.1

Similer Documents