メインコンテンツまでスキップ

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通りです。

  1. URL を LLM に渡す — 「https://femur.jp/llms-full.txt を読んで、片持ち梁を解く C# を書いて」
  2. ファイルを手元に置く — プロジェクトフォルダに保存すれば、Web アクセスなしで参照できます

llms-full.txt には「ここに載っていないものは公開 API に存在しない」と明記してあります。 存在しないメソッドを LLM が創作するのを抑えるためです。

名前空間​

左のサイドバーに全名前空間と型の一覧があります。

名前空間主な内容
FEMur.ModelsModel — 解析モデルのコンテナ
FEMur.NodesNode — 節点
FEMur.ElementsBeamElement / TrussElement / ShellElement / AxisymmetricElement / PlaneElement(平面応力・平面ひずみ)
FEMur.CrossSectionsH・箱・円・パイプ・矩形・T・L・溝形・任意断面・板厚
FEMur.MaterialsMaterial_Isotropic / Material_Orthotropic
FEMur.SupportsSupport — 支持条件・ばね支持 / SurfaceSpring — シェル要素の面ばね
FEMur.Loads節点荷重・分布荷重・線荷重・面荷重・床荷重・面圧(軸対称・平面要素)・自重・強制変位・時刻歴荷重(地震動・時間関数・減衰)ほか
FEMur.JointsJoint — 材端ばねによる半剛接合
FEMur.ConstraintsRigidDiaphragm — 剛床仮定 / DofCoupling — 従属自由度
FEMur.SolverLinearStaticSolver / EigenSolver / TimeHistorySolver / SolveOutcome
FEMur.ResultsResult / NodalDisplacement / ElementStress / ShellStress / AxisymmetricStress / PlaneElementStress / ReactionForce / EigenResult / TimeHistoryResult
FEMur.GeometryPoint3 / Vector3 / LocalFrame — 節点の局所座標系
FEMur.ExportMGT 形式のインポート・エクスポート
FEMur.Common.Units単位の定義と変換