Commit 82fef746 authored by Chris Cantwell's avatar Chris Cantwell
Browse files

Merge branch 'tidy/time-int-factory' of /opt/gitlab/repositories/nektar

parents 6a2289d5 bbf15c7a
......@@ -238,10 +238,12 @@ SET(PolylibSources
SET(TimeIntegrationHeaders
./TimeIntegration/TimeIntegrationScheme.h
./TimeIntegration/TimeIntegrationWrapper.h
)
SET(TimeIntegrationSources
./TimeIntegration/TimeIntegrationScheme.cpp
./TimeIntegration/TimeIntegrationWrapper.cpp
)
SET(ExpressionTemplates
......
/*
* TimeIntegrationWrapper.cpp
*
* Created on: 16 Jul 2013
* Author: cc
*/
#include <LibUtilities/TimeIntegration/TimeIntegrationWrapper.h>
#include <LibUtilities/BasicUtils/SharedArray.hpp>
namespace Nektar {
namespace LibUtilities {
TimeIntegrationWrapperFactory& GetTimeIntegrationWrapperFactory()
{
typedef Loki::SingletonHolder<TimeIntegrationWrapperFactory,
Loki::CreateUsingNew,
Loki::NoDestroy > Type;
return Type::Instance();
}
TimeIntegrationWrapper::TimeIntegrationWrapper()
{
}
void TimeIntegrationWrapper::v_InitObject()
{
}
// --------------
// IMEX Order 1
// --------------
string TimeIntegrationIMEXOrder1::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("IMEXOrder1", TimeIntegrationIMEXOrder1::create);
void TimeIntegrationIMEXOrder1::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eIMEXOrder1);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// IMEX Order 2
// --------------
string TimeIntegrationIMEXOrder2::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("IMEXOrder2", TimeIntegrationIMEXOrder2::create);
void TimeIntegrationIMEXOrder2::v_InitObject()
{
m_intSteps = 2;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eIMEXOrder1);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
TimeIntegrationSchemeKey IntKey1(eIMEXOrder2);
m_integrationScheme[1] = TimeIntegrationSchemeManager()[IntKey1];
}
// --------------
// IMEX Order 3
// --------------
string TimeIntegrationIMEXOrder3::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("IMEXOrder3", TimeIntegrationIMEXOrder3::create);
void TimeIntegrationIMEXOrder3::v_InitObject()
{
m_intSteps = 3;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eIMEXdirk_3_4_3);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
TimeIntegrationSchemeKey IntKey1(eIMEXdirk_3_4_3);
m_integrationScheme[1] = TimeIntegrationSchemeManager()[IntKey1];
TimeIntegrationSchemeKey IntKey2(eIMEXOrder3);
m_integrationScheme[2] = TimeIntegrationSchemeManager()[IntKey2];
}
// --------------
// ForwardEuler
// --------------
string TimeIntegrationForwardEuler::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("ForwardEuler", TimeIntegrationForwardEuler::create);
void TimeIntegrationForwardEuler::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eForwardEuler);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// BackwardEuler
// --------------
string TimeIntegrationBackwardEuler::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("BackwardEuler", TimeIntegrationBackwardEuler::create);
void TimeIntegrationBackwardEuler::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eBackwardEuler);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// BDFImplicitOrder1
// --------------
string TimeIntegrationBDFImplicitOrder1::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("BDFImplicitOrder1", TimeIntegrationBDFImplicitOrder1::create);
void TimeIntegrationBDFImplicitOrder1::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eBDFImplicitOrder1);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// BDFImplicitOrder2
// --------------
string TimeIntegrationBDFImplicitOrder2::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("BDFImplicitOrder2", TimeIntegrationBDFImplicitOrder2::create);
void TimeIntegrationBDFImplicitOrder2::v_InitObject()
{
m_intSteps = 2;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eBackwardEuler);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
TimeIntegrationSchemeKey IntKey1(eBDFImplicitOrder2);
m_integrationScheme[1] = TimeIntegrationSchemeManager()[IntKey1];
}
// --------------
// BDFImplicitOrder2
// --------------
string TimeIntegrationRungeKutta2_ImprovedEuler::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("RungeKutta2_ImprovedEuler", TimeIntegrationRungeKutta2_ImprovedEuler::create);
void TimeIntegrationRungeKutta2_ImprovedEuler::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eRungeKutta2_ImprovedEuler);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// IMEXdirk_1_1_1
// --------------
string TimeIntegrationIMEXdirk_1_1_1::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("IMEXdirk_1_1_1", TimeIntegrationIMEXdirk_1_1_1::create);
void TimeIntegrationIMEXdirk_1_1_1::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eIMEXdirk_1_1_1);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// IMEXdirk_1_2_1
// --------------
string TimeIntegrationIMEXdirk_1_2_1::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("IMEXdirk_1_2_1", TimeIntegrationIMEXdirk_1_2_1::create);
void TimeIntegrationIMEXdirk_1_2_1::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eIMEXdirk_1_2_1);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// IMEXdirk_1_2_2
// --------------
string TimeIntegrationIMEXdirk_1_2_2::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("IMEXdirk_1_2_2", TimeIntegrationIMEXdirk_1_2_2::create);
void TimeIntegrationIMEXdirk_1_2_2::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eIMEXdirk_1_2_2);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// IMEXdirk_4_4_3
// --------------
string TimeIntegrationIMEXdirk_4_4_3::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("IMEXdirk_4_4_3", TimeIntegrationIMEXdirk_4_4_3::create);
void TimeIntegrationIMEXdirk_4_4_3::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eIMEXdirk_4_4_3);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// IMEXdirk_2_2_2
// --------------
string TimeIntegrationIMEXdirk_2_2_2::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("IMEXdirk_2_2_2", TimeIntegrationIMEXdirk_2_2_2::create);
void TimeIntegrationIMEXdirk_2_2_2::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eIMEXdirk_2_2_2);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// IMEXdirk_2_3_3
// --------------
string TimeIntegrationIMEXdirk_2_3_3::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("IMEXdirk_2_3_3", TimeIntegrationIMEXdirk_2_3_3::create);
void TimeIntegrationIMEXdirk_2_3_3::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eIMEXdirk_2_3_3);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// IMEXdirk_2_3_2
// --------------
string TimeIntegrationIMEXdirk_2_3_2::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("IMEXdirk_2_3_2", TimeIntegrationIMEXdirk_2_3_2::create);
void TimeIntegrationIMEXdirk_2_3_2::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eIMEXdirk_2_3_2);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// IMEXdirk_3_4_3
// --------------
string TimeIntegrationIMEXdirk_3_4_3::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("IMEXdirk_3_4_3", TimeIntegrationIMEXdirk_3_4_3::create);
void TimeIntegrationIMEXdirk_3_4_3::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eIMEXdirk_3_4_3);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// DIRKOrder2
// --------------
string TimeIntegrationDIRKOrder2::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("DIRKOrder2", TimeIntegrationDIRKOrder2::create);
void TimeIntegrationDIRKOrder2::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eDIRKOrder2);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// DIRKOrder3
// --------------
string TimeIntegrationDIRKOrder3::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("DIRKOrder3", TimeIntegrationDIRKOrder3::create);
void TimeIntegrationDIRKOrder3::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eDIRKOrder3);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// ClassicalRungeKutta4
// --------------
string TimeIntegrationClassicalRungeKutta4::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("ClassicalRungeKutta4", TimeIntegrationClassicalRungeKutta4::create);
void TimeIntegrationClassicalRungeKutta4::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eClassicalRungeKutta4);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// Midpoint
// --------------
string TimeIntegrationMidpoint::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("Midpoint", TimeIntegrationMidpoint::create);
void TimeIntegrationMidpoint::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eMidpoint);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// RungeKutta2_ModifiedEuler
// --------------
string TimeIntegrationRungeKutta2_ModifiedEuler::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("RungeKutta2_ModifiedEuler", TimeIntegrationRungeKutta2_ModifiedEuler::create);
void TimeIntegrationRungeKutta2_ModifiedEuler::v_InitObject()
{
m_intSteps = 1;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eRungeKutta2_ModifiedEuler);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
}
// --------------
// AdamsBashforthOrder2
// --------------
string TimeIntegrationAdamsBashforthOrder2::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("AdamsBashforthOrder2", TimeIntegrationAdamsBashforthOrder2::create);
void TimeIntegrationAdamsBashforthOrder2::v_InitObject()
{
m_intSteps = 2;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eForwardEuler);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
TimeIntegrationSchemeKey IntKey1(eAdamsBashforthOrder2);
m_integrationScheme[1] = TimeIntegrationSchemeManager()[IntKey1];
}
// --------------
// AdamsBashforthOrder3
// --------------
string TimeIntegrationAdamsBashforthOrder3::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("AdamsBashforthOrder3", TimeIntegrationAdamsBashforthOrder3::create);
void TimeIntegrationAdamsBashforthOrder3::v_InitObject()
{
m_intSteps = 2;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eForwardEuler);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
TimeIntegrationSchemeKey IntKey1(eAdamsBashforthOrder3);
m_integrationScheme[1] = TimeIntegrationSchemeManager()[IntKey1];
}
// --------------
// AdamsMoultonOrder2
// --------------
string TimeIntegrationAdamsMoultonOrder2::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("AdamsMoultonOrder2", TimeIntegrationAdamsMoultonOrder2::create);
void TimeIntegrationAdamsMoultonOrder2::v_InitObject()
{
m_intSteps = 2;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eIMEXOrder1);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
TimeIntegrationSchemeKey IntKey1(eAdamsMoultonOrder2);
m_integrationScheme[1] = TimeIntegrationSchemeManager()[IntKey1];
}
// --------------
// IMEXGear
// --------------
string TimeIntegrationIMEXGear::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("IMEXGear", TimeIntegrationIMEXGear::create);
void TimeIntegrationIMEXGear::v_InitObject()
{
m_intSteps = 2;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eIMEXdirk_2_2_2);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
TimeIntegrationSchemeKey IntKey1(eIMEXGear);
m_integrationScheme[1] = TimeIntegrationSchemeManager()[IntKey1];
}
// --------------
// CNAB
// --------------
string TimeIntegrationCNAB::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("CNAB", TimeIntegrationCNAB::create);
void TimeIntegrationCNAB::v_InitObject()
{
m_intSteps = 3;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eIMEXdirk_3_4_3);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
TimeIntegrationSchemeKey IntKey1(eIMEXdirk_3_4_3);
m_integrationScheme[1] = TimeIntegrationSchemeManager()[IntKey1];
TimeIntegrationSchemeKey IntKey2(eCNAB);
m_integrationScheme[2] = TimeIntegrationSchemeManager()[IntKey2];
}
// --------------
// MCNAB
// --------------
string TimeIntegrationMCNAB::className = GetTimeIntegrationWrapperFactory().RegisterCreatorFunction("MCNAB", TimeIntegrationMCNAB::create);
void TimeIntegrationMCNAB::v_InitObject()
{
m_intSteps = 3;
m_integrationScheme = std::vector<TimeIntegrationSchemeSharedPtr> (m_intSteps);
TimeIntegrationSchemeKey IntKey0(eIMEXdirk_3_4_3);
m_integrationScheme[0] = TimeIntegrationSchemeManager()[IntKey0];
TimeIntegrationSchemeKey IntKey1(eIMEXdirk_3_4_3);
m_integrationScheme[1] = TimeIntegrationSchemeManager()[IntKey1];
TimeIntegrationSchemeKey IntKey2(eMCNAB);
m_integrationScheme[2] = TimeIntegrationSchemeManager()[IntKey2];
}
}
}
This diff is collapsed.
......@@ -36,6 +36,7 @@
#include <iostream>
#include <iomanip>
#include <LibUtilities/TimeIntegration/TimeIntegrationWrapper.h>
#include <LibUtilities/BasicUtils/Timer.h>
#include <MultiRegions/AssemblyMap/AssemblyMapDG.h>
#include <SolverUtils/UnsteadySystem.h>
......@@ -212,191 +213,13 @@ namespace Nektar
// - the last scheme will be used for all other time-steps
// (this will be the actual scheme)
Array<OneD, LibUtilities::TimeIntegrationSchemeSharedPtr> IntScheme;
LibUtilities::TimeIntegrationWrapperSharedPtr IntScheme;
LibUtilities::TimeIntegrationSolutionSharedPtr u;
int numMultiSteps;
switch(m_timeIntMethod)
{
case LibUtilities::eIMEXdirk_1_1_1:
case LibUtilities::eIMEXdirk_1_2_1:
case LibUtilities::eIMEXdirk_1_2_2:
case LibUtilities::eIMEXdirk_4_4_3:
case LibUtilities::eIMEXdirk_2_2_2:
case LibUtilities::eIMEXdirk_2_3_3:
case LibUtilities::eIMEXdirk_2_3_2:
case LibUtilities::eIMEXdirk_3_4_3:
case LibUtilities::eDIRKOrder2:
case LibUtilities::eDIRKOrder3:
case LibUtilities::eBackwardEuler:
case LibUtilities::eForwardEuler:
case LibUtilities::eClassicalRungeKutta4:
case LibUtilities::eIMEXOrder1:
case LibUtilities::eMidpoint:
case LibUtilities::eRungeKutta2_ModifiedEuler:
case LibUtilities::eRungeKutta2_ImprovedEuler:
{
numMultiSteps = 1;
IntScheme = Array<OneD, LibUtilities::
TimeIntegrationSchemeSharedPtr>(numMultiSteps);
LibUtilities::
TimeIntegrationSchemeKey IntKey(m_timeIntMethod);
IntScheme[0] = LibUtilities::
TimeIntegrationSchemeManager()[IntKey];
u = IntScheme[0]->InitializeScheme(
m_timestep, fields, m_time, m_ode);
break;
}
case LibUtilities::eAdamsBashforthOrder2:
case LibUtilities::eAdamsBashforthOrder3:
{
numMultiSteps = 2;
IntScheme = Array<OneD, LibUtilities::
TimeIntegrationSchemeSharedPtr>(numMultiSteps);
// Used in the first time step to initalize the scheme
LibUtilities::
TimeIntegrationSchemeKey IntKey0(
LibUtilities::
eForwardEuler);
// Used for all other time steps
LibUtilities::
TimeIntegrationSchemeKey IntKey1(m_timeIntMethod);
IntScheme[0] = LibUtilities::
TimeIntegrationSchemeManager()[IntKey0];
IntScheme[1] = LibUtilities::
TimeIntegrationSchemeManager()[IntKey1];
// Initialise the scheme for actual time integration scheme
u = IntScheme[1]->InitializeScheme(
m_timestep, fields, m_time, m_ode);
break;
}
case LibUtilities::eBDFImplicitOrder2:
{
numMultiSteps = 2;
IntScheme = Array<OneD, LibUtilities::
TimeIntegrationSchemeSharedPtr>(numMultiSteps);
// Used in the first time step to initalize the scheme
LibUtilities::
TimeIntegrationSchemeKey IntKey0(
LibUtilities::
eBackwardEuler);
// Used for all other time steps
LibUtilities::
TimeIntegrationSchemeKey IntKey1(m_timeIntMethod);
IntScheme[0] = LibUtilities::
TimeIntegrationSchemeManager()[IntKey0];
IntScheme[1] = LibUtilities::
TimeIntegrationSchemeManager()[IntKey1];
// Initialise the scheme for actual time integration scheme
u = IntScheme[1]->InitializeScheme(
m_timestep, fields, m_time, m_ode);
break;
}
case LibUtilities::eIMEXOrder2:
case LibUtilities::eAdamsMoultonOrder2:
{
numMultiSteps = 2;
IntScheme = Array<OneD, LibUtilities::
TimeIntegrationSchemeSharedPtr>(numMultiSteps);
// Used in the first time step to initalize the scheme
LibUtilities::
TimeIntegrationSchemeKey IntKey0(LibUtilities::
eIMEXOrder1);
// Used for all other time steps
LibUtilities::
TimeIntegrationSchemeKey IntKey1(m_timeIntMethod);
IntScheme[0] = LibUtilities::
TimeIntegrationSchemeManager()[IntKey0];
IntScheme[1] = LibUtilities::
TimeIntegrationSchemeManager()[IntKey1];
// Initialise the scheme for actual time integration scheme
u = IntScheme[1]->InitializeScheme(
m_timestep, fields, m_time, m_ode);
break;
}
case LibUtilities::eIMEXGear:
{
numMultiSteps = 2;
IntScheme = Array<OneD, LibUtilities::
TimeIntegrationSchemeSharedPtr>(numMultiSteps);
// Used in the first time step to initalize the scheme
LibUtilities::
TimeIntegrationSchemeKey IntKey0(LibUtilities::
eIMEXdirk_2_2_2);
// Used for all other time steps
LibUtilities::
TimeIntegrationSchemeKey IntKey1(m_timeIntMethod);
IntScheme[0] = LibUtilities::
TimeIntegrationSchemeManager()[IntKey0];
IntScheme[1] = LibUtilities::