ACU-T:5300 静止船体

このチュートリアルでは、静止船体の周囲の流れのシミュレーションの設定、解析、および結果表示のための手順を説明します。このシミュレーションでは、波が静止船体に当たったときの船の周囲の流れをシミュレートします。このチュートリアルの目的は、自由表面シミュレーションを実行するために必要ないくつかのモデリングの概念を紹介することです。

CFDシミュレーションの基本的な手順については、ACU-T:2000 ミキシングエルボ内の乱流をご参照ください。このチュートリアルでは、AcuSolveの以下の追加機能を紹介します。
  • 重力波を生成するためのユーザー定義関数(UDF)の使用
  • メッシュ押し出し
  • 周期的境界条件
  • サーフェス属性を適用するためのSurface Managerの使用
  • 自由表面
  • ガイド表面
  • 境界条件としての静水圧の使用
  • ALE(Arbitrary Lagrangian-Eulerian)法を使用した任意メッシュモーション
このチュートリアルでは、次の手順を実行します。
  • 問題の解析
  • AcuConsoleの起動とシミュレーションデータベースの作成
  • 一般的な問題パラメータの設定
  • 解法パラメータの設定
  • Wigley船体の形状のインポート
  • ボリュームグループの作成とボリュームパラメータの適用
  • サーフェスグループの作成とサーフェスパラメータの適用
  • グローバルメッシングパラメータの設定
  • メッシュ押し出しと周期的境界条件の設定
  • メッシュ生成
  • AcuSolveの実行
  • AcuProbeによる解析のモニター
  • AcuFieldViewでの節点出力のポスト処理

前提条件

入門チュートリアルであるACU-T:2000 ミキシングエルボ内の乱流をすでに完了している必要があります。ここでは、AcuConsoleAcuSolve、およびAcuFieldViewをある程度使い慣れていることを前提としています。ライセンス供与済みバージョンのAcuSolveにアクセスできることも必要です。

このチュートリアルを実行する前に、AcuConsole_tutorial_inputs.zip<<Altair_installation_directory>\hwcfdsolvers\acusolve\win64\model_files\tutorials\AcuSolveから作業ディレクトリにコピーします。 wigley_hull.x_t およびwave.cをAcuConsole_tutorial_inputs.zipから取り出します。

このチュートリアルでモデリングウィンドウに表示されるオブジェクトの色と、ユーザーの画面に表示されるオブジェクトの色は異なる場合があります。AcuConsoleのデフォルト配色は“ランダム”であり、作成されたグループに色がランダムに割り当てられます。また、このチュートリアルはWindows上で作成されました。このチュートリアルを異なるオペレーティングシステムで実行する場合は、画面に表示されるイメージとこのチュートリアルで表示されるイメージが多少異なる可能性があります。

問題の解析

このチュートリアルで扱う問題を図 1に図示します。これは、Wigley船モデルの中央断面です。Wigley船体は、船の流体力学的挙動を評価するテストケースとして広く使用されています。このチュートリアルでは、静止しているWigley船体(海に停泊中の船を仮定)に当たる重力波のシミュレーションを示します。このチュートリアルで考慮する運動は船の長さに対して垂直であるため、精度を損なうことなく計算時間が短い船体の2D断面の解析が適しています。Wigley船体の中央断面寸法は船の全長の関数であり、このチュートリアルで使用されるモデルは船の長さが1 mのWigley船体の中央断面です。


図 1. 船体の概略図

表面重力波の生成

重力波は、流体媒体内で、あるいは2つの媒体間の界面で、重力または浮力が均衡を取り戻そうとしたときに発生する波です。このような界面の例としては、風波を発生させる大気と海の間が挙げられます[1]。表面重力波のメカニズムは、波動が水を平衡表面レベルの上に押し上げるが、空気より水の方が重いために重力によって水が押し戻され、落下運動中に得られた慣性によって水がその平衡レベルの下に沈み込み、上下運動が発生するというものです。振動は、伸びたり、縮んだりするスプリングと似ています。表面水波における‘スプリング’の働きが重力であるため、表面重力波と呼ばれています[2]。このシミュレーションでは、海の自由表面上の風による重力波は、UDF(ユーザー定義関数)を使用して生成されます。


図 2. 重力波

図 2 は、単純な進行重力波を定義するパラメータを示しています。この波は、下に示すように、正弦波の形状でモデル化することができます。

(1) u = U 0 + U cosh k ( D z ) sinh ( k D ) cos ( ω t k x )

ここで、

u は波の水平粒子速度

U 0 は波の速度

Uは撹乱の速度振幅

k は波番号 = 2 π / λ

λ は波の波長

D は水深

ω は波の周波数 = 2 π T

T は波の時間周期

tは時間

このシミュレーションでは、上の方程式の変数として次の値を使用します。

U = 0.1256m/s

T = 1.0秒

k = 12.566m-1

U 0 = 0.01m/s

D = 0.5m

このチュートリアルでは、入口で、2秒間の波を生成し、5秒間の波の運動をシミュレートします。このために、C言語で書かれたUDF(wave.c)が使用されます。wave.cで使用される関数の詳細については、AcuSolve User-Defined Functions Manualをご参照ください。

AcuSolveでの2次元シミュレーション

