OpenFOAM Script

# OpenFOAM Script

[第25回オープンCAE勉強会@関西（OpenFOAMなど）](https://atnd.org/events/42533)の発表資料の一部．
あとで追記予定．

## foamUpdateCaseFileHeader
ヘッダ中のVersion番号を現在使用しているOpenFOAMのVersionに更新する。

```bash
Usage: foamUpdateCaseFileHeader [OPTION] <file1> ... <fileN>
```

時刻ディレクトリやsystem,constantの下のファイルのヘッダを全て更新するには、例えば以下のようにすれば良い

```bash
foamUpdateCaseFileHeader * */* */*/*
```

カレントディレクトリ以下の全てのファイルのヘッダを更新するには、findとxargsを用いて以下のようにすれば良い。

```bash
find . | xargs foamUpdateCaseFileHeader
```

なお、OpenFOAMのヘッダが無いファイルは無視される。

```bash
run
cd tutorials/incompressible/pisoFoam/ras/cavity
foamUpdateCaseFileHeader * */* */*/*
```
```
 Invalid case file: 0
 Invalid case file: constant
 Invalid case file: system
Updating case file: 0/U
Updating case file: 0/epsilon
Updating case file: 0/k
Updating case file: 0/nuTilda
Updating case file: 0/nut
Updating case file: 0/p
Updating case file: constant/RASProperties
 Invalid case file: constant/polyMesh
Updating case file: constant/transportProperties
Updating case file: constant/turbulenceProperties
Updating case file: system/controlDict
Updating case file: system/fvSchemes
Updating case file: system/fvSolution
Updating case file: constant/polyMesh/blockMeshDict
Updating case file: constant/polyMesh/boundary
```

# foamRunTutorials
チュートリアルのケースを実行する。

ケースのディレクトリにAllrunがあればそれを実行し、それがなければblockMeshとソルバを実行する。ソルバはsystem/controlDictのapplicationで定義されているコマンドである。

```bash
run
cd tutorials/incompressible/simpleFoam/pitzDaily/
foamRunTutorials
```
```
Running blockMesh on $FOAM_RUN/tutorials/incompressible/simpleFoam/pitzDaily
Running simpleFoam on $FOAM_RUN/tutorials/incompressible/simpleFoam/pitzDaily
```

## foamCleanTutorials
チュートリアルのケースを初期化する。

ケースのディレクトリにAllwcleanやAllcleanがあればそれを実行し、それらがなければデフォルトの初期化を行う。

```bash
foamCleanTutorials
```
```
Cleaning $FOAM_RUN/tutorials/incompressible/simpleFoam/pitzDaily case
```

## foamClearPolyMesh
メッシュデータを消去する。

```bash
foamClearPolyMesh 
```
```
Clearing ./constant/polyMesh
```

## foamCopySettings

OpenFOAMのケースをコピーする。ただし、メッシュや解析結果は除外する。

```bash
$ foamCopySettings pitzDaily pitzDaily2
```
```
synchronizing with
    rsync --exclude polyMesh --exclude processor*

pitzDaily/0 -> pitzDaily2/0
pitzDaily/550  [skipped]
pitzDaily/700  [skipped]
pitzDaily/750  [skipped]
pitzDaily/system -> pitzDaily2/system
pitzDaily/768  [skipped]
pitzDaily/100  [skipped]
pitzDaily/300  [skipped]
pitzDaily/constant -> pitzDaily2/constant
pitzDaily/400  [skipped]
pitzDaily/250  [skipped]
pitzDaily/residualUVWP.dat -> pitzDaily2/residualUVWP.dat
pitzDaily/650  [skipped]
pitzDaily/50  [skipped]
pitzDaily/log.blockMesh -> pitzDaily2/log.blockMesh
pitzDaily/450  [skipped]
pitzDaily/500  [skipped]
pitzDaily/log.simpleFoam -> pitzDaily2/log.simpleFoam
pitzDaily/600  [skipped]
pitzDaily/200  [skipped]
pitzDaily/postProcessing -> pitzDaily2/postProcessing
pitzDaily/150  [skipped]
pitzDaily/350  [skipped]
```

## foamSolverSweeps
ソルバの全反復回数等の情報を表示する。

```bash
run
cd tutorials/incompressible/simpleFoam/pitzDaily/
foamSolverSweeps
```
```
timeFile=/tmp/FOAM_iters.time
runTimeFile=/tmp/FOAM_iters.rtime
piterFile=/tmp/FOAM_iters.piters
uiterFile=/tmp/FOAM_iters.uiters

Name of log file (LOG) : log.simpleFoam ← ソルバのログファイル名を入力

Program: ← ソルバ名が表示されないのはバグ

Runtime:
  1st iter  : ExecutionTime = 0.87 s ClockTime = 1 s
  overall   : ExecutionTime = 157.96 s ClockTime = 158 s

Simulation:
  steps: 768
  from : Time = 1
  to   : Time = 768

Solver sweeps:
  p           : 115859
  U(U0,U1,U2) : 1875
```