2022年1月30日日曜日

Turbidity current in Monterey Canyon

昨日の文献で示されていた、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_";

いくつか不明点は残りましたが、概ね見えてきました。


0 件のコメント:

コメントを投稿