| 238 | } // namespace power_grid_model::benchmark |
| 239 | |
| 240 | int main(int /* argc */, char** /* argv */) { |
| 241 | using enum power_grid_model::CalculationType; |
| 242 | using enum power_grid_model::CalculationMethod; |
| 243 | using enum power_grid_model::CalculationSymmetry; |
| 244 | using enum power_grid_model::OptimizerType; |
| 245 | |
| 246 | power_grid_model::benchmark::PowerGridBenchmark benchmarker{}; |
| 247 | power_grid_model::benchmark::Option option{}; |
| 248 | |
| 249 | #ifndef NDEBUG |
| 250 | option.n_node_total_specified = 200; |
| 251 | option.n_mv_feeder = 3; |
| 252 | option.n_node_per_mv_feeder = 6; |
| 253 | option.n_lv_feeder = 2; |
| 254 | option.n_connection_per_lv_feeder = 4; |
| 255 | power_grid_model::Idx constexpr batch_size = 10; |
| 256 | #else |
| 257 | option.n_node_total_specified = 1500; |
| 258 | option.n_mv_feeder = 20; |
| 259 | option.n_node_per_mv_feeder = 10; |
| 260 | option.n_lv_feeder = 10; |
| 261 | option.n_connection_per_lv_feeder = 40; |
| 262 | power_grid_model::Idx constexpr batch_size = 1000; |
| 263 | #endif |
| 264 | |
| 265 | std::cout << "\n\n##### BENCHMARK POWER FLOW #####\n\n"; |
| 266 | option.has_measurements = false; |
| 267 | option.has_fault = false; |
| 268 | option.has_tap_changer = false; |
| 269 | |
| 270 | // radial |
| 271 | option.has_mv_ring = false; |
| 272 | option.has_lv_ring = false; |
| 273 | benchmarker.run_benchmark( |
| 274 | option, |
| 275 | {.calculation_type = power_flow, .calculation_symmetry = symmetric, .calculation_method = newton_raphson}, |
| 276 | batch_size); |
| 277 | benchmarker.run_benchmark(option, |
| 278 | {.calculation_type = power_flow, |
| 279 | .calculation_symmetry = symmetric, |
| 280 | .calculation_method = newton_raphson, |
| 281 | .threading = 6}, |
| 282 | batch_size); |
| 283 | benchmarker.run_benchmark( |
| 284 | option, {.calculation_type = power_flow, .calculation_symmetry = symmetric, .calculation_method = linear}); |
| 285 | benchmarker.run_benchmark( |
| 286 | option, |
| 287 | {.calculation_type = power_flow, .calculation_symmetry = symmetric, .calculation_method = linear_current}); |
| 288 | benchmarker.run_benchmark(option, {.calculation_type = power_flow, |
| 289 | .calculation_symmetry = symmetric, |
| 290 | .calculation_method = iterative_current, |
| 291 | .max_iter = 100}); |
| 292 | benchmarker.run_benchmark( |
| 293 | option, |
| 294 | {.calculation_type = power_flow, .calculation_symmetry = asymmetric, .calculation_method = newton_raphson}); |
| 295 | benchmarker.run_benchmark( |
| 296 | option, {.calculation_type = power_flow, .calculation_symmetry = asymmetric, .calculation_method = linear}); |
| 297 | benchmarker.run_benchmark( |
nothing calls this directly
no test coverage detected