コンテンツにスキップ

ScideamPy API Reference

AnalysisCondition Objects

class AnalysisCondition()

ソルバーの各種設定値.

Converter.analysis_condition() で取得します. 値の変更は Converter.set_analysis_condition() を使用してください.

Notes:

返される AnalysisCondition はエンジン内部の設定への参照を保持しています. Converter.set_analysis_condition() で値を変更すると, 既存の AnalysisCondition インスタンスのプロパティ値も変化します.

Example:

condition = conv.analysis_condition()
print(f"Crss (FET) = {condition.fet_crss}")
print(f"Cres (IGBT) = {condition.igbt_cres}")

divta

@property
def divta() -> int

過渡解析における1スイッチング周期あたりのサブ分割数.

divtmdl

@property
def divtmdl() -> int

モデル出力のサブ分割数.

divtprf

@property
def divtprf() -> int

プロファイル出力のサブ分割数.

divtw

@property
def divtw() -> int

波形解析における1スイッチング周期あたりのサブ分割数.

fast_tail

@property
def fast_tail() -> bool

IGBT のテール電流詳細解析モード に設定されている場合に True.

  • False (Mode1, デフォルト): テールパラメータから解析的に損失を計算する高速モードです. 波形解析を行わないため高速かつ十分な精度ですが, Mode2よりやや精度が低めです.
  • True (Mode2): テール電流が開始時の10%に達するまで詳細な波形解析を行い損失を計算します. テール期間が長いため解析時間は増加しますが, より高精度です.

fctta

@property
def fctta() -> int

過渡解析の固定タイムステップ数(0 = 自動).

fet_crss

@property
def fet_crss() -> bool

FET の帰還容量 Crss が有効な場合に True.

igbt_cres

@property
def igbt_cres() -> bool

IGBT の帰還容量 Cres が有効な場合に True.

AnalysisInfo Objects

class AnalysisInfo()

1サイクル終了時の解析状態.

Converter.analysis_info() の戻り値, および 過渡解析・波形解析の on_end_cycle コールバックの引数として渡されます.

Example:

info = conv.analysis_info()
print(f"time={info.time}  完了サイクル={info.cycle}")

on_end_cycle コールバックでサイクルごとの進捗を確認する例:

def on_cycle(info: AnalysisInfo) -> None:
    progress = info.time / info.end_time * 100
    print(f"進捗: {progress:.1f}%")

conv.transient_analysis(10e-3, on_end_cycle=on_cycle)

convergence_rate

@property
def convergence_rate() -> int

ソルバーの収束率(0〜100).

cycle

@property
def cycle() -> int

完了したメインサイクル数.

end_time

@property
def end_time() -> float

今回の解析呼び出しで指定した終了時刻(秒).

state

@property
def state() -> int

メインサイクルあたりの発生回路状態数.

time

@property
def time() -> float

現在の解析時刻(秒).

total_state

@property
def total_state() -> int

解析中に出現した状態の総数.

total_time

@property
def total_time() -> float

シミュレーション開始からの累積時刻(秒).

Converter Objects

class Converter()

回路シミュレーションエンジンへのメインインタフェース.

注意:

  • クラスメソッド(静的メソッド)はエンジン全体で共有される初期化処理を担います.
  • Converter クラスはスレッドセーフではありません.
  • Python 3.13 以降で GIL を無効化したマルチスレッド処理はサポートされていません.
  • 非 ASCII 文字を含むファイルパスはサポートされていません.

with 文で使うと, 終了時にリソースが確実に解放されるので, 以下の使い方を推奨します.

Converter.initialize()
with Converter() as conv:
    conv.read_configuration("circuit.cvt2")
    conv.transient_analysis(10e-3)

add_output

def add_output(symbol: str,
               type: OutputType,
               mode: OutputMode = OutputMode.AVERAGE) -> None

解析中に記録する出力変数を追加.

Arguments:

  • symbol - 監視する素子またはノードのグローバルシンボル.
  • type - 信号種別(OutputType 参照).
  • mode - サンプリングモード(OutputMode 参照). デフォルトは OutputMode.AVERAGE.

Raises:

  • RuntimeError - 出力変数の登録に失敗した場合.

Example:

from scideampy import OutputType, OutputMode

conv.add_output("R", OutputType.VOLTAGE)
conv.add_output("R", OutputType.CURRENT, OutputMode.MINIMUM)
conv.add_output("L1", OutputType.FLUX_DENSITY)

analysis_condition

def analysis_condition() -> AnalysisCondition

現在のソルバー設定.

Returns:

現在の設定を反映した AnalysisCondition. 値の変更は set_analysis_condition() を使用してください.

Example:

condition = conv.analysis_condition()
print(f"Crss (FET) = {condition.fet_crss}")
print(f"Cres (IGBT) = {condition.igbt_cres}")

analysis_info

def analysis_info() -> AnalysisInfo

最新の解析状態スナップショット.

Returns:

直近のシミュレーションステップを反映した AnalysisInfo.

Example:

conv.transient_analysis(10e-3)
info = conv.analysis_info()
print(f"時刻: {info.time:.6f}s  サイクル: {info.cycle}")

clear_output

def clear_output() -> None

登録されているすべての出力変数を削除.

Example:

conv.clear_output()

clear_parameter