AcuSolve は、2Dサーフェスメッシュ上のCFD解析をサポートしていません。ただし、対象の2Dサーフェスの垂直方向に沿った単一要素の押し出し、および押し出しの両側で対称または滑りの同じ境界条件を使用することにより、ボリュームメッシュでの2D解析をシミュレートできます。この方法では、本質的に問題の2D表現である厚み(押し出し)に沿って解が変化しません。このチュートリアルではこのアプローチを使用します。

解析パラメータの定義

AcuConsoleの起動とシミュレーションデータベースの作成

このチュートリアルでは、まずデータベースの作成、形状に依存しない設定の入力、形状の読み込み、グループの作成、グループ属性の設定、グループへの形状コンポーネントの追加、およびグループへのメッシュコントロールと境界条件の割り当てを行います。次に、メッシュを生成して、AcuSolveを実行し、指定された時間ステップの数だけ解析します。最後に、AcuFieldViewを使用して結果の一部の特性を可視化します。

  1. Windows のスタートメニューからスタート > Altair <バージョン> > AcuConsoleをクリックして AcuConsoleを起動します。
  2. Fileメニューをクリックし、Newをクリックし、New data baseダイアログを開きます。
    注: ツールバーの をクリックしてNew data baseダイアログを開くこともできます。
  3. 作業ディレクトリとして使用する場所に移動します。
    このディレクトリには、そのシミュレーションに関するすべてのファイルが保存されます。AcuConsoleのデータベースファイル(.acs)はこのディレクトリに保存されます。メッシュと解が作成されたら、追加のファイルとディレクトリがこのディレクトリ内に作成されます。
  4. この場所に新しいディレクトリを作成します。名前をShip_hull_staticに設定して、このディレクトリを開きます。
  5. データベースのFile nameとしてShip_hull_staticと入力するか、好きな名前を選択します。
    注: AcuConsoleによって書き込まれたファイルを他のアプリケーションで読み取り可能にするためには、データベースのパスと名前にスペースが含まれないようにしてください。
  6. 保存をクリックしてデータベースを作成します。

一般的なシミュレーションパラメータの設定

次の手順では、シミュレーション全体に適用される属性を設定します。このタスクを簡略化するため、Data Tree ManagerでBASフィルタを使用します。このフィルタにより、Data Treeに表示される項目数が少なくなり、エントリの移動が容易になります。

このチュートリアルで設定する一般的な属性は、乱流、非定常解析、および任意のメッシュ移動(ALE)としてのメッシュタイプのためのものです。

  1. Data Tree ManagerBASをクリックして、Data Tree内の基本ビューに切り替えます。


    図 3.
  2. GlobalData Tree項目を拡張表示します。
  3. Problem DescriptionをダブルクリックしてProblem Description詳細パネルを開きます。
  4. このケースでは、TitleとしてAcuSolve Tutorialと入力します。
  5. このケースでは、Sub titleとしてShip hull motionと入力します。
  6. Analysis typeドロップダウンメニューをクリックして、Transientを選択します。
  7. Turbulence equationをSpalart Allmarasに変更します。
  8. Mesh typeをArbitrary Mesh Movement (ALE)に設定します。


    図 4.

解法属性の設定

  1. Auto Solution StrategyをダブルクリックしてAuto Solution Strategy詳細パネルを開きます。
  2. Analysis typeがTransientに設定されていることを確認します。
  3. Max time stepsを100に設定します。
  4. Initial time incrementを0.05秒に設定します。
  5. Max stagger iterationsを4に変更します。
    交互反復は、各時間ステップ内で実行される反復回数を定義します。Max stagger iterationsを4に変更すると、AcuSolveは、収束に達したかどうかに関係なく、時間ステップごとに最大4回の反復を実行します。Minimum stagger iterationsを0に設定すると、時間ステップ内の最小反復回数が存在しないことを意味します。この場合、AcuSolveは、目的の収束許容値またはステップ内で最大交互反復回数に到達したときに次の時間ステップに進みます。
  6. Relaxation factorが0.0に設定されていることを確認します。
    非定常解析を解くときには、緩和係数をゼロに設定する必要があります。緩和係数がゼロ以外だと解の増分更新が起こり、非定常ケースの解の時間精度に影響を与えます。


    図 5.

材料モデルパラメータの設定

AcuConsoleには、Air、Aluminum、Waterという、標準のパラメータが定義されている3つの事前定義済み材料が用意されています。次の手順では、事前定義された水の材料特性が、この問題において目的のプロパティと一致することを確認します。


図 6.
  1. Data TreeMaterial Modelをダブルクリックして拡張表示します。


    図 7.
  2. Data TreeWaterをダブルクリックしてWater詳細パネルを開きます。

    水と空気の材料タイプはFluidです。AcuConsoleで作成されるすべての新しい材料に対して、Fluidがデフォルトの材料タイプとなります。

  3. Densityタブをクリックします。水の密度は1000.0kg/m3です。
  4. Viscosityタブをクリックします。水の粘性は0.001kg/m-secです。
  5. データベースを保存して設定のバックアップを作成します。これは、次のいずれかの方法で実行できます。
    • Fileメニューをクリックして、Saveをクリックします。
    • ツールバーの をクリックします。
    • Ctrlキーを押しながらSを押します。
    注: AcuConsoleで加えられた変更は、直ちにデータベースファイル(.acs)に保存されます。保存操作を実行すると、データベースがバックアップファイルにコピーされます。今後の変更内容を利用することを希望しない場合は、このバックアップファイルを使用して、その保存済み状態からデータベースを再読み込みすることができます。

