DEQATN
バルクデータエントリ 最適化で使用する1つまたは複数の式を指定します。
フォーマット
(1) | (2) | (3) | (4) | (5) | (6) | (7) | (8) | (9) | (10) |
---|---|---|---|---|---|---|---|---|---|
DEQATN | EQUID | EQN1; | EQN2; | EQN3; | |||||
…; … ; EQNn-1; EQNn |
例1
DEQATN | 3 | y(x1, x2) = x1 + x2**-3.0*(2-1)+5.0; | |
z = -y*1.3E-2 |
例 2
DEQATN | 104 | z(x1, x2) = min(sin(x1), x2); | |
y = max(0.3, -2.0, z) + 4.0 |
定義
フィールド | 内容 | SI単位の例 |
---|---|---|
EQUID | 固有の式識別番号。 (整数 > 0) |
|
EQNi | i次式。 (文字列) |
制限事項
- 8文字を超える変数名は末尾が切り捨てられます。そのため、切り捨て後の2つの変数名が同じ場合、式にエラーが生じる可能性があります。
- 三角関数引数はすべてラジアン単位です。
- 変数名に使用できるのは英数字のみです(つまり、下線、通貨記号、句読点、数学演算子、英字以外の文字などは使用できません)。
- 数学関数名(コメント6に示す関数など)は変数名として使用できません。
- 以下の関数は使用できません。
DB() DBA() INVDB() INVDBA()
考えられるエラー
- Error 1690
- This equation could not be parsed.詳細については、OptiStructマニュアルのDEQATNエントリをご参照ください。
- 式の長さが1行あたり72文字の制限を超えている。
- 式の最後の文字が演算子である。
- 式内に2つの演算子が隣り合って記述されている。
- 式内に英数字以外の文字(演算子を除く)が含まれている。
コメント
- 各式カードは固定フォーマットで指定します。データフィールド境界に制限はありません。式は最初のカードの列17~72と各継続カードの列9~72に記述します。式の全長に制限はありません。
- ラージフィールドフォーマットは使用できません。
- 自由フィールドフォーマットを使用することはできますが、受け付けられる文字数は固定フォーマットと同じ文字数(1行目は56文字、継続行は64文字)に限られます。72列目以降の文字は受け付けられません。超過した文字は無視され、警告は出力されません。この結果、DEQATNエラーが発生したり、意図したものとは異なる有効な式が生成されたりする場合があります。自由フォーマットの継続カードでは、先頭の8列以内にコンマが必要です。この範囲内にコンマがない場合、カードは固定フィールドフォーマットとして解釈されます。
- 式に含まれる空白文字は無効です。これは定数、変数、または関数名内でも同様です。小文字と大文字は区別されません。
- どの式カードでも各式の左辺の変数は1つだけにする必要があります。最初の式の変数の後には、以下のフォーマットの引数リストを続ける必要があります:
v1(x1,x2,…,xn) = expression(x1,x2,…,xn); v2 = expression(x1,x2,…,xn,v1); … vi = expression(x1,x2,…,xn,v1,v2,…,vi-1); … vn = expression(x1,x2,…,xn,v1,v2,…,vn-1);
ここで、
vi
は式iの変数、(x1
,x2
, …,xn
)は変数v1
の引数リストです。 (v1
,v2
,…,vi-1
)は、式1~式i-1の結果に対応する変数リストです。EQUIDを参照するバルクデータカード(DRESP2など)には最後の式の値だけが返されます。
- 定数は、整数または浮動小数点のいずれかの形式で指定できます。浮動小数点数は、通常の小数点形式(3.90)または科学的記数法(-2.0E-3)(-2x10-3の意味)のどちらの形式でも記述できます。サポートされている数学関数のリストは以下のとおりです:
- 引数が1つの関数
- abs(x)
- 絶対値
- acos(x)
- 逆余弦
- acosh(x)
- 双曲線逆余弦
- asin(x)
- 逆正弦
- asinh(x)
- 双曲線逆正弦
- atan(x)
- 逆正接
- atanh(x)
- 双曲線逆正接
- cos (x)
- 余弦
- cosh(x)
- 双曲線余弦
- exp(x)
- 指数
- log(x)
- 自然対数
- log10(x)
- 常用対数
- pi(x)
- πの倍数
- sin(x)
- 正弦
- sinh(x)
- 双曲線正弦
- int (x)
- 実数から整数への変換
- sqrt(x)
- 平方根
- 引数が2つの関数
- atan2(x,y)
- 商の逆正接
- atanh2(x,y)
- 商の双曲線逆正接
- dim(x,y)
- 正差
- logx(x,y)
- yを底とする対数
- mod(x,y)
- 剰余
- 引数が複数の関数
- サポートされている演算子には以下のものがあります:
記号 意味 例 + バイナリ+ x + y - バイナリ- x - y * 乗算 x * y / 除算 x / y ** 累乗 x**y + 単項+ +1.0 - 単項- -1.0 - 数値計算の優先順位は、Fortran言語のルールに従います。括弧は、上に示す演算子よりも優先されます。連続する2つの演算子は、2つ目が正または負の単項の場合にのみ使用できます。演算子の優先順位の例:
- 表記
- 結果
- 2**-3
- 0.128
- 1 / 2 + 3
- 3.5
- 2*3-4
- 2.0
- -2**3**2
- -512.0
- 2 + -5
- -3.0
- 2 * -5
- -10.0
- 2 - -5
- 7.0
- 2/3/4
- 0.16666666…
- 2/(3/4)
- 2.6666666…
- 複数の関数を、min(sin(x1), x2)のような層状のフォーマットで定義できます(層数に制限はありません)。
- DEQATNエントリは、DRESP2やDVPREL2バルクデータカードで参照します。
DRESP2カード、DVIDi、LABj、NRk、Gr、およびDPIPで指定した変数は、EQUIDで指定したDEQATNカードの最初の式の左辺にある変数引数に対応します。変数引数x1~xN(ここで、N = n + m + p + q + s)は、DVID1、DVID2、…、DVIDn、LAB1、LAB2、…、LABm、NR1、NR2、…、NRp、G1、…、Gq、DPIP1、…、DPIPSの順番で割り当てられます。DVPREL2カードでは、DVIDiとLABjで指定した変数は、EQUIDで指定したDEQATNカードの最初の式の左辺にある変数引数に対応します。変数引数x1~xN(ここで、N = n + m)は、DVID1、DVID2、...、DVIDn、LAB1、LAB2、...、LABmの順番で割り当てられます。
DRESP2やDVPREL2エントリでは、最後の式の計算値(vn)のみが使用されます。
- HyperMeshでは、このカードは最適化の関数として表されます。