67 static std::shared_ptr<MnaSolver<VarType>>
factory(
71 String pluginName =
"plugin.so") {
81 "MnaSolverFactory", CPS::Logger::Level::info, CPS::Logger::Level::info);
83 switch (implementation) {
90 SPDLOG_LOGGER_INFO(log,
"creating SparseLUAdapter solver implementation");
91 std::shared_ptr<MnaSolverDirect<VarType>> sparseSolver =
92 std::make_shared<MnaSolverDirect<VarType>>(name, domain, logLevel);
93 sparseSolver->setDirectLinearSolverImplementation(
99 SPDLOG_LOGGER_INFO(log,
"creating DenseLUAdapter solver implementation");
100 std::shared_ptr<MnaSolverDirect<VarType>> denseSolver =
101 std::make_shared<MnaSolverDirect<VarType>>(name, domain, logLevel);
102 denseSolver->setDirectLinearSolverImplementation(
108 SPDLOG_LOGGER_INFO(log,
"creating KLUAdapter solver implementation");
109 std::shared_ptr<MnaSolverDirect<VarType>> kluSolver =
110 std::make_shared<MnaSolverDirect<VarType>>(name, domain, logLevel);
111 kluSolver->setDirectLinearSolverImplementation(
118 SPDLOG_LOGGER_INFO(log,
"creating GpuDenseAdapter solver implementation");
119 std::shared_ptr<MnaSolverDirect<VarType>> gpuDenseSolver =
120 std::make_shared<MnaSolverDirect<VarType>>(name, domain, logLevel);
121 gpuDenseSolver->setDirectLinearSolverImplementation(
123 return gpuDenseSolver;
125#ifdef WITH_CUDA_SPARSE
127 SPDLOG_LOGGER_INFO(log,
128 "creating GpuSparseAdapter solver implementation");
129 std::shared_ptr<MnaSolverDirect<VarType>> gpuSparseSolver =
130 std::make_shared<MnaSolverDirect<VarType>>(name, domain, logLevel);
131 gpuSparseSolver->setDirectLinearSolverImplementation(
133 return gpuSparseSolver;
138 SPDLOG_LOGGER_INFO(log,
"creating GpuMagmaAdapter solver implementation");
139 std::shared_ptr<MnaSolverDirect<VarType>> gpuMagmaSolver =
140 std::make_shared<MnaSolverDirect<VarType>>(name, domain, logLevel);
141 gpuMagmaSolver->setDirectLinearSolverImplementation(
143 return gpuMagmaSolver;
147#ifdef WITH_MNASOLVERPLUGIN
149 SPDLOG_LOGGER_INFO(log,
"creating Plugin solver implementation");
150 return std::make_shared<MnaSolverPlugin<VarType>>(pluginName, name,