197 std::shared_ptr<CPS::EMT::Ph3::VoltageSource>,
199 py::multiple_inheritance())
200 .def(py::init<std::string>())
201 .def(py::init<std::string, CPS::Logger::Level>())
202 .def(
"set_parameters",
203 py::overload_cast<CPS::MatrixComp, CPS::Real>(
205 "V_ref"_a,
"f_src"_a = 50)
213 std::shared_ptr<CPS::EMT::Ph3::ControlledVoltageSource>,
215 py::multiple_inheritance())
216 .def(py::init<std::string>())
217 .def(py::init<std::string, CPS::Logger::Level>())
218 .def(
"set_parameters",
219 py::overload_cast<CPS::Matrix>(
227 std::shared_ptr<CPS::EMT::Ph3::CurrentSource>,
229 py::multiple_inheritance())
230 .def(py::init<std::string>())
231 .def(py::init<std::string, CPS::Logger::Level>())
232 .def(
"set_parameters",
233 py::overload_cast<CPS::MatrixComp, CPS::Real>(
235 "I_ref"_a,
"f_src"_a = 50)
242 py::class_<CPS::EMT::Ph3::Resistor, std::shared_ptr<CPS::EMT::Ph3::Resistor>,
244 py::multiple_inheritance())
245 .def(py::init<std::string>())
246 .def(py::init<std::string, CPS::Logger::Level>())
251 std::shared_ptr<CPS::EMT::Ph3::Capacitor>,
253 py::multiple_inheritance())
254 .def(py::init<std::string>())
255 .def(py::init<std::string, CPS::Logger::Level>())
259 py::class_<CPS::EMT::Ph3::Inductor, std::shared_ptr<CPS::EMT::Ph3::Inductor>,
261 py::multiple_inheritance())
262 .def(py::init<std::string>())
263 .def(py::init<std::string, CPS::Logger::Level>())
268 std::shared_ptr<CPS::EMT::Ph3::NetworkInjection>,
270 py::multiple_inheritance())
271 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
272 "loglevel"_a = CPS::Logger::Level::off)
273 .def(
"set_parameters",
274 py::overload_cast<CPS::MatrixComp, CPS::Real>(
276 "V_ref"_a,
"f_src"_a = 50)
279 py::class_<CPS::EMT::Ph3::PiLine, std::shared_ptr<CPS::EMT::Ph3::PiLine>,
281 py::multiple_inheritance())
282 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
283 "loglevel"_a = CPS::Logger::Level::off)
285 "series_resistance"_a,
"series_inductance"_a,
290 py::class_<CPS::EMT::Ph3::RXLoad, std::shared_ptr<CPS::EMT::Ph3::RXLoad>,
292 py::multiple_inheritance())
293 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
294 "loglevel"_a = CPS::Logger::Level::off)
296 "active_power"_a,
"reactive_power"_a,
"volt"_a,
298 "reactance_in_series"_a =
false)
301 py::class_<CPS::EMT::Ph3::Shunt, std::shared_ptr<CPS::EMT::Ph3::Shunt>,
303 py::multiple_inheritance())
304 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
305 "loglevel"_a = CPS::Logger::Level::off)
306 .def(
"set_parameters",
312 py::class_<CPS::EMT::Ph3::Switch, std::shared_ptr<CPS::EMT::Ph3::Switch>,
314 mEMTPh3,
"Switch", py::multiple_inheritance())
315 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
316 "loglevel"_a = CPS::Logger::Level::off)
318 "open_resistance"_a,
"closed_resistance"_a,
326 std::shared_ptr<CPS::EMT::Ph3::SynchronGeneratorIdeal>,
328 py::multiple_inheritance())
329 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
330 "loglevel"_a = CPS::Logger::Level::off)
334 std::shared_ptr<CPS::EMT::Ph3::SynchronGeneratorDQTrapez>,
336 py::multiple_inheritance())
337 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
338 "loglevel"_a = CPS::Logger::Level::off)
339 .def(
"set_parameters_operational_per_unit",
341 setParametersOperationalPerUnit,
342 "nom_power"_a,
"nom_volt"_a,
"nom_freq"_a,
"pole_number"_a,
343 "nom_field_cur"_a,
"Rs"_a,
"Ld"_a,
"Lq"_a,
"Ld_t"_a,
"Lq_t"_a,
344 "Ld_s"_a,
"Lq_s"_a,
"Ll"_a,
"Td0_t"_a,
"Tq0_t"_a,
"Td0_s"_a,
345 "Tq0_s"_a,
"inertia"_a)
346 .def(
"set_parameters_fundamental_per_unit",
348 setParametersFundamentalPerUnit,
349 "nom_power"_a,
"nom_volt"_a,
"nom_freq"_a,
"pole_number"_a,
350 "nom_field_cur"_a,
"Rs"_a,
"Ll"_a,
"Lmd"_a,
"Lmq"_a,
"Rfd"_a,
351 "Llfd"_a,
"Rkd"_a,
"Llkd"_a,
"Rkq1"_a,
"Llkq1"_a,
"Rkq2"_a,
352 "Llkq2"_a,
"inertia"_a,
"init_active_power"_a,
353 "init_reactive_power"_a,
"init_terminal_volt"_a,
"init_volt_angle"_a,
356 .def(
"apply_parameters_from_json",
357 [](std::shared_ptr<CPS::EMT::Ph3::SynchronGeneratorDQTrapez> syngen,
359 DPsim::Utils::applySynchronousGeneratorParametersFromJson(
360 json::parse(json), syngen);
363 .def(
"set_initial_values",
365 "init_active_power"_a,
"init_reactive_power"_a,
366 "init_terminal_volt"_a,
"init_volt_angle"_a,
"init_mech_power"_a);
369 std::shared_ptr<CPS::EMT::Ph3::VSIVoltageControlVCO>,
371 py::multiple_inheritance())
372 .def(py::init<std::string>())
373 .def(py::init<std::string, CPS::Logger::Level>())
374 .def(py::init<std::string, std::string, CPS::Logger::Level, CPS::Bool>(),
375 "uid"_a,
"name"_a,
"log_level"_a = CPS::Logger::Level::off,
376 py::arg(
"with_trafo") =
false)
377 .def(
"set_parameters",
379 "vd_ref"_a,
"vq_ref"_a)
380 .def(
"set_controller_parameters",
382 "kp_voltage_ctrl"_a,
"ki_voltage_ctrl"_a,
"kp_curr_ctrl"_a,
383 "ki_curr_ctrl"_a,
"omega_nominal"_a)
384 .def(
"set_transformer_parameters",
386 "nom_voltage_end1"_a,
"nom_voltage_end2"_a,
"rated_power"_a,
387 "ratio_abs"_a,
"ratio_phase"_a,
"resistance"_a,
"inductance"_a,
389 .def(
"set_filter_parameters",
391 "cf"_a,
"rf"_a,
"rc"_a)
392 .def(
"set_initial_state_values",
394 "phi_d_init"_a,
"phi_q_init"_a,
"gamma_d_init"_a,
"gamma_q_init"_a)
400 std::shared_ptr<CPS::EMT::Ph3::ReducedOrderSynchronGeneratorVBR>,
402 mEMTPh3,
"ReducedOrderSynchronGeneratorVBR", py::multiple_inheritance());
405 std::shared_ptr<CPS::EMT::Ph3::SynchronGenerator3OrderVBR>,
407 mEMTPh3,
"SynchronGenerator3OrderVBR", py::multiple_inheritance())
408 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
409 "loglevel"_a = CPS::Logger::Level::off)
410 .def(
"set_operational_parameters_per_unit",
415 setOperationalParametersPerUnit),
416 "nom_power"_a,
"nom_voltage"_a,
"nom_frequency"_a,
"H"_a,
"Ld"_a,
417 "Lq"_a,
"L0"_a,
"Ld_t"_a,
"Td0_t"_a)
421 std::shared_ptr<CPS::EMT::Ph3::SynchronGenerator4OrderVBR>,
423 mEMTPh3,
"SynchronGenerator4OrderVBR", py::multiple_inheritance())
424 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
425 "loglevel"_a = CPS::Logger::Level::off)
426 .def(
"set_operational_parameters_per_unit",
431 setOperationalParametersPerUnit),
432 "nom_power"_a,
"nom_voltage"_a,
"nom_frequency"_a,
"H"_a,
"Ld"_a,
433 "Lq"_a,
"L0"_a,
"Ld_t"_a,
"Lq_t"_a,
"Td0_t"_a,
"Tq0_t"_a)
437 std::shared_ptr<CPS::EMT::Ph3::SynchronGenerator5OrderVBR>,
439 mEMTPh3,
"SynchronGenerator5OrderVBR", py::multiple_inheritance())
440 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
441 "loglevel"_a = CPS::Logger::Level::off)
442 .def(
"set_operational_parameters_per_unit",
448 setOperationalParametersPerUnit),
449 "nom_power"_a,
"nom_voltage"_a,
"nom_frequency"_a,
"H"_a,
"Ld"_a,
450 "Lq"_a,
"L0"_a,
"Ld_t"_a,
"Lq_t"_a,
"Td0_t"_a,
"Tq0_t"_a,
"Ld_s"_a,
451 "Lq_s"_a,
"Td0_s"_a,
"Tq0_s"_a,
"Taa"_a)
455 std::shared_ptr<CPS::EMT::Ph3::SynchronGenerator6aOrderVBR>,
457 mEMTPh3,
"SynchronGenerator6aOrderVBR", py::multiple_inheritance())
458 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
459 "loglevel"_a = CPS::Logger::Level::off)
460 .def(
"set_operational_parameters_per_unit",
466 setOperationalParametersPerUnit),
467 "nom_power"_a,
"nom_voltage"_a,
"nom_frequency"_a,
"H"_a,
"Ld"_a,
468 "Lq"_a,
"L0"_a,
"Ld_t"_a,
"Lq_t"_a,
"Td0_t"_a,
"Tq0_t"_a,
"Ld_s"_a,
469 "Lq_s"_a,
"Td0_s"_a,
"Tq0_s"_a,
"Taa"_a)
473 std::shared_ptr<CPS::EMT::Ph3::SynchronGenerator6bOrderVBR>,
475 mEMTPh3,
"SynchronGenerator6bOrderVBR", py::multiple_inheritance())
476 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
477 "loglevel"_a = CPS::Logger::Level::off)
478 .def(
"set_operational_parameters_per_unit",
484 setOperationalParametersPerUnit),
485 "nom_power"_a,
"nom_voltage"_a,
"nom_frequency"_a,
"H"_a,
"Ld"_a,
486 "Lq"_a,
"L0"_a,
"Ld_t"_a,
"Lq_t"_a,
"Td0_t"_a,
"Tq0_t"_a,
"Ld_s"_a,
487 "Lq_s"_a,
"Td0_s"_a,
"Tq0_s"_a,
"Taa"_a = 0)
493 std::shared_ptr<CPS::EMT::Ph3::SynchronGeneratorDQODE>,
495 py::multiple_inheritance())
496 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
497 "loglevel"_a = CPS::Logger::Level::off)
498 .def(
"set_parameters_operational_per_unit",
500 setParametersOperationalPerUnit,
501 "nom_power"_a,
"nom_volt"_a,
"nom_freq"_a,
"pole_number"_a,
502 "nom_field_cur"_a,
"Rs"_a,
"Ld"_a,
"Lq"_a,
"Ld_t"_a,
"Lq_t"_a,
503 "Ld_s"_a,
"Lq_s"_a,
"Ll"_a,
"Td0_t"_a,
"Tq0_t"_a,
"Td0_s"_a,
504 "Tq0_s"_a,
"inertia"_a)
505 .def(
"set_parameters_fundamental_per_unit",
507 setParametersFundamentalPerUnit,
508 "nom_power"_a,
"nom_volt"_a,
"nom_freq"_a,
"pole_number"_a,
509 "nom_field_cur"_a,
"Rs"_a,
"Ll"_a,
"Lmd"_a,
"Lmq"_a,
"Rfd"_a,
510 "Llfd"_a,
"Rkd"_a,
"Llkd"_a,
"Rkq1"_a,
"Llkq1"_a,
"Rkq2"_a,
511 "Llkq2"_a,
"inertia"_a,
"init_active_power"_a,
512 "init_reactive_power"_a,
"init_terminal_volt"_a,
"init_volt_angle"_a,
515 .def(
"apply_parameters_from_json",
516 [](std::shared_ptr<CPS::EMT::Ph3::SynchronGeneratorDQODE> syngen,
518 DPsim::Utils::applySynchronousGeneratorParametersFromJson(
519 json::parse(json), syngen);
522 .def(
"set_initial_values",
524 "init_active_power"_a,
"init_reactive_power"_a,
525 "init_terminal_volt"_a,
"init_volt_angle"_a,
"init_mech_power"_a);
530 std::shared_ptr<CPS::EMT::Ph3::AvVoltageSourceInverterDQ>,
532 py::multiple_inheritance())
533 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
534 "loglevel"_a = CPS::Logger::Level::off)
535 .def(py::init<std::string, std::string, CPS::Logger::Level, CPS::Bool>(),
536 "uid"_a,
"name"_a,
"loglevel"_a = CPS::Logger::Level::off,
538 "with_trafo"_a =
false)
539 .def(
"set_parameters",
541 "sys_omega"_a,
"sys_volt_nom"_a,
"p_ref"_a,
"q_ref"_a)
542 .def(
"set_filter_parameters",
544 "Lf"_a,
"Cf"_a,
"Rf"_a,
"Rc"_a)
545 .def(
"set_controller_parameters",
547 "Kp_pll"_a,
"Ki_pll"_a,
"Kp_power_ctrl"_a,
"Ki_power_ctrl"_a,
548 "Kp_curr_ctrl"_a,
"Ki_curr_ctrl"_a,
"omega_cutoff"_a)
549 .def(
"set_transformer_parameters",
551 "nom_voltage_end_1"_a,
"nom_voltage_end_2"_a,
"rated_power"_a,
552 "ratio_abs"_a,
"ratio_phase"_a,
"resistance"_a,
"inductance"_a,
554 .def(
"set_initial_state_values",
556 "p_init"_a,
"q_init"_a,
"phi_d_init"_a,
"phi_q_init"_a,
557 "gamma_d_init"_a,
"gamma_q_init"_a)
563 std::shared_ptr<CPS::EMT::Ph3::Transformer>,
565 py::multiple_inheritance())
566 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
567 "loglevel"_a = CPS::Logger::Level::off)
568 .def(py::init<std::string, std::string, CPS::Logger::Level, CPS::Bool>(),
569 "uid"_a,
"name"_a,
"loglevel"_a = CPS::Logger::Level::off,
571 "with_resistive_losses"_a =
false)
573 "nom_voltage_end_1"_a,
"nom_voltage_end_2"_a,
"rated_power"_a,
574 "ratio_abs"_a,
"ratio_phase"_a,
"resistance"_a,
"inductance"_a)
578 std::shared_ptr<CPS::EMT::Ph3::SeriesResistor>,
580 py::multiple_inheritance())
581 .def(py::init<std::string>())
582 .def(py::init<std::string, CPS::Logger::Level>())
588 std::shared_ptr<CPS::EMT::Ph3::SeriesSwitch>,
590 mEMTPh3,
"SeriesSwitch", py::multiple_inheritance())
591 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
592 "loglevel"_a = CPS::Logger::Level::off)
594 "open_resistance"_a,
"closed_resistance"_a,
602 std::shared_ptr<CPS::EMT::Ph3::SSN::Full_Serial_RLC>,
604 py::multiple_inheritance())
605 .def(py::init<std::string>())
606 .def(py::init<std::string, CPS::Logger::Level>())
607 .def(
"set_parameters",
619 std::shared_ptr<CPS::EMT::Ph3::GenericTwoTerminalVTypeSSN>,
621 mEMTPh3,
"GenericTwoTerminalVTypeSSN", py::multiple_inheritance())
622 .def(py::init<std::string>())
623 .def(py::init<std::string, CPS::Logger::Level>())
624 .def(
"set_parameters",
631 std::shared_ptr<CPS::EMT::Ph3::GenericTwoTerminalITypeSSN>,
633 mEMTPh3,
"GenericTwoTerminalITypeSSN", py::multiple_inheritance())
634 .def(py::init<std::string>())
635 .def(py::init<std::string, CPS::Logger::Level>())
636 .def(
"set_parameters",
643 std::shared_ptr<CPS::EMT::Ph3::PiecewiseLinearInductor>,
645 py::multiple_inheritance())
646 .def(py::init<std::string>())
647 .def(py::init<std::string, CPS::Logger::Level>())
648 .def(
"set_parameters",
650 "flux_breakpoints"_a,
"current_breakpoints"_a)
655 std::shared_ptr<CPS::EMT::Ph3::AvVoltSourceInverterStateSpace>,
657 mEMTPh3,
"AvVoltSourceInverterStateSpace", py::multiple_inheritance())
658 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
659 "loglevel"_a = CPS::Logger::Level::off)
660 .def(py::init<std::string, std::string, CPS::Logger::Level>(),
"uid"_a,
661 "name"_a,
"loglevel"_a = CPS::Logger::Level::off)
662 .def(
"set_parameters",
664 "Lf"_a,
"Cf"_a,
"Rf"_a,
"Rc"_a,
"omega_n"_a,
"Kp_pll"_a,
"Ki_pll"_a,
665 "omega_cutoff"_a,
"p_ref"_a,
"q_ref"_a,
"Kp_power_ctrl"_a,
666 "Ki_power_ctrl"_a,
"Kp_curr_ctrl"_a,
"Ki_curr_ctrl"_a)
673 .def_property_readonly(
"p_inst",
675 .def_property_readonly(
"q_inst",
677 .def_property_readonly(
"omega_pll",
680 py::class_<CPS::EMT::Ph3::SSN_GFM, std::shared_ptr<CPS::EMT::Ph3::SSN_GFM>,
682 py::multiple_inheritance())
683 .def(py::init<std::string, std::string, CPS::Logger::Level>(),
"uid"_a,
684 "name"_a,
"log_level"_a = CPS::Logger::Level::off)
686 "cf"_a,
"rf"_a,
"rc"_a,
"nominal_voltage"_a,
"omega_nominal"_a,
687 "p_ref"_a,
"q_ref"_a,
"virtual_inertia"_a,
"damping_coefficient"_a,
688 "voltage_droop_gain"_a,
"reactive_integral_gain"_a,
"kp_voltage"_a,
689 "ki_voltage"_a,
"kp_current"_a,
"ki_current"_a,
690 "active_damping_gain"_a,
"power_filter_cutoff"_a,
692 .def(
"set_numerical_linearization_parameters",
694 "relative_step"_a = 1e-6,
"absolute_step"_a = 1e-8)
695 .def(
"set_virtual_impedance",
697 "virtual_reactance"_a = 0.0)
698 .def(
"set_grid_current_feedforward",
700 .def(
"set_reactive_power_droop",
707 .def(
"get_interface_voltage",
709 .def(
"get_interface_current",
711 .def_property_readonly(
"p_inst",
713 .def_property_readonly(
"q_inst",
715 .def_property_readonly(
"omega_gfm",
717 .def_property_readonly(
"theta_gfm",
719 .def_property_readonly(
720 "voltage_magnitude_gfm",
724 .def_property_readonly(
"i_grid_d",
726 .def_property_readonly(
"i_grid_q",
730 .def_property_readonly(
"v_ref_d",
732 .def_property_readonly(
"v_ref_q",
736 std::shared_ptr<CPS::EMT::Ph3::SSN::Capacitor>,
738 py::multiple_inheritance())
739 .def(py::init<std::string>())
740 .def(py::init<std::string, CPS::Logger::Level>())
748 std::shared_ptr<CPS::EMT::Ph3::GenericFourTerminalVTypeSSN>,
750 mEMTPh3,
"GenericFourTerminalVTypeSSN", py::multiple_inheritance())
751 .def(py::init<std::string>())
752 .def(py::init<std::string, CPS::Logger::Level>())
753 .def(
"set_parameters",