OpenFOAM の境界条件をまとめよう!

Fumiya Nozaki
最終更新日: 2015年6月14日
日本語版
OpenFOAM
境界条件
Boundary Conditions
2
cylindricalInletVelocity
 “cylindricalInletVelocity” を使用することで,
流速の境界条件を円柱座標系 𝑈𝑟,𝑈 𝜃,𝑈𝑧 で指定することができます.
myPatch
{
type cylindricalInletVelocity;
axis (0 0 1);
centre (0 0 0);
axialVelocity constant 30;
radialVelocity constant -10;
rpm constant 100;
}
書式
axis
𝑈𝑟
𝑈 𝜃
𝑈𝑧
centre
centre
3
cylindricalInletVelocity
• 円柱座標系の軸 (Z) 方向を “axis” で指定します.規格化されるので単位ベクトルで
なくても問題ありません.
• 上で指定した軸上の点を “centre” で指定します.
• 軸方向の速度成分 𝑈𝑧 の大きさを “axialVelocity” で指定します.指定値が正の場合
には “axis” と同じ向き,負の場合には “axis” と逆向きになります.
• 径方向の速度成分 𝑈𝑟 の大きさを “radialVelocity” で指定します.指定値が正の場合
には軸から離れる方向を向き,負の場合には軸の方を向きます.
• 周方向の速度成分 𝑈 𝜃 は,”rpm” と軸からの距離より次式で計算されます.ここ
で,”rpm” は軸周りの1分間当たりの回転数を意味しています.
𝑈 𝜃 =
𝑟𝑝𝑚 × 2𝜋
60
× 軸からの距離
• 周方向速度の向きは,”rpm” が正の場合には右ねじの法則に従
います.負の場合には逆向きになります.
axis
4
cylindricalInletVelocity
void Foam::cylindricalInletVelocityFvPatchVectorField::updateCoeffs()
{
if (updated())
{
return;
}
const scalar t = this->db().time().timeOutputValue();
const scalar axialVelocity = axialVelocity_->value(t);
const scalar radialVelocity = radialVelocity_->value(t);
const scalar rpm = rpm_->value(t);
vector hatAxis = axis_/mag(axis_);
const vectorField r(patch().Cf() - centre_);
const vectorField d(r - (hatAxis & r)*hatAxis);
tmp<vectorField> tangVel
(
(rpm*constant::mathematical::pi/30.0)*(hatAxis) ^ d
);
operator==(tangVel + hatAxis*axialVelocity + radialVelocity*d/mag(d));
fixedValueFvPatchField<vector>::updateCoeffs();
}
5
fixedMean
 “fixedMean” を使用することで,フェイスの面積 𝑺 𝑓 を重みとした境界上の物理量
の平均値を指定することができます.
outlet
{
type fixedMean;
meanValue 10.0;
value uniform 0.0;
}
書式
outlet
𝑆𝑓 𝑝𝑓
𝑆𝑓𝑓
= 10.0
meanValue
6
fixedMean
0100 template<class Type>
0101 void fixedMeanFvPatchField<Type>::updateCoeffs()
0102 {
0103 if (this->updated())
0104 {
0105 return;
0106 }
0107
0108 Field<Type> newValues(this->patchInternalField());
0109
0110 Type meanValuePsi =
0111 gSum(this->patch().magSf()*newValues)
0112 /gSum(this->patch().magSf());
0113
0114 if (mag(meanValue_) > SMALL && mag(meanValuePsi)/mag(meanValue_) > 0.5)
0115 {
0116 newValues *= mag(meanValue_)/mag(meanValuePsi);
0117 }
0118 else
0119 {
0120 newValues += (meanValue_ - meanValuePsi);
0121 }
0122
0123 this->operator==(newValues);
0124
0125 fixedValueFvPatchField<Type>::updateCoeffs();
0126 }
境界に隣接するセルのセル中心値
7
fixedMean
• 110-112行:境界に隣接するセルのセル中心値を使って,meanValuePsi を計算しま
す.これは,セル中心値で評価した平均値です.
• 114-121行:指定された平均値 meanValue_ と上で計算した meanValuePsi とから,
次の関係を満たすように境界値を決定します.
𝑆𝑓 𝜙 𝑓𝑓
𝑆𝑓𝑓
= 𝑚𝑒𝑎𝑛𝑉𝑎𝑙𝑢𝑒
境界値
8
SRFVelocity
 “SRFVelocity” を使用することで,
