FOR / NEXTループ
FOR / NEXTループでは、ループ内のパラメータを柔軟に変化させることができます。
EDITFEKOの一部のカードでは暗黙的にループを使用します(複数の周波数でFRカードを使用する場合など)。ここでは必要となる柔軟性が常に提供されるわけではありません。たとえば、ループ内の材料パラメータを変更する場合などです。別の例としては、ループを使用して複雑な形状オブジェクトを作成する場合が挙げられます。
一般的なループに対して、PREFEKOでは次の構造を使用できます:
!!for #var = #start to #end step #delta
!!next
この単純な例は次のようになります。** Loop for the relative permittivity
!!for #eps_r = 1 to 5 step 0.5
** Set material parameters
GF 0 1 #epsr
** Compute fields etc.
FE
** End of loop
!!next
FOR / NEXTループのシンタックス要件は次のとおりです:
!!
文字は、行の先頭2列に配置する必要があります。その後にオプションでいくつかのスペースが続き、さらにキーワードFORが続きます(ここでは大文字小文字は区別されないので、“For”や“for”も使用できます)。- キーワードFORの後には、ループ変数の名前が続きます(先頭に“
#
”を付けます)。 - 次に、ループの初期値の式(定数、変数、数式のいずれか)が続きます。
- その後には、キーワードTOと、ループ変数の終了値(これも定数、変数、数式のいずれか)が続きます。
- ループ変数のデフォルトの増分は1ですが、キーワードSTEPの後に式を続けることで変更できます。負の増分値も許容されます。
- ループは
!!NEXT
というフォームの行で終了します(!!
とNEXTの間にはスペースを挿入できますが、!!
の前には挿入できません)。ループ内では、!!FOR
と!!NEXT
の間のすべての命令と入力カードが繰り返し評価されます。 - ループはネストすることができます。
さらに複雑な例を次に示します:
#end = 3+sin(4)
!!for #x1 = sqrt(5) + 2*3 to 2*#end step -#end/10
!! for #x2 = 1.23 to 2*#x1 ** this is the inner loop
#x3 = #x1 + #x2
DP ....
.... (more commands)
!! next
!!nex