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"fast_tail = {condition.fast_tail}")
damped_step_subdiv¶
@property
def damped_step_subdiv() -> int
減衰波形に対する刻み時間の分割数(デフォルト 1, 推奨 1〜100).
値を大きくすると計算精度が向上しますが, 解析時間は長くなります.
fast_tail¶
@property
def fast_tail() -> bool
IGBT のテール電流詳細解析モード に設定されている場合に True.
False(Mode1, デフォルト): テールパラメータから解析的に損失を計算する高速モードです. 波形解析を行わないため高速かつ十分な精度ですが, Mode2よりやや精度が低めです.True(Mode2): テール電流が開始時の10%に達するまで詳細な波形解析を行い損失を計算します. テール期間が長いため解析時間は増加しますが, より高精度です.
fet_lite¶
@property
def fet_lite() -> bool
FET の簡易モデルが有効な場合に True.
True の場合, FET 部品は簡易モデルへ入れ替わって解析されます.
詳細スイッチング解析を有効化する解析メソッドを呼び出すと,
自動的に False に切り替わります.
loss_long_step_subdiv¶
@property
def loss_long_step_subdiv() -> int
詳細損失解析の長いステップ(スイッチング動作以外)時間の分割数(デフォルト 10, 推奨 10〜100).
値を大きくすると計算精度が向上しますが, 解析時間は長くなります.
loss_short_step_subdiv¶
@property
def loss_short_step_subdiv() -> int
詳細損失解析の短いステップ(ターンオン/ターンオフ特性解析)時間の分割数(デフォルト 50, 推奨 50〜5000).
値を大きくすると計算精度が向上しますが, 解析時間は長くなります.
sine_step_subdiv¶
@property
def sine_step_subdiv() -> int
正弦波形に対する刻み時間の分割数(デフォルト 100, 推奨 100〜1000).
値を大きくすると計算精度が向上しますが, 解析時間は長くなります.
step_repetition_factor¶
@property
def step_repetition_factor() -> int
刻み時間の繰り返し時間を制御する倍率(デフォルト 10, 推奨 10〜20).
値を大きくすると計算精度が向上しますが, 解析時間は長くなります.
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
シミュレーション開始からの累積時刻(秒).
AnalysisMode Objects¶
class AnalysisMode(IntEnum)
過渡解析の出力データ密度を指定する列挙型.
Attributes:
FAST- 1 スイッチングサイクルあたり代表点を出力する高速モード.FULL- 1 スイッチングサイクルの全点を出力する詳細モード.
Example:
from scideampy import AnalysisMode
conv.transient_analysis(10e-3, analysis_mode=AnalysisMode.FULL)
Converter Objects¶
class Converter()
回路シミュレーションエンジンへのメインインタフェース.
注意:
- クラスメソッド(静的メソッド)はエンジン全体で共有される初期化処理を担います.
Converterクラスはスレッドセーフではありません.- Python 3.13 以降で GIL を無効化したマルチスレッド処理はサポートされていません.
- ファイルパスには日本語を使用できます. ただし絵文字など, システムの文字コードにない文字は使えません.
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- 出力変数の登録に失敗した場合. 利用可能な (symbol, OutputType) 候補をエラーメッセージに含みます. 全候補が必要な場合はvalid_outputs(symbol)を直接呼んでください.
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"fast_tail = {condition.fast_tail}")
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}")
attribute¶
def attribute(symbol: str) -> str | None
素子の属性シンボルを取得.
属性は素子ごとに定義された文字列シンボルで, 波形モードや動作モード等を表します.
例えば交流電圧源では "DA" (正弦波) / "FW" (全波) / "HW" (半波) の
いずれかが返ります. 利用可能な属性シンボルは素子の種類に依存します.
Arguments:
symbol- 素子のグローバルシンボル(例:"VAC").
Returns:
属性シンボル. 素子が見つからない場合は None.
Notes:
利用可能な属性シンボルは部品ごとに異なります. 各部品の有効なシンボルは Scideam の部品仕様に従います.
Example:
sym = conv.attribute("VAC")
print(f"VAC の属性: {sym}")
carry_over_state¶
def carry_over_state() -> None
直前解析の解析終了時の状態を次解析へ引き継ぐ.
解析(transient_analysis() など)を実行すると, 回路の電圧・電流などの
解析終了時の状態がメモリ上に保持されます.
このメソッドを呼び出すことで, その状態をエンジン内部のパラメーターへ
書き戻し, 次に実行する解析が前回の終了時点から継続して実行されるようになります.
典型的には, 過渡解析で回路を定常状態まで持っていった後に
carry_over_state() を呼び出し, その続きから損失解析や
詳細波形解析などの別の解析を開始する, という流れで使用します.
Example:
conv.transient_analysis(10e-3)
conv.carry_over_state() # 解析終了時の状態を次解析へ引き継ぐ
info, loss = conv.power_analysis() # 定常状態から損失解析を開始
# 過渡解析の続きから詳細解析を行う例
conv.transient_analysis(10e-3)
conv.carry_over_state()
conv.transient_analysis(1e-3, analysis_mode=AnalysisMode.FULL) # 過渡解析終了時点から継続
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
有効な信号に対応していない出力変数の登録を削除.
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 | None = None
) -> tuple[list[float], list[float], list[float]]
周波数特性解析(FRA)の実行.
vas に AC 加振を注入し, FraOptions.fmin から
FraOptions.fmax まで周波数をスイープして,
from_signature から to_signature への伝達関数を測定します.
事前に transient_analysis() または steady_state_analysis() で
回路を定常状態にしてから, このメソッドを実行してください.
transient_analysis() を使った場合は事前に carry_over_state() を
呼び出してください (steady_state_analysis() は内部で状態を引き継ぐため不要).
Arguments:
vas- AC 加振に使用する電圧源のシンボル.from_signature- 入力側の出力変数シグネチャ(例:"OUT:V:AVE").to_signature- 出力側の出力変数シグネチャ(例:"R:V:AVE").options- 周波数スイープのパラメーター(FraOptions参照). 省略時はデフォルト設定のFraOptions()が使われます.
Returns:
(frequencies, gains, phases) のタプル.
それぞれ各周波数点の値を格納したリストです.
gains は dB, phases は度(°)で表されます.
Example:
from scideampy import FraOptions
freq, gain, phase = conv.fra("VAS", "OUT:V:AVE", "R:V:AVE")
options = FraOptions(fmax=50e3, vac=0.002)
freq, gain, phase = conv.fra("VAS", "OUT:V:AVE", "R:V:AVE", options=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}")
part_type¶
def part_type(symbol: str) -> str | None
素子のタイプトークンを取得.
タイプトークンは素子の分類を表す文字列です(例: 抵抗器 "RX",
キャパシタ "CL", 交流電圧源 "SG").
Arguments:
symbol- 素子のグローバルシンボル.
Returns:
タイプトークン. 素子が見つからない場合は None.
Example:
token = conv.part_type("R")
print(f"R のタイプトークン: {token}")
power_analysis¶
def power_analysis(
*,
options: PowerAnalysisOptions | None = None,
on_set_quit_status: Callable[[], bool] | None = None,
on_end_cycle: Callable[[PowerAnalysisInfo], None] | None = None
) -> tuple[PowerAnalysisInfo, LossNode]
損失解析の実行.
事前に transient_analysis() または steady_state_analysis() で
回路を定常状態にしてから, このメソッドを実行してください.
transient_analysis() を使った場合は事前に carry_over_state() を
呼び出してください (steady_state_analysis() は内部で状態を引き継ぐため不要).
Arguments:
options- 解析条件(PowerAnalysisOptions参照). 省略時はデフォルト設定のPowerAnalysisOptions()が使われます.options.switching_modeの値に応じてfet_liteが自動的に切り替わります (SwitchingMode.LITE→True/SwitchingMode.DETAIL→False). 呼び出し前のfet_lite設定は上書きされ, 呼び出し後も新しい値が保持されます.on_set_quit_status- 解析中に定期的に呼び出されるコールバック(省略可).Trueを返すと解析を中断します.on_end_cycle- 各サイクル終了時に呼び出されるコールバック(省略可).PowerAnalysisInfoインスタンスを受け取ります.
Returns:
(info, loss) のタプル.
infoはPowerAnalysisInfoで最終的な解析状態を示します.lossは損失の階層構造を表すLossNodeです. 各ノードのフィールドはLossNodeを参照してください.Lossクラスのヘルパーメソッドで値を取得できます.
Raises:
SimulationError- 解析中にエンジンがエラーを報告し, かつwith_error_handler()で ハンドラを登録していない場合.
Example:
from scideampy import Converter, Loss, PowerAnalysisOptions, SwitchingMode
with Converter() as conv:
conv.read_configuration("circuit.cvt2")
conv.transient_analysis(10e-3)
conv.carry_over_state()
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(
options=PowerAnalysisOptions(switching_mode=SwitchingMode.LITE)
)
# 収束状態の確認
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(damped_step_subdiv: int | None = None,
sine_step_subdiv: int | None = None,
step_repetition_factor: int | None = None,
loss_long_step_subdiv: int | None = None,
loss_short_step_subdiv: int | None = None,
fast_tail: bool | None = None,
fet_lite: bool | None = None) -> None
ソルバーの設定を変更.
指定した引数のみが変更されます. 省略した引数は現在の値を維持します.
Arguments:
damped_step_subdiv- 減衰波形に対する刻み時間の分割数(デフォルト 1, 推奨 1〜100).sine_step_subdiv- 正弦波形に対する刻み時間の分割数(デフォルト 100, 推奨 100〜1000).step_repetition_factor- 刻み時間の繰り返し時間を制御する倍率(デフォルト 10, 推奨 10〜20).loss_long_step_subdiv- 詳細損失解析の長いステップ (スイッチング動作以外)時間の分割数(デフォルト 10, 推奨 10〜100).loss_short_step_subdiv- 詳細損失解析の短いステップ (ターンオン/ターンオフ特性解析)時間の分割数(デフォルト 50, 推奨 50〜5000).fast_tail- IGBT のテール電流解析モードの設定.fet_lite- FET の簡易モデルを有効化するか. 値が変化した場合のみ FET 部品を入れ替えて回路を再構築します. 現在値と同じ値を渡した場合は何も行いません.
いずれの分割数も値を大きくすると計算精度が向上しますが, 解析時間は長くなります.
fast_tail のモード:
False(Mode1, デフォルト) はパラメータから解析的に損失を高速計算True(Mode2) は詳細波形解析から損失を計算し高精度だが低速
Notes:
IGBT の帰還容量 Cres および FET の帰還容量 Crss は常に有効です (Bfetcrss / Bigbtcres は常に 1 として扱われます).
Raises:
RuntimeError-fet_lite切り替え後の回路再構築に失敗した場合.
Example:
# 詳細テール電流解析を有効化
conv.set_analysis_condition(fast_tail=True)
# 無効化
conv.set_analysis_condition(fast_tail=False)
# FET 簡易モデルを有効化(自動で回路を再構築)
conv.set_analysis_condition(fet_lite=True)
set_attribute¶
def set_attribute(symbol: str, attr: str) -> None
素子の属性を変更.
属性は素子ごとに定義された文字列シンボルで, 波形モードや動作モード等を表します.
例えば交流電圧源では "DA" (正弦波) / "FW" (全波) / "HW" (半波) を
切り替えられます. 変更はいずれかの解析を実行することで回路へ反映されます.
Arguments:
symbol- 素子のグローバルシンボル.attr- 属性シンボル(例:"FW").
Raises:
RuntimeError- シンボルが見つからない場合.ValueError- 属性シンボルが該当素子で未定義の場合.
Notes:
利用可能な属性シンボルは部品ごとに異なります. 各部品の有効なシンボルは Scideam の部品仕様に従います.
Example:
# 交流電圧源(シンボルVAC)を全波に切り替え
conv.set_attribute("VAC", "FW")
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"
Raises:
RuntimeError- パスにシステムの文字コードで表現できない文字が含まれる場合.
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- シンボルが見つからない場合.ValueError- パラメーター名が該当素子で未定義の場合.
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:
この解析は内部で解析終了時の状態が自動的に引き継がれるため,
解析後に carry_over_state() を呼び出さなくても動作します.
Arguments:
on_set_quit_status- 解析中に定期的に呼び出されるコールバック(省略可).Trueを返すと解析を中断します.
Returns:
各出力変数の定常値のリスト. 要素の順序は出力変数の定義順と同一です.
Raises:
SimulationError- 解析中にエンジンがエラーを報告し, かつwith_error_handler()で ハンドラを登録していない場合.
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,
*,
analysis_mode: AnalysisMode = AnalysisMode.FAST,
switching_mode: SwitchingMode = SwitchingMode.LITE,
on_set_quit_status: Callable[[], bool] | None = None,
on_end_cycle: Callable[[AnalysisInfo], None] | None = None) -> None
過渡解析の実行.
現在の時刻から time 秒間, 過渡解析ソルバーで解析します.
出力データは蓄積され, 解析後に output_data() で取得できます.
Arguments:
time- 解析時間(秒).analysis_mode- 出力データの密度.AnalysisMode.FAST(デフォルト) は 1 サイクルあたり代表点を出力する高速モード.AnalysisMode.FULLは 1 サイクル全点を出力する詳細モード.switching_mode- スイッチング解析の FET モデル. デフォルトはSwitchingMode.LITE. 呼び出し後はfet_liteがswitching_modeと一致することが保証されます (SwitchingMode.LITE→fet_lite=True/SwitchingMode.DETAIL→fet_lite=False). 既に目的の値の場合は何も行いません.on_set_quit_status- 解析中に定期的に呼び出されるコールバック(省略可).Trueを返すと解析を中断します.on_end_cycle- 各スイッチングサイクル終了時に呼び出されるコールバック(省略可).AnalysisInfoインスタンスを受け取ります.
Raises:
ValueError-timeが 0 以下の場合, またはanalysis_modeがAnalysisModeで表現できない値の場合.RuntimeError-fet_lite切り替え後の回路再構築に失敗した場合.SimulationError- 解析中にエンジンがエラーを報告し, かつwith_error_handler()で ハンドラを登録していない場合.
Example:
from scideampy import AnalysisMode, Converter, OutputType, SwitchingMode
with Converter() as conv:
conv.read_configuration("circuit.cvt2")
conv.transient_analysis(10e-3) # 10ms の高速解析 (FAST)
time = conv.get_times()
voltage = conv.output_data("R", OutputType.VOLTAGE)
# 詳細波形を取得する例(FET 簡易モデル, `fet_lite` が ``True`` に自動切替)
conv.transient_analysis(1e-3, analysis_mode=AnalysisMode.FULL)
# 詳細スイッチング解析を有効化する例(`fet_lite` が ``False`` に自動切替)
conv.transient_analysis(
1e-3, analysis_mode=AnalysisMode.FULL, switching_mode=SwitchingMode.DETAIL
)
# サイクルごとに進捗を表示する例
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))
valid_outputs¶
def valid_outputs(symbol: str) -> list[tuple[str, OutputType]]
素子で観測可能な (symbol, OutputType) ペアの一覧を取得.
symbol に与えた素子を起点に子要素を含めて全階層展開し, 各ノードで
観測可能な出力を (output_symbol, OutputType) のペアとして返します.
例えば抵抗 "R" では [("R", VOLTAGE), ("R", CURRENT), ("R", POWER)]
が返ります.
Arguments:
symbol- 素子のグローバルシンボル(例:"R","Q"). ドット記法も受け付け, その symbol を起点とした subtree を返します.
Returns:
(output_symbol, OutputType) のリスト. symbol 自身の出力に加え,
子要素の出力も同じリストに含まれます. 素子が見つからない場合は
空リスト. 順序は保証されません.
Example:
for sym, output_type in conv.valid_outputs("R"):
conv.add_output(sym, output_type)
valid_parameters¶
def valid_parameters(symbol: str) -> list[str]
素子で有効なパラメーター名の一覧を取得.
parameter / set_parameter の name 引数に渡せる文字列のリストを
返します. 例えば抵抗器 "R" では ["Value"], 交流電圧源 "VAC" では
["Vrms", "Freq", "Phini"] のように, 素子の種類ごとに異なります.
指定 symbol 自身のパラメーターのみを返します. 子要素 (ドット記法 "Q.Sw"
等で取得できる素子) のパラメーターは含まれません. 子要素のパラメーターが
必要な場合はその symbol を直接指定します (例: valid_parameters("Q.Sw")).
Arguments:
symbol- 素子のグローバルシンボル.
Returns:
パラメーター名のリスト. 素子が見つからない場合や, パラメーターを 持たない素子の場合は空リスト. 順序は保証されません.
Example:
for name in conv.valid_parameters("R"):
print(name, conv.parameter("R", name))
with_error_handler¶
@contextmanager
def with_error_handler(
on_error: Callable[[Error], None]) -> Iterator[Converter]
エラーハンドラーを with ブロックの間だけ登録するコンテキストマネージャー.
ブロックを抜けると(例外発生時も含め)ハンドラーが自動解除されます.
ハンドラーを登録している間は, 解析中のエラーがこのコールバックへ通知され,
SimulationError は送出されません.
ハンドラーを登録しない場合は, 解析中のエラーで SimulationError が送出されます.
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() で登録したコールバックへ渡されるほか,
SimulationError.error 属性からも取得できます.
これは例外ではなくエラー詳細を保持するデータであり, 捕捉には SimulationError を使います.
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(frozen=True, kw_only=True)
class FraOptions()
周波数特性解析(FRA)の設定オプション.
Converter.fra() に渡してスイープ条件を指定します.
Attributes:
fmin- スイープ開始周波数(Hz). デフォルトは10.fmax- スイープ終了周波数(Hz). デフォルトは100e3(100kHz).vac- AC 加振振幅(V). デフォルトは10e-3(10mV).phase_fold-True(デフォルト)の場合, 位相を [-180°, 180°] に折り畳みます.
Raises:
ValueError- フィールドが不正な値の場合.
Example:
from scideampy import FraOptions
options = FraOptions() # デフォルト設定
options = FraOptions(fmax=50e3) # 上限を 50kHz に指定
options = FraOptions(vac=0.002) # 加振電圧を 2mV に指定
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).
PowerAnalysisOptions Objects¶
@dataclass(frozen=True, kw_only=True)
class PowerAnalysisOptions()
損失解析の設定オプション.
Converter.power_analysis() に渡して解析条件を指定します.
Attributes:
switching_mode- スイッチ損失モデル(SwitchingMode参照). デフォルトはSwitchingMode.DETAIL.base_sw- 基準スイッチング素子のシンボル. デフォルトは"*CVT"でメイン周波数を指す特別な値です. 個別のスイッチを基準にする場合は対象のシンボル名をそのまま指定します.storage_rate_tolerance- エネルギー蓄積率の収束許容値(0 以上). 値が大きいほど収束判定が緩くなりサイクル数が減ります. 推奨値は0.0〜1.0.1.0を超える値も指定できますが, 収束が甘くなり損失計算の誤差が大きくなりやすい点に注意してください. デフォルトは1.0.frequency- 小信号損失解析用 AC 加振周波数(Hz).0.0(デフォルト)は DC 解析.sample- サイクルあたりの追加サンプル数.0(デフォルト)は自動.min_cycle- 最小解析サイクル数. 1 以上を指定.max_cycle- 最大解析サイクル数. 2 以上かつmin_cycle以上の値を指定.
Raises:
ValueError- フィールドが不正な値の場合.
Example:
from scideampy import PowerAnalysisOptions, SwitchingMode
options = PowerAnalysisOptions()
options = PowerAnalysisOptions(switching_mode=SwitchingMode.LITE)
options = PowerAnalysisOptions(storage_rate_tolerance=0.01, max_cycle=500)
base_sw¶
基準スイッチング素子のシンボル.
"*CVT" はメイン周波数を指す特別な値です.
個別のスイッチを基準にする場合は対象のシンボル名をそのまま指定します.
シンボルの存在および形式は解析実行時にエンジン側で検証されます.
frequency¶
小信号損失解析用 AC 加振周波数(Hz). 0.0 は DC 解析.
max_cycle¶
最大解析サイクル数.
min_cycle¶
最小解析サイクル数.
sample¶
サイクルあたりの追加サンプル数. 0 は自動.
storage_rate_tolerance¶
エネルギー蓄積率の収束許容値(0 以上).
値が大きいほど収束判定が緩くなりサイクル数が減ります.
推奨値は 0.0〜1.0. 1.0 を超える値も指定できますが,
収束が甘くなり損失計算の誤差が大きくなりやすい点に注意してください.
switching_mode¶
スイッチ損失モデル(SwitchingMode 参照).
ScideampyError Objects¶
class ScideampyError(Exception)
scideampy が送出する例外の基底クラス. まとめて捕捉したい場合に使います.
SimulationError Objects¶
class SimulationError(ScideampyError)
解析中にシミュレーションエンジンが報告したエラーを表す例外.
エラーハンドラ (Converter.with_error_handler()) を登録していない場合,
解析中にエラーが報告されると解析を中断してこの例外を送出します.
Attributes:
error- 報告されたエラーの詳細情報 (Error参照).
Example:
from scideampy import Converter, LicenseType, SimulationError
Converter.initialize(license_type=LicenseType.FLOATING)
with Converter() as conv:
conv.read_configuration("circuit.cvt2")
try:
conv.transient_analysis(10e-3)
except SimulationError as e:
print(e.error.id, e.error.name, e.error.message)
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:
遷移時刻(秒)のリスト
SwitchingMode Objects¶
class SwitchingMode(IntEnum)
スイッチング解析の FET モデルを指定する列挙型.
transient_analysis() の switching_mode 引数, または
PowerAnalysisOptions.switching_mode に渡すと, このモードに応じて
AnalysisCondition.fet_lite が自動的に切り替わります
(LITE → True / DETAIL → False).
Attributes:
LITE- 簡易モデルで高速に解析しますが損失精度は低めです.DETAIL- 詳細スイッチモデルでスイッチング損失を考慮した高精度な解析を行います.
Example:
from scideampy import PowerAnalysisOptions, SwitchingMode
info, loss = conv.power_analysis(
options=PowerAnalysisOptions(switching_mode=SwitchingMode.LITE)
)
scideampy.legacy¶
旧 API の Converter, および scideampy 本体から再エクスポートした周辺シンボルを公開する.
from scideampy.legacy import ... で, 旧 API を使用することができる.
scideampy.legacy.Converter Objects¶
class Converter()
回路シミュレーションエンジンへのメインインタフェース.
注意:
- クラスメソッド(静的メソッド)はエンジン全体で共有される初期化処理を担います.
Converterクラスはスレッドセーフではありません.- Python 3.13 以降で GIL を無効化したマルチスレッド処理はサポートされていません.
- ファイルパスには日本語を使用できます. ただし絵文字など, システムの文字コードにない文字は使えません.
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- 出力変数の登録に失敗した場合. 利用可能な (symbol, OutputType) 候補をエラーメッセージに含みます. 全候補が必要な場合はvalid_outputs(symbol)を直接呼んでください.
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() -> LegacyAnalysisCondition
現在のソルバー設定.
Returns:
現在の設定を反映した LegacyAnalysisCondition.
値の変更は set_analysis_condition() を使用してください.
Example:
condition = conv.analysis_condition()
print(f"fast_tail = {condition.fast_tail}")
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}")
attribute¶
def attribute(symbol: str) -> str | None
素子の属性シンボルを取得.
属性は素子ごとに定義された文字列シンボルで, 波形モードや動作モード等を表します.
例えば交流電圧源では "DA" (正弦波) / "FW" (全波) / "HW" (半波) の
いずれかが返ります. 利用可能な属性シンボルは素子の種類に依存します.
Arguments:
symbol- 素子のグローバルシンボル(例:"VAC").
Returns:
属性シンボル. 素子が見つからない場合は None.
Notes:
利用可能な属性シンボルは部品ごとに異なります. 各部品の有効なシンボルは Scideam の部品仕様に従います.
Example:
sym = conv.attribute("VAC")
print(f"VAC の属性: {sym}")
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 | None = None
) -> tuple[list[float], list[float], list[float]]
周波数特性解析(FRA)の実行.
vas に AC 加振を注入し, FraOptions.fmin から
FraOptions.fmax まで周波数をスイープして,
from_signature から to_signature への伝達関数を測定します.
事前に transient_analysis() または steady_state_analysis() で
回路を定常状態にしてから, このメソッドを実行してください.
transient_analysis() を使った場合は事前に carry_over_state() を
呼び出してください (steady_state_analysis() は内部で状態を引き継ぐため不要).
Arguments:
vas- AC 加振に使用する電圧源のシンボル.from_signature- 入力側の出力変数シグネチャ(例:"OUT:V:AVE").to_signature- 出力側の出力変数シグネチャ(例:"R:V:AVE").options- 周波数スイープのパラメーター(FraOptions参照). 省略時はデフォルト設定のFraOptions()が使われます.
Returns:
(frequencies, gains, phases) のタプル.
それぞれ各周波数点の値を格納したリストです.
gains は dB, phases は度(°)で表されます.
Example:
from scideampy import FraOptions
freq, gain, phase = conv.fra("VAS", "OUT:V:AVE", "R:V:AVE")
options = FraOptions(fmax=50e3, vac=0.002)
freq, gain, phase = conv.fra("VAS", "OUT:V:AVE", "R:V:AVE", options=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.legacy 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}")
part_type¶
def part_type(symbol: str) -> str | None
素子のタイプトークンを取得.
タイプトークンは素子の分類を表す文字列です(例: 抵抗器 "RX",
キャパシタ "CL", 交流電圧源 "SG").
Arguments:
symbol- 素子のグローバルシンボル.
Returns:
タイプトークン. 素子が見つからない場合は None.
Example:
token = conv.part_type("R")
print(f"R のタイプトークン: {token}")
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() を呼び出した後に
このメソッドを実行してください.
Notes:
新しいコードでは scideampy.Converter.power_analysis(options=PowerAnalysisOptions(...)) を使ってください.
Arguments:
mode- スイッチ損失モデル(PowerAnalysisMode参照). デフォルトはPowerAnalysisMode.DETAIL.base_sw- 基準スイッチング素子のシンボルパターン. デフォルトは"*CVT".storage_rate_tolerance- エネルギー蓄積率の収束許容値(0 以上). 値が大きいほど収束判定が緩くなりサイクル数が減ります. 推奨値は0.0〜1.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.legacy 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.LITE)
# 収束状態の確認
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.legacy 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,
fast_tail: bool | None = None,
fet_lite: bool | None = None) -> None
ソルバーの設定を変更.
指定した引数のみが変更されます. 省略した引数は現在の値を維持します.
Arguments:
divta- 過渡解析の1周期あたりサブ分割数.divtw- 波形解析の1周期あたりサブ分割数.fctta- 過渡解析の固定タイムステップ数(0 = 自動).divtprf- プロファイル出力のサブ分割数.divtmdl- モデル出力のサブ分割数.fast_tail- IGBT のテール電流解析モードの設定.fet_lite- FET の簡易モデルを有効化するか. 値が変化した場合のみ FET 部品を入れ替えて回路を再構築します. 現在値と同じ値を渡した場合は何も行いません.
fast_tail のモード:
False(Mode1, デフォルト) はパラメータから解析的に損失を高速計算True(Mode2) は詳細波形解析から損失を計算し高精度だが低速
Notes:
IGBT の帰還容量 Cres および FET の帰還容量 Crss は常に有効です (Bfetcrss / Bigbtcres は常に 1 として扱われます).
Raises:
RuntimeError-fet_lite切り替え後の回路再構築に失敗した場合.
Example:
# 詳細テール電流解析を有効化
conv.set_analysis_condition(fast_tail=True)
# 無効化
conv.set_analysis_condition(fast_tail=False)
# FET 簡易モデルを有効化(自動で回路を再構築)
conv.set_analysis_condition(fet_lite=True)
set_attribute¶
def set_attribute(symbol: str, attr: str) -> None
素子の属性を変更.
属性は素子ごとに定義された文字列シンボルで, 波形モードや動作モード等を表します.
例えば交流電圧源では "DA" (正弦波) / "FW" (全波) / "HW" (半波) を
切り替えられます. 変更はいずれかの解析を実行することで回路へ反映されます.
Arguments:
symbol- 素子のグローバルシンボル.attr- 属性シンボル(例:"FW").
Raises:
RuntimeError- シンボルが見つからない場合.ValueError- 属性シンボルが該当素子で未定義の場合.
Notes:
利用可能な属性シンボルは部品ごとに異なります. 各部品の有効なシンボルは Scideam の部品仕様に従います.
Example:
# 交流電圧源(シンボルVAC)を全波に切り替え
conv.set_attribute("VAC", "FW")
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"
Raises:
RuntimeError- パスにシステムの文字コードで表現できない文字が含まれる場合.
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- シンボルが見つからない場合.ValueError- パラメーター名が該当素子で未定義の場合.
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.legacy 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() で取得できます.
Notes:
scideampy.Converter.transient_analysis(time) (デフォルトの
mode=AnalysisMode.FAST) と等価です.
Arguments:
time- 解析時間(秒).on_set_quit_status- 解析中に定期的に呼び出されるコールバック(省略可).Trueを返すと解析を中断します.on_end_cycle- 各スイッチングサイクル終了時に呼び出されるコールバック(省略可).AnalysisInfoインスタンスを受け取ります.
Raises:
ValueError-timeが 0 以下の場合.
Example:
from scideampy.legacy 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.legacy 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) # 過渡解析終了時点から継続
valid_outputs¶
def valid_outputs(symbol: str) -> list[tuple[str, OutputType]]
素子で観測可能な (symbol, OutputType) ペアの一覧を取得.
symbol に与えた素子を起点に子要素を含めて全階層展開し, 各ノードで
観測可能な出力を (output_symbol, OutputType) のペアとして返します.
例えば抵抗 "R" では [("R", VOLTAGE), ("R", CURRENT), ("R", POWER)]
が返ります.
Arguments:
symbol- 素子のグローバルシンボル(例:"R","Q"). ドット記法も受け付け, その symbol を起点とした subtree を返します.
Returns:
(output_symbol, OutputType) のリスト. symbol 自身の出力に加え,
子要素の出力も同じリストに含まれます. 素子が見つからない場合は
空リスト. 順序は保証されません.
Example:
for sym, output_type in conv.valid_outputs("R"):
conv.add_output(sym, output_type)
valid_parameters¶
def valid_parameters(symbol: str) -> list[str]
素子で有効なパラメーター名の一覧を取得.
parameter / set_parameter の name 引数に渡せる文字列のリストを
返します. 例えば抵抗器 "R" では ["Value"], 交流電圧源 "VAC" では
["Vrms", "Freq", "Phini"] のように, 素子の種類ごとに異なります.
指定 symbol 自身のパラメーターのみを返します. 子要素 (ドット記法 "Q.Sw"
等で取得できる素子) のパラメーターは含まれません. 子要素のパラメーターが
必要な場合はその symbol を直接指定します (例: valid_parameters("Q.Sw")).
Arguments:
symbol- 素子のグローバルシンボル.
Returns:
パラメーター名のリスト. 素子が見つからない場合や, パラメーターを 持たない素子の場合は空リスト. 順序は保証されません.
Example:
for name in conv.valid_parameters("R"):
print(name, conv.parameter("R", name))
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 秒間, 波形解析ソルバーで解析します.
Notes:
scideampy.Converter.transient_analysis(time, analysis_mode=AnalysisMode.FULL)
と等価です. for_detail_switch=True の場合は
analysis_mode=AnalysisMode.FULL, switching_mode=SwitchingMode.DETAIL
を指定したものに等価です.
Arguments:
time- 解析時間(秒).for_detail_switch-Trueの場合, 詳細スイッチモデルを使った解析を実施します.on_set_quit_status- 解析中に定期的に呼び出されるコールバック(省略可).Trueを返すと解析を中断します.on_end_cycle- 各スイッチングサイクル終了時に呼び出されるコールバック(省略可).AnalysisInfoインスタンスを受け取ります.
Notes:
for_detail_switch=True を指定すると fet_lite は自動的に False に切り替わります.
既に False であれば回路の再構築は行われません.
Raises:
ValueError-timeが 0 以下の場合.RuntimeError-fet_lite切り替え後の回路再構築に失敗した場合.
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.legacy 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.legacy 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)
LegacyAnalysisCondition Objects¶
class LegacyAnalysisCondition()
ソルバーの各種設定値(legacy API).
Converter.analysis_condition() で取得します.
値の変更は Converter.set_analysis_condition() を使用してください.
Notes:
返される LegacyAnalysisCondition はエンジン内部の設定への参照を保持しています.
Converter.set_analysis_condition() で値を変更すると,
既存の LegacyAnalysisCondition インスタンスのプロパティ値も変化します.
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_lite¶
@property
def fet_lite() -> bool
FET の簡易モデルが有効な場合に True.
True の場合, FET 部品は簡易モデルへ入れ替わって解析されます.
詳細スイッチング解析を有効化する解析メソッドを呼び出すと,
自動的に False に切り替わります.
timeout_quit¶
def timeout_quit(timeout: float) -> Callable[[], bool]
指定秒数が経過すると解析を中断するコールバック.
transient_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))