形状のインポートとモデルの定義

形状のインポート

このチュートリアルの次のパートでは、形状をインポートします。この手順を完了するには、 wigley_hull.x_t の場所がわかっている必要があります。このファイルには、ParasolidASCII形式で形状に関する情報が含まれています。
  1. File > Importをクリックします。
  2. wigley_hull.x_tを含むディレクトリを参照します。
  3. ファイル名のフィルタをParasolid File (*.x_t *.xmt *X_T …)に変更します。
  4. wigley_hull.x_tを選択し、OpenをクリックしてImport Geometryダイアログを開きます。


    図 8.

    このチュートリアルでは、Import Geometryダイアログのデフォルト値を使用して形状を読み込みます。AcuConsoleを使用していた場合は、自身が変更した可能性のある設定を手動で変更して、図に示すデフォルト値と一致させてください。デフォルト設定を使用した場合は、CADモデルのボリュームはデフォルトのボリュームグループに追加されます。CADモデルのサーフェスはデフォルトのサーフェスグループに追加されます。このチュートリアルでは後ほどグループを操作して、新しいグループの作成、流れパラメータの設定、形状コンポーネントの追加、およびメッシングパラメータの設定を行います。

  5. OKをクリックして形状のインポートを完了します。


    図 9.
  6. 表示を回転してモデル全体を確認します。

物体力の設定

問題の解析の項で説明したように、重力はシミュレーションの重要な側面です。AcuConsoleでは、Z軸に沿って標準重力(g = 9.81m/s2)の物体力がモデルに適用されるものとして定義されます。
  1. Data Treeで、Body Forceをダブルクリックして拡張表示します。
  2. Gravityをダブルクリックして詳細パネルを開きます。
    重力の媒体は流体です。ここで定義された重力は、材料タイプが流体の材料モデルにのみ適用できます。
  3. Gravity欄の横で、Open Arrayをクリックします。
  4. X-components欄とY-components欄に、0と入力します。
  5. Z-components欄に、9.81m/s2と入力します。
  6. OKをクリックして、重力の定義を完了します。


    図 10.
    注: ここでの重力の定義は、モデル内のボリュームに割り当てられない限り、シミュレーションには影響しません。

ボリューム属性の適用

形状がAcuConsoleにインポートされたときに、すべてのボリュームは“デフォルトの”ボリュームコンテナに配置されました。

次の手順では、デフォルトのボリュームグループコンテナの名前を変更し、そのグループ用の材料を設定して、流体ボリュームのメッシュモーションを設定します。

  1. Data Tree ManagerGlobalを最小化し、 をクリックすることでModelツリー項目を拡張表示します。
  2. Volumesツリー項目を拡張表示します。
  3. Volumesを拡張表示します。ボリューム名の横にある をクリックして、デフォルトボリュームコンテナの表示のオン / オフを切り替えます。
    注: Surfacesが表示されている場合は、サーフェスとボリュームが重なっている可能性があるため、表示を切り替えても何も変わらないことがあります。
  4. ソリッド船体の新しいボリュームグループを作成します。
    1. Volumesを右クリックします。
    2. Newをクリックします。
  5. 新しいボリュームグループの名前をGuide_Vol_Shipに変更します。
  6. このグループに形状内の船体コンポーネントを追加します。
    1. Guide_Vol_Shipを右クリックします。
    2. Add toをクリックします。
    3. モデリングウィンドウで形状の船体部分をクリックします。
      Ctrlキーを押しながら左クリックすることでビューを回転すると、船のボリュームのみがハイライト表示されていることがわかります。


      図 11.
    4. Doneをクリックして、選択したボリュームをsolidボリュームグループに追加します。
  7. medium for the volumeをNoneに設定します。
    船体の材料モデルは、現在のシミュレーションには不適切です。そのため、媒体をNoneに設定します。
    注: シミュレーションのプリ処理段階(AcuPrep)でガイド表面の法線方向を求めるために、ソリッドボリュームの要素セットが必要です。ただし、ソルバーモジュール中は流体とソリッド間の唯一の相互作用がガイド表面で行われるため、要素セットは必要ありません。このボリュームのMediumをNoneに設定することによって、このボリュームのどの要素もソルバーに引き継がれない、つまり、計算時間が節約されることが保証されます。
    1. ツリー内でGuide_Vol_Shipボリュームグループを拡張表示します。
    2. Element SetをダブルクリックしてElement Set詳細パネルを開きます。
    3. MediumをNoneに変更します。
    4. Mesh motionがNoneに設定されていることを確認します。

