44 std::string Driver::evolutionOperatorLookupIds[6] = {
45 LibUtilities::SessionReader::RegisterEnumValue(
47 LibUtilities::SessionReader::RegisterEnumValue(
48 "EvolutionOperator",
"Direct" ,
eDirect),
49 LibUtilities::SessionReader::RegisterEnumValue(
50 "EvolutionOperator",
"Adjoint" ,
eAdjoint),
51 LibUtilities::SessionReader::RegisterEnumValue(
53 LibUtilities::SessionReader::RegisterEnumValue(
55 LibUtilities::SessionReader::RegisterEnumValue(
58 std::string Driver::evolutionOperatorDef =
59 LibUtilities::SessionReader::RegisterDefaultSolverInfo(
60 "EvolutionOperator",
"Nonlinear");
61 std::string Driver::driverDefault =
62 LibUtilities::SessionReader::RegisterDefaultSolverInfo(
63 "Driver",
"Standard");
76 : m_comm(pSession->GetComm()),
96 "EqType SolverInfo tag must be defined.");
97 std::string vEquation =
m_session->GetSolverInfo(
"EqType");
98 if (
m_session->DefinesSolverInfo(
"SolverType"))
100 vEquation =
m_session->GetSolverInfo(
"SolverType");
105 "EquationSystem '" + vEquation +
"' is not defined.\n" 106 "Ensure equation name is correct and module is compiled.\n");
112 "EvolutionOperator");
123 m_session->SetTag(
"AdvectiveType",
"Convective");
128 m_session->SetTag(
"AdvectiveType",
"Linearised");
133 m_session->SetTag(
"AdvectiveType",
"Adjoint");
139 m_session->SetTag(
"AdvectiveType",
"Linearised");
144 m_session->SetTag(
"AdvectiveType",
"Adjoint");
149 m_session->SetTag(
"AdvectiveType",
"SkewSymmetric");
159 string LinNSCondFile;
160 vector<string> LinNSFilename;
162 LinNSCondFile =
m_session->GetSessionName();
163 LinNSCondFile +=
"_LinNS.xml";
164 LinNSFilename.push_back(meshfile);
165 LinNSFilename.push_back(LinNSCondFile);
168 const_cast<char*
>(
"IncNavierStokesSolver"),
nullptr };
170 1, argv, LinNSFilename,
m_session->GetComm());
181 m_session->SetTag(
"AdvectiveType",
"Convective");
187 ASSERTL0(
false,
"Unrecognised evolution operator.");
193 ASSERTL0(e == -1,
"No such class class defined.");
194 out <<
"An error occurred during driver initialisation." << endl;
200 ASSERTL0(
false,
"This routine is not valid in this class");
206 ASSERTL0(
false,
"This routine is not valid in this class");
#define ASSERTL0(condition, msg)
std::shared_ptr< MeshGraph > MeshGraphSharedPtr
static Array< OneD, NekDouble > NullNekDouble1DArray
virtual ~Driver()
Destructor.
static SessionReaderSharedPtr CreateInstance(int argc, char *argv[])
Creates an instance of the SessionReader class.
LibUtilities::SessionReaderSharedPtr session_LinNS
I the Coupling between SFD and arnoldi.
virtual SOLVER_UTILS_EXPORT void v_InitObject(std::ostream &out=std::cout)
tBaseSharedPtr CreateInstance(tKey idKey, tParam... args)
Create an instance of the class referred to by idKey.
SpatialDomains::MeshGraphSharedPtr m_graph
MeshGraph object.
enum EvolutionOperatorType m_EvolutionOperator
Evolution Operator.
EquationSystemFactory & GetEquationSystemFactory()
Array< OneD, EquationSystemSharedPtr > m_equ
Equation system to solve.
virtual SOLVER_UTILS_EXPORT Array< OneD, NekDouble > v_GetImagEvl(void)
virtual SOLVER_UTILS_EXPORT Array< OneD, NekDouble > v_GetRealEvl(void)
DriverFactory & GetDriverFactory()
std::shared_ptr< SessionReader > SessionReaderSharedPtr
LibUtilities::SessionReaderSharedPtr m_session
Session reader object.
static MeshGraphSharedPtr Read(const LibUtilities::SessionReaderSharedPtr pSession, DomainRangeShPtr rng=NullDomainRangeShPtr, bool fillGraph=true)
int m_nequ
number of equations
Provides a generic Factory class.