Configuration Guide¶
Este guia concentra as configurações que mais impactam convergência, tempo de simulação e fidelidade.
⚠️ Primeiro passo — escolha um preset¶
Antes de configurar qualquer outro campo, pegue um dos quatro presets
em numerical-configuration.md. 95%
dos casos se resolvem com uma única decisão:
simulation:
preset: robust # auto | fast | robust | high_fidelity
tstop: 1e-3
dt: 1e-6
O resto deste guia é override avançado que só precisa quando o preset não basta.
Bloco simulation — referência completa¶
Tabela canônica de cada campo simulation.* reconhecido pelo parser
YAML (pulsim-v1).
Top-level (recomendado para usuários)¶
| Campo | Valores | Default | Notas |
|---|---|---|---|
preset |
auto / fast / robust / high_fidelity |
— | Materializa um perfil numérico completo. Outros campos simulation.* aplicam ON TOP do preset. |
tstart |
float | 0.0 |
Tempo inicial (s) |
tstop |
float | 1e-3 |
Tempo final (s) |
dt |
float | 1e-6 |
Passo inicial / fixo (s) |
dt_min |
float | 1e-12 |
Limite mínimo do passo adaptativo |
dt_max |
float | 1e-3 |
Limite máximo do passo adaptativo |
step_mode |
fixed / variable |
variable |
Canônico — substitui adaptive_timestep |
switching_mode |
auto / ideal / behavioral |
auto (resolve para behavioral hoje) |
PWL fast path = ideal |
integrator |
ver tabela abaixo | trapezoidal (trbdf2 em Robust) |
|
enable_events |
bool | true |
|
enable_losses |
bool | true |
|
enable_bdf_order_control |
bool | false (true em Robust) |
Ordem BDF adaptativa |
formulation |
projected_wrapper / direct |
projected_wrapper |
DAE assembly strategy |
Integradores aceitos¶
| Valor | Status |
|---|---|
trapezoidal |
✅ Default — order 2, A-stable |
bdf1 (ou be) |
✅ Backward Euler — L-stable fallback |
bdf2 |
✅ Order 2, A-stable |
trbdf2 |
✅ Híbrido trapezoidal + BDF2 — default Robust |
rosenbrockw (ou rosenbrock) |
✅ Linearly implicit stiff |
bdf3, bdf4, bdf5 |
⚠️ Deprecated — emitem warning, removidos no próximo major |
gear |
⚠️ Deprecated — alias literal de bdf2 |
sdirk2 |
⚠️ Deprecated — sem cobertura de benchmark |
Sub-blocos avançados¶
Status: ainda não colapsados sob
advanced.*na release atual (Phase 3 dosimplify-and-harden-numerical-surfacechange). Os campos abaixo seguem reconhecidos no top-levelsimulation.*por compatibilidade. Quando Phase 3 ship, eles migrarão.
| Sub-bloco | Conteúdo | Quem usa |
|---|---|---|
newton |
max_iterations, armijo_line_search, armijo_sigma, ... |
Tuning do Newton interno |
timestep |
error_tolerance, growth_factor, safety_factor, ... |
Controlador adaptativo de dt |
lte |
voltage_tolerance, current_tolerance, use_weighted_norm |
Estimação de erro local |
bdf |
min_order, max_order, initial_order |
Controle de ordem BDF |
solver |
order, fallback_order, direct_config, iterative_config |
Stack de solvers lineares |
dc_config |
strategy, homotopy_config, sub-configs |
DC operating point |
stiffness |
enable, switch_integrator, stiff_integrator, thresholds |
Detecção e mitigação de stiffness |
fallback |
enable_transient_gmin, gmin_initial, etc. |
Recuperação de divergência |
Campos depreciados¶
| Campo | Substituto | Quando some |
|---|---|---|
adaptive_timestep: bool |
step_mode: fixed \| variable |
Próximo major |
direct_formulation_fallback: bool |
(sempre on internamente) | Próximo major |
integrator: bdf3 \| bdf4 \| bdf5 |
bdf2 / trbdf2 / rosenbrockw |
Próximo major |
integrator: gear |
bdf2 |
Próximo major |
integrator: sdirk2 |
trbdf2 |
Próximo major |
simulation.backend, simulation.sundials |
use step_mode + formulation no caminho canônico |
Já não é caminho suportado |
Veja Migration Guide § 8 para recipes de migração concretos por campo.
Solver linear em runtime¶
simulation:
solver:
order: [klu, gmres]
fallback_order: [sparselu]
allow_fallback: true
auto_select: true
size_threshold: 400
nnz_threshold: 2500
diag_min_threshold: 1e-12
Quando usar:
KLU/SparseLU: redes pequenas/médias com robustez alta.GMRES/BiCGSTAB: redes grandes e esparsas.fallback_order: proteção para casos difíceis.
Iterativo e precondicionador¶
simulation:
solver:
iterative:
max_iterations: 300
tolerance: 1e-8
restart: 40
preconditioner: ilut
ilut_drop_tolerance: 1e-3
ilut_fill_factor: 10
enable_scaling: true
scaling_floor: 1e-12
Regras rápidas:
- comece com
ilutem conversores maiores; - aumente
max_iterationsse ficar próximo de convergir; enable_scalingajuda matrizes mal condicionadas.
Newton, fallback e robustez¶
simulation:
newton:
max_iterations: 60
enable_limiting: true
max_voltage_step: 2.0
max_current_step: 5.0
Complementos úteis:
max_step_retries: quantas tentativas por passo.gmin_fallback: reforço de robustez em regiões difíceis.fallback_policy: rastreio e política de retry (fallback_trace).
Perdas e térmico¶
simulation:
enable_losses: true
thermal:
enable: true
ambient: 25.0
policy: loss_with_temperature_scaling
default_rth: 1.5
default_cth: 0.02
Saídas relevantes:
result.loss_summaryresult.thermal_summaryresult.eventspara inspeção de chaveamento/eventos.
Estratégias de configuração¶
Debug rápido¶
step_mode: fixedintegrator: trapezoidalorder: [sparselu]
Produção robusta¶
step_mode: variableformulation: projected_wrapperintegrator: trbdf2ourosenbrockworder: [klu, gmres]fallback_order: [sparselu]
DAE direto (diagnóstico/perfil)¶
step_mode: fixedouvariableformulation: direct- opcional:
direct_formulation_fallback: falsepara comparar somente rota direta