形状がAcuConsoleに読み込まれたときに、すべての形状ボリュームはデフォルトボリュームグループコンテナに配置されました。前の手順では、作成したGuide_Vol_Shipコンテナに追加する形状ボリュームを選択しました。この時点で、デフォルトのボリュームグループに残っているのは流体ボリュームのみです。新しいコンテナを作成し、形状内の流体ボリュームをこのコンテナに追加してから、デフォルトのボリュームコンテナを削除する代わりに、コンテナの名前を変更して、このグループの属性を変更できます。

  1. Data Treeで、defaultを右クリックして、その名前をFluidに変更します。
  2. Fluidボリューム要素セットを設定します。
    1. ツリー内でFluidボリュームグループを拡張表示します。
    2. Fluidの下のElement Setをダブルクリックし、詳細パネルでこれを開きます。
    3. ボリュームMediumがFluidに設定されていることを確認します。そうでない場合は、Fluidに変更します。
    4. Material modelをWaterに変更します。
    5. Body forceをGravityに変更します。

サーフェスグループの作成とサーフェスパラメータの適用

サーフェスグループは、サーフェスに関する情報を保存するためのコンテナです。この情報には、解析およびメッシングパラメータや、パラメータが適用される形状内の対応するサーフェスが含まれます。

次の手順では、サーフェスグループを定義して、問題のさまざまな特性に適切な設定を割り当て、これらのグループコンテナにサーフェスを追加します。

シミュレーションの設定プロセスでは、(特に、サーフェスが非常に多いモデルの場合)複雑になりがちな境界条件やメッシュパラメータなどを設定するため、別のパネルに移動する必要があります。これを簡単にして、エラーを減らし、時間を節約するために、AcuConsoleでは2つの新しいダイアログが追加されています。Volume ManagerSurface Managerは、一度にすべてのサーフェスまたはボリュームエンティティに関する情報を確認したり、指定するために使用します。ここでは、Surface Managerのいくつかの機能を利用します。

  1. Volumesを右クリックしてDisplay offを選択することにより、ボリュームの表示をオフにします。
  2. Data TreeSurfacesを右クリックして、Surface Managerを選択します。
  3. Surface Managerダイアログで、Newを8回クリックして、8つの新しいサーフェスグループを作成します。
  4. デフォルトサーフェスを除くすべてのサーフェスの表示をオフにします。
  5. デフォルトのサーフェスの名前をHull_guideに変更します。
  6. サーフェス1から8までの名前を変更し、Simple BCタイプとSimple BC Activeをそれぞれ以下のように設定します。


    図 12.
  7. Outletのサーフェスを割り当てます。
    1. Surface ManagerのOutletの横で、Add toをクリックします。
    2. X座標が最大の流体のサーフェスを選択します。
    3. Doneをクリックします。


    図 13.
  8. 同様に、次のサーフェスを該当するサーフェスグループに追加します。
    • Bottom:Z座標が最大のサーフェス(水のボトムサーフェス)
    • Top:Z座標が最小の2つのサーフェス(水のトップサーフェス)
    • Side1:Y座標が最大のサーフェス
    • Side2:Y座標が最小のサーフェス
    • Inlet:X座標が最小のサーフェス
    • No_Bc:下の図に示すように、流体と接触していないGuide_Vol_Shipの5つのサーフェス。グレーで示されているサーフェスがNo_Bcサーフェスセットに属しています。


      図 14.
  9. Guide_surfのサーフェスを割り当てます。
    Guide_surfは、Guide_Vol_shipに属し、流体と接触しているサーフェスです。
    1. Surface ManagerのGuide_surfの横で、Add toをクリックします。
    2. Guide_Vol_shipに属し、流体と接触しているすべてのサーフェスを選択します。


      図 15.
  10. Hull_guideのサーフェスを割り当てます。
    Hull_guideは、流体に属し、Guide_Vol_Shipと接触しているサーフェスです。この時点では、デフォルトサーフェスセット内の、すべてのサーフェスにHull_Guideの資格があります。
    1. Surface ManagerのHull_guideの横で、Add toをクリックします。
    2. デフォルトサーフェスセット内のすべてのサーフェスを選択します。


      図 16.
  11. 空のサーフェスセットを消去します。
    1. Data Treeで、Surfacesを右クリックして、Purgeを選択します。
  12. Hull_guide内のすべてのサーフェスがFluidボリュームに属し、Guide_surf内のすべてのサーフェスがGuide_Vol_shipボリュームに属していることを確認します。
    1. Surfacesの下でHull_guideを右クリックし、Infoを選択します。
    2. Information Windowで、Parent VolumeがFluidになっていることを確認します。
    3. Surfacesの下でGuide_surfを右クリックし、infoを選択します。
    4. Information Windowで、Guide_surf内のすべてのサーフェスでParent VolumeがGuide_Vol_shipになっていることを確認します。
  13. Surface Managerを閉じます。

Side1とSide2

このシミュレーションは水中の船の2D表現です。そのため、この影響をシミュレートするための滑り境界条件を使用してSide1とSide2を設定するのが適切です。

  1. Data Treeで、Side1を拡張表示します。
  2. Simple Boundary Conditionをダブルクリックして、Simple Boundary Condition詳細パネルを開きます。
  3. TypeがSlipに設定されていることを確認します。
  4. Mesh displacement BC typeをSlipに変更します。
  5. サーフェスSide2に対して同じ設定を繰り返します。

