FEMur API Reference
FEMur のコアライブラリ(FEMur.dll)は、Grasshopper の C# スクリプトコンポーネントからも、
通常の .NET アプリケーションからも直接呼び出せます。このリファレンスはその公開 .NET API を説明します。
各ページは英語で自動生成されています。このページと使い方ガイドは日本語です。
最小の解析例
片持ち梁(長さ 2 m の H-200x100、先端に 1 kN)を解いて先端のたわみを得るコードです。
using System;
using System.Collections.Generic;
using FEMur.CrossSections;
using FEMur.Elements;
using FEMur.Geometry;
using FEMur.Loads;
using FEMur.Materials;
using FEMur.Models;
using FEMur.Nodes;
using FEMur.Solver;
using FEMur.Supports;
// 1. 節点をつくる。単位は mm。第1引数が Node.Id
var n1 = new Node(0, 0.0, 0.0, 0.0);
var n2 = new Node(1, 2000.0, 0.0, 0.0);
// 2. 材料と断面(引数は name, b, h, t_f, t_w, r)
var steel = Material_Isotropic.Steel();
var section = new CrossSection_H("H-200x100", 100.0, 200.0, 8.0, 5.5, 8.0);
// 3. 要素
var beam = new BeamElement(0, n1, n2, steel, section);
// 4. 支持: 節点 Id 0 を固定
var support = Support.Fixed(0);
// 5. 荷重: 節点 Id 1 に -Z 方向 1000 N
var load = new PointLoad(1, new Vector3(0.0, 0.0, -1000.0), new Vector3(0.0, 0.0, 0.0));
// 6. モデルを組み立てる
var model = new Model(
new List<Node> { n1, n2 },
new List<ElementBase> { beam },
new List<Support> { support },
new List<Load> { load });
// 7. 解く。Solve は model を書き換えず、結果を SolveOutcome で返す
var outcome = new LinearStaticSolver().Solve(model);
// 8. 先端のたわみ。節点 Id で引く
double uz = outcome.Combined.GetDisplacement(1).Uz;
Console.WriteLine($"先端のたわみ UZ = {uz:F4} mm");
出力:
先端のたわみ UZ = -0.7435 mm
Timoshenko 梁の理論値 PL³/(3EIyy) + PL/(Asz·G) と一致します。
使う前に知っておくこと
型のシグネチャだけでは読み取れない約束事があります。これを外すと、エラーにならないまま誤った答えが出ます。
単位は N・mm 固定
| 量 | 単位 |
|---|---|
| 長さ・座標・変位 | mm |
| 力・軸力・せん断力 | N |
| モーメント | N·mm |
| 応力・ヤング係数 | N/mm² |
| 質量 | kg |
単位系を切り替える機構はありません。混在させないでください。
ID とリストの添字は別物
Support.Fixed(0) や new PointLoad(1, ...) の数字は Node.Id であって、
Model.Nodes の何番目か(リストの添字)ではありません。
上の例では new Node(0, ...) と new Node(1, ...) で Id を明示しているため両者が一致していますが、
節点を作る順序と Id を別々に決めた場合は一致しません。必ず Id で指定してください。
結果は節点 Id・要素 Id で引く
Result.GetDisplacement(nodeId) は、その節点の変位を NodalDisplacement で返します。
成分は並進 Ux Uy Uz(mm)と回転 Rx Ry Rz(rad)です。
var d = result.GetDisplacement(nodeId);
double uz = d.Uz;
モデルに無い Id を渡すと KeyNotFoundException になります。有無を確かめるときは TryGetDisplacement を使ってください。
全節点を順に見るときは Result.NodalDisplacements を回し、各要素の NodeId で節点を見分けます。
反力・部材応力・シェル応力・軸対称要素と平面要素の応力も同じ形で引けます(GetReaction(nodeId) / GetElementStress(elementId) / GetShellStress(elementId) / GetAxisymmetricStress(elementId) / GetPlaneElementStress(elementId))。
固有値解析のモード形状は EigenResult.GetModeShape(modeIndex, nodeId) で引けます。
トラス要素も並進3自由度しか使いませんが、結果は互換性のため常に6自由度へ展開されます。
LLM で開発する場合
API 全体を平文にまとめたファイルを2つ配信しています。
| ファイル | 内容 | 用途 |
|---|---|---|
/llms.txt | 全公開型の索引と1行説明 | まずこれを渡す。大半のタスクはこれで足りる |
/llms-full.txt | 全公開型・全メンバの正確な C# シグネチャ | 網羅が必要なとき |
使い方は2通りです。
- URL を LLM に渡す — 「
https://femur.jp/llms-full.txtを読んで、片持ち梁を解く C# を書いて」 - ファイルを手元に置く — プロジェクトフォルダに保存すれば、Web アクセスなしで参照できます
llms-full.txt には「ここに載っていないものは公開 API に存在しない」と明記してあります。
存在しないメソッドを LLM が創作するのを抑えるためです。
名前空間
左のサイドバーに全名前空間と型の一覧があります。
| 名前空間 | 主な内容 |
|---|---|
FEMur.Models | Model — 解析モデルのコンテナ |
FEMur.Nodes | Node — 節点 |
FEMur.Elements | BeamElement / TrussElement / ShellElement / AxisymmetricElement / PlaneElement(平面応力・平面ひずみ) |
FEMur.CrossSections | H・箱・円・パイプ・矩形・T・L・溝形・任意断面・板厚 |
FEMur.Materials | Material_Isotropic / Material_Orthotropic |
FEMur.Supports | Support — 支持条件・ばね支持 / SurfaceSpring — シェル要素の面ばね |
FEMur.Loads | 節点荷重・分布荷重・線荷重・面荷重・床荷重・面圧(軸対称・平面要素)・自重・強制変位・時刻歴荷重(地震動・時間関数・減衰)ほか |
FEMur.Joints | Joint — 材端ばねによる半剛接合 |
FEMur.Constraints | RigidDiaphragm — 剛床仮定 / DofCoupling — 従属自由度 |
FEMur.Solver | LinearStaticSolver / EigenSolver / TimeHistorySolver / SolveOutcome |
FEMur.Results | Result / NodalDisplacement / ElementStress / ShellStress / AxisymmetricStress / PlaneElementStress / ReactionForce / EigenResult / TimeHistoryResult |
FEMur.Geometry | Point3 / Vector3 / LocalFrame — 節点の局所座標系 |
FEMur.Export | MGT 形式のインポート・エクスポート |
FEMur.Common.Units | 単位の定義と変換 |