Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revision of power flow solver #284

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class NetworkInjection : public CompositePowerComp<Complex>,

// #### Powerflow section ####
/// Base voltage [V]
Real mBaseVoltage;
const Attribute<Real>::Ptr mBaseVoltage;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see this is done the same way for the other components, but does mBaseVoltage really need to be of Attribute<Real>::Ptr type? ls there a specific functionality of Attributes that you'd like to use for mBaseVoltage, like logging, interfacing or task scheduling?
If you just want to get the value of mBaseVoltage in PFSolver.cpp a more readable solution could be to have a getter function:

public:
    // Getter for mBaseVoltage
    Real getBaseVoltage() const {
        return mBaseVoltage;
    }


public:
const Attribute<Complex>::Ptr mVoltageRef;
Expand Down Expand Up @@ -127,4 +127,4 @@ class NetworkInjection : public CompositePowerComp<Complex>,
};
} // namespace Ph1
} // namespace SP
} // namespace CPS
} // namespace CPS
4 changes: 2 additions & 2 deletions dpsim-models/src/DP/DP_Ph1_PiLine.cpp
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Now there are 23 changed files. But it looks like in most of the files there are just a couple of lines with changed formatting. And a new formatting is different from the .clang-format rules, applied to the rest of the codebase.
It seem that the files with changes, that have influence, are:

  • SP_Ph1_NetworkInjection.h,
  • SP_Ph1_NetworkInjection.cpp,
  • PFSolver.cpp
  • PFSolverPowerPolar.cpp

I would then suggest to limit this PR to these 4 files (hope, I did not miss anything)

Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
using namespace CPS;