AcuConsoleは、シミュレーション設定プロセスを高速化して時間を節約可能なPropagateと呼ばれる特別な機能を備えています。この機能は、あるサーフェスセットまたはボリュームセットに対して設定された属性(Simple Boundary Condition、Surface Output、Surface Mesh Attributes、Element Set、Volume Mesh Attributesなど)を別のサーフェスセットまたはボリュームセットにコピーします。たとえば、シミュレーションモデル内にSimple Boundary ConditionがSlipに設定された10個のサーフェスセットがある場合にこの機能を使用できます。1つのサーフェスの境界条件を手動で設定してから、他のすべてのサーフェスに対してPropagate機能を使用する必要があります。

  1. Side1の下で、Simple Boundary Conditionsを右クリックして、Propagateを選択します。
  2. サーフェスSide2を選択して、Propagateをクリックします。

トップ

Topサーフェスは空気と接触している水のトップサーフェスであり、自由表面が適切な境界条件です。
注: 文字どおり、自由表面は、いかなる物理境界の制約も受けない流体のサーフェスです。この種の境界条件によって、メッシュ速度の法線成分がこのサーフェスの流速に課せられます。
  1. Data Treeで、Topを拡張表示します。
  2. Simple Boundary Conditionをダブルクリックして、Simple Boundary Condition詳細パネルを開きます。
  3. TypeがFree Surfaceに設定されていることを確認します。
  4. Surface tension modelがNoneに設定されていることを確認します。
    注: 表面張力モデルは、Global > Surface Tension Modelで定義された表面張力のユーザー指定モデルです。このシミュレーションでは表面張力をモデル化しないため、このパラメータはNoneに設定します。
  5. Contact angle modelがNoneに設定されていることを確認します。
    注: 接触角モデルは、Global > Contact Angle Modelで定義された接触角のユーザー指定モデルです。接触角モデルは、表面張力モデルと組み合わせて使用されます。このシミュレーションでは表面張力をモデル化しないため、このパラメータはNoneに設定します。
  6. Pressureが0に設定されていることを確認します。
  7. Pressure loss factorが0に設定されていることを確認します。
    注: 圧力損失係数(k)を使用する場合は、圧力項に次の項が追加されます。

    1 2 sgn ( u n ) k ρ ( u n ) 2

    ここで、

    sgn ( u . n ) = -1(流入の場合)

    sgn ( u . n ) =1(流出の場合)

    k = 圧力損失係数

    ρ = 流体の密度

    u = 流体の速度

    n = サーフェスの外向き法線

    圧力損失係数の値が高いほど、自由表面の動きが硬くなります。つまり、自由表面の変位が小さくなります。

Bottom

  1. Data Treeで、Bottomを拡張表示します。
  2. Simple Boundary Conditionをダブルクリックして、Simple Boundary Condition詳細パネルを開きます。
  3. TypeがSlipに設定されていることを確認します。
    簡易境界条件タイプSlipによって、指定されたサーフェスに垂直な速度に対して0の節点境界条件が課されます。
  4. Mesh displacement BC typeをFixedに変更します。
    Bottomサーフェスは静止表面であり、Mesh displacement BC typeをFixedにすることによって、サーフェスに対して0のメッシュ変位が課されます。

Outlet

  1. Data Treeで、Outletを拡張表示します。
  2. Simple Boundary Conditionをダブルクリックして、Simple Boundary Condition詳細パネルを開きます。
  3. TypeがOutflowに設定されていることを確認します。
  4. PressureとPressure loss factorにはデフォルト値を使用します。
  5. Hydrostatic pressureをOnに変更します。
    圧力はOutletサーフェス全体で一定ではありません。このサーフェス上の圧力は、重力によりZ軸に沿って変化します(静水圧変動)。一般的に、Hydrostatic pressureをOnに設定すると、圧力は次のように変化します。

    ρ ( z z 0 ) g

    ここで、

    ρ = 流体の密度

    z = サーフェス上の点の座標ベクトル

    z0 = 静水圧が0の座標ベクトル。Z0は、Hydrostatic pressure originを使用して下で定義されます。

    g = 重力ベクトル

  6. Hydrostatic pressure originの横で、Open Arrayをクリックして圧力の原点を定義します。
  7. Array Editorで原点(0, 0, 0)の座標を指定します。
    注: 自由表面(つまり、Topサーフェス)では静水圧が0になります。点(0, 0, 0)はTopサーフェス上にあります。特に、Topサーフェス上の任意の点を静水圧力原点として選択できます。

シミュレーション中は、逆流と呼ばれる、出口サーフェスの特定の部分から流れが領域内に入る特定の時点(特に、出口サーフェスで溝が形成された場合)が存在します。逆流は、温度や乱流変数の不安定につながる可能性があります。逆流状態を有効にすると、流れが領域内に再流入する節点上でのみこれらの変数の節点境界条件を指定することができます。出口が船体から十分離れていると仮定すると、渦粘性の値を入口と同じ(1e-05など)に設定することができます。

  1. Back flow conditionsをOnに戻します。
  2. Eddy viscosity back flow typeをValueに設定します。
  3. Eddy viscosityを1e-05に設定します。
  4. Mesh displacement BC typeをSlipに変更します。
    Mesh displacement BC typeをSlipに設定すると、このサーフェス(Outlet)上の節点をサーフェスに沿って自由に移動することができます。

No_Bc

