座標変換
局所座標系の剛性を、力学(局所-全体座標変換)に基づき全体座標系へ変換します。
算定式
フレーム要素は \( e_x = (p_j - p_i)/L \) とし、参照ベクトルを直交化して ey・ez を構成します。剛性は次式で変換します。
\[ K_{\text{global}} = R^T \cdot K_{\text{local}} \cdot R \]
実装参照:sepika_element::transform::LocalFrame(crates/sepika-element/src/transform.rs)が算定します。
ですが、シェルは規約が逆で \( K_{\text{global}} = R \cdot K_{\text{local}} \cdot R^T \) とします。
零長・範囲外の扱い
- 2 節点が同一座標の零長要素では材軸方向が定まらないため、節点間距離が \( 10^{-12} \) mm 未満の場合は除数を 1.0 にして零除算だけを避けます。材軸方向は零ベクトルのまま退化し、局所 x 軸を特定の方向へ倒すフォールバックは行いません。
- 節点ばねは、節点間距離が \( 10^{-9} \) mm 未満の場合は全体座標系=局所座標系(単位回転)とみなします。ばね定数の未指定は 0(ばねなし)とします。
- 免震支承は、節点間距離が \( 10^{-9} \) mm 未満の場合は鉛直方向を部材軸として局所座標系を組みます(支承は鉛直材のため)。
- 節点 ID が範囲外の場合は座標を原点へ落として要素の構築自体は通し、検出は解析前チェックに委ねます。
実装参照:零長要素の局所座標系と節点 ID 範囲外の座標フォールバックは sepika_element::transform(crates/sepika-element/src/transform.rs の LocalFrame::from_nodes・EndGeometry::of_element)、節点ばね・免震支承の零長時の扱いは sepika_element::springs::{spring, isolator}(crates/sepika-element/src/springs/)が担います。