deltaFlow
SolverFactory.C
Go to the documentation of this file.
1/*
2 * Copyright (c) 2024 Saud Zahir
3 *
4 * This file is part of deltaFlow.
5 *
6 * deltaFlow is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public
8 * License as published by the Free Software Foundation; either
9 * version 3 of the License, or (at your option) any later version.
10 *
11 * deltaFlow is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public
17 * License along with deltaFlow. If not, see
18 * <https://www.gnu.org/licenses/>.
19 */
20
21#include "SolverFactory.H"
22
23#include "Argparse.H"
24#include "GaussSeidel.H"
25#include "NewtonRaphson.H"
26
27std::unique_ptr<ISolver> SolverFactory::create(SolverType type) {
28 switch (type) {
30 return std::make_unique<GaussSeidel>();
32 default:
33 return std::make_unique<NewtonRaphson>();
34 }
35}
Command-line argument parsing utilities for deltaFlow.
SolverType
Types of solvers supported by deltaFlow.
Definition Argparse.H:43
@ NewtonRaphson
Newton-Raphson iterative method.
@ GaussSeidel
Gauss-Seidel iterative method.
Declaration of the Gauss-Seidel load flow solver for power system analysis.
Declaration of the Newton-Raphson load flow solver for power system analysis.
Factory for constructing ISolver instances from SolverType, so callers (e.g.
static std::unique_ptr< ISolver > create(SolverType type)
Construct a concrete solver for the given solver type.