def clear_parameter() -> None

すべての素子パラメーターをデフォルト値(電流・電圧の初期値を 0)にリセット.

Example:

conv.clear_parameter()

clear_part

def clear_part() -> None

回路からすべての素子を削除.

continue_analysis

def continue_analysis() -> None

中断された解析を最後のチェックポイントから再開.

Example:

conv.transient_analysis(10e-3)
conv.continue_analysis()
conv.transient_analysis(10e-3)  # 続きから解析

delete_invalid_output

def delete_invalid_output() -> None

有効な信号に対応していない出力変数の登録を削除.

disable_error_handler

@staticmethod
def disable_error_handler() -> None

エラーハンドラーを無効化.

enable_error_handler

@staticmethod
def enable_error_handler() -> None

エラーハンドラーを有効化.

有効化後は, シミュレーションエラーが with_error_handler() で登録した Python コールバックへ ルーティングされるようになります.

Notes:

with_error_handler() を使用する場合は自動で有効化されるため, 通常は明示的に呼び出す必要はありません.

Example:

Converter.enable_error_handler()

export_device_parameter

def export_device_parameter(symbol: str,
                            filename: str | os.PathLike[str]) -> str

素子のデバイスパラメータをファイルにエクスポート.

Arguments:

  • symbol - 素子のグローバルシンボル.
  • filename - 保存先のファイルパス(.prm など).

Returns:

パラメータの設定値.

Raises:

  • RuntimeError - シンボルが見つからない場合.

Example:

conv.export_device_parameter("QM", "QM_backup.prm")

fra

def fra(vas: str, from_signature: str, to_signature: str,
        options: FraOptions) -> tuple[list[float], list[float], list[float]]

周波数特性解析(FRA)の実行.

vas に AC 加振を注入し, FraOptions.fmin から FraOptions.fmax まで周波数をスイープして, from_signature から to_signature への伝達関数を測定します.

Arguments:

  • vas - AC 加振に使用する電圧源のシンボル.
  • from_signature - 入力側の出力変数シグネチャ(例: "OUT:V:AVE").
  • to_signature - 出力側の出力変数シグネチャ(例: "R:V:AVE").
  • options - 周波数スイープのパラメーター(FraOptions 参照).

Returns:

(frequencies, gains, phases) のタプル. それぞれ各周波数点の値を格納したリストです. gains は dB, phases は度(°)で表されます.

Raises:

  • ValueError - fmin, fmax, vac が不正な値の場合.

Example:

from scideampy import FraOptions

options = FraOptions(fmax=50e3, vac=0.002)
freq, gain, phase = conv.fra("VAS", "OUT:V:AVE", "R:V:AVE", options)

frequency

def frequency() -> float

現在のメイン周波数(Hz).

Returns:

メイン周波数(Hz).

Example:

fs = conv.frequency()
print(f"メイン周波数: {fs:.0f} Hz")

get_library_info

@staticmethod
def get_library_info() -> tuple[str, str]

現在設定されているモデルライブラリのパスと拡張子.

Returns:

(ディレクトリパス, 拡張子) のタプル.

Example:

path, ext = Converter.get_library_info()
print(f"ライブラリパス: {path}  拡張子: {ext}")

get_times

def get_times() -> list[float]

現在の出力バッファの時刻軸データ.

Returns:

記録された各サンプルの時刻(秒)のリスト.

Example:

conv.transient_analysis(10e-3)
time = conv.get_times()

import_device_parameter

def import_device_parameter(symbol: str,
                            filename: str | os.PathLike[str]) -> str

素子のデバイスパラメータをファイルからインポート.

FET などのパラメーターファイル(.prm)の読み込みに使用します. パラメーターファイルは Scideam のインストールディレクトリ内の C:/Program Files/Scideam/DeviceParameters フォルダに同梱されています.

Arguments:

  • symbol - 素子のグローバルシンボル.
  • filename - インポートするファイルのパス(.prm など).

Returns:

パラメータの設定値.

Raises:

  • RuntimeError - シンボルが見つからない, またはファイルの読み込みに失敗した場合.

Example:

conv.import_device_parameter("QM", "C:/Program Files/Scideam/DeviceParameters/FET/BSC009NE2LS.prm")

initialize

@staticmethod
def initialize(directory: str | None = None,
               ext: str | None = None,
               license_type: LicenseType = LicenseType.NODELOCK) -> None

シミュレーションエンジンを初期化.

Converter インスタンスを生成する前に必ず一度だけ呼び出してください. 指定したライセンス種別のネイティブライブラリを読み込み, モデルライブラリのパスを設定します.

Arguments:

  • directory - モデルライブラリディレクトリのパス. 省略時はパッケージ内の mdllib フォルダを使用します.
  • ext - モデルライブラリファイルの拡張子(例: "cvt2"). 省略時は "cvt2".
  • license_type - 使用するライセンス種別 (NODELOCK または FLOATING). デフォルトは NODELOCK.

Example:

from scideampy import Converter, LicenseType

# ノードロックライセンス(デフォルト)
Converter.initialize()

# フローティングライセンス
Converter.initialize(license_type=LicenseType.FLOATING)

is_ready_for_steady_state

def is_ready_for_steady_state() -> bool

回路が Steady State 解析に対応しているか確認.

Returns:

steady_state_analysis() を呼び出せる場合に True.

Example:

if conv.is_ready_for_steady_state():
    conv.steady_state_analysis()
else:
    conv.transient_analysis(10e-3)

output_average

def output_average(symbol: str,
                   type: OutputType,
                   mode: OutputMode = OutputMode.AVERAGE) -> float

出力変数の全記録範囲の平均値.

Arguments:

  • symbol - 素子またはノードのグローバルシンボル.
  • type - 信号種別(OutputType 参照).
  • mode - サンプリングモード(OutputMode 参照).

Returns:

全記録範囲の平均値.

Example:

avg = conv.output_average("OUT1.V", OutputType.VOLTAGE)
print(f"平均電圧: {avg:.3f} V")

output_count

def output_count() -> int

現在登録されている出力変数の数.

Returns:

登録済み出力変数数.

output_data

def output_data(symbol_or_index: int | str,
                type: OutputType | None = None,
                mode: OutputMode = OutputMode.AVERAGE) -> list[float] | None

記録された出力変数のデータ.

呼び出し方は 2 通りあります:

  • output_data(index: int) — 登録順インデックスで取得.
  • output_data(symbol: str, type: OutputType, mode: OutputMode) — シンボル・種別・モードで取得.

Returns:

各タイムステップでのサンプル値のリスト. 条件に一致する出力変数が存在しない場合は None.

Example:

conv.transient_analysis(10e-3)

# インデックスで取得
data = conv.output_data(0)

# シンボルで取得
voltage = conv.output_data("R", OutputType.VOLTAGE)
current = conv.output_data("R", OutputType.CURRENT, OutputMode.PEAK)

# 存在しない出力変数は None を返します
empty = conv.output_data("C", OutputType.CURRENT)  # -> None

output_integral

def output_integral(symbol: str,
                    type: OutputType,
                    mode: OutputMode = OutputMode.AVERAGE) -> float

出力変数の全記録範囲の積分値.

Arguments:

  • symbol - 素子またはノードのグローバルシンボル.
  • type - 信号種別(OutputType 参照).
  • mode - サンプリングモード(OutputMode 参照).

Returns:

積分値(波形の面積).

output_rms

def output_rms(symbol: str,
               type: OutputType,
               mode: OutputMode = OutputMode.AVERAGE) -> float

出力変数の全記録範囲の実効値(RMS).

Arguments:

  • symbol - 素子またはノードのグローバルシンボル.
  • type - 信号種別(OutputType 参照).
  • mode - サンプリングモード(OutputMode 参照).

Returns:

全記録範囲の RMS 値.

Example:

rms = conv.output_rms("OUT1.V", OutputType.VOLTAGE)
print(f"実効電圧: {rms:.3f} V")

output_signature

def output_signature(index: int) -> str

インデックスで指定した出力変数のシグネチャ文字列.

Arguments:

  • index - 出力変数インデックス(0始まり).

Returns:

  • シグネチャ文字列(例 - "V1:V:AVE").

output_signatures

def output_signatures() -> list[str]

全登録出力変数のシグネチャ文字列のリスト.

シグネチャはシンボル・種別・モードをエンコードした文字列です (例: "V1:V:AVE").

Returns:

シグネチャ文字列のリスト.

Example:

states = conv.steady_state_analysis()
for signature, value in zip(conv.output_signatures(), states):
    print(f"{signature} = {value}")

parameter

def parameter(symbol: str, name: str) -> Any

素子パラメーターの値を取得.

Arguments:

  • symbol - 素子のグローバルシンボル(例: "R").
  • name - パラメーター名(例: "Value").

Returns:

パラメーターの値. シンボルまたはパラメーター名が不正な場合は None.

Example:

value = conv.parameter("R", "Value")
print(f"Value = {value}")

# 存在しないシンボルは None を返します
val = conv.parameter("", "")  # -> None

part_count

def part_count() -> int

読み込まれた回路の素子数.

Returns:

素子数

Example:

count = conv.part_count()
print(f"素子数: {count}")

power_analysis

def power_analysis(
    mode: PowerAnalysisMode = PowerAnalysisMode.DETAIL,
    base_sw: str = "*CVT",
    storage_rate_tolerance: float = 1,
    frequency: float = 0,
    sample: int = 0,
    min_cycle: int = 1,
    max_cycle: int = 1000,
    on_set_quit_status: Callable[[], bool] | None = None,
    on_end_cycle: Callable[[PowerAnalysisInfo], None] | None = None
) -> tuple[PowerAnalysisInfo, LossNode]

損失解析の実行.

事前に transient_analysis() または steady_state_analysis() で 回路を定常状態にしてから,update_parameter() を呼び出した後に このメソッドを実行してください.

Arguments:

  • mode - スイッチ損失モデル(PowerAnalysisMode 参照). デフォルトは PowerAnalysisMode.DETAIL.
  • base_sw - 基準スイッチング素子のシンボルパターン. デフォルトは "*CVT".
  • storage_rate_tolerance - エネルギー蓄積率の収束許容値(0.0〜1.0). デフォルトは 1(制約なし).
  • frequency - 小信号損失解析用 AC 加振周波数(Hz). 0(デフォルト)は DC 解析.
  • sample - サイクルあたりの追加サンプル数.0(デフォルト)は自動.
  • min_cycle - 最小解析サイクル数.1 以上を指定.
  • max_cycle - 最大解析サイクル数.2 以上かつ min_cycle より大きい値を指定.
  • on_set_quit_status - 解析中に定期的に呼び出されるコールバック(省略可). True を返すと解析を中断します.
  • on_end_cycle - 各サイクル終了時に呼び出されるコールバック(省略可). PowerAnalysisInfo インスタンスを受け取ります.

Returns:

(info, loss) のタプル.

  • infoPowerAnalysisInfo で最終的な解析状態を示します.
  • loss は損失の階層構造を表す LossNode です. 各ノードのフィールドは LossNode を参照してください. Loss クラスのヘルパーメソッドで値を取得できます.

Raises:

  • ValueError - 引数が有効な範囲外の場合.

Example:

from scideampy import Converter, Loss, PowerAnalysisMode

with Converter() as conv:
    conv.read_configuration("circuit.cvt2")
    conv.transient_analysis(10e-3)
    conv.update_parameter()

    info, loss = conv.power_analysis()
    print(f"SR={info.storage_rate}  完了サイクル={info.base_cycle}")

    # 特定素子の損失を取得
    power, rate, _ = Loss.select(loss, "R")
    print(f"Loss = {power:.1f}W ({rate:.1%})")

    # 理想素子モードで実行
    info, loss = conv.power_analysis(mode=PowerAnalysisMode.IDEAL)

    # 収束状態の確認
    print(f"SR={info.storage_rate:.4f}")

    # on_end_cycle でサイクルごとの進捗を表示
    def on_cycle(info: PowerAnalysisInfo) -> None:
        print(f"cycle={info.base_cycle}  SR={info.storage_rate:.4f}")

    info, loss = conv.power_analysis(on_end_cycle=on_cycle)

    # タイムアウトで中断する例
    from scideampy import timeout_quit

    info, loss = conv.power_analysis(on_set_quit_status=timeout_quit(0.1))

read_configuration

def read_configuration(filename: str | os.PathLike[str],
                       replace_linefeed: bool = True) -> None

回路設定ファイル(.cvt2)の読み込み.

Arguments:

  • filename - .cvt2 回路ファイルのパス.
  • replace_linefeed - True(デフォルト)の場合, 改行コードを プラットフォームの標準形式へ変換するため, 読み込み前に一時ファイルへコピーします. デフォルトのまま使用することを推奨します.

Raises:

  • RuntimeError - 回路ファイルの読み込みまたは回路の構築に失敗した場合.

Example:

conv.read_configuration("circuit.cvt2")

remove_output

def remove_output(symbol: str, type: OutputType, mode: OutputMode) -> None

登録済みの出力変数を削除.

Arguments:

  • symbol - 素子またはノードのグローバルシンボル.
  • type - 信号種別(OutputType 参照).
  • mode - サンプリングモード(OutputMode 参照).

Raises:

  • RuntimeError - 指定した出力変数が見つからない場合.

Example:

conv.remove_output("R", OutputType.CURRENT, OutputMode.MINIMUM)

save_configuration

def save_configuration(filename: str | os.PathLike[str]) -> None

現在の回路設定を .cvt2 ファイルへ保存.

Arguments:

  • filename - 保存先ファイルパス. 保存先ディレクトリは事前に存在している必要があります.

Raises:

  • RuntimeError - ファイルの保存に失敗した場合.

Example:

conv.set_parameter("R", "Value", 15)
conv.save_configuration("edited_circuit.cvt2")

save_output_data

def save_output_data(filename: str | os.PathLike[str]) -> None

全登録出力変数のデータをスコープデータファイルへ保存.

ファイルには信号統計情報のヘッダーと各出力変数の波形データが含まれます.

Arguments:

  • filename - 保存先ファイルパス.

Raises:

  • RuntimeError - ファイルの書き込みに失敗した場合.

Example:

conv.transient_analysis(10e-3)
conv.save_output_data("result")

set_analysis_condition

def set_analysis_condition(divta: int | None = None,
                           divtw: int | None = None,
                           fctta: int | None = None,
                           divtprf: int | None = None,
                           divtmdl: int | None = None,
                           fet_crss: bool | None = None,
                           igbt_cres: bool | None = None,
                           fast_tail: bool | None = None) -> None

ソルバーの設定を変更.

指定した引数のみが変更されます. 省略した引数は現在の値を維持します.

Arguments:

  • divta - 過渡解析の1周期あたりサブ分割数.
  • divtw - 波形解析の1周期あたりサブ分割数.
  • fctta - 過渡解析の固定タイムステップ数(0 = 自動).
  • divtprf - プロファイル出力のサブ分割数.
  • divtmdl - モデル出力のサブ分割数.
  • fet_crss - FET の帰還容量 Crss を有効化するか.
  • igbt_cres - IGBT の帰還容量 Cres を有効化するか.
  • fast_tail - IGBT のテール電流解析モードの設定.

fast_tail のモード:

  • False (Mode1, デフォルト) はパラメータから解析的に損失を高速計算
  • True (Mode2) は詳細波形解析から損失を計算し高精度だが低速

Example:

# FET/IGBT の帰還容量を有効化
conv.set_analysis_condition(fet_crss=True, igbt_cres=True)
# 無効化
conv.set_analysis_condition(fet_crss=False, igbt_cres=False)

