OpenFOAM-v2512のAllrunの結果を公開した。総ケース数496(492)、使用ディスク容量:1050GB(約1TB)、総計算時間:約20.5日(19日)であった。かっこ()内数字はv2506のもの。
計算開始:2026年1月6日 / 計算終了:2026年3月21日 (今回は業務の都合上、中断あり)
Table of Contents
ケースサマリー
基本的に、先の記事に記した方法で、ほぼログ解析まで問題なく実行できた。実行エラーしたケース、残された手作業項目等についても、簡単に取り纏めておく。
また今回より、ケースファイルそのものの実質的な内容変化について、KDiff3で調べた結果についても記しておく。
KDiff3によるケース比較サマリー図
カテゴリー(incompressible)詳細
新規追加されたケース(v2506比)
並列数が16以上のケース
- IO/cavity_parProfiling 20->16
- incompressible/adjointOptimisationFoam/sensitivityMaps/motorBike 20->16
- incompressible/adjointOptimisationFoam/topologyOptimisation/monoFluidAero/laminar/3DBox/losses 60->16
- incompressible/adjointOptimisationFoam/topologyOptimisation/monoFluidAero/laminar/3DBox/losses-mass 60->16-
- incompressible/adjointOptimisationFoam/topologyOptimisation/monoFluidAero/laminar/3DBox/losses-mass-uniformity 60->16
- incompressible/adjointOptimisationFoam/topologyOptimisation/monoFluidAero/laminar/3DBox/losses-mass-uniformity-SQP 60->16
- incompressible/adjointOptimisationFoam/topologyOptimisation/monoFluidAero/laminar/3DBox/losses-mass-uniformity-SQP-extraVars 60->16
- incompressible/pimpleFoam/LES/NACA4412 16
- incompressible/pimpleFoam/LES/planeChannel 36->16
- incompressible/pimpleFoam/LES/periodicHill 16
- incompressible/pimpleFoam/LES/wallMountedHump 16
- incompressible/pimpleFoam/RAS/propeller1 32
もっと速く!
これらのケースにはAllrunは含まれないので、普通にtutorialsケーストップレベルのAllrunを実行すると単体実行されてしまう。しかし、decomposedParDictが同梱されているので、foamRunTutorial コマンドで実行すると並列計算されることになり、本来は並列計算を想定したケースと考えた方が良さそうである。
そこでこれらのケースには並列計算用のAllrunを同梱して実施している。
上記ケースは、decomposeParDict で16が指定されているが、同梱のAllrunでは単体計算することになる。一方、Allrun-parallelも同梱されており、こちらを使えば並列計算となり、1時間以上の短縮は見込まれる。
実行エラーしたケース
ログファイル(testLoopReport, logs)中に”ERROR”の出力があったもの
- IO/dictionary(注2)
- mesh/foamyHexMesh/flange
- mesh/foamyHexMesh/simpleShapes
- mesh/foamyHexMesh/mixerVessel
- mesh/snappyHexMesh/motorBike_leakDetection(注2)
“ERROR”出力は無かったが、計算が発散終了していたもの(v2506以前でも同様)
(注1)Allrunでは正常に計算できていた(ERRORはAllTest)
(注2)ERRORが出ること自体は問題無い
手作業項目
- Allrun実行前
- チュートリアルリスト作成
- プロセッサ数が不足するケースでのdecomposeParDict変更
- AllTest実行し、ERRORケース確認
- ログ解析スクリプト実行前
- incompressible/pimpleFoam?laminar/cylinder2D ケースの、log.blockMesh.main をlog.blockMesh に変更
- ログ解析スクリプト実行後
- ケース名変更
- combustion/XiFoam/RAS⇒combustion/XiFoam/RAS/moriyoshiHomogeneous
- compressible/sonicLiquidFoam⇒compressible/sonicLiquidFoam/decompositionTank
- ディスクスペースの重複カウント修正
- IO/fileHandler
- compressible/rhoPimpleFoam/laminar/helmholtzResonance
- 再計算(原因不明だが、メッシュデータが消失していた為)
- compressible/rhoPorousSimpleFoam/angledDuct/explicit
- compressible/rhoPorousSimpleFoam/angledDuct/implicit
- incompressible/porousSimpleFoam/angledDuct/explicit
- incompressible/porousSimpleFoam/angledDuct/implicit
- incompressible/porousSimpleFoam/straightDuctImplicit
- ケース名変更
データベースのグラフ化例
別記事で記した通り、上記データベース化されたデータはバックボーン(phpMyAdmin)で動的にグラフ化できるようになっているが、現在のところ閲覧者が動的にグラフを作成する仕組みまでは出来ていない。HP管理者が、本結果(OpenFOAM-v2512)を中心に様々な観点で作成したグラフをいくつか紹介しておく。
チュートリアル数の推移
使用したSQL構文
ディスク使用量の推移

