OVIKA — SEPIKA Project File
OVI(卵)とIKAを組み合わせた名前です。
SEPIKAの構造モデル、解析条件、解析結果などを、一つの卵のようにまとめて保存します。
OVIKA(.ovika)は SEPIKA ネイティブの保存形式です。入力モデルを格納し、保存・読込で入力を保持します(ST-Bridge のようなサブセット制約はありません)。古い自動生成荷重と計算成果の保存条件は下記を参照してください。名称は ZIP という実装技術に依存しません。
実装参照:sepika_io::ovika::{save_ovika, load_ovika}(crates/sepika-io/src/ovika.rs)が保存・読込します。
小梁・間柱への CFT 割当は、断面用途が柱でも保存・読込時に拒否します。領域内・所属未割当のどちらも対象です。保存が拒否された場合は既存ファイルを変更せず、読込が拒否された場合は現在のモデル・選択・Undo 履歴・計算成果を保持します。入力を自動置換・削除して受け入れることはありません。対応範囲は断面用途を参照してください。
主架構線材 Beam・Fiber・MultiSpring・Brace は、保存・読込で異なる2つの NodeId を明示検査します。断面未割当の床境界線も対象です。0・1・3節点以上や同一IDの二重指定は、ElemId・kind・実節点数・期待2・入力NodeId列を含むエラーです。不正保存は既存ファイルを上書きせず、不正読込は現在のモデル・Undo履歴・結果を置換しません。自動分割や先頭2節点による救済はしません。
単一リップ溝形は、有限正の H/B/C/t [mm]、t < C < H/2、t < B/2 を満たさない場合、入出力時に断面ID・符号・寸法と原因を表示して拒否します。 上下リップの接触・重複、ウェブとリップの接触・重複、非有限の派生性能も対象です。 自動C切詰め・微小隙間補完・閉断面Jへの読み替え・0質量化は行いません。 寸法と総断面性能を参照してください。
未完成の入力と参照の整合性
断面・材料の未割当や主架構断面の用途未設定だけを理由に、保存を拒否することはありません。 入力途中の状態をそのまま保存でき、未設定を既定値で補いません。ただし、上記の断面用途・形状等の制約は入力途中でも適用します。
梁を短くした後など、準備計算が古く、自動生成した部材荷重の位置・区間が現在の材長に収まらない場合も、通常の「保存」で編集済み入力を保存できます。 この場合は、自動生成した節点荷重・部材荷重と計算成果をファイルに含めません。手入力荷重・荷重ケース・組合せ・生成条件は保持します。 保存のために準備計算を実行する必要はありません。開き直した後、準備計算を実行して自動荷重を再生成してください。 保存操作は編集中のモデルや Undo/Redo 履歴を変更しません。有効な自動荷重や、入力が一致する直接検定だけを保存する従来の条件は維持します。 手入力した固定距離荷重の範囲外位置・区間は保存時も拒否し、自動で短縮・削除しません。
未割当と、割り当てた参照先が存在しない状態は区別します。節点・部材・断面・材料等の ID と保存位置の不一致や重複、 検査対象の参照先欠落は、対象と理由を示して保存・読込を拒否します。通常のモデル編集では ID を管理しますが、 不整合なファイルを読み込む際に ID の付け替え、断面の置換・削除、用途の推定をして受け入れることはありません。 小梁・間柱と版の割当領域は安定した ID を持つため、連番でないことだけでは不整合になりません。
参照の不整合で保存を拒否した場合、既存ファイルと現在のモデル・選択・Undo/Redo 履歴・計算成果を保持します。 読込を拒否した場合も、入力ファイルと現在のモデル・履歴・計算成果を保持します。 ハッシュが正しくても、参照の整合性まで保証されるわけではありません。
階が持つ節点一覧と、節点に設定した所属階も、参照先が実在することを検査します。 剛床・剛リンク・多点拘束では代表節点と従属節点(多点拘束の各項の節点を含む)、剛床では所属階を検査します。 節点荷重の載荷先は、手入力・自動生成のどちらも対象です。存在しない節点の荷重を無視して受け入れることはありません。
自動生成した剛床代表節点の記録と、地震用重量の生成記録に明示された節点・階も対象です。 後者には算定重量の対象階、記録した拘束の代表・従属節点と剛床の所属階、代表節点の拘束条件の対象節点を含みます。 自動生成した代表節点は、現在の拘束や階所属から使われていなくても、実在していれば保持できます。
階所属の未設定、空の節点一覧・拘束・荷重、生成記録の未設定や空の一覧だけでは、参照不整合にしません。 生成記録と現在の拘束条件・採用重量が異なる状態や、再生成前の古い記録も、参照先が実在すれば保持できます。 保存時の参照検査は、所属の相互一致、入力の完成度、生成入力・出力の識別の新しさ、記録した値の正しさを認定しません。 解析へ採用する重量の更新は、算定値と採用値の更新で確認します。
保存できることと、GUI の「開く」で受け入れられること、解析できることは別です。 保存・読込のライブラリは入力完成度の検査を一括適用しませんが、GUI の「開く」はモデル全体の検証も行います。 例えば、主架構断面の用途が未設定の入力は保存できても、GUI の「開く」では拒否されます。 解析に必要な入力は、解析前チェックでも確認してください。
部材荷重の作用方向の全成分が有限であれば、ゼロ方向など方向の計算条件を満たさない入力も、方向と手入力荷重を変更せず保存・再読込できます。参照先や位置・区間など、他の入力条件は引き続き適用します。方向の不備は計算時に拒否し、保存や読込による既定方向への置換・荷重削除・自動修復は行いません。
実装参照:参照 ID の検査は sepika_core::model::Model::validate_reference_ids(crates/sepika-core/src/model/aggregate.rs)、アプリの状態変更前の検査は sepika_app::app::App::{load_model, save_project_to_opts, open_project_from}(crates/sepika-app/src/app/actions/io.rs)です。
GUI からの操作
ファイルメニューに以下の項目があります。
| メニュー | 動作 |
|---|---|
| 📄 新規 | 空モデルを開く |
| 🏠 サンプル(門型ラーメン) | 内蔵のサンプルモデルを開く |
| 📂 開く… | .ovika プロジェクトを読み込みます。読込後、モデルは検証(validate)を通ってから差し替わります |
| 💾 保存 | 現在のプロジェクトを上書き保存する(保存先が未設定なら保存先を尋ねる) |
| 💾 名前を付けて保存… | 保存先を指定して .ovika として保存する |
読み込むとそのファイルが現在のプロジェクトの保存先になり、以降の「保存」は同じファイルへ上書きします。
実装参照:ファイルメニューは sepika_app(crates/sepika-app/src/app/mod.rs)が表示し、モデルの差し替えは sepika_app::app::App::load_model、開く・保存は App::{open_project_from, save_project_to_opts}(crates/sepika-app/src/app/actions/io.rs)が担います。
保存結果の計算契約と再実行
現行の解析契約版は65、検定契約版は44です。自立壁の基準剛性方式と代表内柱の指定、斜め壁の壁面内剛性、Rs評価用再解析の条件を含みます。旧解析63以前と依存する検定成果は再利用せず、明示的に再解析・再検定してください。モデル保存スキーマは変更しません。
偏心・断面・用途・材料が異なる二次小梁を 主架構と同一として除外しない条件を含みます。旧解析48以前・旧検定27以前の保存成果は 現在の成果として再利用せず、明示的に再計算してください。
検定契約版44には、RC・SRC梁柱のSD345・SD390・SD490主筋について、長期許容引張・圧縮応力度を数値径28 mm以下/28 mm超で選ぶ条件を含みます。旧検定43以前の保存検定は明示的に再検定してください。現行解析契約の解析結果は保持し、モデル・結果の保存スキーマと解析契約版は変更しません。径の保存値と幾何・面積・数量の算定も変更しません。
検定契約版43には、Ds・Quの採用状態について外力分布・崩壊形・非崩壊部分・壁脚拘束やピロティ等の不足証拠を全件保持し、条件未確認の点を自動・手動とも合否へ採用しない条件を含みます。旧検定42以前の成果は失効し、再保存やランク指定で解除しません。解析契約64の応力結果は保持します。適用条件と現在の制約は保有水平耐力を参照してください。
検定契約版42には、層崩壊の一律群補正を適用せず、RC/Sの破壊形式・非ヒンジ柱・接合部・柱脚等の条件不足を自動・手動とも理由付きで保留する条件を含みます。旧検定41以前は現行成果として利用せず、再検定してください。解析契約64の解析結果は保持します。表示切替・再保存・部材ランクの手動指定ではDsの保留を解除しません。モデル保存スキーマは変更しません。
検定契約版41には、通常鋼主架構の圧縮柱200・柱以外250の有効細長比上限の不適合を確認し、主軸と有効長の対応が未確認の圧縮山形鋼を理由付き未検定とする条件を含みます。未検定位置を含む部材は他位置の適合値だけで着色せず、確定した構造規定NGは保持します。旧検定40以前の検定結果は明示的に再検定してください。現行解析64の応力は保持し、表示切替や再保存だけでは旧検定を再利用しません。詳細は鋼構造の断面検定を参照してください。
検定契約版40には、S/CFT静的仕口パネルの軸力比を正の有限な実断面積で求め、断面積・基準軸耐力・軸力比を算定できない場合は理由付き未算定とする条件を含みます。旧検定39以前の保存検定は明示的な再検定が必要です。現行契約の解析結果は保持し、表示切替や再保存では旧検定を利用可能に戻しません。モデル・結果の保存スキーマと解析契約版は変更しません。
検定契約版34には、CFT充填コンクリートのFcが24 N/mm²未満の場合に理由付き検定不能とする条件を含みます。旧検定33以前の保存検定は再利用せず、明示的に再検定してください。現行契約の解析結果は保持します。
解析契約版57には、対角合同平衡化後の推定逆条件数による正定値求解の数値条件の確認を含みます。解析契約版56以前の保存解析と、それに依存する検定は再利用せず、明示的に再解析してください。モデル保存スキーマは変更しません。数値診断の意味と限界は線形代数ソルバを参照してください。
解析契約版56と検定契約版30には、梁中心線上の実上端と水平投影幅から求める床板下面までの嵩上げを、床板材料別の設計重量と物理質量へ反映する条件を含みます。旧解析55以前の保存解析とそれに依存する検定は再利用せず、明示的に再解析してください。解析成果を伴わない直接小梁検定も、旧検定29以前は明示的に再検定してください。モデル保存スキーマは変更しません。
解析契約版55には、梁の鉛直偏心接続による剛性・内力・部材荷重・既存質量・反力の写像と、拘束自由度の質量寄与を保持する地動入力を含みます。旧解析54以前の保存解析とそれに依存する検定は再利用せず、現行契約で明示的に再解析してください。
検定契約版29には、雑壁の剛心・偏心率算定と必要入力の不足を拒否する条件を含みます。旧検定28以前の保存検定は現行契約で再検定してください。形状係数Fesの適用条件に従います。
解析契約版49には、増分性能曲線の全支持抵抗を物理材端力・固定支持反力・支持ばねから回復し、 部材内部の荷重と拘束点反力を層切断面の元荷重照合へ含める条件を含みます。 旧解析48以前の保存解析とそれに依存する検定は、現行契約で明示的に再解析してください。
解析契約版48には、全固定通常材の部材力回収、通常Fiber/MSの材料・端部接続・記録への現在部材荷重の反映、 縮約右辺がゼロでも長期部材荷重を保持する非線形時刻歴の条件を含みます。 解析契約版47以前の保存解析とそれに依存する検定は現行成果として利用できず、明示的な再解析が必要です。 モデル・結果の保存スキーマと検定契約版は変更しません。
解析契約版41には、仕口パネルの軸力比を実材長と方向別の実基準軸耐力から評価する条件を含みます。解析契約版40以前の保存解析と、それに依存する検定は現行成果として利用できません。入力を確認して明示的に再解析してください。モデル保存スキーマと検定契約版26は変更しません。算定条件は仕口パネル要素を参照してください。
解析契約版40と検定契約版26には、共通局所座標で補完なしに得た単位直交基底を支持面にも用い、有限投影の丸めでフェース・小梁自重作用区間・需要を変えない条件を含みます。旧解析39と旧検定25の成果は入力が同じでも現行成果として利用できません。解析成果は明示的に再解析し、解析成果を伴わない直接小梁検定も明示的に再検定してください。支持面の適用条件は座標変換を参照してください。
解析契約版38には、共通局所座標の断面参照方向を検査し、非有限または単位直交基底を解決できない入力を対象部材と理由付きで拒否する条件を含みます。解析契約版37以前の保存解析と、それに依存する検定は現行成果として利用できません。入力を確認して明示的に再解析してください。解析成果を伴わない直接小梁検定でも、検定契約版23以前の保存成果は現行成果として利用できません。入力を確認して明示的に再検定してください。モデル保存スキーマは変更しません。入力条件は座標変換を参照してください。
S/CFT柱梁接合部の検定は、柱の強軸・弱軸への符号付き需要集約、方向別抵抗板と実板厚によるF選択、集約後のフランジ高さの適用条件を含みます。検定契約版21以前の成果は再検定が必要です。表示切替や再保存で旧検定を新版へ認証せず、明示的に再検定してください。
単独無開口RC壁のDs判定では、側柱心間距離による平均せん断応力度と両側柱寸法による表選択を含む検定契約を要求します。採用式と適用範囲を参照してください。
通常鋼部材・鋼小梁・S/CFT柱梁接合部の材料・実板厚によるF選択と、必要入力不備時の検定全体停止を検定契約版23に含みます。検定契約版22以前の保存成果は明示的な再検定が必要です。表示切替や再保存で旧検定成果を有効に戻しません。
保存結果は、生成時の解析契約版と検定契約版を独立して持ちます。現行の解析契約版は 65、検定契約版は 44 です。対角合同平衡化後の推定逆条件数で正定値求解の数値条件を確認し、作業精度で信頼性を確認できない結果を公開しない契約を含みます。Fiber/MSの元端部解放と材料釣合いの収束判定を整合させた契約を含みます。旧解析50以前の保存成果は再解析が必要です。全固定の非線形時刻歴でも長期部材応力を記録し、不正な部材記録は履歴確定前に拒否する契約と、免震支承の試行・確定状態を保持する復元契約を含みます。SM520系列の75 mm超100 mm以下のF=325と100 mm超の非補完・拒否契約を含みます。旧335成果と旧範囲外成功成果は表示切替や再保存では利用可能に戻らず、現行契約での再計算が必要です。単一リップ溝形の不成立幾何を解析前に拒否する契約を含みます。標準配筋の適用・未対応ゲート、共通断面質量の採用契約、矩形SRCの内蔵Hとコンクリートの非重複材料領域の契約を満たす版の成果だけを利用します。静的解析の長期軸力無効化・引張専用の採用契約も含みます。履歴ばねの確定点再評価による履歴保持と初期接線の契約も含みます。通常静解析は規模によらず元の f64 剛性を疎 Cholesky で分解する契約を含みます。鋼材の自動強度割増は標準物性・F値と同じ対応済み名称を認識する契約を含みます。囲まれた床・壁の主架構支持は Beam・Fiber・MultiSpring の解析表現に依存しない契約を含みます。正常区間の符号付き単純梁反力は合力と一次モーメントを保存する契約を含みます。囲まれた床では閉合・直交・面積で矩形の適用を判断し、非直交床は真面積による多角形分配を用い、矩形の一方向版検定の結果を生成しない契約を含みます。固定距離の部材荷重は有限な支間内の位置・正の分布区間だけを解析へ渡す契約を含みます。主架構の Beam・Fiber・MultiSpring・Brace は異なる2節点だけを受け付ける契約を含みます。RC壁の明示方向配筋・材料役割と不足拒否の契約を含みます。時刻歴の実入力・実効設定とケースへの所属を識別する契約を含みます。RC梁Q0の符号付きlocal Qy端反力を選択重力係数で端別に合成し、合成後に最大絶対値を採る契約を含みます。RC 梁型は大梁・小梁、RC 柱型は柱・間柱に限る専用型です。主架構線材・小梁・間柱の用途不整合を解析前に拒否する契約を含みます。RC・CFT の静的終局需要は圧縮正の設計軸力に統一します。仕口パネルの柱由来の諸元・材料・軸力は物理的な下側優先で同じ参照柱にそろえ、採用側の不備を他の柱や正常な剛パネルで補わない契約を含みます。弾性梁に採用する G は直接入力・導出値とも正の有限値を必要とし、0・負値・非有限値を解析前に拒否する契約を含みます。非零幅の線形分布荷重を微小幅でも保持し、合力・一次モーメントと部分切断の荷重釣合いへ反映する契約を含みます。明示仕口パネルの採用GとG・Veは有限の正値を必要とし、不正値を剛パネルへ補完せず接合部・採用柱と理由を示して拒否する契約を含みます。増分部材応答履歴の記録時に非有限値を認めず、記録不能なら部材・ステップ・理由を示して解析を停止する契約を含みます。弾性梁の入力が有限でも、剛性算定・端部縮約・剛域変換を構成できない場合は対象部材と理由を示して停止する契約を含みます。Fes の必要入力が欠ける場合・不正な場合・算定不能の場合は、Rs=1 や Re=0 へ補完せず、必要保有水平耐力と合否を算定しない契約を含みます。3次元質点系の準備でも共有する剛心・ねじり剛性の集計・除算不能を、正常な座標や剛性へ戻さず拒否する契約を含みます。解析契約版35以前・検定契約版20以前の保存成果は対応する再実行が必要です。 S造の非線形仕口パネルでは、軸力依存の降伏式と履歴ばねの降伏値を一致させ、軸耐力到達・ゼロ耐力・履歴ばねの設定可能域外を理由付きで停止する契約を含みます。解析契約版35以前の成果とそれに依存する検定は利用できず、現行契約で再解析が必要です。モデル保存スキーマと結果スキーマは変更しません。 壁側柱の分類・局所回転解放は壁エレメントモデル、ファイバー・MSの軸・二軸曲げ材料応答は非線形梁要素のモデル化に従います。これらの契約を満たさない旧成果は、現行契約で再実行してください。 取り付く床板の分割境界と、並走小梁への床辺荷重の分配は、同じ主架構支持の Beam・Fiber・MultiSpring を共通に扱います。有効な壁版割当領域のある囲まれた壁版は、主架構だけの壁領域への所属がなくても、境界・版仕様・スリット・自重支持方式・任意辺負担率を保持します。この準備荷重と小梁検定入力の契約により、旧解析24と旧検定16の成果は入力が同じでも利用できません。直接小梁検定も明示的に再実行してください。 鉛直柱が支持する二次小梁の最外外側面・有限柱閉区間・角丸CFT外形と、その面間区間に基づく設計自重/物理質量相当の転送を解析契約に含めます。旧フェース契約の保存成果は、入力が同じでも再解析が必要です。 SRC梁の地震時設計用せん断に必要な同位置のQL参照と、不足・非有限時の位置全体の未検定を検定契約に含めます。検定契約版16以前・欠落・未来版の検定成果は利用できず、現行契約で明示的な再検定が必要です。解析契約版が現行と一致し入力条件も有効な解析成果は、検定版の不一致だけでは失効しません。現行解析からの再検定で現行の検定契約版の成果を生成します。再保存・開き直しで旧検定版を補完せず、モデル保存スキーマと結果スキーマは据え置きます。 終局需要では保存した架構用長期組合せの明示選択と完全な重力参照を必要とします。増分解析は初期重力の terms・係数・載荷有無と生成入力を記録し、終局検定では静的ヒンジ略算と確定総応答を区別する契約を含みます。旧成果や入力識別のない成果は、再保存・表示切替・Undo・Redo によって利用可能には戻りません。詳細は終局検定の統括を参照してください。モデル保存スキーマは 1 のままです。 検定契約版35には、SRC梁・柱の内蔵鉄骨について、対応材種・実板厚による強度確定と、未知名・材料不備を理由付き未算定とする条件を含めます。旧検定34以前は明示的に再検定してください。旧契約のF235補完による検定は再保存で有効化せず、現行解析が有効なら明示的に再検定してください。 計算式、適用条件、解析準備・solver の適用ゲートが変わった場合は対応する版を更新します。 部材荷重の方向条件を全荷重ケースの計算前に検査する契約を含みます。解析契約版 24 以前・欠落・未来版の保存解析と、それに依存する検定は利用できません。方向が正常な入力でも旧成果は再解析を必要とし、方向不備の入力は修正してから再解析します。方向条件の追加ではモデル保存スキーマを変更しません。 解析契約には、時刻歴の N 点入力を N−1 区間として積分し、先頭を初期状態として記録する時間軸も含みます。 旧時間軸の保存結果は、時刻ラベルの補正や再保存では再利用できず、入力波形から再解析が必要です。 骨組の非線形時刻歴では全体未収束の試行状態を確定せず停止する契約を含みます。 解析契約版27以前の保存成果は、未収束ステップ数の表示や再保存で再利用せず、現行契約で再解析してください。 アプリのリリース番号、Git SHA、カメラ・表示ステップ・ハイライト・表示専用通り芯の変更では版を変更しません。
| 保存版 | 利用状態 | 操作 |
|---|---|---|
| 現行版と完全一致 | 生成入力も現在のモデル・計算設定と一致する結果を利用できます | 選択したケース・組合せを確認します |
| 欠落 | 版不明の成果として利用不可 | 対象の解析または検定を再実行します |
| 現行版より小さい | 旧契約の成果として利用不可 | 対象の解析または検定を再実行します |
| 現行版より大きい | 現アプリ未対応の成果として利用不可 | 対応アプリを使用するか、現アプリで再実行します |
解析版が非一致の場合は解析成果と依存する検定成果を除外します。モデル・解析設定は読み込みます。 検定版だけが非一致の場合は現行解析の応力を保持し、部材・接合部・壁・小梁・床板の検定を除外します。 理由には保存版と現行版、必要な再実行を示します。読込時に自動計算はしません。 同版でも、保存時に選択していた静的ケース/組合せの生成入力が不一致または識別欠落の場合は、その応力と依存検定を除外します。 検定自身にも成功完了時の生成入力を記録します。採用した計算モデル、実際の静的ケース/組合せとその既存生成入力、実効荷重期間、RC損傷制御・付着・QD方式が一致する場合だけ検定を利用します。 生成入力が欠落・不一致の検定は、解析が最新でも保存対象から除外します。新しい時刻歴等の解析結果は保存でき、再読込で旧検定を復活させません。保存は生成入力や版を新規認定しません。 直接床板・小梁検定は架構応力源を持たず、解析が未実行でも保存できます。解析が古い場合、この保存には直接検定のみを含め、保持された旧解析を同梱しません。 他の方向・固有値・目的別runはそれぞれの既存入力照合で利用可否を判断します。 立体・質点系の時刻歴は、ケース ID と実入力・実効設定・開始時の計算モデルの識別を結果の生成入力とともに保存します。 現行成果の保存再読込で結果の所属を保持します。同じモデルで異なる時間刻み・倍率等を用いた複数ケースは、 最後に表示したケースの設定に揃えて上書きせず、各実行時の条件に対応する ID と結果を保持します。識別が欠落・不一致の成果は利用できず、 再保存や波形の表示選択変更では補完・再認定しません。波形 CSV のファイル名やハッシュだけを、実入力の識別の代用にはしません。
材料条件などのモデル編集後に現モデルで解析に成功した場合、生成時のモデル・実入力の対応を確認できる旧時刻歴は、別ケースの履歴として保存・再読込できます。 履歴の保持と現モデルへの採用は別に判断します。旧モデルの結果は履歴表示できても現モデルの耐力等へ採用できず、現モデルと生成入力が一致する結果だけを採用できます。 現モデルに利用できる解析成果がなく、旧モデルの時刻歴履歴だけが残る読込は、解析済みの最新状態とは認定しません。 モデル編集後に未再実行で解析全体が古いまま保存する場合は、従来どおり解析結果と振動ケースを同梱しません。
検定版だけが失効した場合は、対象を選び、検定画面の「検定を再実行」を押してください。 応力の版または生成入力が失効した場合は、対象のケース/組合せを再解析してから検定します。 解析の一部だけを再実行しても、旧契約の固有値・増分・時刻歴・目的別採用runは復活しません。同版の旧入力で生成された未再計算の検定も利用不可のままです。 必要な解析と目的別評価点の採用をそれぞれ再実行してください。 表示切替、保存し直し、結果状態の更新だけでは新版へ認証し直しません。 現行条件で生成された「未検定(Skipped)」や参考値の「算定不能(Unavailable)」も正当な現行成果ですが、全適合を意味しません。 新しい床板・小梁の直接設計は架構解析を要求しません。
この版情報の追加では OVIKA コンテナの schema_version は変更しません。 旧ファイルのモデル・設定は読めますが、版不明の保存結果は再実行が必要です。 未知の項目を無視する旧アプリでの結果利用の安全性は保証しません。
MCP の DesignCheck は毎回新しい解析を行い、OVIKA の保存応力を再利用しません。 MCP の Parquet/FsResultStore の result_get は別の保存経路で、この OVIKA の版・入力照合の対象には含みません。
実装参照:版定義は sepika_core::result_contract(crates/sepika-core/src/result_contract.rs)、OVIKA 成果の利用判定は sepika_app::app::result_validity(crates/sepika-app/src/app/result_validity.rs)です。
ファイル構造
.ovika の内部は現在 ZIP コンテナです。manifest.json・model.msgpack は必須エントリ、
残りは任意エントリ(同梱がなければ読込側の該当項目が None になる)です。
| エントリ | 必須 | 内容 |
|---|---|---|
manifest.json | ○ | スキーマ版、単位系、各エントリの SHA-256 ハッシュ |
model.msgpack | ○ | 内部モデル本体(MessagePack でシリアライズ) |
preparation.msgpack | - | 準備計算の結果(モデルに対して最新の場合のみ同梱) |
results.msgpack | - | 解析結果(静的・組合せ・固有値・増分・時刻歴・質点系など。モデルに対して最新の場合のみ同梱) |
analysis_settings.msgpack | - | 解析タブの設定値(立体時刻歴と質点系それぞれの波形パラメータ・減衰、固有値/質点系のモード数など) |
4 種の MessagePack エントリでは、struct をフィールド名付きの map(named MessagePack)として保存します。 入れ子の struct も名前を保持するため、Rust のフィールド宣言順序を変更しても読み込みは順序に依存しません。 任意エントリの直列化はアプリ側が行い、IO 層は内容を解釈しないバイト列として保存・返却します。
内部モデルには節点・部材・断面・材料・荷重・層に加え、断面形状(SectionShape)や部材付帯情報(ハンチ・継手位置)まで含まれ、これらは保存・読込で保持されます。
時刻歴を実行すると振動荷重ケースもモデルへ入りますが、解析結果が最新でない保存では書き出しません。
開き直したときに、結果のない空ケースが残らないようにするためです。
preparation.msgpack・results.msgpack はモデルから再計算できる派生データですが、再計算が
高価なため保存して復元します。解析全体が古い場合は解析を同梱しません。検定は独立した生成入力の一致も要求し、未再計算の旧検定を最新解析と一緒に保存しません。
再読込後は同梱されていない成果を未実行として扱います。
analysis_settings.msgpack はモデルから導出できない独立した設定値(時刻歴の波形パラメータ・
減衰モデル、固有値解析のモード数など)で、解析結果を生成した条件そのものです。モデルの新陳とは
無関係に、保存のたびに現在の設定値を常に同梱します。このエントリを持たないファイルを読み込んだ
場合、解析タブの設定値は変更しません(既定値のまま、または直前の値を保持します)。
質量モデルの方式(mass_method)は例外で、モデル本体(model.msgpack)が持つ値を単一情報源
とします。analysis_settings.msgpack にも同じ項目がありますが、読込後は常にモデル側の値で
上書きします。
なお、時刻歴応答解析の入力波形(CSV読込波)そのものは .ovika に含まれません。波形ライブラリ
(波形ライブラリ)から選んで実行した場合は、analysis_settings.msgpack
にライブラリ内のファイル名と実行時点の内容の SHA-256 を記録し、開き直したときにライブラリから
自動で同じ波形を参照します。立体時刻歴と質点系は別々の選択を持ちます。ファイル選択ダイアログ
(「📂 波形CSVを開いて実行…」)から一回限りで実行した場合は、波形は保存されず再現できません。
実装参照:各エントリの中身の直列化・復元は sepika_app::app::App::{save_project_to_opts, open_project_from}(crates/sepika-app/src/app/actions/io.rs)が担います。
整合性・安全性
- ハッシュ検証: 読込時に各エントリの SHA-256 を
manifest.jsonの記載と照合し、不一致ならエラーにします。必須エントリ(model.msgpack)が manifest に列挙されていない場合も拒否します(未検証のまま読み込ませないためです)。 - 余分なエントリ: 利用対象外のエントリは設定として取り込みません。manifest に列挙されている場合は、同じ SHA-256 検証と展開サイズ上限を適用します。
- スキーマ版チェック: 本ソフトはリリース前で後方互換を持たないため、現行スキーマ版(
1)以外は拒否します。 - 原子的な保存: 一時ファイルへ書き出して
fsyncした後にrenameすることで、電源断でファイルが破損しないようにしています。 - ZIP 爆弾対策: 1 エントリあたりの展開サイズ上限(4 GiB)を超える書庫は拒否します。現在の
.ovikaは単層 zip(deflate)で展開率は理論上約 1032 倍が上限のため、絶対サイズ上限がメモリ保護として機能します。ヘッダの申告サイズは信用せず、実際の展開バイト数でも検査します。 - 保存サイズの確認: 解析結果(時刻歴の詳細記録を含む)の直列化サイズが 512 MB を超える場合、保存時に「時刻歴の詳細記録を保存に含めますか?」の確認を表示します。除外して保存しても、層応答・ピーク値等の集計結果は保存され、詳細記録は再解析で復元できます。
実装参照:ハッシュ検証・スキーマ版チェック・原子的保存・ZIP 爆弾対策は sepika_io::ovika::{load_ovika, save_ovika}(crates/sepika-io/src/ovika.rs)が、保存サイズの確認は sepika_app::app::App::save_project_to_opts(crates/sepika-app/src/app/actions/io.rs)が担います。
壁版の自重支持辺の負担率と間柱の端部負担率は .ovika に保存します。未指定は支持先なしとして扱い、対象壁版の解析前チェックでエラーになります。
増分解析の部材応答には、壁の正負耐力の選択に用いる符号付き面内せん断力 wall_shear_signed [N]を保持します。壁以外はnullです。壁下辺a→bの向きを正とします。スキーマ番号は1です。
スキーマと互換性
モデルには共有数量設定(壁筋の仮定径・定着係数等)と、RC壁の明示横筋比・縦筋比を保存します。
方向比の欠落は欠落のまま復元し、最小筋比から補完しません。現行スキーマで方向比を持たず
psだけを持つ入力も、その方向の鉄筋数量は未算定です。数量設定を変更して保存・再読込すると、
GUI・CSV・MCPは保存値で数量を再集計します。数量設定は解析入力に含めず、積算鉄筋重量を解析質量へ加算しません。
契約は数量積算を参照してください。
manifest.json の schema_version は、モデルと任意エントリを含む永続化スキーマの版です。
現行値は 1 で、読み込み時にはこの値との一致を確認します。
ただし初回リリースまでは、版を 1 に据え置いたまま破壊的変更を行い、開発中に保存したファイルの後方互換は保証しません。
同じ版でも過去のファイルを読み込める保証はなく、旧形式への変換や互換層は提供しません。
named 形式はフィールド順序への依存をなくしますが、フィールド名・型・意味の変更まで自動的に互換にするものではありません。
たとえば #[serde(default)] を持つ追加フィールドは欠落時に補完できますが、その値が計算上も適切かは別に確認する必要があります。
struct の未知フィールドは通常無視されますが、フィールド削除に伴う情報の喪失が許されることを意味しません。
初回リリースは Git タグで判定します。 初回リリース後に永続化スキーマを変更するときは版を上げ、リリース済みファイルからの明示的な migration を実装します。 順序だけの変更は named 表現のスキーマ変更に当たりません。 それ以外の変更は、以下の観点でデータの保存・復元と計算上の意味を確認します。
| 変更 | 確認する事項 |
|---|---|
| フィールド追加 | 欠落を default 等で読めるか、補完値が適切か |
| フィールド削除 | 未知フィールドを無視しても必要な情報が失われないか |
| フィールド名変更 | 旧名から新名への明示的な変換が必要か |
| 型変更 | 値の範囲・単位・表現を保って変換できるか |
| enum variant の追加・削除・意味変更 | 未知 variant や廃止値をどう扱うか、計算の意味が保たれるか |
| 構造の分割・統合 | 対応する値を欠落・重複なく移せるか |
| 任意エントリの変更 | producer 側の具体型の変更と、同梱がない場合の挙動が整合するか |
リリース済みスキーマを移行する場合は、その版の型へ decode してから現行型へ変換します。
現行型への直接 decode を migration の代用にはしません。
現在は版間の変換を行わず、未対応版は MessagePack の decode 前に UnsupportedVersion として拒否します。
実装参照:sepika_io::ovika::CURRENT_SCHEMA_VERSION と load_ovika(crates/sepika-io/src/ovika.rs)が現行版と版一致チェックを定義します。
開発者向け: ライブラリ API(Rust)
Rust コード例(開発者向け)
Model::section と Model::element_section、二次部材の断面用途検査は、添字位置の ID が一致する断面を優先し、
なければ同じ ID を持つ先頭の断面を選びます。未割当・参照先欠落は断面取得で None になります。
この検索規則は不整合なモデルの保存許可を意味せず、保存・読込では参照 ID の検査を別に行います。
#![allow(unused)] fn main() { use sepika_io::ovika::{save_ovika, load_ovika, OvikaExtras}; use std::path::Path; // 保存: 内部モデル+任意エントリ(各バイト列は呼び出し側が事前に // rmp_serde::to_vec_named で直列化したもの。io 層は中身を解釈しない)→ .ovika save_ovika(Path::new("model.ovika"), &model, OvikaExtras { preparation: Some(&preparation_bytes), results: Some(&results_bytes), analysis_settings: Some(&analysis_settings_bytes), })?; // 読込: .ovika → 内部モデル+同梱されていれば各任意エントリ let contents = load_ovika(Path::new("model.ovika"))?; let model = contents.model; }
RC壁の参考骨格は同じ静的case/comboの壁脚共通face内力を使い、初期Quは同じrunの静的一次参照から正負別に固定する契約を含みます。建物共通の荒川min/mean方式と新規既定mean、両consumerと同じrunの採用Quへの方式反映を含みます。採用Quのない旧結果や旧計算契約の結果を補完せず、再計算を要します。
矩形RC梁の左右床板の実厚による曲げ剛性と、未解決・適用範囲外を停止する条件を解析契約に含めます。 解析契約版52以前の保存成果は現行契約で再解析が必要です。モデル入力の保存スキーマは変更しません。