# FEMur API Reference (index) FEMur is a 3D beam, truss and shell linear static and eigenvalue analysis library for Grasshopper (Rhino). This file describes the public .NET API of FEMur.dll, which you can call from a Grasshopper C# script component or from any .NET application. Full API with every member: https://femur.jp/llms-full.txt Browsable reference: https://femur.jp/api/ Public types: 102 in 14 namespaces. ## FEMur.Common.Units - ForceUnit — 力の単位 - LengthUnit — 長さの単位 - UnitConverter — 単位変換と表示用のユーティリティクラス ## FEMur.Constraints - DofCoupling — 従属自由度の設定。Targets の節点の指定した自由度を、リモート点の同じ自由度と同値にする。 レバーアームを持たない単純な等値で、リモート点が離れていても腕の長さは効かない。 Grasshopper の Supports 端子で運ぶため SupportBase を継承する。 コアの Model は DofCouplings リストで保持する。 - DofCouplingTarget — DofCoupling の従属節点 - RigidDiaphragm — 剛床仮定(rigid diaphragm)の制約データ。指定した水平面上の節点群の面内自由度 (UX・UY・RZ)を MPC 主従変換で剛体的に連成させる。ソルバーが変換行列 T を構築する際に参照する。 Rhino 非依存で、対象節点の ID リストのみを保持する(Surface などのジオメトリは GH 層まで)。 ## FEMur.CrossSections - CrossSection - CrossSection_Beam - CrossSection_Box — 角形鋼管(Box)の断面クラス t=0の場合は中実矩形断面として扱う - CrossSection_C — 溝形断面(熱間圧延チャンネル "[" 形)。 左に鉛直ウェブ、上下に水平フランジを持つ開断面。 強軸(高さ方向)まわりに1軸対称のため重心 Y オフセットは 0。 重心は幅方向(Z)にウェブ側へずれる。隅肉(フィレット)は考慮せず、 ウェブと上下フランジをシャープ角の矩形で合成する。 注: JIS 熱間溝形鋼はフランジに内テーパを持つが、本クラスは 平行フランジで近似する(溶接組立チャンネル/PFC には厳密、 テーパ付き JIS 材では弱軸 Iy・重心位置が十数%程度ずれうる)。 軸の規約: Iyy=強軸(c_y→Zy)、Izz=弱軸(c_z→Zz)。 - CrossSection_Circle — 円形断面(中空)クラス - パイプ断面 - CrossSection_CLipped — Cチャンネル断面(リップ溝形鋼 / 軽量C形鋼・冷間成形)。 ウェブ・上下フランジ・内向きリップを板厚 t 一定の帯材から曲げ成形した開断面。 強軸(高さ方向)まわりに1軸対称のため重心 Y オフセットは 0。 重心は幅方向(Z)にウェブ側へずれる。曲げ部はシャープ角(曲げ半径は考慮しない) とし、中心線法(midline 法)でモデル化する。各直線部は厚みを持つ矩形として 自身の断面二次モーメントも算入し、隣接板の中心線は角点で交わる。 軸の規約: Iyy=強軸(c_y→Zy)、Izz=弱軸(c_z→Zz)。 - CrossSection_Custom — ユーザーが断面性能を直接入力して定義する任意断面クラス。 形状寸法を持たず、A / Iyy / Izz / J / Asy / Asz を直接保持する。 Asy / Asz が 0 のときソルバーはせん断変形を無視(Euler-Bernoulli 梁)として扱う。 - CrossSection_H - CrossSection_L — L形断面(山形鋼 / アングル)。鉛直脚(長さ A)と水平脚(長さ B)を持つ。 等辺は A=B の特例。対称軸を持たない非対称断面で、重心は Y・Z 両方にずれ、 断面主軸が幾何軸から回転する。 形状モデル: 2つの矩形(鉛直 A×t・水平 B×t)から重なり t×t を引いた シャープ角の合成断面(隅肉は考慮しない)。 基底の Iyy/Izz には幾何軸(脚に平行な重心軸)まわりの値(JIS表の Ix/Iy 相当)を格納し、 断面相乗モーメント Iyz・主断面二次モーメント Iu/Iv・ 主軸角 PrincipalAngleDeg を参考値として保持する (現フレームワークのソルバーは Iyy/Izz の2値のみ使用し、主軸結合は未対応)。 - CrossSection_Shell - CrossSection_T — T形断面(CT形鋼相当)。上にフランジ、下にウェブを持つ。 ウェブ中心の鉛直軸(Z=0)に1軸対称のため重心 Z オフセットは 0。 重心は高さ方向(Y)にずれる。隅肉(フィレット)はウェブとフランジ下面の 結合部の左右2箇所を Fillet で考慮する。 軸の規約は既存断面に準拠: Iyy=強軸(高さ方向に関する曲げ, c_y→Zy)、 Izz=弱軸(幅方向, c_z→Zz)。 ## FEMur.Elements - AxisymmetricElement — 3節点または4節点の軸対称要素。1要素 = XY 平面上の断面メッシュ1面。 断面を回転軸まわりに1周させたリングを表し、節点の値(荷重・ばね定数・反力・質量)は全周の合計とする。 四角形は Q4 に Wilson の非適合モード4個を加えて静的縮約し(体積平均補正でパッチテストを満たす)、 三角形は線形三角形とする。有効自由度は全体の UX・UY のみで、要素ローカルの DOF 順は [ur, uz] × 節点数(ur: 半径方向、uz: 軸方向)。断面(CrossSection)は持たない。 同じモデルには軸対称要素だけを置ける。全要素の軸が一致すること、全節点が XY 平面上かつ軸の片側に あることは Model 構築時に検証する。 - BeamElement - CompressionOnlyTrussElement — 圧縮専用トラス要素。δ < 0(短縮 = 圧縮)のときのみ剛性を発現する。 引張状態では剛性がゼロとなり、力を伝達しない。 - ElementBase - LineElement - PlaneCondition — 平面要素(PlaneElement)の面外方向の仮定 - PlaneElement — 3節点または4節点の平面応力・平面ひずみ要素。1要素 = XY 平面上のメッシュ1面。 節点の値(荷重・ばね定数・反力・質量)は厚さ Thickness 分の値とする。 四角形は Q4 に Wilson の非適合モードを加えて静的縮約し(QM6 補正でパッチテストを満たす)、 三角形は定ひずみ三角形とする。有効自由度は全体の UX・UY のみで、要素ローカル軸は全体軸と同じ。 節点の並びは時計回り・反時計回りのどちらでもよい。断面(CrossSection)は持たない。 同じモデルには平面要素だけを置ける。全節点が XY 平面上にあること、厚さが正であることは Model 構築時に検証する。 - ShellElement — 3節点または4節点のシェル要素。1要素 = メッシュ1面。 要素ローカル平面上で「面内(Q4+非適合モード / Allman)」「板曲げ+面外せん断(MITC4 / MITC3)」 「drilling ペナルティ」を重ね合わせる平板重ね合わせ型。面外せん断変形を考慮しつつ、 MITC のタイイング補間によりせん断ロッキングを回避する。 局所剛性の DOF 順は [ux, uy, uz, rx, ry, rz] × 節点数(四角形 24、三角形 18)。 - StatusTrussElementBase — 引張専用・圧縮専用トラス要素の共通基底クラス。 IsActive=false のとき CalcLocalStiffness がゼロ行列を返す。 ソルバーがイテレーションごとに UpdateStatus を呼び出して状態を更新する。 - TensionOnlyTrussElement — 引張専用トラス要素。δ > 0(伸長 = 引張)のときのみ剛性を発現する。 圧縮状態では剛性がゼロとなり、力を伝達しない。 - TrussElement ## FEMur.Export - MgtExporter — FEMurモデルをMidas iGen MGTファイル形式でエクスポートするクラス - MgtImporter — Midas iGen MGTファイルをパースしてFEMurのModelに変換するクラス ## FEMur.Geometry - LocalFrame — 節点の局所座標系。Ex・Ey・Ez は正規直交の右手系で、コンストラクタが保証する。 既定値 default(LocalFrame) は無効なので、「全体座標」は LocalFrame? の null で表す。 - Point3 - Vector3 ## FEMur.Joints - Joint — 要素の両端部の接合条件を定義するクラス 特定の要素(ElementId)に対して、Start端(i端)とEnd端(j端)それぞれの回転ばね、並進ばねの剛性を設定可能 ## FEMur.Loads - BodyForce — 体積力(BodyForce)を表すクラス。MGT *NBODYFORCE に対応。 各成分は方向係数(X/Y/Z)で、対象ノードへの質量置換えを行う。 - Damping — 時刻歴応答解析の減衰。荷重ケースに属さない解析設定で、モデル全体に1つだけ指定する。 インスタンスはファクトリメソッドで作る。 - DampingType — 減衰の種類。 - EdgePressure — 軸対称要素・平面要素の境界辺に載る面圧 [N/mm²]。軸対称要素では断面を回転させた曲面に、平面要素では厚さ方向に一様に作用する。 向きは辺の面内法線方向で、正の値は要素の内側へ押す向き(例: 容器の内面に掛かる内圧は、 内面の辺に正の値で与えると容器を外へ押す)。 LineLoad と同じく擬似荷重で、Model 構築時に EdgePressureDistributor が境界辺の節点へ、 全周の合計(平面要素は厚さ分)の PointLoad として展開する。載荷位置の指定は2通りある。 線分(Path が null): 線分と重なる境界辺に載せる。辺の一部だけ重なる場合は重なる区間だけ載せる。 線分の全長が境界辺で覆われない場合や、2要素が共有する内部の辺に重なる場合は展開時に例外を投げる。曲線(Path に折れ線で近似した点列): 両端の節点がともに曲線から CurveTolerance 以内にある境界辺に、辺全体で載せる。曲線の全長が境界辺で覆われない場合は 展開時に例外を投げる。円弧などの曲面ではメッシュの辺は曲線の弦になり、曲線とは重ならないため、 節点が曲線上にあるかで判定する。 - ElementLoad - FloorLoad - FloorLoadMode - GravityLoad — 重力荷重を表すクラス モデル内の全要素に対して自重を考慮した等分布荷重を適用 - GroundMotion — 一様な地動加速度(全支点が同じ動きをする)。時刻歴応答解析専用。 加速度は Function の値 [mm/s²] × Scale。 地動を含むケースは地盤に対する相対座標で解く。 - GroundMotionDirection — 地動加速度の方向(全体座標系)。 - LineLoad — 線分に沿った線分布荷重 [N/mm](全体座標系)。 FloorLoad と同じく擬似荷重で、Model 構築時に LineLoadDistributor が 線分と重なる要素へ展開する。梁(BeamElement)と重なる区間は ElementLoad に、 残りの区間(シェルのエッジ・トラス要素)は等価節点荷重の PointLoad になる。 梁とシェルが共有するエッジや、隣接シェルが共有するエッジに二重に載荷しないよう、 区間単位で重複を除いて配る。 荷重強度は始点 LoadStart から終点 LoadEnd へ線形に変化する(台形分布)。 線分の全長が要素で覆われない場合は展開時に例外を投げる。 - Load - LoadCombination — 荷重組合せ(解析設定)。指定した複数の荷重ケースの荷重を合算した 「結合ケース」を新たな1ケースとして追加し、ソルバーはそれを独立に求解する (例: DL と EX を指定すると "DL+EX" ケースが生成され、DL・EX・DL+EX の3ケースが実行される)。 結合ケースは線形重ね合わせではなく「同時載荷の再求解」であるため、 引張/圧縮専用要素(状態要素)を含む非線形モデルでも力学的に正しい結果になる(#80)。 Load を継承しているため、AssembleModel の Loads 入力にそのまま接続可能。 - LoadToMass — 荷重を質量に変換する設定(MGT の *LOADTOMASS として入出力される) Load を継承しているため、AssembleModel の Loads 入力にそのまま接続可能 GravityLoad と組み合わせて使用: GravityLoad が自重を計算する際に、LoadToMass で指定された荷重ケースの荷重を 追加質量として考慮する - LoadToMassEntry — 荷重→質量変換の1エントリ - NodalMass — 節点へ直接与える集中質量(MGT 出力では *NODALMASS として書き出される)。 PointAction を継承しているため座標指定と節点ID指定の双方に対応し、 座標指定は Model.ValidateAndRepairModel() が既存節点の NodeId へ解決する。 Load を継承しているため AssembleModel の Loads 入力へそのまま接続できる。 荷重ケースに属さない解析設定(IsAnalysisSetting = true)であり、 それ自体は静解析の荷重にならない。効くのは次の2経路のみ: - EigenSolver.BuildLumpedMassVector の集中質量(固有値解析の質量) - BodyForce の UseNMass = true のとき、 体積力の質量源として節点力に寄与する 部材自重(GravityLoad / *SELFWEIGHT)は部材質量のみを対象とするため、 節点質量から鉛直荷重は発生しない。 - PointAction - PointDisplacement - PointLoad - SurfaceLoad — シェル要素へ直接載荷する等分布面荷重 [N/mm²]。 FloorLoad とは別機能。FloorLoad は床領域の面圧を境界梁の線分布荷重へ 「分配」する擬似荷重で、面要素を必要としない(#118)。こちらは面要素そのものに載る。 両者は共存する。 対象要素は面の重心座標(Centroid)で解決するため、GH では ShellElement に渡したものと同じ Mesh を渡す必要がある。 - TimeFunction — 時刻歴応答解析の入力波形(時間関数)。値は単位換算・倍率・基準化を適用した後のもので、 加速度波形なら mm/s²、荷重波形なら無次元の係数である。インスタンスは不変。 - TimeFunctionNormalization — 時刻歴波形の基準化の方法。 - TimeFunctionUnit — 時刻歴波形の値の単位。生成時に mm/s²(無次元はそのまま)へ換算する。 - TimeHistoryLoad — 静的荷重ケース × 時間関数。時刻 t の外力は、参照ケース SourceCase の荷重を 静解析と同じ経路で組み立てたベクトル × Scale × f(t)。分布荷重・床荷重・面荷重もそのまま使える。 参照ケースの強制変位は荷重ベクトルに乗らないため無視される。参照ケース自体は静解析でも通常どおり解かれる。 - TimeHistoryPointLoad — 節点荷重 × 時間関数。時刻 t の荷重は Force·f(t)、Moment·f(t)(全体座標系、N・N·mm)。 時刻歴応答解析専用で、静解析では無視される。 ## FEMur.Materials - Material - Material_Isotropic - Material_Orthotropic ## FEMur.Models - Model — 解析モデル。節点・要素・支持条件・荷重と、解析結果を保持する。 - ModelAssemblyOptions — Model 構築時のモデリング設定。交差計算はいずれも既定 false で、 有効にしない限り従来と同じモデルが構築される。 ## FEMur.Nodes - Node - Node.DOF ## FEMur.Results - AxisymmetricStress — 軸対称要素1つ分の応力結果。要素中心と各節点(要素の節点の並び順)の値を持つ。 節点値は要素内での外挿値で、隣接要素とは一般に一致しない(平均はしない)。 - AxisymmetricStressSample — 軸対称要素の1評価点の応力 [N/mm²] と変位 [mm]。成分は要素の (r, z, θ) 方向 (r: 軸から外向き、z: 軸方向、θ: 周方向)。 - BeamForcePosition — 梁の断面力の評価位置。 - ComponentEnvelope — 6成分の包絡。節点は Ux..Rz、反力と断面力は Fx, Fy, Fz, Mx, My, Mz の順。 - EigenResult — 固有値解析(EigenSolver)の結果。 モードは固有値 λ = ω² の昇順(低次から)に格納される。 - ElementStress — 梁要素の断面力を格納するクラス。 格納値(_i/_mid/_j)は SFD(せん断力図)規約のサンプル値であり、 CalcSectionForceAt(ξ)(ξ=0/0.5/1)と厳密に一致する(#120 で単一経路化)。 例: 単純支持+下向き等分布で Fy_i=+qL/2・Fy_j=−qL/2。 - ElementStressCalculator — 要素内部の任意位置での断面力を計算するヘルパークラス - EnvelopeQuantity — 節点の包絡の物理量。 - EnvelopeValue — 1成分の最大値・最小値と発生時刻。 - NodalDisplacement — Displacement of a single node: three translations and three rotations in the global coordinate system. - PlaneElementStress — 平面要素1つ分の応力結果。要素中心と各節点(要素の節点の並び順)の値を持つ。 節点値は要素内での外挿値で、隣接要素とは一般に一致しない(平均はしない)。 - PlaneElementStressSample — 平面要素の1評価点の応力 [N/mm²] と変位 [mm]。成分は全体座標の (x, y) 方向。 σz は面外の応力で、平面ひずみでは ν(σx+σy)、平面応力では 0。 - ReactionForce — 節点反力クラス 拘束された節点で発生する反力とモーメントを格納 - ResponseEnvelope — 時刻歴応答解析の最大応答(包絡)。出力の間引きによらず全ステップで求めた値。 変位・速度は地盤に対する相対値、加速度は絶対加速度。反力は動的反力。 梁の断面力は i 端・中央・j 端の要素ローカル座標の値。 - Result - SectionForceAtPoint — 要素内の特定位置での断面力 - ShellStress — シェル要素1つ分の応力結果。合応力は要素ローカル座標系の値なので、 解釈・描画のためにローカル軸も一緒に保持する。 節点値は要素内での外挿値であり、隣接要素とは一般に一致しない。 節点平均(スムージング)はここでは行わず、描画側のトグルで行う。 - ShellStressSample — シェル要素の1サンプル点における合応力。すべて要素ローカル座標系で、単位系は N–mm。 面内力 Nx/Ny/Nxy [N/mm]、曲げモーメント Mx/My/Mxy [N·mm/mm]、面外せん断 Qx/Qy [N/mm]。 Mx の単位 N·mm/mm は N と等価だが、意味を誤読させないため表示では N·mm/mm と明記すること。 - SurfaceSpringReaction — 面ばね(Winkler 弾性床)の節点反力と接地圧。 節点が複数の面ばねに属する場合は要素ごとに別エントリになる。 法線の向きが要素ごとに違えば接地圧も変わるため、1 本にまとめると情報が失われる。 接地・離間にかかわらず、面ばねを持つ全節点がエントリとして出力される。 絞り込みは表示側の責務とする(ReactionForce と同じ方針)。 - TimeHistoryResult — 1つの荷重ケースの時刻歴応答解析の結果。出力時刻(OutputInterval ごとに間引いた時刻)の 節点の変位・速度・加速度と支点反力を持つ。 ## FEMur.Solver - DeformationEnergyCalculator — ひずみエネルギー(変形エネルギー)を計算するクラス - DeformationEnergyCalculator.DeformationEnergyResult — モデル全体のひずみエネルギー結果 - DeformationEnergyCalculator.ElementDeformationEnergy — 要素ごとのひずみエネルギー - EigenSolver — 固有値解析ソルバー(#108)。 一般化固有値問題 K φ = λ M φ を、K_ff の疎 Cholesky 分解を用いた シフト付き(σ=0)ランチョス法(M-内積・完全再直交化・デフレーション付き再スタート)で解き、 指定次数までの低次固有モード・固有周期を抽出する。 - 剛性 K は LinearStaticSolver と同一の組立(Fixed=自由度消去、Spring=対角加算) - 質量 M は集中質量の対角行列(部材自重 + LoadToMass、並進 DOF のみ) - 単位: 質量は内部でトン(1 N = 1 t·mm/s²)→ λ = ω² [rad²/s²] がそのまま成立 - LinearStaticSolver — 線形静解析ソルバー。 - NewmarkScheme — Newmark-β 法のパラメータの組。 - ShellDeformationEnergyCalculator — シェル要素のひずみエネルギーを膜・板曲げに分解して計算するクラス。 DeformationEnergyCalculator は BeamElement / TrussElement しか扱わず シェル要素を読み飛ばすため、シェル専用の計算経路として分離した。 算出手順は要素ごとに次のとおり。T は局所→全体の直交変換行列なので、 その転置が逆変換になる(DeformationEnergyCalculator の梁・トラスと同じ作法)。 uₗ = Tᵀ · u_g E_total = ½ uₗ · (K · uₗ) // drilling を含む要素剛性全体 E_membrane = ½ uₘ · (K_membrane · uₘ) // uₘ = uₗ の各節点 DOF 0,1,5(3n) E_bending = ½ u_b · (K_bending · u_b) // u_b = uₗ の各節点 DOF 2,3,4(3n) E_total − E_membrane − E_bending が drilling ペナルティの寄与になる。 drilling は物理量ではなく数値安定化の項なので、内訳としては出さず合計にのみ含める。 drilling ペナルティは面内変位(DOF 0,1)と面内回転(DOF 5)の差を罰する Hughes–Brezzi 型で 3 つの DOF にまたがるため、局所剛性を DOF で切り出して膜・曲げに分ける方法は使えない。 そのため部分剛性は ShellElement.CalcPartialStiffness から取得する。 - ShellElementEnergy — シェル要素1つ分のひずみエネルギー [N·mm]。 - SolveOutcome — 線形静解析の結果一式。 - TimeHistoryMethod — 時刻歴応答解析の解法。 - TimeHistoryOutcome — 時刻歴応答解析の結果一式。 - TimeHistorySolver — 線形の時刻歴応答解析ソルバー(直接積分またはモード重ね合わせ法、Newmark-β 法)。 時刻歴用の加振(GroundMotion / TimeHistoryPointLoad / TimeHistoryLoad)を LoadCase ごとにまとめ、ケースごとに独立して解く。減衰は Damping のレイリー型 (Rayleigh / StiffnessProportional)。剛性・集中質量・剛床・境界条件は固有値解析と同じ組立を使う。 ## FEMur.Supports - Support - SupportBase — 支持条件の抽象基底。節点支持(Support)、面ばね(SurfaceSpring)、 従属自由度(DofCoupling)の共通の親。 この基底は Grasshopper の Supports 端子ひとつで3種類を運ぶために存在する。 コアの Model は型付きのリスト (Supports / SurfaceSprings / DofCouplings)を保つため、ソルバー側でこの型を使うことはない。 コンストラクタを private protected にして、外部アセンブリからの継承を塞ぐ。 派生を増やすときは Model のリストと AssembleModel の振り分け、シリアライズを揃える必要があるため。 - SupportCondition — 各自由度の支持条件を表す列挙型 - SurfaceSpring — シェル要素に与える面ばね(Winkler 弾性床)[N/mm³]。 節点ばね(Support の Spring)が 節点ごとの剛性 [N/mm] を直接受け取るのに対し、こちらは単位面積あたりの値を受け取り、 節点への配分(負担面積の積分)を FEMur 側で行う。値がメッシュ分割に依存しないため、 ベタ基礎やスラブオングレードの地盤反力係数をそのまま入力できる。 対象要素は面の重心座標(Centroid)で解決するため、GH では ShellElement に渡したものと同じ Mesh から作られた要素を渡す必要がある。 SurfaceLoad と同じ解決経路を使う。