No_Bcサーフェスセットには、実際のシミュレーションには関与しないGuide_Vol_Shipのサーフェスが含まれています。そのため、このサーフェスの境界条件は無効にするのが適切です。

  1. Data Treeで、No_Bcを拡張表示します。
  2. Simple Boundary Conditionチェックボックスのチェックをはずします。

Guide_surf

Guide_Vol_Shipに属しているこのサーフェスは、このシミュレーションでは静止したままであり、周囲の流体のガイドになります。そのため、このサーフェスをメッシュモーションなしのガイド表面として定義します。

  1. Data Treeで、Guide_surfを拡張表示します。
  2. Simple Boundary Conditionチェックボックスのチェックをはずします。
    注: これにより、Guide_surfサーフェスの境界条件がSimple Boundary Conditionsを使用して定義されなくなります。境界条件は、次の手順に従ってガイド表面として定義されます。
  3. Data Tree Managerで、ALLをクリックします。
  4. Guide_Surf surfaceの下で、Guide Surfaceの横にあるボックスをオンにします。
    Guide Surfaceタイプによって、Hull_guideサーフェスのメッシュ節点のガイドとしてGuide_Surfサーフェスを使用できるようになります。このチュートリアルの後半で定義するHull_guideサーフェス属性をご参照ください。
  5. Mesh motionがNoneに設定されていることを確認します。
    これにより、Guide_surfサーフェスは静止して運動しないことが保証されます。

Hull_guide

  1. Data Treeで、Hull_guideを拡張表示します。
  2. Simple Boundary Conditionをダブルクリックして、Simple Boundary Condition詳細パネルを開きます。
  3. TypeがWallに設定されていることを確認します。
  4. Wall velocity typeをMatch Mesh Velocityに変更します。
  5. Mesh displacement BC typeをGuide_Surfaceに変更します。
  6. Guide_surfaceをNoneからGuide_surfに変更します。
    これにより、Hull_guideサーフェスのメッシュ節点をGuide_surfサーフェスに沿って滑らせることができます。

Inlet

Inletでは、式 1によって与えられる重力波の水平速度を指定します。この入口における境界条件は、UDFによる節点境界条件を使用して定義されます。

  1. Data Treeで、Inletを拡張表示します。
  2. Simple Boundary Conditionをダブルクリックして、Simple Boundary Condition詳細パネルを開きます。
  3. TypeがSlipに設定されていることを確認します。
  4. Mesh displacement BC typeをSlipに変更します。
    注: Mesh displacement BC typeをSlipに設定すると、Inletサーフェス上の節点をサーフェスに沿って自由に移動することができます。
  5. Turbulence input typeがDirectに設定されていることを確認します。
  6. Eddy viscosityを1e-5に変更します。
    注: Simple Boundary Condition詳細パネル内のX、Y、Z速度は、デフォルト値の0のままで構いません。これらの値は後述するNodal Boundary Conditionsで上書きされます。入力が競合する場合は、Nodal Boundary Conditionsの方がSimple Boundary Conditionより優先されます。
  7. Data Tree ManagerのフィルタをALLに変更します。
  8. Inletの下でAdvanced Optionsを拡張表示し、Nodal Boundary Conditionsを拡張表示します。
  9. X-Velocityの横のボックスをオンにします。
  10. TypeをUser Functionに変更します。
  11. User function nameとして、usrWaveHorizontalと入力します。
  12. User function valuesの横で、Open Arrayをクリックします。
  13. Array Editorで、Addを5回クリックします。
  14. 次の図に示すように値を入力します。


    図 17.

    上で指定した値は、問題の解析の項で説明したものです。ユーザー値は上と同じ順序で指定する必要があります。これは、これらの値が渡されるUDFスクリプトでは、これらの値をこの特定の順序で参照するためです。

  15. OKをクリックします。

周期境界の定義

このシミュレーションは無限船モデルの2D表現です。したがって、解はサーフェスのSide1とSide2上で周期的になります。次の手順では、周期的境界条件を定義します。
注: 次の手順で保証されるのは、メッシュが周期的になることだけです。特定の変数の周期的境界条件の定義は別途行う必要があります。
  1. Data TreeのModelの下で、Periodicsを右クリックして、Newを選択します。
  2. Periodics 1の名前をSide1-Side2に変更します。
  3. Side1-Side2を右クリックして、Defineを選択します。
  4. Periodics BCダイアログで、サーフェスSide1およびSide2をそれぞれ選択します。
  5. TypeがTranslationalになっていることを確認します。
  6. Y-Offsetを-0.01m(Side1とSide2の間の距離)に設定します。


    図 18.
    変換後のSide 1サーフェスがSide 2サーフェスと一致するように、変換情報を指定する必要があります。このケースの場合は、Side 1を(-Y)軸に沿って0.01mだけ移動する必要があります。そのため、TypeはTranslationalに、Y-Offsetは-0.01mにします。
  7. OKをクリックします。

周期境界条件の確認

次の手順では、Side1とSide2のさまざまな変数の周期境界条件を定義します。

  1. Data Tree ManagerBASをクリックして、Data Tree内の基本ビューに切り替えます。
  2. Modelの下で、Periodicsを拡張表示して、Side1-Side2を拡張表示します。
  3. Periodic Boundary ConditionボックスがOnになっていることを確認します。
  4. Periodic Boundary Conditionをダブルクリックして、TypeがPeriodicに、Active TypeがAlwaysに設定されていることを確認します。


    図 19.

