昨日の文献で示されていた、avalanche/tutorials/montereycanyon の Allrun を読んでみました。
Rauter, M. et al.(2018) Applications of the Finite Area Method on a
Geographic Scale: From Dense Snow Avalanches to Turbidity Currents
The second model is based on the work of Parker et al. (1986) for turbidity currents. The solver models a turbulent mixture of sediment and water, including entrainment of sediment at the bottom and water at the top. It will be applied to a turbidity current in Monterey Canyon, off the coast of California.
参照先のソースを継ぎ接ぎし、要点のみ一読できる形にまとめ、見通し良くしました。
まず、この例では海底地形の STL ではなく、Esri ASCII ラスター形式読み込んでいます。ArcGIS で xyzポイント→ラスター変換→ASC保存 をお考えなのでしょう。文献では "GIS
data is translated to OpenFOAM dictionaries using python scripts. "とありましたが、その script は見当たりませんでした。どこかにあるのでしょう。
解析範囲はshpを読み込んでいます。
gridToSTL
system/gridToSTLDict
//Output file
stlname "constant/surface.stl";
//Topography file
gridname "constant/gisdata/bathymetry.asc";
ncols 1194
nrows 620
xllcorner 574999.06
yllcorner 457937.36
dx 24.71
dy 31.27
NODATA_value 0
-166.5 -164.13 -158.49 -154.69...
.//Choose between boundary: fromShape or fromPoints:
//Read Boundary from Shapefile
boundary fromShape;
shapeBoundary "constant/gisdata/aoi_UTM_N10";
//Division of an edge of the boundary polygon
divisions 200;
//Height of the Domain
domainHeight 1000.0;
//Offset to reduce coordinate size
offset (-574000.0 -4057000 0);
次に、polyhedral mesh と finite area mesh の作成。前者で meshDict を読んでメッシュを作成していますが、次の faMesh との連携がわかりません。文献ではcfMeshに関し"A mesh is generated
that covers the volume above the terrain of interest; but only the bottom boundary mesh is utilized."とあり、faMesh が底のメッシュのみを取り出して2Dに変換する役割を担っているのかなあと想像しています。
release area は inlet で処理しているとのことでしたが、その詳細も見つけられませんでした。
pMesh: cfMesh-polyhedral mesh
system/meshDict
maxCellSize 200;
surfaceFile "constant/surface.stl";
additionalRefinementLevels 2;
"wall0"
newName "inlet";
"wall(9|10|11)"
newName "outlets";
"top"
newName "top";
"terrain"
newName "terrain";
makeFaMesh: finite area mesh
constant/faMesh/faMeshDefinition
あとは通常運転。
0フォルダの作成(複製)。
restore0Dir: restore initial fields
ソルバーの設定、計算。
$(getApplication)
system/controlDict
faParkerFukushimaFoam
#include "shapefileWrite":
offset (-574000.0 -4057000 0);
#include "gridfileWrite"
ncols, nrows...offset
#include "autoAreaToVolumeMapping"
prefix "fa_";
いくつか不明点は残りましたが、概ね見えてきました。