img

Forコンポーネントは、FortranのDoループのように指定されたインデックス値に応じて下位コンポーネントを繰り返し実行します。

Forコンポーネントに設定できるプロパティは以下のとおりです。

start

インデックスの始値を設定します。

end

インデックスの終値を設定します。

step

インデックス更新時の更新幅を設定します。

インデックス値の参照方法について
ループ実行中に下位コンポーネントから現在のインデックス値を利用する場合は、$WHEEL_CURRENT_INDEX 環境変数で参照可能です。

number of instances to keep

各インデックスで処理を行なった時のディレクトリを最大何個まで残すかを指定します。 無指定のときは、全てのディレクトリが保存されます。

詳しくは後述のForコンポーネント実行時の挙動で説明します。

skip copy

各イテレーション間のコピー操作から除外するファイル、ディレクトリ、または glob パターンのリストを設定します。

指定したパターンにマッチするファイル・ディレクトリは、WHEEL が前のイテレーションのディレクトリから新しいイテレーションディレクトリを作成する際にコピーされません。 前のイテレーションで生成された大容量の出力ファイルや一時ファイルを除外するのに便利です。

入力欄に任意のパターンを入力し、+ボタンをクリックで追加します。 glob パターン(例:*.logoutput_*results/)も使用できます。

Forコンポーネント実行時の挙動

Forコンポーネントが初めて実行されるとき、コンポーネントのディレクトリはインデックスの値を末尾につけた名前でコピーされます。 コピーされたディレクトリ内の下位コンポーネントの実行が全て終了すると、新しいインデックス値が計算されその値に基いてさらにディレクトリがコピーされます。

この処理は順次繰り返し実行され、インデックスの値が終値を超えるまで続けられます。 終値を超えた時点のディレクトリは元のディレクトリにコピーされ、Forコンポーネントの処理は終了します。 なお、stepにマイナスの値を設定した場合も始値 > 終値 となっていれば正常に実行されます。 この場合はインデックスが終値を下回ると実行終了となります。

例えば、start=1, end=3, step=2と設定された forというコンポーネントは次のように処理されます。

  1. forディレクトリをfor_1ディレクトリとしてコピーする
  2. for_1ディレクトリ内のコンポーネントを順次実行する
  3. index計算 1+2 = 3 => 終値の3と等しいので、次のループを実行する
  4. for_1ディレクトリをfor_3ディレクトリとしてコピーする
  5. for_3ディレクトリ内のコンポーネントを順次実行する
  6. index計算 3+2 = 5 => 終値の3を超えているので、終了処理を行なう
  7. for_3ディレクトリをforディレクトリとしてコピーする

number of instance to keepの値が0以外に設定されていた場合は、4,7の処理を実行後に設定された数を超える古いディレクトリ(for_1for_3など)を削除します。

インスタンスディレクトリ名が衝突した場合

インデックス値を付加したディレクトリ名(例:for_1)が、既存の別のコンポーネントやファイル・ディレクトリと同じ名前になってしまう場合、WHEELは自動的に区切り文字をエスカレーションします。

例えばfor_1という名前のディレクトリやコンポーネントが既に存在する場合、Forコンポーネントは代わりにfor__1(アンダースコア2つ)を使用します。それでも衝突する場合はfor___1(アンダースコア3つ)というように、衝突が解消されるまで区切り文字を追加していきます。

一度決定した区切り文字は、そのループの実行中(および再開時)は一貫して使用されます。


コンポーネントの詳細に戻る

Updated: