ANSYS FLUENTで都市の微小気候をシミュレーションする [3: Solving]

前回のつづきです。

https://qiita.com/suga3008/items/e75b086aec9aa8654b7d

## Solving
物理モデルや境界条件などの設定をして、流体シミュレーションを実行する。

:::note warn
ここでの設定値は、末尾に掲載した参考文献に基づいています。あくまで一例なので、適宜目的とする条件に合わせて、同じまたは似たような条件のシミュレーションを行っている文献を参考にしてください。
:::


## メッシュファイルのインポート
Ansys Fluentを「Solution」モードで起動する。
![スクリーンショット 2024-02-01 095001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3015300/79a7e75a-7542-39a1-9d90-7ffa3f51807c.png)

作成したメッシュファイルをインポートする。File>Read>Meshで、目的のメッシュファイルを選択し、インポートする。
メッシュを表示する。Domain>Mesh>Displayをクリックすると、以下のウィンドウが開く。
![スクリーンショット 2024-02-01 095842.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3015300/9e72da71-10b3-96c9-16d3-be876b59262e.png)

Optitonsで、Edgesを✅すると、メッシュが表示される。Facesを✅すると、面が表示される。
Transparencyを50%ほどに設定すると、Facesが透けて中の構造も見えるようになる。
![スクリーンショット 2024-02-01 100143.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3015300/f8710a4f-5c23-2624-8bbb-a250f2eeae26.png)


次に、Domainタブに移る。
メッシュのクオリティを確認する。Mesh>Check>Perform Mesh Checkをクリックする。Consoleに結果が表示される。「Done.」と書かれていることを確認する。さらに、Mesh>Quality>Evaluate Mesh Qualityをクリックする。Consoleを見て、

* Minimum Orthogonal Qualityが0.1以上であること
* Maximum Aspect Ratioが1.2以下であること

を確認する。
最後に、温度の単位をK（ケルビン）からC（セルシウス温度）に変更する。Mesh>Unitsをクリックし、Set Unitsのウィンドウが現れたら、Quantitiesの中から**temperature**を選択し、UnitsをKから**C**に変更する。これにより、温度をセルシウス温度で表示してくれるようになる。

## Physicsの設定
Physicsタブに移る。

### Solver
Solver>Generalをクリックする。画面中央の「Task Page」ウィンドウに注目する。「Solver」を以下のように設定する。
| item | Setting |
|:-:|:-:|
| Type  | Pressure-Based  |
| Velocity Formulation  | Absolute  |
| Time  | Steady  |

### Models
PhysicsタブのModelsにあるEnergyを✅する。これにより、温度のシミュレーションができるようになる。
次に、Viscousを設定する。ここで、流体の物理モデルの設定を行う。
| item | setting |
|:-:|:-:|
| Model  | k-epsilon(2 eqn) |
| k-epsilon Model  | Realizable |
| Near-Wall Treatment  | Standard wall Functions |

それ以外の項目はデフォルトのままにする。

日射による影響を考慮する場合は、Radiation Modelも設定する。

| item | setting |
|:-:|:-:|
| Model  | Surface to Surface (S2S)  |
| Solar Load Model  | Solar Ray Tracing  |

Solar Loadの「Solar Calculator」をクリックする。ここで、シミュレーションをする場所（緯度経度）や日時を設定する。

Global PositionとDate and Timeでは、シミュレーションしたい場所と日時を設定する。以下、8月1日12:00 札幌市でのシミュレーションの例を示す。
| item | e.g. |
|:-:|:-:|
| Longitude  | 141.35  |
| Latitude  | 43.06  |
| Timezone  | +9  |
| Day | 1  |
| Month  | 8  |
| Hour | 12 |
| Minite  | 0 |

Applyボタンをクリックし、設定を適応する。

Illumination Parametersは以下のように設定する。
| 1 | 2 | 3 |
|:-:|:-:|:-:|
| Direct Solar Irradiation  | constant  | 288.80 |
| Diffuse Solar Irradiation  | constant  | 346.63 |


View Factorを作成する。View Factors and Clusteringの「Compute/Write/Read」をクリックする。保存場所やファイル名を適切に設定して、保存する。

### Materials
Materials>Create/Editをクリックし、Materialを追加していく。