DP::Ph1::PiLine::PiLine(String uid, String name, Logger::Level logLevel)
: Base::Ph1::PiLine(mAttributes),
CompositePowerComp<Complex>(uid, name, true, true, logLevel) {
: Base::Ph1::PiLine(mAttributes), CompositePowerComp<Complex>(
uid, name, true, true, logLevel) {
setVirtualNodeNumber(1);
setTerminalNumber(2);

Expand Down
4 changes: 2 additions & 2 deletions dpsim-models/src/DP/DP_Ph1_RxLine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
using namespace CPS;

DP::Ph1::RxLine::RxLine(String uid, String name, Logger::Level logLevel)
: Base::Ph1::PiLine(mAttributes),
CompositePowerComp<Complex>(uid, name, true, true, logLevel) {
: Base::Ph1::PiLine(mAttributes), CompositePowerComp<Complex>(
uid, name, true, true, logLevel) {
setVirtualNodeNumber(1);
setTerminalNumber(2);

Expand Down
5 changes: 3 additions & 2 deletions dpsim-models/src/DP/DP_Ph1_SynchronGeneratorTrStab.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ using namespace CPS;

DP::Ph1::SynchronGeneratorTrStab::SynchronGeneratorTrStab(
String uid, String name, Logger::Level logLevel)
: Base::SynchronGenerator(mAttributes),
CompositePowerComp<Complex>(uid, name, true, true, logLevel),
: Base::SynchronGenerator(mAttributes), CompositePowerComp<Complex>(
uid, name, true, true,
logLevel),
mEp(mAttributes->create<Complex>("Ep")),
mEp_abs(mAttributes->create<Real>("Ep_mag")),
mEp_phase(mAttributes->create<Real>("Ep_phase")),
Expand Down
5 changes: 3 additions & 2 deletions dpsim-models/src/DP/DP_Ph1_Transformer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@ using namespace CPS;
DP::Ph1::Transformer::Transformer(String uid, String name,
Logger::Level logLevel,
Bool withResistiveLosses)
: Base::Ph1::Transformer(mAttributes),
CompositePowerComp<Complex>(uid, name, true, true, logLevel) {
: Base::Ph1::Transformer(mAttributes), CompositePowerComp<Complex>(
uid, name, true, true,
logLevel) {
if (withResistiveLosses)
setVirtualNodeNumber(3);
else
Expand Down
5 changes: 3 additions & 2 deletions dpsim-models/src/DP/DP_Ph1_VoltageSourceNorton.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ using namespace CPS;

DP::Ph1::VoltageSourceNorton::VoltageSourceNorton(String uid, String name,
Logger::Level logLevel)
: Base::Ph1::VoltageSource(mAttributes),
MNASimPowerComp<Complex>(uid, name, true, true, logLevel),
: Base::Ph1::VoltageSource(mAttributes), MNASimPowerComp<Complex>(
uid, name, true, true,
logLevel),
mResistance(mAttributes->create<Real>("R")) {
setTerminalNumber(2);
**mIntfVoltage = MatrixComp::Zero(1, 1);
Expand Down
4 changes: 2 additions & 2 deletions dpsim-models/src/EMT/EMT_Ph3_PiLine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
using namespace CPS;

EMT::Ph3::PiLine::PiLine(String uid, String name, Logger::Level logLevel)
: Base::Ph3::PiLine(mAttributes),
CompositePowerComp<Real>(uid, name, true, true, logLevel) {
: Base::Ph3::PiLine(mAttributes), CompositePowerComp<Real>(uid, name, true,
true, logLevel) {
mPhaseType = PhaseType::ABC;
setVirtualNodeNumber(1);
setTerminalNumber(2);
Expand Down
4 changes: 2 additions & 2 deletions dpsim-models/src/EMT/EMT_Ph3_RxLine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ using namespace CPS;
// !!! with initialization from phase-to-phase RMS variables

EMT::Ph3::RxLine::RxLine(String uid, String name, Logger::Level logLevel)
: Base::Ph3::PiLine(mAttributes),
CompositePowerComp<Real>(uid, name, true, true, logLevel) {
: Base::Ph3::PiLine(mAttributes), CompositePowerComp<Real>(uid, name, true,
true, logLevel) {
mPhaseType = PhaseType::ABC;
setVirtualNodeNumber(1);
setTerminalNumber(2);
Expand Down
5 changes: 3 additions & 2 deletions dpsim-models/src/EMT/EMT_Ph3_SynchronGeneratorTrStab.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,9 @@ Matrix EMT::Ph3::SynchronGeneratorTrStab::getParkTransformMatrixPowerInvariant(

EMT::Ph3::SynchronGeneratorTrStab::SynchronGeneratorTrStab(
String uid, String name, Logger::Level logLevel)
: Base::SynchronGenerator(mAttributes),
CompositePowerComp<Real>(uid, name, true, true, logLevel),
: Base::SynchronGenerator(mAttributes), CompositePowerComp<Real>(uid, name,
true, true,
logLevel),
mEp(mAttributes->create<Complex>("Ep")),
mEp_abs(mAttributes->create<Real>("Ep_mag")),
mEp_phase(mAttributes->create<Real>("Ep_phase")),
Expand Down
5 changes: 3 additions & 2 deletions dpsim-models/src/EMT/EMT_Ph3_Transformer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@ using namespace CPS;
EMT::Ph3::Transformer::Transformer(String uid, String name,
Logger::Level logLevel,
Bool withResistiveLosses)
: Base::Ph3::Transformer(mAttributes),
CompositePowerComp<Real>(uid, name, true, true, logLevel) {
: Base::Ph3::Transformer(mAttributes), CompositePowerComp<Real>(uid, name,
true, true,
logLevel) {
mPhaseType = PhaseType::ABC;
if (withResistiveLosses)
setVirtualNodeNumber(3);
Expand Down
8 changes: 5 additions & 3 deletions dpsim-models/src/SP/SP_Ph1_Load.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,10 @@ void SP::Ph1::Load::setParameters(Real activePower, Real reactivePower,
**mReactivePower = reactivePower;
**mNomVoltage = nominalVoltage;

SPDLOG_LOGGER_INFO(mSLog, "Active Power={} [W] Reactive Power={} [VAr]",
**mActivePower, **mReactivePower);
SPDLOG_LOGGER_INFO(
mSLog,
"Active Power={}[W]\nReactive Power={} [VAr]\nNominal Voltage={} [V]",
**mActivePower, **mReactivePower, **mNomVoltage);
mSLog->flush();

mParametersSet = true;
Expand Down Expand Up @@ -196,4 +198,4 @@ void SP::Ph1::Load::mnaCompUpdateCurrent(const Matrix &leftVector) {
for (auto &subc : mSubComponents) {
(**mIntfCurrent)(0, 0) += subc->intfCurrent()(0, 0);
}
}
}
9 changes: 5 additions & 4 deletions dpsim-models/src/SP/SP_Ph1_NetworkInjection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ SP::Ph1::NetworkInjection::NetworkInjection(String uid, String name,
: CompositePowerComp<Complex>(uid, name, true, true, logLevel),
mVoltageRef(mAttributes->createDynamic<Complex>("V_ref")),
mSrcFreq(mAttributes->createDynamic<Real>("f_src")),
mBaseVoltage(mAttributes->create<Real>("base_Voltage")),
mVoltageSetPoint(mAttributes->create<Real>("V_set")),
mVoltageSetPointPerUnit(mAttributes->create<Real>("V_set_pu", 1.0)),
mActivePowerInjection(mAttributes->create<Real>("p_inj")),
Expand Down Expand Up @@ -92,16 +93,16 @@ void SP::Ph1::NetworkInjection::setParameters(Complex initialPhasor,
}

void SP::Ph1::NetworkInjection::setBaseVoltage(Real baseVoltage) {
mBaseVoltage = baseVoltage;
**mBaseVoltage = baseVoltage;
}

void SP::Ph1::NetworkInjection::calculatePerUnitParameters(
Real baseApparentPower, Real baseOmega) {
SPDLOG_LOGGER_INFO(mSLog, "#### Calculate Per Unit Parameters for {}",
**mName);
SPDLOG_LOGGER_INFO(mSLog, "Base Voltage={} [V]", mBaseVoltage);
SPDLOG_LOGGER_INFO(mSLog, "Base Voltage={} [V]", **mBaseVoltage);

**mVoltageSetPointPerUnit = **mVoltageSetPoint / mBaseVoltage;
**mVoltageSetPointPerUnit = **mVoltageSetPoint / **mBaseVoltage;

SPDLOG_LOGGER_INFO(mSLog, "Voltage Set-Point ={} [pu]",
**mVoltageSetPointPerUnit);
Expand Down Expand Up @@ -229,4 +230,4 @@ void SP::Ph1::NetworkInjection::daeResidual(double ttime, const double state[],
Complex SP::Ph1::NetworkInjection::daeInitialize() {
(**mIntfVoltage)(0, 0) = (**mSubVoltageSource->mIntfVoltage)(0, 0);
return (**mSubVoltageSource->mIntfVoltage)(0, 0);
}
}
4 changes: 2 additions & 2 deletions dpsim-models/src/SP/SP_Ph1_PiLine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
using namespace CPS;

SP::Ph1::PiLine::PiLine(String uid, String name, Logger::Level logLevel)
: Base::Ph1::PiLine(mAttributes),
CompositePowerComp<Complex>(uid, name, false, true, logLevel),
: Base::Ph1::PiLine(mAttributes), CompositePowerComp<Complex>(
uid, name, false, true, logLevel),
mBaseVoltage(mAttributes->create<Real>("base_Voltage")),
mCurrent(mAttributes->create<MatrixComp>("current_vector")),
mActivePowerBranch(mAttributes->create<Matrix>("p_branch_vector")),
Expand Down
8 changes: 4 additions & 4 deletions dpsim-models/src/SP/SP_Ph1_RXLine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ using namespace CPS;
SP::Ph1::RXLine::RXLine(String uid, String name, Real baseVoltage,
Real resistance, Real inductance,
Logger::Level logLevel)
: Base::Ph1::PiLine(mAttributes),
CompositePowerComp<Complex>(uid, name, true, true, logLevel),
: Base::Ph1::PiLine(mAttributes), CompositePowerComp<Complex>(
uid, name, true, true, logLevel),
mBaseVoltage(mAttributes->create<Real>("base_Voltage", baseVoltage)),
mInductance(mAttributes->create<Real>("L_series")),
mActivePowerInjection(mAttributes->create<Real>("p_inj")),
Expand All @@ -37,8 +37,8 @@ SP::Ph1::RXLine::RXLine(String uid, String name, Real baseVoltage,
}

SP::Ph1::RXLine::RXLine(String uid, String name, Logger::Level logLevel)
: Base::Ph1::PiLine(mAttributes),
CompositePowerComp<Complex>(uid, name, true, true, logLevel),
: Base::Ph1::PiLine(mAttributes), CompositePowerComp<Complex>(
uid, name, true, true, logLevel),
mBaseVoltage(mAttributes->create<Real>("base_Voltage")),
mInductance(mAttributes->create<Real>("L_series")),
mActivePowerInjection(mAttributes->create<Real>("p_inj")),
Expand Down
5 changes: 3 additions & 2 deletions dpsim-models/src/SP/SP_Ph1_SynchronGeneratorTrStab.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ using namespace CPS;

SP::Ph1::SynchronGeneratorTrStab::SynchronGeneratorTrStab(
String uid, String name, Logger::Level logLevel)
: Base::SynchronGenerator(mAttributes),
CompositePowerComp<Complex>(uid, name, true, true, logLevel),
: Base::SynchronGenerator(mAttributes), CompositePowerComp<Complex>(
uid, name, true, true,
logLevel),
mEp(mAttributes->create<Complex>("Ep")),
mEp_abs(mAttributes->create<Real>("Ep_mag")),
mEp_phase(mAttributes->create<Real>("Ep_phase")),
Expand Down
4 changes: 2 additions & 2 deletions dpsim-models/src/SP/SP_Ph1_Transformer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ using namespace CPS;
SP::Ph1::Transformer::Transformer(String uid, String name,
Logger::Level logLevel,
Bool withResistiveLosses)
: Base::Ph1::Transformer(mAttributes),
CompositePowerComp<Complex>(uid, name, true, true, logLevel),
: Base::Ph1::Transformer(mAttributes), CompositePowerComp<Complex>(
uid, name, true, true, logLevel),
mBaseVoltage(mAttributes->create<Real>("base_Voltage")),
mCurrent(mAttributes->create<MatrixComp>("current_vector")),
mActivePowerBranch(mAttributes->create<Matrix>("p_branch_vector")),
Expand Down
31 changes: 22 additions & 9 deletions dpsim/src/PFSolver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -185,48 +185,48 @@ void PFSolver::determinePFBusType() {
// determine powerflow bus types according connected type of connected components
// only PQ type component connected -> set as PQ bus
if (!connectedPV && connectedPQ && !connectedVD) {
SPDLOG_LOGGER_DEBUG(
SPDLOG_LOGGER_INFO(
mSLog, "{}: only PQ type component connected -> set as PQ bus",
node->name());
mPQBusIndices.push_back(node->matrixNodeIndex());
mPQBuses.push_back(node);
} // no component connected -> set as PQ bus (P & Q will be zero)
else if (!connectedPV && !connectedPQ && !connectedVD) {
SPDLOG_LOGGER_DEBUG(mSLog, "{}: no component connected -> set as PQ bus",
node->name());
SPDLOG_LOGGER_INFO(mSLog, "{}: no component connected -> set as PQ bus",
node->name());
mPQBusIndices.push_back(node->matrixNodeIndex());
mPQBuses.push_back(node);
} // only PV type component connected -> set as PV bus
else if (connectedPV && !connectedPQ && !connectedVD) {
SPDLOG_LOGGER_DEBUG(
SPDLOG_LOGGER_INFO(
mSLog, "{}: only PV type component connected -> set as PV bus",
node->name());
mPVBusIndices.push_back(node->matrixNodeIndex());
mPVBuses.push_back(node);
} // PV and PQ type component connected -> set as PV bus (TODO: bus type should be modifiable by user afterwards)
else if (connectedPV && connectedPQ && !connectedVD) {
SPDLOG_LOGGER_DEBUG(
SPDLOG_LOGGER_INFO(
mSLog, "{}: PV and PQ type component connected -> set as PV bus",
node->name());
mPVBusIndices.push_back(node->matrixNodeIndex());
mPVBuses.push_back(node);
} // only VD type component connected -> set as VD bus
else if (!connectedPV && !connectedPQ && connectedVD) {
SPDLOG_LOGGER_DEBUG(
SPDLOG_LOGGER_INFO(
mSLog, "{}: only VD type component connected -> set as VD bus",
node->name());
mVDBusIndices.push_back(node->matrixNodeIndex());
mVDBuses.push_back(node);
} // VD and PV type component connect -> set as VD bus
else if (connectedPV && !connectedPQ && connectedVD) {
SPDLOG_LOGGER_DEBUG(
SPDLOG_LOGGER_INFO(
mSLog, "{}: VD and PV type component connect -> set as VD bus",
node->name());
mVDBusIndices.push_back(node->matrixNodeIndex());
mVDBuses.push_back(node);
} // VD, PV and PQ type component connect -> set as VD bus
else if (connectedPV && connectedPQ && connectedVD) {
SPDLOG_LOGGER_DEBUG(
SPDLOG_LOGGER_INFO(
mSLog, "{}: VD, PV and PQ type component connect -> set as VD bus",
node->name());
mVDBusIndices.push_back(node->matrixNodeIndex());
Expand Down Expand Up @@ -321,6 +321,19 @@ void PFSolver::determineNodeBaseVoltages() {
"Choose base voltage {}V of {} to convert pu-solution of {}.",
baseVoltage_, gen->name(), node->name());
break;
} else if (std::shared_ptr<CPS::SP::Ph1::Load> load =
std::dynamic_pointer_cast<CPS::SP::Ph1::Load>(comp)) {
baseVoltage_ = load->attributeTyped<CPS::Real>("V_nom")->get();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If mNomVoltage is intended to be of type Attribute::Ptr and is publicly accessible, consider directly accessing its value through the member variable instead of using a hard-coded string. For example:
baseVoltage_ = load->mNomVoltage->get()
This will ensure compile time-error checking. Now, if there is a typo in the string "V_nom" the error would not be caught at compile time.

mSLog->info("Choose base voltage of {}V to convert pu-solution of {}.",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe is better with SPDLOG_LOGGER_INFO(

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, the macro variant can be optimized better if the log level is less than info.

baseVoltage_, load->name(), node->name());
break;
} else if (std::shared_ptr<CPS::SP::Ph1::NetworkInjection> extnet =
std::dynamic_pointer_cast<CPS::SP::Ph1::NetworkInjection>(
comp)) {
baseVoltage_ = extnet->attributeTyped<CPS::Real>("base_Voltage")->get();
mSLog->info("Choose base voltage of {}V to convert pu-solution of {}.",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think here is also SPDLOG_LOGGER_INFO(

baseVoltage_, extnet->name(), node->name());
break;
} else {
SPDLOG_LOGGER_WARN(mSLog, "Unable to get base voltage at {}",
node->name());
Expand Down Expand Up @@ -471,4 +484,4 @@ void PFSolver::SolveTask::execute(Real time, Int timeStepCount) {

Task::List PFSolver::getTasks() {
return Task::List{std::make_shared<SolveTask>(*this)};
}
}
13 changes: 12 additions & 1 deletion dpsim/src/PFSolverPowerPolar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,13 @@ void PFSolverPowerPolar::generateInitialSolution(Real time,
vsi->attributeTyped<CPS::Real>("P_ref")->get() / mBaseApparentPower;
sol_Q(pq->matrixNodeIndex()) +=
vsi->attributeTyped<CPS::Real>("Q_ref")->get() / mBaseApparentPower;
} else if (std::shared_ptr<CPS::SP::Ph1::SynchronGenerator> gen =
std::dynamic_pointer_cast<CPS::SP::Ph1::SynchronGenerator>(
comp)) {
sol_P(pq->matrixNodeIndex()) +=
gen->attributeTyped<CPS::Real>("P_set_pu")->get();
sol_Q(pq->matrixNodeIndex()) +=
gen->attributeTyped<CPS::Real>("Q_set_pu")->get();
}
sol_S_complex(pq->matrixNodeIndex()) = CPS::Complex(
sol_P[pq->matrixNodeIndex()], sol_Q[pq->matrixNodeIndex()]);
Expand All @@ -81,10 +88,14 @@ void PFSolverPowerPolar::generateInitialSolution(Real time,
gen->attributeTyped<CPS::Real>("P_set_pu")->get();
sol_V(pv->matrixNodeIndex()) =
gen->attributeTyped<CPS::Real>("V_set_pu")->get();
sol_Q(pv->matrixNodeIndex()) +=
gen->attributeTyped<CPS::Real>("Q_set_pu")->get();
} else if (std::shared_ptr<CPS::SP::Ph1::Load> load =
std::dynamic_pointer_cast<CPS::SP::Ph1::Load>(comp)) {
sol_P(pv->matrixNodeIndex()) -=
load->attributeTyped<CPS::Real>("P_pu")->get();
sol_Q(pv->matrixNodeIndex()) -=
load->attributeTyped<CPS::Real>("Q_pu")->get();
} else if (std::shared_ptr<CPS::SP::Ph1::AvVoltageSourceInverterDQ> vsi =
std::dynamic_pointer_cast<
CPS::SP::Ph1::AvVoltageSourceInverterDQ>(comp)) {
Expand Down Expand Up @@ -551,4 +562,4 @@ CPS::Real PFSolverPowerPolar::sol_Vi(UInt k) {

CPS::Complex PFSolverPowerPolar::sol_Vcx(UInt k) {
return CPS::Complex(sol_Vr(k), sol_Vi(k));
}
}
4 changes: 2 additions & 2 deletions dpsim/src/Utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,8 @@ CommandLineArgs::CommandLineArgs(String nm, Real dt, Real d, Real sf, Int s,
{"name", required_argument, 0, 'n', "NAME", "Name of log files"},
{0}},
timeStep(dt), duration(d), sysFreq(sf), scenario(s), logLevel(ll),
cliLogLevel(clill), name(nm), startSynch(ss), blocking(b), steadyInit(si),
solver{sd, st}, directImpl(mi), solverPluginName(spn) {}
cliLogLevel(clill), name(nm), startSynch(ss), blocking(b),
steadyInit(si), solver{sd, st}, directImpl(mi), solverPluginName(spn) {}

void CommandLineArgs::parseArguments(int argc, char *argv[]) {
mProgramName = argv[0];
Expand Down
Loading
Loading