analysis_run を呼び、job_id を受け取る(この時点でジョブは Running としてバックグラウンド実行される)
analysis_status(job_id) を Done/Failed になるまでポーリングする
Done の場合、analysis_status の result_ref にサマリ JSON が入っている。さらに詳細な明細(節点変位・部材内力など)が必要なら result_get を呼ぶ
// 1. analysis_run(kind="LinearStatic") の返り値
{ "job_id": "job-0" }
// 2. analysis_status(job_id="job-0") の返り値(Done になった時点)
{
"id": "job-0",
"kind": "LinearStatic",
"status": {
"Done": {
"result_ref": "{\"kind\":\"LinearStatic\",\"case\":1,\"n_nodes\":2,\"n_member_force_rows\":3,\"max_abs_disp\":1.23,\"store\":{\"case\":1,\"kinds\":[\"NodalDisp\",\"MemberForce\"]}}"
}
}
}
// 3. result_get(case=1, kind="NodalDisp") の返り値
{ "case": 1, "kind": "NodalDisp", "rows": [ { "node_id": 1, "ux": 0.0, "uy": 0.0, "uz": 1.23, "rx": 0.0, "ry": 0.0, "rz": 0.0 } ], "truncated": false }
Eigen ジョブの結果は結果ストアに case=0 として格納されます(実荷重ケース番号との衝突を避けるための固定値)。result_get(case=0, kind="Modal") で取得します。
result_get の kind に指定できる 4 種のスキーマは以下のとおりです(すべて Arrow の UInt32/UInt64/Float64 列で構成されます)。
| 列名 | 型 |
node_id | UInt32 |
ux, uy, uz | Float64 |
rx, ry, rz | Float64 |
| 列名 | 型 | 備考 |
elem_id | UInt32 | |
pos | Float64 | 評価位置(0..1 の正規化座標) |
n, qy, qz, mx, my, mz | Float64 | 部材内力(軸力・せん断・ねじり・曲げ) |
| 列名 | 型 |
mode | UInt32 |
period | Float64 |
omega2 | Float64 |
part_x, part_y, part_z | Float64 |
eff_x, eff_y, eff_z | Float64 |
| 列名 | 型 |
step | UInt64 |
time | Float64 |
node_id | UInt32 |
ux, uy, uz | Float64 |
rx, ry, rz | Float64 |
result_get が 1 回に返す行数の上限は 10,000 行です。超過分は切り詰められ、応答の truncated が true になります。