#### concrete(建物用)
まず、Material Typeは**Solid**を選択。Nameに**concrete**と入力し、変更する。Chemical Formulaはalを削除し、空欄にする。次に、Propertiesを以下のように設定する。
| 1 | 2 | 3 |
|:-:|:-:|:-:|
| Density  | constant  | 930  |
| Cp  | constant  | 840  |
| Thermal Conductivity  | constant  | 0.86  |

![スクリーンショット 2024-02-01 151050.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3015300/ac2d6c22-dc39-1b56-11f4-370bc915c5a3.png)

「Change/Create」ボタンをクリックする。画面左にあるOutline View ウィンドウのMaterials>Soildを展開し、concreteが追加されているか確認する。

#### asphalt(地面用)
concreteと同様にasphaltを追加する。

| 1 | 2 | 3 |
|:-:|:-:|:-:|
| Density  | constant  | 1700 |
| Cp  | constant  | 1000 |
| Thermal Conductivity  | constant | 0.9 |

### Zones
Zones>Boundariesをクリック。
それぞれの境界条件を設定していく。

#### bldg
建物の境界条件を設定する。建物に該当するZoneをダブルクリックすると、そのZoneの境界条件を設定するウィンドウが現れる。
Momentumタブでは以下のように設定する。

| item | setting |
|:-:|:-:|
| Wall Motion | Stationary Wall|
| Shear Condition | No Slip |
| Roughness Models | Standard |
| Roughness Height | 0.08 |
| Roughness Constant | 0.5 |

Thermalタブに移り、以下のように設定する。

| item | setting |
|:-:|:-:|
| Thermal Conditions | Heat Flux  |
| Material Name | concrete | 
| Heat Flux | 0  |
| Wall Thickness | 0.3 |
| Heat Generation Rate | 0 |

#### ground
地表面の境界条件を設定する。groundをダブルクリックする。
以下の設定以外は、すべてbldgと同様。

Momentumタブ
| item | setting |
|:-:|:-:|
| Roughness Height | 0.2 |

Thermalタブ
| item | setting |
|:-:|:-:|
| Material Name | asphalt | 

#### inlet
inletでは、風向きを設定する。[気象庁が公開する気象データ](https://www.data.jma.go.jp/stats/etrn/index.php)等を参照し、風速を決定する。inlet面に対して垂直方向に風向きを設定する場合は、Momentumタブで以下のように設定する。

| item | setting |
|:-:|:-:|
| Velocity Specification Method | Magnitude, Normal to Boundary |
| Reference Frame | Absolute |
| Velocity Magnitude | *風速を設定  |
| Supersonic/Initial Gauge Pressure | 0 |

温度の設定は、Thermalタブで行う。
こちらも気象データを参照し、適切な値を設定する。

#### others
その他のoutlet、lateral_boundaryなどは設定を変更する必要はない。


## Solution
Solutionタブに移る。

### Scheme
Solution>Methodsをクリック。以下のように設定する。

| item | setting |
|:-:|:-:|
| Scheme | SIMPLE |
| Gradient | Least Squares Cell Based |
| Pressure | Body force weighted |
| Momentum | Second-order upwind |
| Turbulent Kinetic Energy | Second-order upwind  |
| Turbulent Dissipation Rate | Second-order upwind |
| Energy | Second-order upwind |

### Save
ここまでの設定を保存する。
File>Write>Caseをクリックし、ファイル名を決め、保存する。

### Initialize
Solutionタブに移り、Initialization>Initializeをクリック。
「done」がConsoleに表示されたら、OK。

### Calculate
Run Calculationの**No. of Iterations**に**300**と入力する。

:::note warn
参考とした文献では、No. of Iterationsを**6000**と設定しているが、Iterationの回数を増やすほどシミュレーションに多大な時間を要するため、ここでは**300**と設定した。
:::


そして、「Calculate」ボタンをクリック。シミュレーションが開始する。
以下のように、残差（Residuals）が逐次更新されていく。

![スクリーンショット 2024-02-01 160451.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3015300/6c666929-0b66-4f5f-f08a-5e508af884a0.png)

画面右下では、進行状況がパーセンテージで確認できる。
パソコンのスペックや、メッシュファイルのデータサイズなどにもよるが、シミュレーション終了まで最短で20-30分くらいかかる。

-次回に続く-

## 参考文献
[Adelia et al., Tool comparison for urban microclimate modelling (2020)](https://doi.org/10.3929/ethz-b-000407999) -シミュレーションの設定値はこの文献の「3.2 CFD Simulation」の表に従った。