SRFSimpleFoam や SRFPimpleFoam で解かれる相対速度 Urel に関する境界条件を,
相対速度または絶対速度で指定することができます.
 慣性座標系の 絶対速度 で指定する場合
• “relative” を “no” に設定
• “inletValue” で絶対速度の分布を指定
 回転座標系の 相対速度 で指定する場合
• “relative” を “yes” に設定
• “inletValue” で相対速度の分布を指定
inlet
{
type SRFVelocity;
inletValue uniform ( 0 0 -10 );
relative no;
value uniform ( 0 0 0 );
}
書式
𝒖 = 𝒖 𝑅 + 𝜴 × 𝒓
絶対速度
相対速度
9
SRFVelocity
void Foam::SRFVelocityFvPatchVectorField::updateCoeffs()
{
if (updated())
{
return;
}
// If not relative to the SRF include the effect of the SRF
if (!relative_)
{
// Get reference to the SRF model
const SRF::SRFModel& srf =
db().lookupObject<SRF::SRFModel>("SRFProperties");
// Determine patch velocity due to SRF
const vectorField SRFVelocity(srf.velocity(patch().Cf()));
operator==(-SRFVelocity + inletValue_);
}
// If already relative to the SRF simply supply the inlet value as a fixed
// value
else
{
operator==(inletValue_);
}
fixedValueFvPatchVectorField::updateCoeffs();
}
“relative” を “no” に設定した場合
𝜴 × 𝒓 の計算
𝒖 𝑅 = −𝜴 × 𝒓 + 𝒖
“relative” を “yes” に設定した場合
SRFModel.C の 160 行目
10
turbulentIntensityKineticEnergyInlet
 “turbulentIntensityKineticEnergyInlet” 境界条件を使用することで,
乱流エネルギー 𝑘 の境界値を乱流強度 𝐼 から設定できます.
 境界上の各フェイス中心点における乱流エネルギーが次式から計算されます.
𝑘 =
3
2
𝑈 𝐼 2
⇒ 流速が分布をもつ場合には,乱流エネルギーも分布をもちます.
𝐼: intensity
inlet
{
type turbulentIntensityKineticEnergyInlet;
intensity 0.05; // 乱流強度 5%
U U; // 流速ベクトル名
value uniform 1; // 初期での可視化に使用
}
書式
11
turbulentMixingLengthFrequencyInlet
 “turbulentMixingLengthFrequencyInlet” 境界条件を使用することで,
比散逸率 𝜔 の境界値を混合長 𝐿 から設定できます.
 境界上の各フェイス中心点における比散逸率が次式から計算されます.
𝜔 =
𝑘
𝐶𝜇
0.25
𝐿
⇒ 乱流エネルギー 𝑘 が分布をもつ場合には,比散逸率も分布をもちます.
inlet
{
type turbulentMixingLengthFrequencyInlet;
mixingLength 0.005; // 混合長[m]
value uniform 1;
}
書式
𝐿: mixingLength
モデル定数 𝐶𝜇
(デフォルト値 0.09)
12
flowRateInletVelocity
 “flowRateInletVelocity” 境界条件を使用することで,
流速を体積流量 [m3/s] または,質量流量 [kg/s] で指定できます.
myPatch
{
type flowRateInletVelocity;
volumetricFlowRate 0.2;
value uniform (0 0 0);
}
myPatch
{
type flowRateInletVelocity;
massFlowRate 0.2;
rho rho;
rhoInlet 1.0;
}
書式
 体積流量の値は,