set_frequency

def set_frequency(value: float) -> None

メイン周波数を設定.

Arguments:

  • value - 設定するメイン周波数(Hz).

Raises:

  • ValueError - value が 0 以下の場合.

Example:

conv.set_frequency(150e3)  # 150kHz に変更

set_library_info

@staticmethod
def set_library_info(directory: str | None = None,
                     ext: str | None = None) -> None

エンジンが使用するモデルライブラリのパスを設定.

Arguments:

  • directory - モデルライブラリディレクトリのパス. 省略時はパッケージ内の mdllib フォルダを使用します.
  • ext - モデルライブラリファイルの拡張子 省略時は "cvt2"

Example:

Converter.set_library_info()  # デフォルトパスを使用
Converter.set_library_info("/path/to/mdllib", "cvt2")

set_parameter

def set_parameter(symbol: str, name: str, value: float) -> None

素子パラメーターの値を変更.

変更はいずれかの解析を実行することで回路へ反映されます.

Arguments:

  • symbol - 素子のグローバルシンボル.
  • name - パラメーター名.
  • value - 設定する値.

Raises:

  • RuntimeError - シンボルまたはパラメーター名が見つからない場合.

Example:

# 抵抗器(シンボルR)の値を 15Ω に変更
conv.set_parameter("R", "Value", 15)

state_sequence

def state_sequence() -> StateSeq

直近の解析で記録されたスイッチング状態シーケンス.

Returns:

各回路状態の情報を持つ StateSeq インスタンス.

steady_state_analysis

def steady_state_analysis(
        on_set_quit_status: Callable[[], bool] | None = None) -> list[float]

Steady 解析を実行し, 回路を定常状態へ移行.

Notes:

この解析は内部でパラメーターが自動的に更新されるため, 解析後に update_parameter() を呼び出さなくても動作します.

Arguments:

  • on_set_quit_status - 解析中に定期的に呼び出されるコールバック(省略可). True を返すと解析を中断します.

Returns:

各出力変数の定常値のリスト. 要素の順序は出力変数の定義順と同一です.

Example:

states = conv.steady_state_analysis()
for signature, value in zip(conv.output_signatures(), states):
    print(f"{signature} = {value}")

# タイムアウトで中断する例
from scideampy import timeout_quit

states = conv.steady_state_analysis(on_set_quit_status=timeout_quit(0.1))

time

def time() -> float

現在のシミュレーション時刻(秒).

Returns:

シミュレーション時刻(秒).

transient_analysis

def transient_analysis(
        time: float,
        on_set_quit_status: Callable[[], bool] | None = None,
        on_end_cycle: Callable[[AnalysisInfo], None] | None = None) -> None

過渡解析の実行.

現在の時刻から time 秒間, 過渡解析ソルバーで解析します. 出力データは蓄積され, 解析後に output_data() で取得できます.

Arguments:

  • time - 解析時間(秒).
  • on_set_quit_status - 解析中に定期的に呼び出されるコールバック(省略可). True を返すと解析を中断します.
  • on_end_cycle - 各スイッチングサイクル終了時に呼び出されるコールバック(省略可). AnalysisInfo インスタンスを受け取ります.

Raises:

  • ValueError - time が 0 以下の場合.

Example:

from scideampy import Converter, OutputType

with Converter() as conv:
    conv.read_configuration("circuit.cvt2")
    conv.transient_analysis(10e-3)  # 10ms の解析

    time = conv.get_times()
    voltage = conv.output_data("R", OutputType.VOLTAGE)

# サイクルごとに進捗を表示する例
def on_cycle(info: AnalysisInfo) -> None:
    print(f"t={info.time:.3e}s  cycle={info.cycle}")

conv.transient_analysis(10e-3, on_end_cycle=on_cycle)

# タイムアウトで中断する例
from scideampy import timeout_quit

conv.transient_analysis(10e-3, on_set_quit_status=timeout_quit(0.1))

update_parameter

def update_parameter() -> None

直前の解析結果をエンジンへ反映.

解析(transient_analysis(), waveform_analysis() など)を 実行すると, 回路の電圧・電流などの状態がメモリ上に保持されます. このメソッドを呼び出すことで, その状態をエンジン内部のパラメーターへ 書き戻し, 次の解析が前回の終了時点から継続して実行されるようになります.

典型的には, 過渡解析で回路を定常状態まで持っていった後に update_parameter() を呼び出し, その続きから損失解析や 波形解析などの別の解析を開始する, という流れで使用します.

Example:

conv.transient_analysis(10e-3)
conv.update_parameter()  # 解析結果をエンジンへ反映
info, loss = conv.power_analysis()  # 定常状態から損失解析を開始

# 過渡解析の続きから波形解析を行う例
conv.transient_analysis(10e-3)
conv.update_parameter()
conv.waveform_analysis(1e-3)  # 過渡解析終了時点から継続

waveform_analysis

def waveform_analysis(
        time: float,
        for_detail_switch: bool = False,
        on_set_quit_status: Callable[[], bool] | None = None,
        on_end_cycle: Callable[[AnalysisInfo], None] | None = None) -> None

波形解析の実行.

time 秒間, 波形解析ソルバーで解析します.

