You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AppFlow/FITK_Interface/FITKInterfaceFlowOF/FITKOFSolutionSolverManager.h

87 lines
2.6 KiB
C

/**********************************************************************
* @file FITKOFSolutionSolverManager.h
* @brief solution Solver
* @author liuzhonghua (liuzhonghuaszch@163.com)
* @date 2024-08-22
*********************************************************************/
#ifndef _FITK___OF__SOLUTION__SOLVER_MANAGER__H___
#define _FITK___OF__SOLUTION__SOLVER_MANAGER__H___
#include "FITKInterfaceFlowOFAPI.h"
#include "FITKOFEnum.hpp"
#include <functional>
#include <QHash>
#include <QStringList>
namespace Interface
{
class FITKOFAbsSolutionSolver;
}
typedef std::function<Interface::FITKOFAbsSolutionSolver*()> CREATESOLUTIONSOLVERFUN;
namespace Interface
{
/**
* @brief Solution Solver
* @author liuzhonghua (liuzhonghuaszch@163.com)
* @date 2024-08-21
*/
struct FITKOFSolutionSolverInfo
{
QString _solutionSolverName{};
QHash<FITKOFSolverTypeEnum::FITKOFSolverType, QStringList> _enableType;//SolverType, VariableType
CREATESOLUTIONSOLVERFUN _createFuns{};
};
/**
* @brief solution Solver
* @author liuzhonghua (liuzhonghuaszch@163.com)
* @date 2024-08-21
*/
class FITKInterfaceFlowOFAPI FITKOFSolutionSolverManager
{
public:
explicit FITKOFSolutionSolverManager();
virtual ~FITKOFSolutionSolverManager();
/**
* @brief solution solver
* @param[i] variableType
* @param[i] solverType
* @return QStringList
* @author liuzhonghua (liuzhonghuaszch@163.com)
* @date 2024-08-22
*/
QStringList filterSolutionSolvers(QString variableType, FITKOFSolverTypeEnum::FITKOFSolverType solverType);
/**
* @brief solution solver
* @param[i] solutionSolverName solution solver
* @return FITKOFSolverInfo
* @author liuzhonghua (liuzhonghuaszch@163.com)
* @date 2024-08-21
*/
FITKOFSolutionSolverInfo getSolutionSolverInfo(QString solutionSolverName);
private:
/**
* @brief Solution Solver
* @return void
* @author liuzhonghua (liuzhonghuaszch@163.com)
* @date 2024-08-21
*/
void initSolutionSolvers();
private:
/**
* @brief Solution Solver
* @author liuzhonghua (liuzhonghuaszch@163.com)
* @date 2024-08-21
*/
QList<FITKOFSolutionSolverInfo> m_solutionSolvers{};
};
}
#endif