節点出力頻度の設定

節点出力頻度は、AcuFieldView内のポスト処理で使用するため解析結果を保存する頻度または時間間隔を決定します。

  1. Data TreeのGlobalの下で、Outputをダブルクリックします。
  2. Nodal Outputをダブルクリックして詳細パネルを開きます。
  3. Time step frequencyに2と入力します。
    この値を指定すると、AcuSolveは2つの時間ステップごとに結果を書き込みます。
  4. Output initial conditionをonにします。
    これは、AcuSolveが初期条件を書き込むことを意味します。
  5. データベースを保存します。

UDFのコンパイル

C言語の形式のUDF(wave.c)がチュートリアルに付属しています。次の手順に従って、このC プログラムをコンパイルする必要があります。

  1. WindowsでUDFをコンパイルする:
    1. Start > All Programs > Altair Hyperworks <version> > AcuSolve > AcuSolve Cmd Promptの順にクリックして、Windowsのスタートメニューから AcuConsole コマンドプロンプトを起動します。
    2. cdコマンドを使用して、ディレクトリを現在の作業ディレクトリに変更します。
    3. コマンドacuMakeDll –src wave.cを入力します。
  2. LinuxでUDFをコンパイルする:
    1. 端末で、cdコマンドを使用して、ディレクトリを現在の作業ディレクトリに変更します。
    2. コマンドacuMakeLib -src wave.cを入力します。
UDFを使用するために必要な一連のファイルが作成されます。

メッシュコントロールの割り当て

グローバルメッシュパラメータの設定

問題全体に対してシミュレーション特性を設定したので、次の手順はメッシュの生成です。

グローバルメッシュ属性は、特定の形状ボリューム、サーフェス、エッジ、およびポイントに参照されるのではなく、モデル全体に適用されるメッシングパラメータです。モデルの特定の形状コンポーネントのメッシュ生成コントロールを作成するには、ローカルメッシュ属性を使用します。

次の手順では、グローバルメッシュ属性を設定します。

  1. データツリーマネージャーMSHをクリックして、Data Tree内の設定をフィルタ処理して、メッシングに関するコントロールのみを表示します。
  2. GlobalData Tree項目を拡張表示します。
  3. Global Mesh AttributesをダブルクリックしてGlobal Mesh Attributes詳細パネルを開きます。
  4. Mesh size typeをAbsoluteに変更します。
  5. Absolute mesh sizeに0.01mと入力します。


    図 20.

メッシュ押し出しの定義

このシミュレーションは、モデルの2D表現と等価です。AcuSolveでは、厚み方向の要素の数を1つのみにすることで2Dモデルがシミュレートされます。このケースでは、Side1とSide2の間に1つだけ要素が必要となります。これは、メッシュ押し出しプロセスで実現できます。Side1とSide2で同じ境界条件を使用しているため、それらの間で1つの要素を使用することにより、厚み方向で節点値が一定となり、確実に2Dモデルのシミュレーションが行われます。次の手順では、Side1からSide2へのメッシュの押し出しプロセスを定義します。

  1. Model Data Tree項目を拡張表示して、Mesh Extrusionsを右クリックします。
  2. コンテキストメニューからNewを選択し、新しいエンティティMesh Extrusion 1を作成します。
  3. Mesh Extrusion 1の名前をSide1-Side2に変更します。
  4. Side1-Side2を右クリックして、コンテキストメニューからDefineを選択します。
  5. Mesh Extrusionダイアログで、次の設定を行います。
    1. ドロップダウン矢印を使用して、Side 1とSide 2のサーフェスとしてそれぞれSide1Side2を選択します。
    2. Extrusion typeがNumber of layersに設定されていることを確認します。
    3. Number of layersを1に設定します。
    4. Extrusion optionsをAll tetsに設定します。
    下の図を参考用として使用してください。


  6. OKをクリックし、ダイアログを閉じます。

メッシュの生成

次の手順では、問題の解を計算する際に使用されるメッシュを生成します。

  1. ツールバーの をクリックしてLaunch AcuMeshSimダイアログを開きます。
    このケースでは、デフォルトの設定を使用します。
  2. Okをクリックしてメッシングを開始します。

    メッシング時に、AcuTailウィンドウが開きます。メッシングの進行状況はこのウィンドウで報告されます。メッシングプロセスのサマリーで、メッシュが生成されたことが示されます。



    図 21.
    注: 節点と要素の実際の数およびメモリ使用量は、マシンによって少し異なる場合があります。
  3. モデリングウィンドウにメッシュを表示します。サーフェスの表示をオンにして、display typeをsolid and wireに設定します。


    図 22.

節点の分割

この時点で、Hull_guideサーフェスではすべての節点が流体に接合されています。節点セットの複製を作成し、1つの節点セットが流体の動きに追随し、もう1つの節点セットがサーフェスGuide_surfに接合されたままになるようにする必要があります。次の手順では、節点の分割プロセスを示します。

