292 std::shared_ptr<CPS::EMT::Ph3::VoltageSource>,
294 py::multiple_inheritance())
295 .def(py::init<std::string>())
296 .def(py::init<std::string, CPS::Logger::Level>())
297 .def(
"set_parameters",
298 py::overload_cast<CPS::MatrixComp, CPS::Real>(
300 "V_ref"_a,
"f_src"_a = 50)
308 std::shared_ptr<CPS::EMT::Ph3::ControlledVoltageSource>,
310 py::multiple_inheritance())
311 .def(py::init<std::string>())
312 .def(py::init<std::string, CPS::Logger::Level>())
313 .def(
"set_parameters",
314 py::overload_cast<CPS::Matrix>(
322 std::shared_ptr<CPS::EMT::Ph3::CurrentSource>,
324 py::multiple_inheritance())
325 .def(py::init<std::string>())
326 .def(py::init<std::string, CPS::Logger::Level>())
327 .def(
"set_parameters",
328 py::overload_cast<CPS::MatrixComp, CPS::Real>(
330 "I_ref"_a,
"f_src"_a = 50)
337 py::class_<CPS::EMT::Ph3::Resistor, std::shared_ptr<CPS::EMT::Ph3::Resistor>,
339 py::multiple_inheritance())
340 .def(py::init<std::string>())
341 .def(py::init<std::string, CPS::Logger::Level>())
346 std::shared_ptr<CPS::EMT::Ph3::Capacitor>,
348 py::multiple_inheritance())
349 .def(py::init<std::string>())
350 .def(py::init<std::string, CPS::Logger::Level>())
354 py::class_<CPS::EMT::Ph3::Inductor, std::shared_ptr<CPS::EMT::Ph3::Inductor>,
356 py::multiple_inheritance())
357 .def(py::init<std::string>())
358 .def(py::init<std::string, CPS::Logger::Level>())
363 std::shared_ptr<CPS::EMT::Ph3::NetworkInjection>,
365 py::multiple_inheritance())
366 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
367 "loglevel"_a = CPS::Logger::Level::off)
368 .def(
"set_parameters",
369 py::overload_cast<CPS::MatrixComp, CPS::Real>(
371 "V_ref"_a,
"f_src"_a = 50)
374 py::class_<CPS::EMT::Ph3::PiLine, std::shared_ptr<CPS::EMT::Ph3::PiLine>,
376 py::multiple_inheritance())
377 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
378 "loglevel"_a = CPS::Logger::Level::off)
380 "series_resistance"_a,
"series_inductance"_a,
385 py::class_<CPS::EMT::Ph3::RXLoad, std::shared_ptr<CPS::EMT::Ph3::RXLoad>,
387 py::multiple_inheritance())
388 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
389 "loglevel"_a = CPS::Logger::Level::off)
391 "active_power"_a,
"reactive_power"_a,
"volt"_a,
393 "reactance_in_series"_a =
false)
396 py::class_<CPS::EMT::Ph3::Shunt, std::shared_ptr<CPS::EMT::Ph3::Shunt>,
398 py::multiple_inheritance())
399 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
400 "loglevel"_a = CPS::Logger::Level::off)
401 .def(
"set_parameters",
407 py::class_<CPS::EMT::Ph3::Switch, std::shared_ptr<CPS::EMT::Ph3::Switch>,
409 mEMTPh3,
"Switch", py::multiple_inheritance())
410 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
411 "loglevel"_a = CPS::Logger::Level::off)
413 "open_resistance"_a,
"closed_resistance"_a,
421 std::shared_ptr<CPS::EMT::Ph3::SynchronGeneratorIdeal>,
423 py::multiple_inheritance())
424 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
425 "loglevel"_a = CPS::Logger::Level::off)
429 std::shared_ptr<CPS::EMT::Ph3::SynchronGeneratorDQTrapez>,
431 py::multiple_inheritance())
432 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
433 "loglevel"_a = CPS::Logger::Level::off)
434 .def(
"set_parameters_operational_per_unit",
436 setParametersOperationalPerUnit,
437 "nom_power"_a,
"nom_volt"_a,
"nom_freq"_a,
"pole_number"_a,
438 "nom_field_cur"_a,
"Rs"_a,
"Ld"_a,
"Lq"_a,
"Ld_t"_a,
"Lq_t"_a,
439 "Ld_s"_a,
"Lq_s"_a,
"Ll"_a,
"Td0_t"_a,
"Tq0_t"_a,
"Td0_s"_a,
440 "Tq0_s"_a,
"inertia"_a)
441 .def(
"set_parameters_fundamental_per_unit",
443 setParametersFundamentalPerUnit,
444 "nom_power"_a,
"nom_volt"_a,
"nom_freq"_a,
"pole_number"_a,
445 "nom_field_cur"_a,
"Rs"_a,
"Ll"_a,
"Lmd"_a,
"Lmq"_a,
"Rfd"_a,
446 "Llfd"_a,
"Rkd"_a,
"Llkd"_a,
"Rkq1"_a,
"Llkq1"_a,
"Rkq2"_a,
447 "Llkq2"_a,
"inertia"_a,
"init_active_power"_a,
448 "init_reactive_power"_a,
"init_terminal_volt"_a,
"init_volt_angle"_a,
451 .def(
"apply_parameters_from_json",
452 [](std::shared_ptr<CPS::EMT::Ph3::SynchronGeneratorDQTrapez> syngen,
454 DPsim::Utils::applySynchronousGeneratorParametersFromJson(
455 json::parse(json), syngen);
458 .def(
"set_initial_values",
460 "init_active_power"_a,
"init_reactive_power"_a,
461 "init_terminal_volt"_a,
"init_volt_angle"_a,
"init_mech_power"_a);
464 std::shared_ptr<CPS::EMT::Ph3::VSIVoltageControlVCO>,
466 py::multiple_inheritance())
467 .def(py::init<std::string>())
468 .def(py::init<std::string, CPS::Logger::Level>())
469 .def(py::init<std::string, std::string, CPS::Logger::Level, CPS::Bool>(),
470 "uid"_a,
"name"_a,
"log_level"_a = CPS::Logger::Level::off,
471 py::arg(
"with_trafo") =
false)
472 .def(
"set_parameters",
474 "vd_ref"_a,
"vq_ref"_a)
475 .def(
"set_controller_parameters",
477 "kp_voltage_ctrl"_a,
"ki_voltage_ctrl"_a,
"kp_curr_ctrl"_a,
478 "ki_curr_ctrl"_a,
"omega_nominal"_a)
479 .def(
"set_transformer_parameters",
481 "nom_voltage_end1"_a,
"nom_voltage_end2"_a,
"rated_power"_a,
482 "ratio_abs"_a,
"ratio_phase"_a,
"resistance"_a,
"inductance"_a,
484 .def(
"set_filter_parameters",
486 "cf"_a,
"rf"_a,
"rc"_a)
487 .def(
"set_initial_state_values",
489 "phi_d_init"_a,
"phi_q_init"_a,
"gamma_d_init"_a,
"gamma_q_init"_a)
495 std::shared_ptr<CPS::EMT::Ph3::ReducedOrderSynchronGeneratorVBR>,
497 mEMTPh3,
"ReducedOrderSynchronGeneratorVBR", py::multiple_inheritance());
500 std::shared_ptr<CPS::EMT::Ph3::SynchronGenerator3OrderVBR>,
502 mEMTPh3,
"SynchronGenerator3OrderVBR", py::multiple_inheritance())
503 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
504 "loglevel"_a = CPS::Logger::Level::off)
505 .def(
"set_operational_parameters_per_unit",
510 setOperationalParametersPerUnit),
511 "nom_power"_a,
"nom_voltage"_a,
"nom_frequency"_a,
"H"_a,
"Ld"_a,
512 "Lq"_a,
"L0"_a,
"Ld_t"_a,
"Td0_t"_a)
516 std::shared_ptr<CPS::EMT::Ph3::SynchronGenerator4OrderVBR>,
518 mEMTPh3,
"SynchronGenerator4OrderVBR", py::multiple_inheritance())
519 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
520 "loglevel"_a = CPS::Logger::Level::off)
521 .def(
"set_operational_parameters_per_unit",
526 setOperationalParametersPerUnit),
527 "nom_power"_a,
"nom_voltage"_a,
"nom_frequency"_a,
"H"_a,
"Ld"_a,
528 "Lq"_a,
"L0"_a,
"Ld_t"_a,
"Lq_t"_a,
"Td0_t"_a,
"Tq0_t"_a)
532 std::shared_ptr<CPS::EMT::Ph3::SynchronGenerator5OrderVBR>,
534 mEMTPh3,
"SynchronGenerator5OrderVBR", py::multiple_inheritance())
535 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
536 "loglevel"_a = CPS::Logger::Level::off)
537 .def(
"set_operational_parameters_per_unit",
543 setOperationalParametersPerUnit),
544 "nom_power"_a,
"nom_voltage"_a,
"nom_frequency"_a,
"H"_a,
"Ld"_a,
545 "Lq"_a,
"L0"_a,
"Ld_t"_a,
"Lq_t"_a,
"Td0_t"_a,
"Tq0_t"_a,
"Ld_s"_a,
546 "Lq_s"_a,
"Td0_s"_a,
"Tq0_s"_a,
"Taa"_a)
550 std::shared_ptr<CPS::EMT::Ph3::SynchronGenerator6aOrderVBR>,
552 mEMTPh3,
"SynchronGenerator6aOrderVBR", py::multiple_inheritance())
553 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
554 "loglevel"_a = CPS::Logger::Level::off)
555 .def(
"set_operational_parameters_per_unit",
561 setOperationalParametersPerUnit),
562 "nom_power"_a,
"nom_voltage"_a,
"nom_frequency"_a,
"H"_a,
"Ld"_a,
563 "Lq"_a,
"L0"_a,
"Ld_t"_a,
"Lq_t"_a,
"Td0_t"_a,
"Tq0_t"_a,
"Ld_s"_a,
564 "Lq_s"_a,
"Td0_s"_a,
"Tq0_s"_a,
"Taa"_a)
568 std::shared_ptr<CPS::EMT::Ph3::SynchronGenerator6bOrderVBR>,
570 mEMTPh3,
"SynchronGenerator6bOrderVBR", py::multiple_inheritance())
571 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
572 "loglevel"_a = CPS::Logger::Level::off)
573 .def(
"set_operational_parameters_per_unit",
579 setOperationalParametersPerUnit),
580 "nom_power"_a,
"nom_voltage"_a,
"nom_frequency"_a,
"H"_a,
"Ld"_a,
581 "Lq"_a,
"L0"_a,
"Ld_t"_a,
"Lq_t"_a,
"Td0_t"_a,
"Tq0_t"_a,
"Ld_s"_a,
582 "Lq_s"_a,
"Td0_s"_a,
"Tq0_s"_a,
"Taa"_a = 0)
588 std::shared_ptr<CPS::EMT::Ph3::SynchronGeneratorDQODE>,
590 py::multiple_inheritance())
591 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
592 "loglevel"_a = CPS::Logger::Level::off)
593 .def(
"set_parameters_operational_per_unit",
595 setParametersOperationalPerUnit,
596 "nom_power"_a,
"nom_volt"_a,
"nom_freq"_a,
"pole_number"_a,
597 "nom_field_cur"_a,
"Rs"_a,
"Ld"_a,
"Lq"_a,
"Ld_t"_a,
"Lq_t"_a,
598 "Ld_s"_a,
"Lq_s"_a,
"Ll"_a,
"Td0_t"_a,
"Tq0_t"_a,
"Td0_s"_a,
599 "Tq0_s"_a,
"inertia"_a)
600 .def(
"set_parameters_fundamental_per_unit",
602 setParametersFundamentalPerUnit,
603 "nom_power"_a,
"nom_volt"_a,
"nom_freq"_a,
"pole_number"_a,
604 "nom_field_cur"_a,
"Rs"_a,
"Ll"_a,
"Lmd"_a,
"Lmq"_a,
"Rfd"_a,
605 "Llfd"_a,
"Rkd"_a,
"Llkd"_a,
"Rkq1"_a,
"Llkq1"_a,
"Rkq2"_a,
606 "Llkq2"_a,
"inertia"_a,
"init_active_power"_a,
607 "init_reactive_power"_a,
"init_terminal_volt"_a,
"init_volt_angle"_a,
610 .def(
"apply_parameters_from_json",
611 [](std::shared_ptr<CPS::EMT::Ph3::SynchronGeneratorDQODE> syngen,
613 DPsim::Utils::applySynchronousGeneratorParametersFromJson(
614 json::parse(json), syngen);
617 .def(
"set_initial_values",
619 "init_active_power"_a,
"init_reactive_power"_a,
620 "init_terminal_volt"_a,
"init_volt_angle"_a,
"init_mech_power"_a);
625 std::shared_ptr<CPS::EMT::Ph3::AvVoltageSourceInverterDQ>,
627 py::multiple_inheritance())
628 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
629 "loglevel"_a = CPS::Logger::Level::off)
630 .def(py::init<std::string, std::string, CPS::Logger::Level, CPS::Bool>(),
631 "uid"_a,
"name"_a,
"loglevel"_a = CPS::Logger::Level::off,
633 "with_trafo"_a =
false)
634 .def(
"set_parameters",
636 "sys_omega"_a,
"sys_volt_nom"_a,
"p_ref"_a,
"q_ref"_a)
637 .def(
"set_filter_parameters",
639 "Lf"_a,
"Cf"_a,
"Rf"_a,
"Rc"_a)
640 .def(
"set_controller_parameters",
642 "Kp_pll"_a,
"Ki_pll"_a,
"Kp_power_ctrl"_a,
"Ki_power_ctrl"_a,
643 "Kp_curr_ctrl"_a,
"Ki_curr_ctrl"_a,
"omega_cutoff"_a)
644 .def(
"set_transformer_parameters",
646 "nom_voltage_end_1"_a,
"nom_voltage_end_2"_a,
"rated_power"_a,
647 "ratio_abs"_a,
"ratio_phase"_a,
"resistance"_a,
"inductance"_a,
649 .def(
"set_initial_state_values",
651 "p_init"_a,
"q_init"_a,
"phi_d_init"_a,
"phi_q_init"_a,
652 "gamma_d_init"_a,
"gamma_q_init"_a)
658 std::shared_ptr<CPS::EMT::Ph3::Transformer>,
660 py::multiple_inheritance())
661 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
662 "loglevel"_a = CPS::Logger::Level::off)
663 .def(py::init<std::string, std::string, CPS::Logger::Level, CPS::Bool>(),
664 "uid"_a,
"name"_a,
"loglevel"_a = CPS::Logger::Level::off,
666 "with_resistive_losses"_a =
false)
668 "nom_voltage_end_1"_a,
"nom_voltage_end_2"_a,
"rated_power"_a,
669 "ratio_abs"_a,
"ratio_phase"_a,
"resistance"_a,
"inductance"_a)
673 std::shared_ptr<CPS::EMT::Ph3::SeriesResistor>,
675 py::multiple_inheritance())
676 .def(py::init<std::string>())
677 .def(py::init<std::string, CPS::Logger::Level>())
683 std::shared_ptr<CPS::EMT::Ph3::SeriesSwitch>,
685 mEMTPh3,
"SeriesSwitch", py::multiple_inheritance())
686 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
687 "loglevel"_a = CPS::Logger::Level::off)
689 "open_resistance"_a,
"closed_resistance"_a,
697 std::shared_ptr<CPS::EMT::Ph3::SSN::Full_Serial_RLC>,
699 py::multiple_inheritance())
700 .def(py::init<std::string>())
701 .def(py::init<std::string, CPS::Logger::Level>())
702 .def(
"set_parameters",
714 std::shared_ptr<CPS::EMT::Ph3::GenericTwoTerminalVTypeSSN>,
716 mEMTPh3,
"GenericTwoTerminalVTypeSSN", py::multiple_inheritance())
717 .def(py::init<std::string>())
718 .def(py::init<std::string, CPS::Logger::Level>())
719 .def(
"set_parameters",
726 std::shared_ptr<CPS::EMT::Ph3::GenericTwoTerminalITypeSSN>,
728 mEMTPh3,
"GenericTwoTerminalITypeSSN", py::multiple_inheritance())
729 .def(py::init<std::string>())
730 .def(py::init<std::string, CPS::Logger::Level>())
731 .def(
"set_parameters",
738 std::shared_ptr<CPS::EMT::Ph3::PiecewiseLinearInductor>,
740 py::multiple_inheritance())
741 .def(py::init<std::string>())
742 .def(py::init<std::string, CPS::Logger::Level>())
743 .def(
"set_parameters",
745 "flux_breakpoints"_a,
"current_breakpoints"_a)
750 std::shared_ptr<CPS::EMT::Ph3::AvVoltSourceInverterStateSpace>,
752 mEMTPh3,
"AvVoltSourceInverterStateSpace", py::multiple_inheritance())
753 .def(py::init<std::string, CPS::Logger::Level>(),
"name"_a,
754 "loglevel"_a = CPS::Logger::Level::off)
755 .def(py::init<std::string, std::string, CPS::Logger::Level>(),
"uid"_a,
756 "name"_a,
"loglevel"_a = CPS::Logger::Level::off)
757 .def(
"set_parameters",
759 "Lf"_a,
"Cf"_a,
"Rf"_a,
"Rc"_a,
"omega_n"_a,
"Kp_pll"_a,
"Ki_pll"_a,
760 "omega_cutoff"_a,
"p_ref"_a,
"q_ref"_a,
"Kp_power_ctrl"_a,
761 "Ki_power_ctrl"_a,
"Kp_curr_ctrl"_a,
"Ki_curr_ctrl"_a)
768 .def_property_readonly(
"p_inst",
770 .def_property_readonly(
"q_inst",
772 .def_property_readonly(
"omega_pll",
775 py::class_<CPS::EMT::Ph3::SSN_GFM, std::shared_ptr<CPS::EMT::Ph3::SSN_GFM>,
777 py::multiple_inheritance())
778 .def(py::init<std::string, std::string, CPS::Logger::Level>(),
"uid"_a,
779 "name"_a,
"log_level"_a = CPS::Logger::Level::off)
781 "cf"_a,
"rf"_a,
"rc"_a,
"nominal_voltage"_a,
"omega_nominal"_a,
782 "p_ref"_a,
"q_ref"_a,
"virtual_inertia"_a,
"damping_coefficient"_a,
783 "voltage_droop_gain"_a,
"reactive_integral_gain"_a,
"kp_voltage"_a,
784 "ki_voltage"_a,
"kp_current"_a,
"ki_current"_a,
785 "active_damping_gain"_a,
"power_filter_cutoff"_a,
787 .def(
"set_numerical_linearization_parameters",
789 "relative_step"_a = 1e-6,
"absolute_step"_a = 1e-8)
790 .def(
"set_virtual_impedance",
792 "virtual_reactance"_a = 0.0)
793 .def(
"set_grid_current_feedforward",
795 .def(
"set_reactive_power_droop",
802 .def(
"get_interface_voltage",
804 .def(
"get_interface_current",
806 .def_property_readonly(
"p_inst",
808 .def_property_readonly(
"q_inst",
810 .def_property_readonly(
"omega_gfm",
812 .def_property_readonly(
"theta_gfm",
814 .def_property_readonly(
815 "voltage_magnitude_gfm",
819 .def_property_readonly(
"i_grid_d",
821 .def_property_readonly(
"i_grid_q",
825 .def_property_readonly(
"v_ref_d",
827 .def_property_readonly(
"v_ref_q",
831 std::shared_ptr<CPS::EMT::Ph3::SSN::Capacitor>,
833 py::multiple_inheritance())
834 .def(py::init<std::string>())
835 .def(py::init<std::string, CPS::Logger::Level>())
843 std::shared_ptr<CPS::EMT::Ph3::GenericFourTerminalVTypeSSN>,
845 mEMTPh3,
"GenericFourTerminalVTypeSSN", py::multiple_inheritance())
846 .def(py::init<std::string>())
847 .def(py::init<std::string, CPS::Logger::Level>())
848 .def(
"set_parameters",