『volumetricFlowRate』
で指定し,質量流量の値は,
『massFlowRate』
で指定します.
 この条件を使用した場合,
境界上の流速ベクトルは,
境界接線成分は0で,
境界法線成分のみ持ちます.
 また,境界法線成分は,
境界内で一様に設定され,
分布を持ちません.
体積流量の指定
質量流量の指定
13
flowRateInletVelocity
void Foam::flowRateInletVelocityFvPatchVectorField::updateCoeffs()
{
if (updated())
{
return;
}
const scalar t = db().time().timeOutputValue();
// a simpler way of doing this would be nice
const scalar avgU = -flowRate_->value(t)/gSum(patch().magSf());
tmp<vectorField> n = patch().nf();
if (volumetric_ || rhoName_ == "none")
{
// volumetric flow-rate or density not given
operator==(n*avgU);
}
設定した流量を境界面積で
割り,平均流速 avgU を計算
境界単位法線ベクトル(領域外向き)
 設定された体積流量から境界上の流速を計算しているコード
• この境界条件は流入境界での使用を想定しているため,流量を正の値に設定した場合に,流速の向
きが計算領域内を向くように,avgU の計算式にマイナス符号が付いています.
境界上の流速を平均流速×単位法線ベクトルで計算
14
mappedFixedValue
 “mappedFixedValue” 境界条件を使用することで,
発達した流れ場の物理量の分布を流入境界に与えることができます.
inlet
{
type mapped;
fieldName U;
setAverage true;
average (0 0 0.5);
interpolationScheme cell;
value uniform (0 0 0.5);
}
書式
inlet
{
type mappedPatch;
inGroups 1(mappedPatch);
nFaces 100;
startFace 10000;
sampleMode nearestCell;
sampleRegion region0;
samplePatch none;
offsetMode uniform;
offset (0 0 0.1);
}
boundary ファイル
inlet
射影
位置の指定
1 of 14

Recommended

Turbulence Models in OpenFOAM by
Turbulence Models in OpenFOAMTurbulence Models in OpenFOAM
Turbulence Models in OpenFOAMFumiya Nozaki
13.7K views50 slides
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について by
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件についてOpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件についてFumiya Nozaki
20.4K views40 slides
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)- by
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-Fumiya Nozaki
62K views139 slides
OpenFOAMによる気液2相流解析の基礎と設定例 by
OpenFOAMによる気液2相流解析の基礎と設定例OpenFOAMによる気液2相流解析の基礎と設定例
OpenFOAMによる気液2相流解析の基礎と設定例takuyayamamoto1800
4.3K views118 slides
OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)- by
OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-
OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-Fumiya Nozaki
13.1K views18 slides
Boundary Conditions in OpenFOAM by
Boundary Conditions in OpenFOAMBoundary Conditions in OpenFOAM
Boundary Conditions in OpenFOAMFumiya Nozaki
48.9K views196 slides

More Related Content

What's hot

OpenFOAMにおけるDEM計算の力モデルの解読 by
OpenFOAMにおけるDEM計算の力モデルの解読OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読takuyayamamoto1800
6.7K views49 slides
OpenFOAMソルバの実行時ベイズ最適化 by
OpenFOAMソルバの実行時ベイズ最適化OpenFOAMソルバの実行時ベイズ最適化
OpenFOAMソルバの実行時ベイズ最適化Masashi Imano
888 views23 slides
OpenFOAMにおける混相流計算 by
OpenFOAMにおける混相流計算OpenFOAMにおける混相流計算
OpenFOAMにおける混相流計算takuyayamamoto1800
15.8K views32 slides
OpenFOAM の Function Object 機能について by
OpenFOAM の Function Object 機能についてOpenFOAM の Function Object 機能について
OpenFOAM の Function Object 機能についてFumiya Nozaki
23.1K views21 slides
OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方 by
OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方
OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方takuyayamamoto1800
13.3K views40 slides
OpenFOAMのinterfoamによる誤差 by
OpenFOAMのinterfoamによる誤差OpenFOAMのinterfoamによる誤差
OpenFOAMのinterfoamによる誤差takuyayamamoto1800
5.5K views14 slides

