2323#include < Model/PhasorDynamics/SynchronousMachine/GENROUwS/Genrou.hpp>
2424#include < Model/PhasorDynamics/SynchronousMachine/GENROUwS/GenrouData.hpp>
2525#include < Model/PhasorDynamics/SystemModel.hpp>
26+ #include < Model/PhasorDynamics/SystemModelData.hpp>
2627#include < Solver/Dynamic/Ida.hpp>
2728#include < Utilities/Testing.hpp>
2829
@@ -40,68 +41,72 @@ int main()
4041 //
4142 // Create model data
4243 //
43- BusData<real_type, index_type> bus_data_1;
44- bus_data_1.Vr0 = 0.9949877346411762 ;
45- bus_data_1.Vi0 = 0.09999703952427966 ;
46-
47- BusData<real_type, index_type> bus_data_2;
48- bus_data_2.Vr0 = 1.0 ;
49- bus_data_2.Vi0 = 0.0 ;
50-
51- BranchData<real_type, index_type> branch_data_1_2;
52- branch_data_1_2.R = 0.0 ;
53- branch_data_1_2.X = 0.1 ;
54- branch_data_1_2.G = 0.0 ;
55- branch_data_1_2.B = 0.0 ;
56-
57- GenrouData<real_type, index_type> gen_data_1;
58- gen_data_1.unit_id = 1 ;
59- gen_data_1.p0 = 1 .;
60- gen_data_1.q0 = 0.05013 ;
61- gen_data_1.H = 3 .;
62- gen_data_1.D = 0 .;
63- gen_data_1.Ra = 0 .;
64- gen_data_1.Tdop = 7 .;
65- gen_data_1.Tdopp = .04 ;
66- gen_data_1.Tqopp = .05 ;
67- gen_data_1.Tqop = .75 ;
68- gen_data_1.Xd = 2.1 ;
69- gen_data_1.Xdp = 0.2 ;
70- gen_data_1.Xdpp = 0.18 ;
71- gen_data_1.Xq = 0.5 ;
72- gen_data_1.Xqp = 0.5 ;
73- gen_data_1.Xqpp = 0.18 ;
74- gen_data_1.Xl = 0.15 ;
75- gen_data_1.S10 = 0 .;
76- gen_data_1.S12 = 0 .;
77-
78- BusFaultData<real_type, index_type> bus_fault_data_1;
79- bus_fault_data_1.R = 0.0 ;
80- bus_fault_data_1.X = 1e-3 ;
81- bus_fault_data_1.status = false ;
8244
83- //
84- // Instantiate model components
85- //
86-
87- Bus<scalar_type, size_t > bus1 (bus_data_1);
88- BusInfinite<scalar_type, size_t > bus2 (bus_data_2);
89- Branch<scalar_type, size_t > branch (&bus1, &bus2, branch_data_1_2);
90- BusFault<scalar_type, size_t > fault (&bus1, bus_fault_data_1);
91- Genrou<scalar_type, size_t > gen (&bus1, gen_data_1);
45+ SystemModelData<scalar_type, index_type> data;
46+
47+ // Set bus data
48+ data.bus .resize (2 );
49+
50+ data.bus [0 ].bus_id = 0 ;
51+ data.bus [0 ].bus_type = BusData<scalar_type, index_type>::DEFAULT ;
52+ data.bus [0 ].Vr0 = 0.9949877346411762 ;
53+ data.bus [0 ].Vi0 = 0.09999703952427966 ;
54+
55+ data.bus [1 ].bus_id = 1 ;
56+ data.bus [1 ].bus_type = BusData<scalar_type, index_type>::SLACK ;
57+ data.bus [1 ].Vr0 = 1.0 ;
58+ data.bus [1 ].Vi0 = 0.0 ;
59+
60+ // Set branch data
61+ data.branch .resize (1 );
62+
63+ data.branch [0 ].bus1_id = data.bus [0 ].bus_id ;
64+ data.branch [0 ].bus2_id = data.bus [1 ].bus_id ;
65+ data.branch [0 ].R = 0.0 ;
66+ data.branch [0 ].X = 0.1 ;
67+ data.branch [0 ].G = 0.0 ;
68+ data.branch [0 ].B = 0.0 ;
69+
70+ // Set generator data
71+ data.genrou .resize (1 );
72+
73+ data.genrou [0 ].unit_id = 1 ;
74+ data.genrou [0 ].p0 = 1 .;
75+ data.genrou [0 ].q0 = 0.05013 ;
76+ data.genrou [0 ].H = 3 .;
77+ data.genrou [0 ].D = 0 .;
78+ data.genrou [0 ].Ra = 0 .;
79+ data.genrou [0 ].Tdop = 7 .;
80+ data.genrou [0 ].Tdopp = .04 ;
81+ data.genrou [0 ].Tqopp = .05 ;
82+ data.genrou [0 ].Tqop = .75 ;
83+ data.genrou [0 ].Xd = 2.1 ;
84+ data.genrou [0 ].Xdp = 0.2 ;
85+ data.genrou [0 ].Xdpp = 0.18 ;
86+ data.genrou [0 ].Xq = 0.5 ;
87+ data.genrou [0 ].Xqp = 0.5 ;
88+ data.genrou [0 ].Xqpp = 0.18 ;
89+ data.genrou [0 ].Xl = 0.15 ;
90+ data.genrou [0 ].S10 = 0 .;
91+ data.genrou [0 ].S12 = 0 .;
92+
93+ // Add faults
94+ data.bus_fault .resize (1 );
95+
96+ data.bus_fault [0 ].R = 0.0 ;
97+ data.bus_fault [0 ].X = 1e-3 ;
98+ data.bus_fault [0 ].status = false ;
9299
93100 //
94- // Create the 2-bus system
101+ // Instantiate system model
95102 //
96103
97- SystemModel<scalar_type, size_t > sys;
98- sys.addBus (&bus1);
99- sys.addBus (&bus2);
100- sys.addComponent (&branch);
101- sys.addComponent (&fault);
102- sys.addComponent (&gen);
104+ SystemModel<scalar_type, index_type> sys (data);
103105 sys.allocate ();
104106
107+ // Get access to the fault
108+ auto * fault = sys.getBusFault (0 );
109+
105110 // Set time step to 1/4 of a 60Hz cycle
106111 real_type dt = 1.0 / 4.0 / 60.0 ;
107112
@@ -153,13 +158,13 @@ int main()
153158 ida.runSimulation (1.0 , nout, output_cb);
154159
155160 // Introduce fault and run for the next 0.1s
156- fault. setStatus (true );
161+ fault-> setStatus (true );
157162 ida.initializeSimulation (1.0 , false );
158163 nout = static_cast <int >(std::round ((1.1 - 1.0 ) / dt));
159164 ida.runSimulation (1.1 , nout, output_cb);
160165
161166 // Clear the fault and run until t = 10s.
162- fault. setStatus (false );
167+ fault-> setStatus (false );
163168 ida.initializeSimulation (1.1 , false );
164169 nout = static_cast <int >(std::round ((10.0 - 1.1 ) / dt));
165170 ida.runSimulation (10.0 , nout, output_cb);
0 commit comments