Skip to content

PulsimCore Documentation

PulsimCore Backend

High-performance power-electronics simulation backend with a Python-first runtime, versioned YAML netlists, mixed electrical-and-control domains, and a 50-bench closed-loop regression dashboard.

Recommended surface: import pulsim + schema: pulsim-v1.

What's in the box

  • :material-circle-multiple-outline: 30+ electrical components


    Resistors, capacitors, inductors, mosfets (smooth Shichman-Hodges), IGBTs, diodes, transformers, coupled inductors, saturable inductors, fuses, breakers, relays, thyristors, triacs — every parameter, default, and unit documented.

    Components Reference

  • :material-graph-outline: 30+ virtual control blocks


    PWM generators, PI / PID, integrators, Schmitt triggers, state-machines, lookup tables, transfer functions, Clarke / Park / PLL / SVM — all mixable in the same netlist, all addressable as channels (chan:PI.output, chan:PLL.theta, …).

    Control Blocks Reference

  • :material-file-code-outline: Versioned YAML netlists


    Schema pulsim-v1 is stable, validated, diffable, and round-trips through every backend (transient / shooting / harmonic balance / AC / FRA). YAML is the source of truth for the benchmark suite.

    Netlist YAML Format

  • :material-sine-wave: Mixed-domain runtime


    Stamping electrical solver (MNA + trapezoidal / TR-BDF2 / Rosenbrock) runs alongside the control-block scheduler in a single simulator object. Switch events, duty callbacks, channel feedback — all in one Newton iteration.

    Backend Architecture

  • :material-chart-bell-curve: AC sweep + FRA


    Linearize around a periodic operating point, sweep frequency analytically (run_ac_sweep) or via transient injection (run_fra_sweep). Both produce LinearSystem outputs you can compare to analytical Bode models.

    AC Analysis / FRA

  • :material-thermometer: Electrothermal coupling


    MOSFET / IGBT / BJT carry a thermal: port; the runtime computes junction temperature alongside electrical state, and KPI helpers derive T_j_max, Δ_T_j, and full Foster-network responses.

    Electrothermal Workflow

  • :material-magnet: Magnetic fidelity


    Saturable inductors with soft-knee L(I), SPICE-style mutual coupling, ideal transformers, and Steinmetz core-loss KPI for B(t) traces — all callable from YAML.

    Magnetic Models

  • :material-speedometer: Quantitative KPIs


    THD, power factor, efficiency, ripple p-p, rise/settling/overshoot, ZVS%, ZCS%, conduction + switching loss, Steinmetz core loss, and junction temperature — all wired into the benchmark runner with CI gates.

    KPI Reference

  • :material-cog-transfer-outline: Real-time codegen + FMI


    Export a circuit as a C99 step function (pulsim.codegen) or as an FMI 2.0 Co-Simulation FMU — for HIL targets, model exchange, or integration with Simulink / OpenModelica.

    Code Generation / FMI Export

  • :material-circuit-board: Domain libraries


    Vendor MOSFET / IGBT presets, converter templates (buck / boost / full-bridge / LLC), seven motor families (DC, PMSM, PMSM-FOC, BLDC, 3φ and 1φ induction, mechanical), refrigeration compressor loads (Reciprocating / Rotary / Scroll, with a curated refrigerant table for R600a / R134a / R290 / R32 / R744), and three-phase grid primitives (sources, PLLs, grid-following + grid-forming inverters).

    Catalog Devices · Converter Templates · Motor Models · Compressor + Refrigerant Load · Three-Phase Grid

  • :material-shield-check-outline: Benchmark dashboards


    50 closed-loop benches, 80+ stress benches, ngspice/LTspice parity matrices, and a live SPICE parity dashboard — Pulsim is regression- tested on real topologies, not toy circuits.

    Benchmarks and Parity · SPICE Parity Dashboard

  • :material-tools: Pro tooling


    Parameter sweeps, property-based tests, automatic differentiation, a linear-solver cache, JFNK / GMRES / KLU / Pardiso solvers, and robust convergence policies.

    Parameter Sweep · Property-Based Testing · Automatic Differentiation · Linear-Solver Cache

One-command sanity check

python3 -c "import pulsim as ps; print(ps.__version__)"

If that prints a version string, you're set. Otherwise see Getting Started → "Installation" or Troubleshooting.

  1. Getting Started — install, run an RC step, see the output CSV.
  2. Numerical Configuration — the four presets (Auto/Fast/Robust/HighFidelity) that materialise a full tuning profile in one call.
  3. User Guide — the canonical runtime flow.
  4. Netlist YAML Format — schema for your first real circuit.
  5. Components Reference + Control Blocks Reference — every block at your disposal.
  6. Examples and Results — run shipped scripts end-to-end.
  7. KPI Reference — score what you've built.
  8. Benchmarks and Parity — wire it into CI.
  9. API Reference — when you need to drop down past YAML.

Topic shortcuts

If you're doing... Read
First simulation — what numerical knobs to set Numerical Configuration
Buck / boost / LLC / FB converter Converter Templates, Catalog Devices
Multilevel (NPC, T-type, flying-cap, MMC) Multilevel Converters, Numerical Configuration
Three-phase / motor drives / vector control Three-Phase Grid, Motor Models, Control Blocks
Refrigeration / fridge / freezer compressor (CC convencional or inverter VCC) Compressor + Refrigerant Load, Motor Models
Magnetics design (saturation, core loss) Magnetic Models, KPI Reference
Thermal margin sizing Electrothermal Workflow, KPI Reference
Closed-loop tuning AC Analysis, FRA
HIL / embedded export Code Generation, FMI Export
Comparing to PSIM / PLECS / ngspice / LTspice Benchmarks and Parity, SPICE Parity Dashboard, GUI Backend Parity
Solver convergence problems Convergence Tuning, Troubleshooting