What's hot(20)

OpenFOAMにおけるDEM計算の力モデルの解読 by takuyayamamoto1800
OpenFOAMにおけるDEM計算の力モデルの解読OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読
takuyayamamoto18006.7K views
OpenFOAMソルバの実行時ベイズ最適化 by Masashi Imano
OpenFOAMソルバの実行時ベイズ最適化OpenFOAMソルバの実行時ベイズ最適化
OpenFOAMソルバの実行時ベイズ最適化
Masashi Imano888 views
OpenFOAM の Function Object 機能について by Fumiya Nozaki
OpenFOAM の Function Object 機能についてOpenFOAM の Function Object 機能について
OpenFOAM の Function Object 機能について
Fumiya Nozaki23.1K views
OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方 by takuyayamamoto1800
OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方
OpenFOAMの混相流用改造solver(S-CLSVOF法)の設定・使い方
takuyayamamoto180013.3K views
OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』 by Fumiya Nozaki
OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』
OpenFOAM v2.3.0のチュートリアル 『oscillatingInletACMI2D』
Fumiya Nozaki9K views
ParaviewでのParticle Tracerを用いた可視化 by takuyayamamoto1800
ParaviewでのParticle Tracerを用いた可視化ParaviewでのParticle Tracerを用いた可視化
ParaviewでのParticle Tracerを用いた可視化
takuyayamamoto18007.8K views
OpenFoamの混相流solver interFoamのパラメータによる解の変化 by takuyayamamoto1800
OpenFoamの混相流solver interFoamのパラメータによる解の変化OpenFoamの混相流solver interFoamのパラメータによる解の変化
OpenFoamの混相流solver interFoamのパラメータによる解の変化
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた by Fumiya Nozaki
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみたオープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
Fumiya Nozaki23K views
PreCICE CHT with OpenFOAM and CalculiX by 守淑 田村
PreCICE CHT with OpenFOAM and CalculiXPreCICE CHT with OpenFOAM and CalculiX
PreCICE CHT with OpenFOAM and CalculiX
守淑 田村492 views
OpenFOAMを用いた計算後の等高面データの取得方法 by takuyayamamoto1800
OpenFOAMを用いた計算後の等高面データの取得方法OpenFOAMを用いた計算後の等高面データの取得方法
OpenFOAMを用いた計算後の等高面データの取得方法
takuyayamamoto18004.3K views
Dynamic Mesh in OpenFOAM by Fumiya Nozaki
Dynamic Mesh in OpenFOAMDynamic Mesh in OpenFOAM
Dynamic Mesh in OpenFOAM
Fumiya Nozaki120.8K views
OpenFOAMによる混相流シミュレーション入門 by takuyayamamoto1800
OpenFOAMによる混相流シミュレーション入門OpenFOAMによる混相流シミュレーション入門
OpenFOAMによる混相流シミュレーション入門
takuyayamamoto18001.1K views
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読 by takuyayamamoto1800
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
takuyayamamoto18004.7K views
OpenFOAMに実装したS-CLSVOF法検証(静止気泡のLaplace圧) by takuyayamamoto1800
OpenFOAMに実装したS-CLSVOF法検証(静止気泡のLaplace圧)OpenFOAMに実装したS-CLSVOF法検証(静止気泡のLaplace圧)
OpenFOAMに実装したS-CLSVOF法検証(静止気泡のLaplace圧)
「輸送方程式のソース項の実装 Ver-2.1の新機能Field sources」OpenFOAM勉強会 for beginner@関東,2012年04月21日 by Masashi Imano
「輸送方程式のソース項の実装 Ver-2.1の新機能Field sources」OpenFOAM勉強会 for beginner@関東,2012年04月21日「輸送方程式のソース項の実装 Ver-2.1の新機能Field sources」OpenFOAM勉強会 for beginner@関東,2012年04月21日
「輸送方程式のソース項の実装 Ver-2.1の新機能Field sources」OpenFOAM勉強会 for beginner@関東,2012年04月21日
Masashi Imano1.8K views