Data TreeのSurfacesの下でHull_guideを右クリックして、Mesh Op. > Split internal facesを選択します。
節点数が増加します。

解の計算と結果の確認

AcuSolveの実行

次の手順では、AcuSolveを起動してこのケースの解を計算します。

  1. ツールバーでをクリックしてLaunch AcuSolveダイアログを開きます。
    このケースでは、デフォルト値を使用します。

    AcuSolveは4つのプロセッサを使用して(可能な場合は、さらに多くのプロセッサを指定できる)実行され、AcuConsoleAcuSolve入力ファイルを生成して、AcuSolveを起動します。AcuSolve は、この問題の非定常解を計算します。

  2. Okをクリックして解析プロセスを開始します。

    計算中、AcuTailウィンドウが開きます。解析の進行状況はこのウィンドウで報告されます。解析プロセスのサマリーで、実行が完了したことが示されます。

    このサマリーで提供される情報は、AcuSolveで使用されるプロセッサの数に基づいています。このチュートリアル内で示されている数と異なる数のプロセッサを使用した場合は、示されているサマリーと実行時のサマリーが少し異なる場合があります。



    図 23.
  3. AcuTailウィンドウを閉じ、データベースを保存して設定のバックアップを作成します。

AcuProbeによる解析のモニター

AcuProbeを使用して、解析時間におけるさまざまな変数をモニターできます。このシミュレーションでは、船体にかかる力をモニターすることを目的とします。

  1. ツールバーの アイコンをクリックして、AcuProbeを開きます。
  2. Data TreeSurface Output > Hull_guide > Forces and Momentsを拡張表示します。
  3. x_wall_shear_stressを右クリックし、Plotを選択します。
    注: プロットを正しく表示するために、ツールバーで をクリックする必要がある場合があります。
  4. 同様に、z_wall_shear_stressを右クリックし、Plotをクリックします。


    図 24.
  5. プロットを画像として保存することもできます。
    1. AcuProbeダイアログで、File > Saveをクリックします。
    2. 画像の名前を入力して、Saveをクリックします。
  6. 変数の時系列データをテキストファイルとしてエクスポートして、さらにポスト処理することもできます。
    1. エクスポートする変数を右クリックして、Exportをクリックします。
    2. File nameを入力して、Save as typeに.txtを選択します。
    3. Saveをクリックします。

AcuFieldViewでの結果の表示

計算が終了したので、AcuFieldViewを使用して流れ場を表示する準備ができました。AcuFieldViewは、AcuSolveに緊密に統合されたサードパーティ製のポスト処理ツールです。AcuFieldViewAcuConsoleから直接開始できますが、スタートメニューやコマンドラインから開始することもできます。このチュートリアルでは、AcuSolveによって解が計算された後に、AcuConsoleからAcuFieldViewを開始します。

次の手順では、AcuFieldViewを起動して、zメッシュ変位のコンターを使用した船体運動のアニメーションを作成します。

AcuFieldViewの起動

  1. AcuConsoleツールバーで をクリックしてLaunch AcuFieldViewダイアログを開きます。
  2. OkをクリックしてAcuFieldViewを起動します。
    AcuConsoleからAcuFieldViewを起動するときには、ディスクに書き込まれた、解析の最後の時間ステップの結果が、ポスト処理のために読み込まれます。

船の周囲の水の変位の表示

これらの手順では、ユーザーがAcuFieldViewのビューを操作して、白の背景に設定できること、遠近法表示をオフにできること、アウトラインをオフにできること、および表示方向を+zに設定できることを前提としています。AcuFieldViewの基本的な操作がわからない場合は、AcuFieldViewにおけるモデルビューの操作をご参照ください。

  1. 下の図に示すように、Topサーフェスがはっきり見えるように、形状の方向を設定します。


    図 25.
  2. Boundary Surfaceダイアログで、Show Meshのチェックをはずします。
  3. スカラー関数としてz-mesh-displacementを選択し、Calculateをクリックします。
  4. LegendタブでShow Legendをクリックします。
  5. その色を黒に変更します。
    注: 凡例は、Shiftキーを押しながら左クリックすることにより、移動できます。
  6. ColormapタブでLocalをオンにします。
  7. Tools > Flipbook Build Modeをクリックして、OK をクリックします。
  8. Tools > Transient Dataをクリックして、1つ目の時間ステップデータが境界サーフェスに反映されるまでスライダーを戻します。
  9. Buildをクリックして、アニメーションを作成します。
  10. アニメーションが作成されたら、Frame Rateをクリックして0.1に変更します。
  11. アニメーションをZ-Displacementとして保存します。

要約

このチュートリアルでは、表面重力波による静止船体シミュレーションを設定する基本的なワークフローに取り組みました。ケースが設定された後、メッシュを生成し、AcuSolveを使用して解を求めました。時間に伴う自由表面運動のアニメーションを作成できるよう、結果がAcuFieldViewでポスト処理されました。このチュートリアルで紹介した新機能:
  • 表面重力波を生成するためのユーザー定義関数(UDF)
  • メッシュ押し出しと周期的境界条件
  • ALEベースのメッシュモーションアプローチ
  • サーフェス属性を適用するためのSurface Managerの使用
  • 境界条件としての静水圧の使用
  • AcuSolveの自由表面機能とガイド表面機能