Skip to main content

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

View source

Constructors​

NameSignatureSummary
ShellElement()public ShellElement()—
ShellElement(ShellElement)public ShellElement(ShellElement other)—

Properties​

NameSignatureSummary
LocalAxisReferencepublic Vector3? LocalAxisReference { get; set; }ローカルx軸の基準ベクトル。null ならグローバルX軸を面内投影して使う
Anglepublic double Angle { get; set; }面法線まわりのローカル軸の追加回転角 [°]
DrillingStiffnessFactorpublic double DrillingStiffnessFactor { get; set; }drilling ペナルティ係数 α(本来の回転剛性に対する比)。 0 以下または非有限値を設定すると ShellDrilling が rz DOF に一切剛性を付けなくなり、 局所剛性のゼロ固有値が本来の6個(剛体運動)から10個に増えて要素が特異になる。 全体モデルが rz を別途拘束していない限り解析が特異行列で失敗するため、 CalcPartialStiffness(CalcLocalStiffness から必ず呼ばれる)で非正・非有限値を 検出した時点で例外を投げる。
UseResidualBendingFlexibilitypublic 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 の方が近くなることがある (補正ありは常に柔らかい側から、なしは常に硬い側から収束する)。
Areapublic double Area { get; }要素の実面積 [mm²](三角形分割の和。質量計算で使う)
ProjectedAreapublic double ProjectedArea { get; }平均平面へ投影した面積 [mm²](剛性計算で使う)
WarpRatiopublic double WarpRatio { get; }反り率 = max|面外距離| / √投影面積。三角形は常に 0

Methods​

NameSignatureSummary
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.