ShellElement
Namespace: FEMur.Elements
3節点または4節点のシェル要素。1要素 = メッシュ1面。 要素ローカル平面上で「面内(Q4+非適合モード / Allman)」「板曲げ+面外せん断(MITC4 / MITC3)」 「drilling ペナルティ」を重ね合わせる平板重ね合わせ型。面外せん断変形を考慮しつつ、 MITC のタイイング補間によりせん断ロッキングを回避する。 局所剛性の DOF 順は [ux, uy, uz, rx, ry, rz] × 節点数(四角形 24、三角形 18)。
public sealed class ShellElement : ElementBase
Inheritance: System.Object → FEMur.Elements.ElementBase → FEMur.Elements.ShellElement
Constructors
| Name | Signature | Summary |
|---|---|---|
ShellElement() | public ShellElement() | — |
ShellElement(ShellElement) | public ShellElement(ShellElement other) | — |
Properties
| Name | Signature | Summary |
|---|---|---|
LocalAxisReference | public Vector3? LocalAxisReference { get; set; } | ローカルx軸の基準ベクトル。null ならグローバルX軸を面内投影して使う |
Angle | public double Angle { get; set; } | 面法線まわりのローカル軸の追加回転角 [°] |
DrillingStiffnessFactor | public double DrillingStiffnessFactor { get; set; } | drilling ペナルティ係数 α(本来の回転剛性に対する比)。 0 以下または非有限値を設定すると ShellDrilling が rz DOF に一切剛性を付けなくなり、 局所剛性のゼロ固有値が本来の6個(剛体運動)から10個に増えて要素が特異になる。 全体モデルが rz を別途拘束していない限り解析が特異行列で失敗するため、 CalcPartialStiffness(CalcLocalStiffness から必ず呼ばれる)で非正・非有限値を 検出した時点で例外を投げる。 |
UseResidualBendingFlexibility | public bool UseResidualBendingFlexibility { get; set; } | 面外せん断に残留曲げ柔性(MacNeal の residual bending flexibility)を織り込むか。既定は true。 1次要素は回転場が線形なのでたわみを2次までしか表現できず、実際の3次たわみに対して 曲げ分が 3/4 しか出ない。この補正はその不足をせん断柔性へ振り替えるもので、 スパン方向の要素数が少ないモデルほど効く(1要素の片持ちで先端たわみ −25% → −2%)。 詳細は ShearWithResidualBending。 既定を true にしているのは、補正なしの要素が常に硬い側(たわみを過小評価する側)へ 外れるためで、docs/PublicApiGuidelines.md の「既定値は安全側に倒す」に従う。 false にすると補正なしの素の Mindlin せん断剛性に戻る。板が曲げ支配で、かつ Kirchhoff 解との一致を粗いメッシュで詰めたい場合には false の方が近くなることがある (補正ありは常に柔らかい側から、なしは常に硬い側から収束する)。 |
Area | public double Area { get; } | 要素の実面積 [mm²](三角形分割の和。質量計算で使う) |
ProjectedArea | public double ProjectedArea { get; } | 平均平面へ投影した面積 [mm²](剛性計算で使う) |
WarpRatio | public double WarpRatio { get; } | 反り率 = max|面外距離| / √投影面積。三角形は常に 0 |
Methods
| Name | Signature | Summary |
|---|---|---|
FromPoints(IReadOnlyList<Point3>?, Material, CrossSection_Shell, Vector3?, double, int) | public static ShellElement FromPoints(IReadOnlyList<Point3>? corners, Material material, CrossSection_Shell crossSection, Vector3? reference = null, double angle = 0, int id = -1) | 座標からシェル要素を作成する(節点は Model 構築時に自動生成・共有される) |
FromNodeIds(IReadOnlyList<int>?, Material, CrossSection_Shell, Vector3?, double, int) | public static ShellElement FromNodeIds(IReadOnlyList<int>? nodeIds, Material material, CrossSection_Shell crossSection, Vector3? reference = null, double angle = 0, int id = -1) | 節点IDからシェル要素を作成する |
CalcLocalAxis(IReadOnlyDictionary<int, Node>) | public void CalcLocalAxis(IReadOnlyDictionary<int, Node> nodesById) | 節点IDをキーとした辞書から局所座標系を計算する(O(1) のノード参照)。 LineElement.CalcLocalAxis(IReadOnlyDictionary<int, Node>) と同じ理由で用意する オーバーロード。ElementCoordinateSystemHelper が Model 全節点から1回だけ構築した辞書を 渡すことで、要素ごとに辞書を作り直す O(要素数 × 節点数) を避けられる。 List<Node> 版(ElementBase の抽象メンバー。ソルバーが呼ぶ)は本オーバーロードへ委譲する。 |
TryGetGeometryWarning(out string?) | public bool TryGetGeometryWarning(out string? message) | 幾何に起因する注意事項(反りが大きい)があれば英語の警告文を返す。 Model 構築時に ValidationWarnings へ集約される。 |
ToString() | public override string ToString() | Returns a string that represents the current object. |