Arguments:

  • time - 解析時間(秒).
  • for_detail_switch - True の場合, 詳細スイッチモデルを使った解析を実施します.
  • on_set_quit_status - 解析中に定期的に呼び出されるコールバック(省略可). True を返すと解析を中断します.
  • on_end_cycle - 各スイッチングサイクル終了時に呼び出されるコールバック(省略可). AnalysisInfo インスタンスを受け取ります.

Raises:

  • ValueError - time が 0 以下の場合.

Example:

conv.waveform_analysis(1e-3)  # 1ms の波形解析

# 詳細スイッチを有効にした波形解析
conv.waveform_analysis(1e-3, for_detail_switch=True)

# サイクルごとに進捗を表示する例
def on_cycle(info: AnalysisInfo) -> None:
    print(f"t={info.time:.3e}s  cycle={info.cycle}")

conv.waveform_analysis(1e-3, on_end_cycle=on_cycle)

# タイムアウトで中断する例
from scideampy import timeout_quit

conv.waveform_analysis(1e-3, on_set_quit_status=timeout_quit(0.1))

with_error_handler

@contextmanager
def with_error_handler(
        on_error: Callable[[Error], None]) -> Iterator[Converter]

エラーハンドラーを with ブロックの間だけ有効にするコンテキストマネージャー.

ブロックを抜けると(例外発生時も含め)ハンドラーが自動解除されます.

Arguments:

  • on_error - エラー発生時に呼び出されるコールバック.

Yields:

この Converter インスタンス自身.

Example:

from scideampy import Converter, Error, LicenseType

Converter.initialize(license_type=LicenseType.FLOATING)

def on_error(err: Error) -> None:
    print(err.name)
    print(err.message)

with Converter() as conv, conv.with_error_handler(on_error):
    conv.transient_analysis(10e-3)

Error Objects

class Error()

シミュレーションエラーの情報を保持するクラス.

インスタンスはエンジン内部で生成され, Converter.with_error_handler() で登録したコールバックへ渡されます.

Example:

from scideampy import Converter, Error, LicenseType

Converter.initialize(license_type=LicenseType.FLOATING)

def on_error(err: Error) -> None:
    print(err.name)
    print(err.message)

with Converter() as conv, conv.with_error_handler(on_error):
    conv.read_configuration("circuit.cvt2")
    conv.transient_analysis(10e-3)

id

@property
def id() -> ErrorId

エラー種別識別子(ErrorId 参照).

message

@property
def message() -> str

エラーの詳細説明.

name

@property
def name() -> str

短いエラータグ(例: "PARAMETER", "TOPOLOGY_ILCC").

ErrorId Objects

class ErrorId(IntEnum)

エラーコールバックで通知されるエラーの種別を示す列挙型.

Attributes:

  • ERR_NOERROR - エラーなし
  • PRT_PARAMETER - パラメータエラー(Parts)
  • PRT_READINESS - 素子準備エラー(Parts)
  • PRT_CLONE - クローン未定義エラー(Parts)
  • PRG_EXPRESSION - プログラム文法エラー(プログラム素子)
  • PRG_DELIMITER - プログラム読み込みデリミタエラー(プログラム素子)
  • FRA_SLOW_OUTPUT - FRA出力エラー(SlowFRA)
  • CTM_DATAFILE - カスタム回路ファイルエラー(Custom)
  • DSP_DATAFILE - DSP回路ファイルエラー(DSP)
  • DSP_CONNECTION - DSPブロック結線エラー(DSP)
  • TBL_DATAFILE - テーブル素子データファイルエラー
  • SBK_DATAFILE - システムブロック回路ファイルエラー(SysBlock)
  • MTR_RTTFILE - モータJMAG-RTTファイルエラー(PSMJM)
  • DLC_OPEN_MODULE - DLCモジュールオープンエラー
  • DLC_USER_ERROR - DLCユーザーエラー
  • DLC_RUNTIME - DLC実行時エラー
  • CIR_TOPOLOGY - トポロジーエラー(Circuit)
  • CIR_REDUCED_MATRIX - 縮約行列エラー(Circuit)
  • CVT_REBUILD_INANL - 解析時再構築エラー(Converter)
  • CVT_STATE_OVER - 状態オーバーエラー(Converter)
  • CVT_STATE_TIME - 状態時間エラー(Converter)
  • MAT_RANK - ランク計算エラー(DMat)
  • MAT_EIGEN_VALUE - 固有値計算エラー(DMat)

Example:

from scideampy import Converter, Error, ErrorId

def on_error(err: Error) -> None:
    if err.id == ErrorId.CVT_STATE_OVER:
        print("状態数エラー:", err.message)

with conv.with_error_handler(on_error):
    conv.transient_analysis(10e-3)

FraOptions Objects

@dataclass
class FraOptions()

周波数特性解析(FRA)の設定オプション.

Converter.fra() に渡してスイープ条件を指定します.

Attributes:

  • fmin - スイープ開始周波数(Hz). デフォルトは 10.
  • fmax - スイープ終了周波数(Hz). デフォルトは 100e3(100kHz).
  • vac - AC 加振振幅(V). デフォルトは 10e-3(10mV).
  • phase_fold - True(デフォルト)の場合, 位相を [-180°, 180°] に折り畳みます.

Example:

from scideampy import FraOptions

options = FraOptions()                 # デフォルト設定
options = FraOptions(fmax=50e3)        # 上限を 50kHz に指定
options = FraOptions(vac=0.002)        # 加振電圧を 2mV に指定
options.vac = 0.001                    # 属性を直接変更可能

fmax

スイープ終了周波数(Hz).

fmin

スイープ開始周波数(Hz).

phase_fold

True の場合に位相レスポンスを [-180°, 180°] へ折り畳むフラグ.

vac

AC 加振振幅(V).

Loss Objects

class Loss()

損失データを参照するためのユーティリティクラス.

Converter.power_analysis() が返す損失データから, 素子ごとの 電力や割合を取得する静的メソッドを提供します.

Example:

info, loss = conv.power_analysis()

# 特定素子の損失を取得
power, rate, _ = Loss.select(loss, "R")
print(f"Loss = {power:.1f}W ({rate:.1%})")

# 複数素子の合計損失を取得
power, rate = Loss.select(loss, ["QM1", "QM2", "QM3", "QM4"])
print(f"FET Loss = {power:.1f}W ({rate:.1%})")

part_symbols

@staticmethod
def part_symbols(loss: LossNode) -> list[str]

損失データのトップレベルにある素子のグローバルシンボルリスト.

Arguments:

  • loss - Converter.power_analysis() が返した損失データ.

Returns:

直接の子ノードのグローバルシンボル文字列のリスト.

select

@staticmethod
def select(
        loss: LossNode, path: str | list[str]
) -> tuple[float, float, float] | tuple[float, float]

1 つまたは複数の素子パスの損失データを取得.

Arguments:

  • loss - Converter.power_analysis() が返した損失データ.
  • path - ドット区切りのパス文字列(例: "Q1.Cond"), または パス文字列のリスト. リストを指定した場合は電力と割合が合算されます.

Returns:

path が文字列の場合: (power, g_rate, l_rate) タプル.

  • power: 素子の損失電力 (W).
  • g_rate: 回路全体の総損失に対する割合.
  • l_rate: 親コンテナの損失に対する割合.

path がリストの場合: (total_power, total_g_rate) タプル (l_rateは対象外).

Example:

# 単一素子
power, rate, _ = Loss.select(loss, "R")
print(f"Loss = {power:.1f}W ({rate:.1%})")

# 複数素子の合計
power, rate = Loss.select(loss, ["QM1", "QM2", "QM3", "QM4"])
print(f"FET Loss = {power:.1f}W ({rate:.1%})")

LossNode Objects

class LossNode(_LossNodeRequired)

損失データの各ノードを表す型.

Converter.power_analysis() の戻り値として返される損失階層構造の各ノードです.

Attributes:

  • GlobalSymbol - 素子のグローバルシンボル(ルートノードでは空文字列).
  • LocalSymbol - 素子のローカルシンボル.
  • SSym - サブシンボル(例: "Cond", "Sw").
  • Power - 損失電力 (W).
  • GRate - 回路全体の総損失に対する割合(0.0〜1.0).
  • LRate - 親ノードの損失に対する割合(0.0〜1.0).
  • Children - 子ノードのリスト. リーフノードには存在しない場合があります.

NodeLockKey Objects

class NodeLockKey()

ノードロックライセンスキーの管理を行うコンテキストマネージャ.

with文で使用し, ブロック開始時にライセンスキープロセスを起動し, ブロック終了時に終了します.

Example:

from scideampy import Converter, NodeLockKey, LicenseType

with NodeLockKey():
    Converter.initialize(license_type=LicenseType.NODELOCK)
    with Converter() as conv:
        conv.read_configuration("example.cvt2")

OutputMode Objects

class OutputMode(IntEnum)

出力変数のサンプリングモードを指定する列挙型.

Attributes:

  • ANY - 任意のモード
  • PEAK - 各サイクルの絶対値ピーク
  • MINIMUM - 各サイクルの最小値
  • MAXIMUM - 各サイクルの最大値
  • INITIAL - 各サイクルの開始値
  • FINAL - 各サイクルの終了値
  • AVERAGE - 各サイクルの平均値(デフォルト)

Example:

from scideampy import OutputType, OutputMode
conv.add_output("R", OutputType.CURRENT, OutputMode.MINIMUM)

OutputType Objects

class OutputType(IntEnum)

出力変数の信号種別を指定する列挙型.

Attributes:

  • ANY - 任意の種別
  • VOLTAGE - 電圧信号
  • CURRENT - 電流信号
  • POWER - 電力信号
  • FLUX_DENSITY - 磁束密度信号(インダクタ・相互トランスのみ対応)
  • NOTYPE - 種別なし

Example:

from scideampy import OutputType
conv.add_output("R", OutputType.VOLTAGE)
conv.add_output("L1", OutputType.FLUX_DENSITY)

conv.transient_analysis(10e-3)
voltage = conv.output_data("R", OutputType.VOLTAGE)
flux = conv.output_data("L1", OutputType.FLUX_DENSITY)

ParserError Objects

class ParserError(IntEnum)

プログラム素子の式パーサーが返すエラーコードの列挙型.