More from Fumiya Nozaki

Basic Boundary Conditions in OpenFOAM v2.4 by
Basic Boundary Conditions in OpenFOAM v2.4Basic Boundary Conditions in OpenFOAM v2.4
Basic Boundary Conditions in OpenFOAM v2.4Fumiya Nozaki
5.4K views1 slide
blockCoupledSwirlTestチュートリアル by
blockCoupledSwirlTestチュートリアルblockCoupledSwirlTestチュートリアル
blockCoupledSwirlTestチュートリアルFumiya Nozaki
2.5K views15 slides
CAESES Free チュートリアル by
CAESES Free チュートリアルCAESES Free チュートリアル
CAESES Free チュートリアルFumiya Nozaki
2.1K views20 slides
CAESES-FFW,GridPro,OpenFOAMを使用した形状最適化事例#1 by
CAESES-FFW,GridPro,OpenFOAMを使用した形状最適化事例#1CAESES-FFW,GridPro,OpenFOAMを使用した形状最適化事例#1
CAESES-FFW,GridPro,OpenFOAMを使用した形状最適化事例#1Fumiya Nozaki
3.6K views69 slides
Limited Gradient Schemes in OpenFOAM by
Limited Gradient Schemes in OpenFOAMLimited Gradient Schemes in OpenFOAM
Limited Gradient Schemes in OpenFOAMFumiya Nozaki
11K views19 slides
Spatial Interpolation Schemes in OpenFOAM by
Spatial Interpolation Schemes in OpenFOAMSpatial Interpolation Schemes in OpenFOAM
Spatial Interpolation Schemes in OpenFOAMFumiya Nozaki
36.1K views27 slides

More from Fumiya Nozaki(13)

Basic Boundary Conditions in OpenFOAM v2.4 by Fumiya Nozaki
Basic Boundary Conditions in OpenFOAM v2.4Basic Boundary Conditions in OpenFOAM v2.4
Basic Boundary Conditions in OpenFOAM v2.4
Fumiya Nozaki5.4K views
blockCoupledSwirlTestチュートリアル by Fumiya Nozaki
blockCoupledSwirlTestチュートリアルblockCoupledSwirlTestチュートリアル
blockCoupledSwirlTestチュートリアル
Fumiya Nozaki2.5K views
CAESES Free チュートリアル by Fumiya Nozaki
CAESES Free チュートリアルCAESES Free チュートリアル
CAESES Free チュートリアル
Fumiya Nozaki2.1K views
CAESES-FFW,GridPro,OpenFOAMを使用した形状最適化事例#1 by Fumiya Nozaki
CAESES-FFW,GridPro,OpenFOAMを使用した形状最適化事例#1CAESES-FFW,GridPro,OpenFOAMを使用した形状最適化事例#1
CAESES-FFW,GridPro,OpenFOAMを使用した形状最適化事例#1
Fumiya Nozaki3.6K views
Limited Gradient Schemes in OpenFOAM by Fumiya Nozaki
Limited Gradient Schemes in OpenFOAMLimited Gradient Schemes in OpenFOAM
Limited Gradient Schemes in OpenFOAM
Fumiya Nozaki11K views
Spatial Interpolation Schemes in OpenFOAM by Fumiya Nozaki
Spatial Interpolation Schemes in OpenFOAMSpatial Interpolation Schemes in OpenFOAM
Spatial Interpolation Schemes in OpenFOAM
Fumiya Nozaki36.1K views
OpenFOAM Programming Tips by Fumiya Nozaki
OpenFOAM Programming TipsOpenFOAM Programming Tips
OpenFOAM Programming Tips
Fumiya Nozaki11.5K views
ParaView による可視化 Tips by Fumiya Nozaki
ParaView による可視化 TipsParaView による可視化 Tips
ParaView による可視化 Tips
Fumiya Nozaki10.1K views
CFD for Rotating Machinery using OpenFOAM by Fumiya Nozaki
CFD for Rotating Machinery using OpenFOAMCFD for Rotating Machinery using OpenFOAM
CFD for Rotating Machinery using OpenFOAM
Fumiya Nozaki88.4K views
無償のモデリングソフトウェアCAESESを使ってみた by Fumiya Nozaki
無償のモデリングソフトウェアCAESESを使ってみた無償のモデリングソフトウェアCAESESを使ってみた
無償のモデリングソフトウェアCAESESを使ってみた
Fumiya Nozaki4.9K views
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』 by Fumiya Nozaki
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
Fumiya Nozaki6.1K views
Adjoint Shape Optimization using OpenFOAM by Fumiya Nozaki
Adjoint Shape Optimization using OpenFOAMAdjoint Shape Optimization using OpenFOAM
Adjoint Shape Optimization using OpenFOAM
Fumiya Nozaki22.1K views
OpenFOAM を用いた Adjoint 形状最適化事例1 by Fumiya Nozaki
OpenFOAM を用いた Adjoint 形状最適化事例1OpenFOAM を用いた Adjoint 形状最適化事例1
OpenFOAM を用いた Adjoint 形状最適化事例1
Fumiya Nozaki6.7K views

