Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions examples/PhasorDynamics/Example1/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ target_link_libraries(phasordynamics_example1
GRIDKIT::phasor_dynamics_bus_fault
GRIDKIT::phasor_dynamics_branch
GRIDKIT::phasor_dynamics_genrou
GRIDKIT::phasor_dynamics_load
GRIDKIT::solvers_dyn)
install(TARGETS phasordynamics_example1 RUNTIME DESTINATION bin)

Expand Down
119 changes: 62 additions & 57 deletions examples/PhasorDynamics/Example1/example1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include <Model/PhasorDynamics/SynchronousMachine/GENROUwS/Genrou.hpp>
#include <Model/PhasorDynamics/SynchronousMachine/GENROUwS/GenrouData.hpp>
#include <Model/PhasorDynamics/SystemModel.hpp>
#include <Model/PhasorDynamics/SystemModelData.hpp>
#include <Solver/Dynamic/Ida.hpp>
#include <Utilities/Testing.hpp>

Expand All @@ -40,68 +41,72 @@ int main()
//
// Create model data
//
BusData<real_type, index_type> bus_data_1;
bus_data_1.Vr0 = 0.9949877346411762;
bus_data_1.Vi0 = 0.09999703952427966;

BusData<real_type, index_type> bus_data_2;
bus_data_2.Vr0 = 1.0;
bus_data_2.Vi0 = 0.0;

BranchData<real_type, index_type> branch_data_1_2;
branch_data_1_2.R = 0.0;
branch_data_1_2.X = 0.1;
branch_data_1_2.G = 0.0;
branch_data_1_2.B = 0.0;

GenrouData<real_type, index_type> gen_data_1;
gen_data_1.unit_id = 1;
gen_data_1.p0 = 1.;
gen_data_1.q0 = 0.05013;
gen_data_1.H = 3.;
gen_data_1.D = 0.;
gen_data_1.Ra = 0.;
gen_data_1.Tdop = 7.;
gen_data_1.Tdopp = .04;
gen_data_1.Tqopp = .05;
gen_data_1.Tqop = .75;
gen_data_1.Xd = 2.1;
gen_data_1.Xdp = 0.2;
gen_data_1.Xdpp = 0.18;
gen_data_1.Xq = 0.5;
gen_data_1.Xqp = 0.5;
gen_data_1.Xqpp = 0.18;
gen_data_1.Xl = 0.15;
gen_data_1.S10 = 0.;
gen_data_1.S12 = 0.;

BusFaultData<real_type, index_type> bus_fault_data_1;
bus_fault_data_1.R = 0.0;
bus_fault_data_1.X = 1e-3;
bus_fault_data_1.status = false;

//
// Instantiate model components
//

Bus<scalar_type, size_t> bus1(bus_data_1);
BusInfinite<scalar_type, size_t> bus2(bus_data_2);
Branch<scalar_type, size_t> branch(&bus1, &bus2, branch_data_1_2);
BusFault<scalar_type, size_t> fault(&bus1, bus_fault_data_1);
Genrou<scalar_type, size_t> gen(&bus1, gen_data_1);
SystemModelData<scalar_type, index_type> data;

// Set bus data
data.bus.resize(2);

data.bus[0].bus_id = 0;
data.bus[0].bus_type = BusData<scalar_type, index_type>::DEFAULT;
data.bus[0].Vr0 = 0.9949877346411762;
data.bus[0].Vi0 = 0.09999703952427966;

data.bus[1].bus_id = 1;
data.bus[1].bus_type = BusData<scalar_type, index_type>::SLACK;
data.bus[1].Vr0 = 1.0;
data.bus[1].Vi0 = 0.0;

// Set branch data
data.branch.resize(1);

data.branch[0].bus1_id = data.bus[0].bus_id;
data.branch[0].bus2_id = data.bus[1].bus_id;
data.branch[0].R = 0.0;
data.branch[0].X = 0.1;
data.branch[0].G = 0.0;
data.branch[0].B = 0.0;

// Set generator data
data.genrou.resize(1);

data.genrou[0].unit_id = 1;
data.genrou[0].p0 = 1.;
data.genrou[0].q0 = 0.05013;
data.genrou[0].H = 3.;
data.genrou[0].D = 0.;
data.genrou[0].Ra = 0.;
data.genrou[0].Tdop = 7.;
data.genrou[0].Tdopp = .04;
data.genrou[0].Tqopp = .05;
data.genrou[0].Tqop = .75;
data.genrou[0].Xd = 2.1;
data.genrou[0].Xdp = 0.2;
data.genrou[0].Xdpp = 0.18;
data.genrou[0].Xq = 0.5;
data.genrou[0].Xqp = 0.5;
data.genrou[0].Xqpp = 0.18;
data.genrou[0].Xl = 0.15;
data.genrou[0].S10 = 0.;
data.genrou[0].S12 = 0.;

// Add faults
data.bus_fault.resize(1);

data.bus_fault[0].R = 0.0;
data.bus_fault[0].X = 1e-3;
data.bus_fault[0].status = false;

//
// Create the 2-bus system
// Instantiate system model
//

SystemModel<scalar_type, size_t> sys;
sys.addBus(&bus1);
sys.addBus(&bus2);
sys.addComponent(&branch);
sys.addComponent(&fault);
sys.addComponent(&gen);
SystemModel<scalar_type, index_type> sys(data);
sys.allocate();

// Get access to the fault
auto* fault = sys.getBusFault(0);

// Set time step to 1/4 of a 60Hz cycle
real_type dt = 1.0 / 4.0 / 60.0;

Expand Down Expand Up @@ -153,13 +158,13 @@ int main()
ida.runSimulation(1.0, nout, output_cb);

// Introduce fault and run for the next 0.1s
fault.setStatus(true);
fault->setStatus(true);
ida.initializeSimulation(1.0, false);
nout = static_cast<int>(std::round((1.1 - 1.0) / dt));
ida.runSimulation(1.1, nout, output_cb);

// Clear the fault and run until t = 10s.
fault.setStatus(false);
fault->setStatus(false);
ida.initializeSimulation(1.1, false);
nout = static_cast<int>(std::round((10.0 - 1.1) / dt));
ida.runSimulation(10.0, nout, output_cb);
Expand Down
Loading
Loading