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) のタプル.
infoはPowerAnalysisInfoで最終的な解析状態を示します.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))