使用したSQL構文
所要計算時間の推移
使用したSQL構文
カテゴリ別チュートリアル数比較(v2506比)
使用したSQL構文
カテゴリ別ディスク使用量の比較(v2506比)
使用したSQL構文
カテゴリ別計算時間の比較(v2506比)
個別ケース毎計算時間比較(v2506比)
個別ケース毎ディスク使用量比較(v2506比)
挙動が大きく変化したケース(v2506比)
上図で、変化のなかったライン(x1)から大きく乖離したケースについて番号付きの角矢印記号を付しておいた。以下の項目中の行頭の数字はその番号に合わせてある。またケース名の後ろに(*)を付したケースは計算結果の違いがほとんど無いのに拘らず計算速度が低下したものである。
- IO/cavity_parProfiling
- v2506ではエラー
- IO/fileHandler
- basic/potentialFoam/pitzDaily
- 出力変数が減った
- combustion/fireFoam/LES/compartmentFire (*)
- combustion/fireFoam/LES/oppositeBurningPanels (*)
- combustion/PDRFoam/flamePropagationWithObstacles
- 出力形式が異なる(.gz)
- compressible/acousticFoam/obliqueAirJet (*)
- compressible/rhoSimpleFoam/squareBendLiq (*)
- heatTransfer/buoyantSimpleFoam/comfortHotRoom (*)
- heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater
- incompressible/adjointOptimisationFoam/shapeOptimisation/motorBike
- Np=16(v2512) / Np=20(v2506)
- incompressible/adjointOptimisationFoam/topologyOptimisation/monoFluidAero/turbulent/1_Inlet_2_Outlet/levelSet/R_20x_NB_01
- 下図参照
- incompressible/overPimpleDyMFoam/twoSimpleRotors
- incompressible/overSimpleFoam/aeroFoil
- メッシュが異なっている
- incompressible/pimpleFoam/LES/decayIsoTurb (*)
- incompressible/pimpleFoam/LES/NACA4412
- 実行時プロセッサ数の違い(v2506まではNp=1)
- incompressible/pimpleFoam/LES/periodicPlaneChannel (*)
- incompressible/pimpleFoam/LES/planeChannel (*)
- incompressible/pimpleFoam/LES/surfaceMountedCube (*)
- incompressible/pimpleFoam/LES/vortexShed (*)
- incompressible/pimpleFoam/RAS/oscillatingInletACMI2D
- incompressible/pimpleFoam/RAS/propeller1
- v2506ではreconstructionでエラーしていた
- incompressible/pimpleFoam/RAS/wingMotion
- incompressible/pisoFoam/LES/motorBike (*)
- incompressible/simpleFoam/airFoil2D
- 収束ステップ数が異なる(短くなった)
- incompressible/simpleFoam/motorBike (*)
- incompressible/simpleFoam/turbulentFlatPlate (*)
- lagrangian/icoUncoupledKinematicParcelFoam/hopper
- 計算結果が途中からおかしくなっていた。しかし、再計算したら、v2506と同等になった。
- lagrangian/kinematicParcelFoam/drippingChair
- 下図参照
- lagrangian/kinematicParcelFoam/pitzDailyWithSprinklers
- 下図参照
- lagrangian/MPPICDyMFoam/column
- バグフィックス?(controlDict中のsolver指定変更)
- lagrangian/MPPICFoam/cyclone (*)
- lagrangian/MPPICFoam/injectionChannel(*)
- lagrangian/reactingParcelFoam/airRecirculationRoom (*)
- mesh/foamyHexMesh/flange
- どちらもエラーで、ステップ数が異なっている
- mesh/foamyHexMesh/simpleShapes
- v2512ではエラー
- multiphase/cavitatingFoam/LES/throttle3D (*)
- multiphase/compressibleInterFoam/laminar/depthCharge3D (*)
- multiphase/compressibleInterIsoFoam/laminar/depthCharge3D (*)
- multiphase/icoReactingMultiphaseInterFoam/poolEvaporation (*)
- multiphase/interFoam/laminar/oscillatingBox (*)
- multiphase/interFoam/laminar/vofToLagrangian (*)
- multiphase/interFoam/laminar/waves/irregularMultiDirection (*)
- multiphase/interFoam/laminar/waves/streamFunction (*)
- multiphase/interFoam/RAS/DTCHull (*)
- multiphase/interFoam/RAS/DTCHullMoving (*)
- multiphase/interFoam/RAS/mixerVesselAMI (*)
- multiphase/overInterDyMFoam/floatingBody
- multiphase/overInterDyMFoam/rigidBodyHull (*)
- multiphase/overInterDyMFoam/simpleRotor
- multiphase/reactingMultiphaseEulerFoam/laminar mixerVessel2D
- ステップ数が異なっている
- verificationAndValidation/atmosphericModels/atmDownstreamDevelopment (*)
- verificationAndValidation/atmosphericModels/atmFlatTerrain (*)
気付いた点
計算時間が長くなった?
挙動が大きく変化したケース53ケース中、計算結果の変化は無いのに拘らず計算速度が低下したケースが半数以上と多いのが目に付いた。この中にはLES系の長時間ものがあって、全計算時間で見ても明らかに計算時間が増えた。しかし原因として断定できないが、計算サーバーのCPUの問題だと考えている。経験上、現在の計算サーバーは高負荷計算において、性能が安定しない事が多いので。
lagrangian
計算結果そのものが変化したケースが目立った。
補足(SQL文、備忘録)
SQL-1
select `ver_name` version,
count(*) postcount,
sum(`clockTime`)/3600 clockHr,
case when exe_system = 4 then 0.5* sum(`diskUsage`)/1000000
else sum(`diskUsage`)/1000000
end as du,
sum(`clockTime`)/3600 ,
`name` exeSys,
`release_date`
from `wp_of_tutorials`
JOIN wp_of_ver ON wp_of_tutorials.of_ver = wp_of_ver.id
JOIN wp_of_exe_system ON wp_of_tutorials.exe_system=wp_of_exe_system.id
group by `exe_system`, `of_ver`
order by `release_date`
SQL-4
select `ver_name` version,
category,
count(*) postcount,
sum(`diskUsage`)/1000,
sum(`clockTime`)/3600 ,
`name` exeSys,
`release_date`,
case when exe_system = 4 then 0.5* sum(`diskUsage`)/1000000
else sum(`diskUsage`)/1000000
end as du
from `wp_of_tutorials`
JOIN wp_of_ver ON wp_of_tutorials.of_ver = wp_of_ver.id
JOIN wp_of_exe_system ON wp_of_tutorials.exe_system=wp_of_exe_system.id
where wp_of_ver.id in (34, 35)
group by `exe_system`, `of_ver` ,`category`
order by `release_date`
SQL-5
DROP TABLE IF EXISTS of_temp;
create table of_temp as
with old_data
as( select category as o_category, solver as o_solver, model as o_model, caseName as o_caseName,diskUsage as o_diskUsage ,exeTime as o_exeTime ,clockTime as o_clockTime from `wp_of_tutorials` where of_ver in (34) and exe_system in (8))
select new.category, new.solver, new.model, new.caseName, new.diskUsage, old.o_diskUsage, new.exeTime, old.o_exeTime , new.clockTime, old.o_clockTime
from
wp_of_tutorials as new
inner join old_data old
on new.category = old.o_category
and new.solver = old.o_solver
and new.model = old.o_model
and new.caseName = old.o_caseName
where new.of_ver in (35)
order by new.category, new.solver, new.model, new.caseName
;
select category, solver, model, caseName, diskUsage/1000, o_diskUsage/1000, exeTime, o_exeTime , clockTime, o_clockTime from of_temp
where clockTime > 0;
SQL-6
DROP TABLE IF EXISTS of_temp;
create table of_temp as
with old_data
as( select category as o_category, solver as o_solver, model as o_model, caseName as o_caseName,diskUsage as o_diskUsage ,exeTime as o_exeTime ,clockTime as o_clockTime from `wp_of_tutorials` where of_ver in (34))
select new.category, new.solver, new.model, new.caseName, new.diskUsage, old.o_diskUsage, new.exeTime, old.o_exeTime , new.clockTime, old.o_clockTime
from
wp_of_tutorials as new
inner join old_data old
on new.category = old.o_category
and new.solver = old.o_solver
and new.model = old.o_model
and new.caseName = old.o_caseName
where new.of_ver in (35)
order by new.category, new.solver, new.model, new.caseName
;
select category, solver, model, caseName, diskUsage/1000, o_diskUsage/1000, exeTime, o_exeTime , clockTime, o_clockTime from of_temp
where diskUsage > 0;


























