Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

波形ライブラリ

時刻歴応答解析の入力波形(CSV)を、プロジェクト(.ovika)をまたいで使い回すための置き場です。

実装参照:sepika_io::wave_library::{wave_library_dir, list_wave_library, register_wave, wave_sha256}(crates/sepika-io/src/wave_library.rs)が保管先の解決・一覧・登録・ハッシュ算定を担います。

位置づけ

.ovika にはモデル・解析結果・解析タブの設定値(時刻歴の波形パラメータ・減衰モデル等)を保存しますが、時刻歴の入力波形(CSV)そのものは含めません。波形ライブラリは、OS 標準のユーザーデータディレクトリ配下の専用フォルダに波形 CSV をコピーして保管し、全プロジェクトから共通の置き場として参照します。立体時刻歴と質点系は、同じライブラリから独立した選択を持ちます。

  • ディレクトリ: OS 標準のユーザーデータディレクトリ配下の sepika/waves(Windows は %APPDATA%\sepika\waves、macOS は ~/Library/Application Support/sepika/waves、Linux は ~/.local/share/sepika/waves 相当)。
  • 対応拡張子: .csv / .txt / .dat。

注意(機械ローカル): ライブラリはこのマシンのユーザーデータディレクトリに置かれます。別のマシンで .ovika を開いた場合や、プロジェクトファイルを他者へ渡した場合、そのマシンのライブラリに同名の波形がなければ波形を解決できません。

実装参照:保存先は sepika_io::wave_library::wave_library_dir、一覧は同 list_wave_library(crates/sepika-io/src/wave_library.rs)が持ち、一覧とファイル選択ダイアログは .csv・.txt・.dat の拡張子でフィルタします。

GUI からの操作

波形の登録

ファイルメニューの「🌊 波形を保存…」から、波形 CSV を選んでライブラリへコピーします(この操作では解析は実行しません)。ライブラリに同名の波形が既にある場合は、上書き確認ダイアログを表示します。

実装参照:sepika_app::app::App::{register_wave_to_library_dialog, confirm_register_wave}(crates/sepika-app/src/app/actions/wave_library.rs)が受け付け、コピーは sepika_io::wave_library::register_wave が行います。

波形を選んで実行

工程タブ「解析」を開き、右のアイコン列から「時刻歴応答」パネルを出すと、「波形ライブラリ」のドロップダウンがあります。登録済みの波形ファイル名を一覧表示します(他のプロジェクトで登録したものも同じ一覧に表示されます)。選んで「▶ 選択した波形で実行」を押すと、時刻歴応答解析をジョブ実行します。方向(X/Y/X+Y)・dt の解釈は「📂 波形CSVを開いて実行…」(一回限りのファイル選択)と同じです。

右バー「質点系」にも同じドロップダウンがあります。ここでの選択は立体時刻歴とは独立で、.ovika にも別フィールドとして保存します。質点系パネルから波形 CSV を直接開いて実行する操作はありません。

実装参照:ドロップダウンは sepika_app の解析パネル(crates/sepika-app/src/app/panels/analysis.rs)が表示し、実行は sepika_app::app::App::run_time_history_from_library と App::start_lumped_mass_library_th_job(crates/sepika-app/src/app/actions/)が担います。

実行結果のケースは、選択中の名前ではなく、実際に解析した波形と計算条件に対応します。 実行開始後にライブラリの表示選択を変えても、完了結果の所属先は変わりません。 同名のファイルを上書きして波形の加速度列や時間刻みが変わった場合は、再実行で別ケースになります。 ケースの再実行と表示はナビゲータの解析結果ツリーを参照してください。

入力波形の時間軸

GUI で実行する CSV は 2 点以上が必要です。N 点を時刻 0, dt, …, (N−1)dt の瞬時値として扱い、 立体・質点系とも N−1 区間を積分します。先頭は積分前の初期状態、末端は最後の入力時刻に対応する応答です。 詳細は 入力時刻と初期状態 を参照してください。

.ovika との連携

「▶ 選択した波形で実行」で実行した波形のファイル名と、実行時点のファイル内容の SHA-256 は、解析タブの設定値(analysis_settings.msgpack)に同梱して保存します。プロジェクトを開き直すと、ライブラリに同名のファイルが存在する限り、この選択を自動的に復元します。

  • ライブラリにファイルが見つからない場合(削除された等)は、通知したうえで選択を解除します。
  • ファイルは見つかるが内容(SHA-256)が保存時と異なる場合(ライブラリ側で上書きされた等)は、選択は維持したうえで内容が変わっている旨を通知します。

実装参照:保存は sepika_app::app::App::save_project_to_opts が波形名と SHA-256 を SavedAnalysisSettings に同梱し、復元は App::{restore_wave_library_selection, restore_lumped_wave_library_selection}(crates/sepika-app/src/app/actions/wave_library.rs)が行います。

開発者向け: ライブラリ API(Rust)

Rust コード例(開発者向け)
#![allow(unused)]
fn main() {
use sepika_io::wave_library::{wave_library_dir, list_wave_library, register_wave, wave_sha256};

let dir = wave_library_dir().expect("ユーザーデータディレクトリを特定できません");
let names = list_wave_library(&dir)?;          // 登録済みの波形ファイル名一覧
let name = register_wave(&dir, src_path)?;     // 波形 CSV をライブラリへコピー(同名は上書き)
let hash = wave_sha256(&dir, &name)?;          // 内容の SHA-256(16進小文字)
}