Attributes:

  • ERR_NONE - エラーなし
  • ERR_TOKEN - 不明なトークン(パース時)
  • ERR_SYNTAX - 構文エラー(パース時)
  • ERR_PARAM - パラメーターエラー(パース時)
  • ERR_FUNCCALL - 関数呼び出しエラー(パース時)
  • ERR_FILE - ファイル読み込みエラー(パース時)
  • ERR_DELIMITER - デリミタエラー(パース時)
  • ERR_RUN_VALUE - 値エラー(実行時)
  • ERR_RUN_SYNTAX - 構文エラー(実行時)
  • ERR_RUN_PARAM - パラメーターエラー(実行時)
  • ERR_RUN_FILE - ファイル読み込みエラー(実行時)
  • ERR_RUN_PROHIBIT - 禁止パラメーターエラー(実行時)

PowerAnalysisInfo Objects

class PowerAnalysisInfo(AnalysisInfo)

損失解析固有の解析状態.

AnalysisInfo を継承し, 損失解析に固有のフィールドを追加します. Converter.power_analysis() の戻り値, および その on_end_cycle コールバックの引数として渡されます.

Example:

info, loss = conv.power_analysis()
print(f"SR={info.storage_rate}  完了サイクル={info.base_cycle}")

on_end_cycle コールバックでサイクルごとの進捗を確認する例:

def on_cycle(info: PowerAnalysisInfo) -> None:
    print(f"cycle={info.base_cycle}  SR={info.storage_rate:.4f}")

info, loss = conv.power_analysis(on_end_cycle=on_cycle)

base_cycle

@property
def base_cycle() -> int

完了したベースサイクルの回数.

storage_rate

@property
def storage_rate() -> float

エネルギー蓄積率. 定常状態への収束具合(0.0〜1.0).

PowerAnalysisMode Objects

class PowerAnalysisMode(IntEnum)

損失解析のスイッチモデルを指定する列挙型.

Attributes:

  • IDEAL - 理想スイッチモデル. 高速ですが損失精度は低めです.
  • DETAIL - 詳細スイッチモデル. スイッチング損失を考慮した高精度な解析を行います.

Example:

from scideampy import PowerAnalysisMode
info, loss = conv.power_analysis(mode=PowerAnalysisMode.IDEAL)

StateSeq Objects

class StateSeq()

スイッチング状態シーケンス.

各回路状態の順序・時間情報にアクセスできます. Converter.state_sequence() で取得します.

Example:

seq = conv.state_sequence()
for i in range(seq.state_count()):
    print(f"状態 {i}: 時間={seq.state_time(i):.3e}s")

initial_time

def initial_time(i: int) -> float

状態 i が初めて現れた時刻(秒).

Arguments:

  • i - 状態インデックス(0始まり)

Returns:

時刻(秒)

initial_times

def initial_times() -> list[float]

全状態の初期時刻をリスト.

Returns:

時刻(秒)のリスト

scdevice_count

def scdevice_count() -> int

回路内のスイッチング素子数.

Returns:

スイッチング素子数

scdevice_symbol

def scdevice_symbol(j: int) -> str

スイッチング素子 j のシンボル.

Arguments:

  • j - 素子インデックス(0始まり)

Returns:

素子シンボル文字列.

scdevice_symbols

def scdevice_symbols() -> list[str]

全スイッチング素子のシンボルをリスト.

Returns:

素子シンボル文字列のリスト

state

def state(gsym: str | None = None,
          i: int | None = None,
          j: int | None = None) -> int

指定状態におけるスイッチング素子のオン/オフ状態.

呼び出し方は 2 通りあります.

  • state(gsym="Q1", i=0) — シンボルと状態インデックスで指定
  • state(i=0, j=1) — 状態インデックスと素子インデックスで指定

Arguments:

  • gsym - スイッチング素子のグローバルシンボル(省略可)
  • i - 状態インデックス(0始まり)
  • j - 素子インデックス(0始まり).gsym を省略した場合に使用

Returns:

状態値(一般的に 0 = オフ,1 = オン)

Raises:

  • ValueError - 引数の組み合わせが不正な場合

state_count

def state_count() -> int

異なる回路状態の総数.

Returns:

状態数

state_time

def state_time(i: int) -> float

状態 i の継続時間(秒).

Arguments:

  • i - 状態インデックス(0始まり)

Returns:

継続時間(秒)

state_times

def state_times() -> list[float]

全状態の継続時間をリスト.

Returns:

継続時間(秒)のリスト

transition_time

def transition_time(i: int) -> float

状態 i への遷移が発生した時刻(秒).

Arguments:

  • i - 状態インデックス(0始まり)

Returns:

遷移時刻(秒)

transition_times

def transition_times() -> list[float]

全状態への遷移時刻をリスト.

Returns:

遷移時刻(秒)のリスト

timeout_quit

def timeout_quit(timeout: float) -> Callable[[], bool]

指定秒数が経過すると解析を中断するコールバック.

transient_analysis(), waveform_analysis(), power_analysis(), steady_state_analysis()on_set_quit_status 引数に渡して使います.

Arguments:

  • timeout - タイムアウト秒数.

Returns:

経過時間が timeout を超えると True を返すコールバック.

Raises:

  • ValueError - timeout が 0 以下の場合.

Example:

from scideampy import timeout_quit

conv.transient_analysis(10e-3, on_set_quit_status=timeout_quit(0.1))