Recently uploaded

定例会スライド_キャチs 公開用.pdf by
定例会スライド_キャチs 公開用.pdf定例会スライド_キャチs 公開用.pdf
定例会スライド_キャチs 公開用.pdfKeio Robotics Association
135 views64 slides
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 by
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
101 views26 slides
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PC Cluster Consortium
27 views36 slides
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
32 views38 slides
光コラボは契約してはいけない by
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけないTakuya Matsunaga
27 views17 slides

Recently uploaded(12)

PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by PC Cluster Consortium
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga27 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4405 views
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」 by PC Cluster Consortium
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.78 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda479 views
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka90 views

OpenFOAM の境界条件をまとめよう!

  • 2. 2 cylindricalInletVelocity  “cylindricalInletVelocity” を使用することで, 流速の境界条件を円柱座標系 𝑈𝑟,𝑈 𝜃,𝑈𝑧 で指定することができます. myPatch { type cylindricalInletVelocity; axis (0 0 1); centre (0 0 0); axialVelocity constant 30; radialVelocity constant -10; rpm constant 100; } 書式 axis 𝑈𝑟 𝑈 𝜃 𝑈𝑧 centre centre
  • 3. 3 cylindricalInletVelocity • 円柱座標系の軸 (Z) 方向を “axis” で指定します.規格化されるので単位ベクトルで なくても問題ありません. • 上で指定した軸上の点を “centre” で指定します. • 軸方向の速度成分 𝑈𝑧 の大きさを “axialVelocity” で指定します.指定値が正の場合 には “axis” と同じ向き,負の場合には “axis” と逆向きになります. • 径方向の速度成分 𝑈𝑟 の大きさを “radialVelocity” で指定します.指定値が正の場合 には軸から離れる方向を向き,負の場合には軸の方を向きます. • 周方向の速度成分 𝑈 𝜃 は,”rpm” と軸からの距離より次式で計算されます.ここ で,”rpm” は軸周りの1分間当たりの回転数を意味しています. 𝑈 𝜃 = 𝑟𝑝𝑚 × 2𝜋 60 × 軸からの距離 • 周方向速度の向きは,”rpm” が正の場合には右ねじの法則に従 います.負の場合には逆向きになります. axis
  • 4. 4 cylindricalInletVelocity void Foam::cylindricalInletVelocityFvPatchVectorField::updateCoeffs() { if (updated()) { return; } const scalar t = this->db().time().timeOutputValue(); const scalar axialVelocity = axialVelocity_->value(t); const scalar radialVelocity = radialVelocity_->value(t); const scalar rpm = rpm_->value(t); vector hatAxis = axis_/mag(axis_); const vectorField r(patch().Cf() - centre_); const vectorField d(r - (hatAxis & r)*hatAxis); tmp<vectorField> tangVel ( (rpm*constant::mathematical::pi/30.0)*(hatAxis) ^ d ); operator==(tangVel + hatAxis*axialVelocity + radialVelocity*d/mag(d)); fixedValueFvPatchField<vector>::updateCoeffs(); }
  • 5. 5 fixedMean  “fixedMean” を使用することで,フェイスの面積 𝑺 𝑓 を重みとした境界上の物理量 の平均値を指定することができます. outlet { type fixedMean; meanValue 10.0; value uniform 0.0; } 書式 outlet 𝑆𝑓 𝑝𝑓 𝑆𝑓𝑓 = 10.0 meanValue
  • 6. 6 fixedMean 0100 template<class Type> 0101 void fixedMeanFvPatchField<Type>::updateCoeffs() 0102 { 0103 if (this->updated()) 0104 { 0105 return; 0106 } 0107 0108 Field<Type> newValues(this->patchInternalField()); 0109 0110 Type meanValuePsi = 0111 gSum(this->patch().magSf()*newValues) 0112 /gSum(this->patch().magSf()); 0113 0114 if (mag(meanValue_) > SMALL && mag(meanValuePsi)/mag(meanValue_) > 0.5) 0115 { 0116 newValues *= mag(meanValue_)/mag(meanValuePsi); 0117 } 0118 else 0119 { 0120 newValues += (meanValue_ - meanValuePsi); 0121 } 0122 0123 this->operator==(newValues); 0124 0125 fixedValueFvPatchField<Type>::updateCoeffs(); 0126 } 境界に隣接するセルのセル中心値
  • 7. 7 fixedMean • 110-112行:境界に隣接するセルのセル中心値を使って,meanValuePsi を計算しま す.これは,セル中心値で評価した平均値です. • 114-121行:指定された平均値 meanValue_ と上で計算した meanValuePsi とから, 次の関係を満たすように境界値を決定します. 𝑆𝑓 𝜙 𝑓𝑓 𝑆𝑓𝑓 = 𝑚𝑒𝑎𝑛𝑉𝑎𝑙𝑢𝑒 境界値
  • 8. 8 SRFVelocity  “SRFVelocity” を使用することで, SRFSimpleFoam や SRFPimpleFoam で解かれる相対速度 Urel に関する境界条件を, 相対速度または絶対速度で指定することができます.  慣性座標系の 絶対速度 で指定する場合 • “relative” を “no” に設定 • “inletValue” で絶対速度の分布を指定  回転座標系の 相対速度 で指定する場合 • “relative” を “yes” に設定 • “inletValue” で相対速度の分布を指定 inlet { type SRFVelocity; inletValue uniform ( 0 0 -10 ); relative no; value uniform ( 0 0 0 ); } 書式 𝒖 = 𝒖 𝑅 + 𝜴 × 𝒓 絶対速度 相対速度
  • 9. 9 SRFVelocity void Foam::SRFVelocityFvPatchVectorField::updateCoeffs() { if (updated()) { return; } // If not relative to the SRF include the effect of the SRF if (!relative_) { // Get reference to the SRF model const SRF::SRFModel& srf = db().lookupObject<SRF::SRFModel>("SRFProperties"); // Determine patch velocity due to SRF const vectorField SRFVelocity(srf.velocity(patch().Cf())); operator==(-SRFVelocity + inletValue_); } // If already relative to the SRF simply supply the inlet value as a fixed // value else { operator==(inletValue_); } fixedValueFvPatchVectorField::updateCoeffs(); } “relative” を “no” に設定した場合 𝜴 × 𝒓 の計算 𝒖 𝑅 = −𝜴 × 𝒓 + 𝒖 “relative” を “yes” に設定した場合 SRFModel.C の 160 行目
  • 10. 10 turbulentIntensityKineticEnergyInlet  “turbulentIntensityKineticEnergyInlet” 境界条件を使用することで, 乱流エネルギー 𝑘 の境界値を乱流強度 𝐼 から設定できます.  境界上の各フェイス中心点における乱流エネルギーが次式から計算されます. 𝑘 = 3 2 𝑈 𝐼 2 ⇒ 流速が分布をもつ場合には,乱流エネルギーも分布をもちます. 𝐼: intensity inlet { type turbulentIntensityKineticEnergyInlet; intensity 0.05; // 乱流強度 5% U U; // 流速ベクトル名 value uniform 1; // 初期での可視化に使用 } 書式
  • 11. 11 turbulentMixingLengthFrequencyInlet  “turbulentMixingLengthFrequencyInlet” 境界条件を使用することで, 比散逸率 𝜔 の境界値を混合長 𝐿 から設定できます.  境界上の各フェイス中心点における比散逸率が次式から計算されます. 𝜔 = 𝑘 𝐶𝜇 0.25 𝐿 ⇒ 乱流エネルギー 𝑘 が分布をもつ場合には,比散逸率も分布をもちます. inlet { type turbulentMixingLengthFrequencyInlet; mixingLength 0.005; // 混合長[m] value uniform 1; } 書式 𝐿: mixingLength モデル定数 𝐶𝜇 (デフォルト値 0.09)
  • 12. 12 flowRateInletVelocity  “flowRateInletVelocity” 境界条件を使用することで, 流速を体積流量 [m3/s] または,質量流量 [kg/s] で指定できます. myPatch { type flowRateInletVelocity; volumetricFlowRate 0.2; value uniform (0 0 0); } myPatch { type flowRateInletVelocity; massFlowRate 0.2; rho rho; rhoInlet 1.0; } 書式  体積流量の値は, 『volumetricFlowRate』 で指定し,質量流量の値は, 『massFlowRate』 で指定します.  この条件を使用した場合, 境界上の流速ベクトルは, 境界接線成分は0で, 境界法線成分のみ持ちます.  また,境界法線成分は, 境界内で一様に設定され, 分布を持ちません. 体積流量の指定 質量流量の指定
  • 13. 13 flowRateInletVelocity void Foam::flowRateInletVelocityFvPatchVectorField::updateCoeffs() { if (updated()) { return; } const scalar t = db().time().timeOutputValue(); // a simpler way of doing this would be nice const scalar avgU = -flowRate_->value(t)/gSum(patch().magSf()); tmp<vectorField> n = patch().nf(); if (volumetric_ || rhoName_ == "none") { // volumetric flow-rate or density not given operator==(n*avgU); } 設定した流量を境界面積で 割り,平均流速 avgU を計算 境界単位法線ベクトル(領域外向き)  設定された体積流量から境界上の流速を計算しているコード • この境界条件は流入境界での使用を想定しているため,流量を正の値に設定した場合に,流速の向 きが計算領域内を向くように,avgU の計算式にマイナス符号が付いています. 境界上の流速を平均流速×単位法線ベクトルで計算
  • 14. 14 mappedFixedValue  “mappedFixedValue” 境界条件を使用することで, 発達した流れ場の物理量の分布を流入境界に与えることができます. inlet { type mapped; fieldName U; setAverage true; average (0 0 0.5); interpolationScheme cell; value uniform (0 0 0.5); } 書式 inlet { type mappedPatch; inGroups 1(mappedPatch); nFaces 100; startFace 10000; sampleMode nearestCell; sampleRegion region0; samplePatch none; offsetMode uniform; offset (0 0 0.1); } boundary ファイル inlet 射影 位置の指定