時刻歴応答解析
支配方程式(基盤一様加振、相対変位形式)を解きます。全体質量行列 \( M \) は固有値解析と同一の質量モデル(固有値解析の質量モデル: 部材の整合質量と剛床マスター等の節点集中質量を、モデルの質量方式に従って組み合わせる)で組み立てます。
\[ M \cdot \ddot{u} + C \cdot \dot{u} + K \cdot u = -M \cdot r \cdot \ddot{x}_g(t) \]
記号・単位
| 記号 | 意味 | 単位 |
|---|---|---|
| \( M \) | 全体質量行列 | t |
| \( C \) | 減衰マトリクス | N·s/mm |
| \( K \) | 全体剛性行列 | N/mm |
| \( u,\ \dot{u},\ \ddot{u} \) | 相対変位・速度・加速度ベクトル | mm, mm/s, mm/s² |
| \( \ddot{x}_g(t) \) | 地動加速度 | mm/s² |
| \( r \) | 地動方向の影響ベクトル | - |
| \( \beta,\ \gamma \) | Newmark-β の積分パラメータ(平均加速度法は \( 1/4,\ 1/2 \)) | - |
| \( \Delta t \) | 時間刻み | s |
| \( \hat{K},\ K_{\text{eff}} \) | Newmark・非線形時刻歴の有効剛性行列 | N/mm |
| \( K_t \) | 接線剛性行列 | N/mm |
| \( c_1,\ c_2,\ c_3,\ c_4 \) | Newmark-β の係数 | 1/s², 1/s, 1/s, - |
| \( p_{\text{eff}} \) | Newmark の有効荷重ベクトル | N |
| \( a,\ v \) | 加速度・速度ベクトル | mm/s², mm/s |
| \( f_{\text{int}} \) | 要素の復元力ベクトル | N |
| \( p,\ p_{\text{dyn}},\ f_0 \) | 外力・動的外力・長期荷重の外力ベクトル | N |
実装参照:全体質量行列の組立ては sepika_solver::common::assemble::assemble_global_m(crates/sepika-solver/src/common/assemble.rs)が、減衰行列の構成は sepika_solver::dynamic::damping が担います。
入力時刻と初期状態
立体の線形・非線形時刻歴と、平面・空間の質点系時刻歴は、入力の各点をその時刻の地動加速度の瞬時値として扱います。 N 点の入力は時刻 0, dt, …, (N−1)dt に対応し、積分は T=N−1 区間です。 時刻 sdt から (s+1)dt への更新には、終点の入力加速度を使います。 記録の先頭は積分前の初期状態で、入力末端後の自由振動区間は自動追加しません。
| 入力 | 点数・積分区間数 | 解析・記録の終時刻と下限 |
|---|---|---|
| サンプル波(正の有限な継続時間 D・刻み dt) | S=ceil(D/dt)、N=S+1、S 区間 | Sdt。0<D<dt でも 1 区間・2 点 |
| 外部波 N≥2 点 | N 点、T=N−1 区間 | Tdt。GUI の CSV 読込は 2 点以上が必要 |
| 低位の計算入口で受理する 1 点入力 | 初期 1 点、0 区間 | 0。先頭地動による初期加速度を含む |
| 空の入力 | 正常な応答として採用しない | エラーまたは空の結果となる |
サンプル波の継続時間と刻みが 0 以下または非有限の場合は、波形生成前に拒否します。 たとえば D=0.05 s、dt=0.02 s では 3 区間・4 点、終時刻 0.06 s です。 刻みは実際に解析へ適用する時間刻みであり、詳細記録の間引きによって終時刻は変わりません。
初期相対加速度は、先頭地動と初期の変位・速度を含む釣合いから求めます。 線形では次式です。静止から始める場合でも、先頭地動が非零なら相対初期加速度は一般に非零です。
\[ M a_0 = -M r \ddot{x}_g(0) - C v_0 - K u_0 \]
非線形では、初期復元力と長期荷重を含めて次式を用います。
\[ M a_0 = -M r \ddot{x}_g(0) + f_0 - f_{\text{int},0} - C v_0 \]
質量行列が特異な立体モデルでは、任意の初期条件を扱えるわけではありません。 既存の初期加速度求解で解けず、右辺の成分を内部単位系(並進 N・回転 N·mm)で表した数値のユークリッドノルムが 10⁻⁹ 未満の場合は初期加速度をゼロとして扱い、それ以外はエラーになります。 この近零時の扱いは厳密な初期釣合いを保証しません。無質量自由度を含む一般モデルや一般 MPC の初期加速度求解への対応を意味しません。
相対変位・相対速度・相対加速度は地盤に対する応答です。 並進の絶対加速度は、同じ時刻の相対加速度に地動の寄与を加えた \( a_{\mathrm{abs}}=a_{\mathrm{rel}}+r\ddot{x}_g \) です。 入力地動、相対加速度、階絶対加速度を同じ量として比較しないでください。
実装参照:sepika_job::sample_wave(crates/sepika-job/src/sample_wave.rs)と sepika_solver::dynamic::timehistory::common(crates/sepika-solver/src/dynamic/timehistory/common.rs)が入力生成と立体の初期求解を担います。
線形時刻歴(Newmark-β)
線形の時刻歴応答を Newmark-β 法で解きます。 パラメータは平均加速度法(\( \beta = 1/4, \gamma = 1/2 \)、無条件安定)と線形加速度法(\( \beta = 1/6, \gamma = 1/2 \)、条件付安定)を取り、解析は常に平均加速度法で実行します。 時間刻みによらず安定なため、波形の刻みをそのまま使えるためです。 時間刻み \( \Delta t \) は、解析設定で指定した値が正であればそれを、指定がなければ入力波形のサンプリング間隔を使います。
算定式
有効剛性(\( c_1 = 1/(\beta \Delta t^2), c_2 = \gamma/(\beta \Delta t) \)):
\[ \hat{K} = K + c_2 \cdot C + c_1 \cdot M \]
終点の地動外力を \( p_{n+1}=-Mr\ddot{x}_g(t_{n+1}) \) として、有効荷重は次式です。
\[ p_{\text{eff}}=p_{n+1}+M\left(\frac{u_n}{\beta\Delta t^2}+\frac{v_n}{\beta\Delta t}+\left(\frac{1}{2\beta}-1\right)a_n\right)+C\left(\frac{\gamma u_n}{\beta\Delta t}+\left(\frac{\gamma}{\beta}-1\right)v_n+\Delta t\left(\frac{\gamma}{2\beta}-1\right)a_n\right) \]
次を解き、加速度と速度を更新します:
\[ u_{n+1} = \hat{K}^{-1} \cdot p_{\text{eff}} \]
\[ a_{n+1} = c_1(u_{n+1} - u) - c_3 \cdot v - c_4 \cdot a \]
\[ v_{n+1} = v + \Delta t((1-\gamma)a + \gamma \cdot a_{n+1}) \]
初期加速度は 入力時刻と初期状態 の釣合いから求めます。
実装参照:sepika_solver::dynamic::timehistory(crates/sepika-solver/src/dynamic/timehistory/mod.rs)が算定します。
非線形時刻歴(Newmark-β + Newton-Raphson)
全節点が固定され、独立自由度がないモデルでも、長期部材荷重による部材応力を評価します。変位・速度・加速度はゼロですが、初期時点と各確定時点の応力を記録し、荷重の評価に失敗した場合は理由付きで停止します。節点も要素もない空モデルだけは計算せず空の結果を返します。
記録する部材応答は履歴を確定する前に検査します。荷重を含む応答の欠落・自由度数不一致・非有限値、不正な評価位置・断面力を検出した場合は、その時刻の開始状態へ戻して停止し、不正な記録や材料履歴を後続時刻へ渡しません。
非線形の時刻歴応答を、Newmark-β と Newton-Raphson 反復(commit/rollback)で解きます(構造動力学の標準的な非線形時刻歴解法)。 積分パラメータと時間刻みの決め方は 線形時刻歴(Newmark-β) と同じで、平均加速度法(\( \beta = 1/4, \gamma = 1/2 \))を使います。
算定式
各反復で釣合い用の接線剛性を更新します。既定の初期剛性比例減衰は、長期載荷前の未載荷剛性から定めた減衰行列を固定します。 接線剛性比例を選んだ場合に限り、接線に応じて減衰行列も更新します(減衰)。有効剛性を次とします:
\[ K_{\text{eff}} = K_t + c_2 \cdot C + c_1 \cdot M \]
残差を次とします(\( f_{\text{int}} \) は要素の復元力に加え、支点ばね(Node::support_spring)
の内力 \( k_i u_i \) も含みます):
\[ r = p - f_{\text{int}} - C \cdot v - M \cdot a \]
収束は \( \|r\| < \text{tol} \cdot r_{\text{ref}} \) で判定します。基準ノルム \( r_{\text{ref}} \) は 動的釣り合いの各項のノルムの最大とし、解析中の最大値に対する下限を設けます。
\( p_{\text{dyn}} \) は外力 \( p \) から長期荷重成分 \( f_0 \) を除いた地震動由来の 動的外力(\( p = p_{\text{dyn}} + f_0 \))です。\( f_0 \) を含めないのは、長期荷重が 卓越するモデルで収束判定が過度に緩まないようにするためです。
慣性力・減衰力も基準に含めるのは、地動加速度がゼロを横切る時刻で基準が消えるのを 防ぐためです。動的外力だけを基準にすると、その時刻で分母が最低値の 1 まで落ち、判定が 「残差が tol(N)を下回ること」という絶対値判定に化けます。実建物では内力・慣性力が \( 10^7 \) N 規模あります。有効剛性の線形解が持つ残差は、その条件数と計算機イプシロンに 比例して \( 10^{-1} \) N 規模になります。つまり到達できない閾値です。正弦波なら 毎周期 2 回通る時刻であり、実地震波でも頻繁に起きます。地動が 0 でも構造は動いており 慣性力・減衰力は大きいので、3 項の最大を採れば基準は消えません。
3 項の最大だけでは、応答が減衰しきった時刻で同じ破綻が戻ります。長い波形の末尾では 3 項すべてが 1 N を下回り、また床まで落ちるためです。そこで解析中に観測した力のスケールの 最大値に対する下限を設け、その 1% を切った領域では基準をそれ以上下げません。
\[ r_{\text{ref}} = \max(\|p_{\text{dyn}}\|,\ \|M \cdot a\|,\ \|C \cdot v\|,\ 0.01 \cdot r_{\text{ref,max}},\ 1) \]
応答が最大の 1% を切った領域は工学的に無視できる大きさで、そこで判定を続けても意味が ありません。実測では、最大 6.1e7 N の解析の末尾で力が 6e-4 N まで落ちたところ、履歴則が 微小振幅でチャタリングして残差が 1e-4 N から下がらなくなりました。1% はこれを収束と 認めるのに必要な余裕から定めています。応答が大きい時刻では瞬間値のほうが大きいため、 この下限は効きません。
最低値の 1 は、解析を通して一度も動いていないときに 0 除算を避けるための床です。 反復の最大回数と許容誤差 tol は解析タブ「時刻歴応答」の「Newton反復」欄で指定します (既定は最大 50 回・tol \( 10^{-6} \))。
次を解いて要素状態を更新します:
\[ \delta u = K_{\text{eff}}^{-1} \cdot r \]
骨組の非線形時刻歴では、反復が上限に達しても全体釣合いが収束しなかったステップは確定せず、 時刻ステップ開始時の状態へ復元して解析を停止します。試行応答が有限値でも続行しません。 材料履歴・部材荷重・内部変形・部材応答を復元し、失敗時刻以後の履歴や完了結果は返しません。 応答または釣合い残差が非有限値となった場合も同じ扱いです。 エラーに示された時刻・ステップ・理由を確認し、時間刻み dt、減衰、復元力特性などの条件を見直して再実行してください。 時間刻みの自動細分は行いません。
質点系(串団子)非線形時刻歴の未収束時の扱いは別です。
実装参照:sepika_solver::dynamic::timehistory::nonlinear_time_history_analysis(crates/sepika-solver/src/dynamic/timehistory/nonlinear.rs)が算定します。
コンクリート履歴は動的解析で原点指向型に切替え、制振要素へ set_time_step(dt) を設定します。
位相差入力(ねじれ加振)にも対応します。
非線形時刻歴の幾何剛性は考慮しません。
入力方向と位相差入力
X・Y に加え、同一波形を両方向へ同時入力する X+Y を選べます。 X+Y は同一波形をそのまま両方向へ入れる簡易仕様で、位相差や方向別の波形指定には対応しません。
位相差入力では、位相遅れ時間 \( t = (L \cdot \sin\theta)/V_s \) を求め、位相遅れ方向の並進波を基準波としてねじれ地動加速度を生成します。 \( L \) は矩形基礎長さ [m]、\( V_s \) はせん断波速度 [m/s]、\( \theta \) は入射角 [°] です(既定は \( L = 20 \)、\( V_s = 200 \)、\( \theta = 30 \))。
Y を位相遅れ方向に選ぶ場合は Y 方向の加速度が必要です。Y 方向の加速度がない入力は理由を表示して解析を開始できません。
長期荷重の初期化
RC耐震壁の初期せん断耐力は、開始入力の静的一次参照で正負別に確定し、時刻歴中固定します。公称強度を用い、波形ピークや瞬間応答から選びません。参照応答は時刻歴の初期変位・応力・履歴へ移さず、後述の長期載荷と区別します。限定域外や未解決の対象壁がある場合は非線形時刻歴を開始できません。
時刻歴の開始前に、長期系荷重ケース(固定・積載等、LoadCaseKind::is_long_term)の外力を
節点荷重・部材荷重の全量を1回の静的 Newton 求解で載荷し、その変位・応力・材料履歴を時刻歴の初期条件とするオプションです(既定で有効)。
軸力に依存する部材耐力(柱の曲げ降伏 \( M_y \)・せん断降伏 \( Q_y \) の軸力項、ファイバー断面の
N–M 相関)を、長期軸力を含んだ状態で評価するために用います。
長期荷重ベクトル \( f_0 \) は時刻歴を通じて一定の外力として毎ステップ加算し、動的な初期変位・
初期速度(波形読込フォームで指定する initial_disp/initial_vel)は「長期解からの増分」として
扱います。したがって、記録される変位・部材内力は長期変位・長期応力を含む全量です。長期系荷重
ケースがないモデルでは何も行いません。このオプションは非線形時刻歴のみに適用され、線形時刻歴
(線形時刻歴(Newmark-β))には適用されません(地震動による応答成分のみを扱います)。
OFF にすると長期系荷重は時刻歴中に一切載荷されず、重力を無視した応答になります。
長期荷重の初期載荷が収束しない場合
長期系荷重は荷重係数 1.0 の固定外力として1回の静的 Newton 求解で釣り合わせ、成功した場合だけ状態を確定します。収束失敗・要素更新失敗時は全要素を載荷前の状態へ復元し、理由付きで解析全体を停止します。分割載荷・刻み半減による再試行や、長期荷重を除いた解析への切替えは行いません。地震動応答の起点となる長期状態が定まらないためです。
このエラーが出た場合は、次を確認してください。
- 長期系荷重ケースの荷重値・載荷先(固定・積載等)
- 支点・拘束の設定(剛床・剛リンク・MPC・支点ばね)。剛性がゼロになる自由度がないか
- 弾性の長期静解析(許容応力度計算の長期)は通るのにこの載荷で落ちる場合、非線形要素の接線剛性(材料の履歴則・ファイバー断面の設定)を疑う
実装参照:利用者向けの既定は sepika_job::settings::AnalysisSettings::th_apply_long_term(crates/sepika-job/src/settings.rs、既定 true)が持ち、ソルバの NonlinearThCfg::apply_long_term(crates/sepika-solver/src/dynamic/timehistory/nonlinear.rs)へ渡されます。静的載荷は同ファイルの apply_long_term_static が行います。
質点系(串団子)非線形時刻歴
質点系(串団子)モデルの非線形時刻歴を解きます。 モデルの組み立て(2 次元/3 次元、線形の層剛性、非線形骨格)は 質点系解析 です。 2 次元の非線形時刻歴は、プッシュオーバー Q–δ を等包絡面積則でトリリニアに縮約し、せん断型串団子で Newmark 平均加速度と Newton を用い、三重対角 Thomas 法で解きます(質点系縮約の標準的な実務手法)。 3 次元では各階 \( (U_x, U_y, \theta_z) \) の密な接線剛性を Newton で解きます。ねじりばねは線形です。 層間・層せん断・塑性率は X・Y・45°・水平合成の 4 欄です(定義は 質点系解析)。 減衰・サンプル波の dt/継続/周期/振幅は立体時刻歴とは独立です(既定は 質点系解析)。
算定式
復元力は最大点指向型(Clough 系)トリリニアとし、等包絡面積則で次を解いて折点を決定します:
\[ A_{\text{tri}}(\delta_2) = A_{\text{actual}} \]
骨格の元になる層 Q–δ 曲線は、プッシュオーバーの性能曲線から抽出します。長期荷重のみを 初期載荷した状態(水平力ゼロ。プッシュオーバー解析の 長期載荷フェーズ)の (δ, Q) を曲線の原点として各点から差し引きます。長期荷重による層の 残留水平変形(非対称な荷重配置で生じ得る)を、水平力に対する復元力特性から切り離すためです。
減衰は初期剛性比例 \( a_1 = 2h/\omega_1 \) とします。ω1 は下記「固有値解析」の 1 次モードを 用い、固有値分解が失敗した場合(質量 0 以下の層がある等)のみ、逆反復法による概算へ フォールバックします。
各時刻ステップの Newton 反復は最大 30 回とし、収束を \( \|r\| < 10^{-6} \cdot r_{\text{ref}} \) で判定します (基準ノルム \( r_{\text{ref}} \) の取り方は 非線形時刻歴(Newmark-β + Newton-Raphson) と同じです)。反復が上限内に収束しなかった ステップはその時点の試行状態で確定して解析を続行し、結果画面に非収束ステップ数を 警告表示します。この場合の応答値は残差の収束を確認できていない参考値のため、 時間刻み dt を小さくするなどの見直しを検討してください。
実装参照:sepika_solver::dynamic::lumped_mass(crates/sepika-solver/src/dynamic/lumped_mass/)が算定します。
固有値解析
串団子モデル(各層の質量・初期剛性 K1)から、せん断型の一般化固有値問題 \( K x = \omega^2 M x \) を解きます(M は対角、K はせん断型三重対角)。M が対角である ことを利用して標準固有値問題 \( A = M^{-1/2} K M^{-1/2} \) に帰着し、対称行列の固有値 分解(faer の直接解法)で解きます。
- モード数は質点系パネルのモード数設定(既定 3。立体固有値のモード数とは独立。画面上の上限は 30)を用い、 2 次元は層数、3 次元は 3×層数を超える場合はそこまで切り詰めます。
- 2 次元のモード形状は各層の相対変位(下層→上層)で、最上階の値を 1.0 に正規化します。 3 次元は各階 \( (U_x, U_y, \theta_z) \) を頂部水平変位のノルムで正規化します。 立体モデルの固有値解析結果(M 正規化・別の自由度空間)とは正規化基準が異なるため、モード 形状の値どうしは比較せず、周期のみを比較してください。 刺激係数と有効質量は算定しません。
- 3 次元非線形の並進初期剛性は増分骨格の K1 です。静解析の層 Q/δ とは別に、復元力と同じ骨格から組みます。
- 層に質量が 0 以下のものがある場合は算定できません(実体のない極端な高周波モードが 紛れ込むため)。3 次元では回転慣性 \( J \le 0 \) の階も算定できません。
層応答の集計(層せん断力・層せん断力係数・階加速度・階速度・階変位)
線形時刻歴・非線形時刻歴のいずれの経路でも、応答の詳細記録として各時刻の層応答を階(model.stories、下層→上層)ごとに集計します。
層せん断力(慣性力ベース)
節点慣性力ベクトル \( f_{\text{abs}} = M \cdot \ddot{u} + \ddot{x}_g \cdot M \cdot r \) (\( \ddot{u} \) は相対加速度ベクトル、\( \ddot{x}_g \) は地動加速度、\( M \cdot \ddot{u} \) は疎行列ベクトル積)の当該方向の並進自由度成分のみを、当該層以上に属する節点について 集計し、符号を反転した値です。
\[ Q_i = -\sum_{j \geq i} \sum_{\text{dof} \in \text{階} j \text{ の並進自由度}} f_{\text{abs, dof}} \]
一貫質量行列では \( M \) が並進・回転自由度間の連成項を持ちますが、これは疎行列ベクトル積 \( M \cdot \ddot{u} \) の並進成分の中に既に正しく反映されているため、回転自由度そのものを 集計へ含める必要はありません(回転自由度の加速度に地動加速度 \( \ddot{x}_g \) を直接 加算することもしません)。どの階にも属さない節点(基礎レベルの自由節点等)の並進自由度は、 Z 座標が最も近い階(階の代表 Z=所属節点の平均 Z)に計上します。最下層の \( Q_1 \) は 全並進自由度の慣性力の総和(ベースシア)に一致します。
層せん断力係数
全時刻を通じた層せん断力の絶対値最大値を、当該層以上の地震用重量の総和で除した値です。
\[ C_i = \dfrac{\max_t |Q_i(t)|}{\sum_{j \geq i} W_j} \]
\( W_j \) は階 \( j \) の地震用重量(地震力と同じ Story::seismic_weight)です。
記号・単位
| 記号 | 意味 | 単位 |
|---|---|---|
| \( Q_i \) | i 層の層せん断力(慣性力ベース) | N |
| \( C_i \) | i 層の層せん断力係数(最大層せん断力/i 層以上の地震用重量) | - |
| \( W_j \) | j 層の地震用重量 | N |
| \( \bar{a}_i \) | i 階の質量加重平均した絶対加速度 | mm/s² |
| \( m_{\text{dof}} \) | 自由度の質量 | t |
階絶対加速度・階速度・階変位
階に属する節点の質量加重平均です(質量が全節点ゼロの階は単純平均)。加速度は絶対加速度(相対加速度+地動加速度)、速度・変位は相対値です。
\[ \bar{a}_i = \dfrac{\sum_{\text{dof} \in \text{階} i} m_{\text{dof}} \left( \ddot{u}_{\text{dof}} + \ddot{x}_g \right)}{\sum_{\text{dof} \in \text{階} i} m_{\text{dof}}} \]
層応答の最大値
層せん断力・階絶対加速度・階速度・階変位のいずれも、全時刻を通じた絶対値最大値 (詳細記録のフレーム間引き(record_every)に関わらず全ステップで求めた値)を別途保持します。
代表応答記録
UI 描画用の代表応答(1 節点変位等)の記録方向は、入力加速度の絶対値和が大きい方向を自動選択します(Y 方向入力があり、その絶対値和が X を上回る場合のみ Y)。記録節点は最上部の当該方向自由度を持つ節点です。
実装参照:sepika_solver::dynamic::timehistory(crates/sepika-solver/src/dynamic/timehistory/recording.rs)が算定します。X・Y 方向の両方を常に記録し、加振されていない方向の連成応答(ねじれ・偏心による応答等)も含みます。
鋼板耐震壁の既知制限の注意
非線形時刻歴応答解析では、解析へ組み込まれる鋼板耐震壁がある場合、開始時に対象の枚数・要素 ID・生成元の壁版 ID をまとめて 1 回表示し、解析を継続します。同期実行とバックグラウンド実行で通知内容は共通です。時刻ステップごとには繰り返さず、新しい起動では再通知します。準備計算の注意と計算エラーも保持します。
現行のせん断耐力は鋼板のせん断降伏 \( Q_y=t,l_w F/\sqrt{3} \) によるもので、せん断座屈を考慮しません。幅厚比が大きく補剛のない鋼板では、耐力を過大評価し得ます。通知は座屈耐力や断面検定の合格を保証せず、未確認の幅厚比の数値しきい値は用いません。計算モデルと適用上の制限は壁エレメントモデルを参照してください。
線形時刻歴、鋼板耐震壁がないモデル、RC 壁・SRC 内蔵鋼板、壁エレメントにならない壁版には、この非線形耐力モデルの注意を表示しません。
実装参照:sepika_app::app::actions::time_history(crates/sepika-app/src/app/actions/time_history.rs)が開始時に通知し、sepika_job::notices::steel_seismic_wall_notice(crates/sepika-job/src/notices.rs)が対象と文言を生成します。
詳細記録のフレーム間引き(record_every)
線形時刻歴・非線形時刻歴いずれの経路でも、全節点変位・部材内力・層応答の時系列(層応答の集計(層せん断力・層せん断力係数・階加速度・階速度・階変位))は、
解析の全ステップのうち一定間隔 record_every ステップごとに間引いて保持します
(初期点と最終確定点は間引きに関わらず必ず含めます)。地震波は数千〜数万ステップに及ぶため、
時系列の全量をそのまま保持するとメモリ・保存容量を圧迫することへの対処です。
record_every を指定しない場合は、記録フレーム数がおおむね 1000 になるよう次式で自動決定します(\( T=N-1 \) は全積分区間数)。間引かない場合のフレーム数は初期点込みの T+1 です。
\[ \text{record_every} = \max\left(1, \left\lfloor T / 1000 \right\rfloor\right) \]
たとえば T=5、record_every=3 では確定ステップ 0, 3, 5 を残します。
間引きの対象は時系列本体(各フレームの全節点変位・部材内力・層応答)のみです。 全ステップを通じた最大応答(節点変位の最大値、部材内力の包絡値、層せん断力係数 Ci、 層せん断力・階絶対加速度・階速度・階変位の絶対値最大)は間引かず、全ステップを走査して 求めます。
フレームごとの部材内力(時系列本体)は、各部材の評価断面のうち両端 2 点(材端、 最小ξ・最大ξ)のみを保持し、メモリを削減します(3D アニメーション・履歴表示は端部値の みを用いるため)。中間の評価断面(危険断面)を含む全断面の情報は、間引かない包絡値 (部材内力の最大値)側にのみ保持されます。
解析タブ「時刻歴応答」の「記録間引き」欄で record_every を指定できます
(線形 Newmark-β・非線形のいずれの経路でも共通)。0 を指定すると上式による
自動決定になります。
実装参照:sepika_solver::dynamic::timehistory::recording::auto_record_every(crates/sepika-solver/src/dynamic/timehistory/recording.rs)が自動決定を、
呼び出し側(GUI・非線形の NonlinearThCfg::record_every)が record_every を
明示指定できます。
解析の中断と再開
GUI・MCP には、解析の途中状態をファイルへ保存して再開する操作はありません。 プロジェクトの保存結果の扱いは 保存結果の計算契約と再実行 を参照してください。
内部の線形時刻歴計算では、確定状態を渡して残りの区間を計算できます。 この計算では、ステップ s は時刻 sdt の既確定状態を表します。 変位・速度・相対加速度をそのまま引き継ぎ、初期加速度の再求解や同一区間の再積分は行いません。 全積分区間数を T とすると、0≤s≤T の残りは T−s 区間で、s=T なら更新しません。s>T は拒否します。
再開時の詳細記録は開始点 s を残し、その後は絶対ステップ番号による間引き格子と末端 T を残します。 s を基準に格子を作り直しません。T=5、record_every=3、s=2 なら 2, 3, 5 が記録され、連続実行の記録にない開始点 2 が加わります。
実装参照:sepika_solver::dynamic::timehistory::linear_time_history_from_state(crates/sepika-solver/src/dynamic/timehistory/linear.rs)が確定状態からの線形時刻歴計算を担います。