45 std::string Driver::evolutionOperatorLookupIds[6] = {
46 LibUtilities::SessionReader::RegisterEnumValue(
48 LibUtilities::SessionReader::RegisterEnumValue(
49 "EvolutionOperator",
"Direct" ,
eDirect),
50 LibUtilities::SessionReader::RegisterEnumValue(
51 "EvolutionOperator",
"Adjoint" ,
eAdjoint),
52 LibUtilities::SessionReader::RegisterEnumValue(
54 LibUtilities::SessionReader::RegisterEnumValue(
56 LibUtilities::SessionReader::RegisterEnumValue(
59 std::string Driver::evolutionOperatorDef =
60 LibUtilities::SessionReader::RegisterDefaultSolverInfo(
61 "EvolutionOperator",
"Nonlinear");
62 std::string Driver::driverDefault =
63 LibUtilities::SessionReader::RegisterDefaultSolverInfo(
64 "Driver",
"Standard");
71 Loki::SingleThreaded> Type;
72 return Type::Instance();
79 : m_comm(pSession->GetComm()),
98 "EqType SolverInfo tag must be defined.");
99 std::string vEquation =
m_session->GetSolverInfo(
"EqType");
100 if (
m_session->DefinesSolverInfo(
"SolverType"))
102 vEquation =
m_session->GetSolverInfo(
"SolverType");
107 "EquationSystem '" + vEquation +
"' is not defined.\n"
108 "Ensure equation name is correct and module is compiled.\n");
114 "EvolutionOperator");
125 m_session->SetTag(
"AdvectiveType",
"Convective");
130 m_session->SetTag(
"AdvectiveType",
"Linearised");
135 m_session->SetTag(
"AdvectiveType",
"Adjoint");
141 m_session->SetTag(
"AdvectiveType",
"Linearised");
146 m_session->SetTag(
"AdvectiveType",
"Adjoint");
151 m_session->SetTag(
"AdvectiveType",
"SkewSymmetric");
161 string LinNSCondFile;
162 vector<string> LinNSFilename;
164 LinNSCondFile =
m_session->GetSessionName();
165 LinNSCondFile +=
"_LinNS.xml";
166 LinNSFilename.push_back(meshfile);
167 LinNSFilename.push_back(LinNSCondFile);
169 0, NULL, LinNSFilename,
m_session->GetComm());
177 m_session->SetTag(
"AdvectiveType",
"Convective");
183 ASSERTL0(
false,
"Unrecognised evolution operator.");
189 ASSERTL0(e == -1,
"No such class class defined.");
190 out <<
"An error occurred during driver initialisation." << endl;
196 ASSERTL0(
false,
"This routine is not valid in this class");
202 ASSERTL0(
false,
"This routine is not valid in this class");
#define ASSERTL0(condition, msg)
tBaseSharedPtr CreateInstance(tKey idKey BOOST_PP_COMMA_IF(MAX_PARAM) BOOST_PP_ENUM_BINARY_PARAMS(MAX_PARAM, tParam, x))
Create an instance of the class referred to by idKey.
static Array< OneD, NekDouble > NullNekDouble1DArray
virtual ~Driver()
Destructor.
boost::shared_ptr< SessionReader > SessionReaderSharedPtr
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)
LibUtilities::NekFactory< std::string, Driver, const LibUtilities::SessionReaderSharedPtr & > DriverFactory
Datatype of the NekFactory used to instantiate classes derived from the Driver class.
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()
LibUtilities::SessionReaderSharedPtr m_session
Session reader object.
int m_nequ
number of equations
Provides a generic Factory class.