36 #ifndef NEKTAR_LIB_UTILITIES_TIME_INTEGRATION_TIME_INTEGRATION_SOLUTION_GLM
37 #define NEKTAR_LIB_UTILITIES_TIME_INTEGRATION_TIME_INTEGRATION_SOLUTION_GLM
39 #define LUE LIB_UTILITIES_EXPORT
46 namespace LibUtilities
64 const unsigned int nvar,
const unsigned int npoints);
158 for (
int i = 0; i < nMultiStepVals; i++)
160 if (timeLevelOffset == offsetvec[i])
165 ASSERTL1(
false,
"The solution vector of this scheme does not contain a "
166 "value at the requested time-level");
173 const unsigned int timeLevelOffset)
176 int nMultiStepImplicitDerivs =
181 for (
int i = nMultiStepVals;
182 i < nMultiStepVals + nMultiStepImplicitDerivs; i++)
184 if (timeLevelOffset == offsetvec[i])
189 ASSERTL1(
false,
"The solution vector of this scheme does not contain a "
190 "derivative at the requested time-level");
196 int nMultiStepImplicitDerivs =
202 for (
int i = nMultiStepVals + nMultiStepImplicitDerivs; i < size; i++)
204 if (timeLevelOffset == offsetvec[i])
209 ASSERTL1(
false,
"The solution vector of this scheme does not contain a "
210 "derivative at the requested time-level");
222 for (
int i = 0; i < nMultiStepVals; i++)
224 if (timeLevelOffset == offsetvec[i])
229 ASSERTL1(
false,
"The solution vector of this scheme does not contain a "
230 "value at the requested time-level");
237 inline void SetValue(
const unsigned int timeLevelOffset,
244 for (
int i = 0; i < nMultiStepVals; i++)
246 if (timeLevelOffset == offsetvec[i])
263 int nMultiStepImplicitDerivs =
268 for (
int i = nMultiStepVals;
269 i < nMultiStepVals + nMultiStepImplicitDerivs; i++)
271 if (timeLevelOffset == offsetvec[i])
283 int nMultiStepImplicitDerivs =
289 for (
int i = nMultiStepVals + nMultiStepImplicitDerivs; i < size; i++)
291 if (timeLevelOffset == offsetvec[i])
305 int nMultiStepImpDerivs =
308 for (
int i = (nMultiStepVals - 1); i > 0; i--)
313 for (
int i = (nMultiStepVals + nMultiStepImpDerivs - 1);
314 i > nMultiStepVals; i--)
319 for (
int i = (size - 1); i > nMultiStepVals + nMultiStepImpDerivs; i--)
#define ASSERTL1(condition, msg)
Assert Level 1 – Debugging which is used whether in FULLDEBUG or DEBUG compilation mode....
unsigned int GetNmultiStepValues() const
const Array< OneD, const unsigned int > & GetTimeLevelOffset() const
unsigned int GetNmultiStepDerivs() const
unsigned int GetNmultiStepImplicitDerivs() const
unsigned int GetNderivs() const
DoubleArray & GetDerivative(const unsigned int timeLevelOffset)
Array< OneD, NekDouble > & UpdateTimeVector()
NekDouble GetTime() const
const Array< OneD, const unsigned int > & GetTimeLevelOffset()
void SetDerivative(const unsigned int timeLevelOffset, const DoubleArray &y, const NekDouble timestep)
LUE TimeIntegrationSolutionGLM(const TimeIntegrationAlgorithmGLM *schemeAlgorithm, const DoubleArray &y, const NekDouble time, const NekDouble timestep)
Array< OneD, NekDouble > m_t
DoubleArray & GetImplicitDerivative(const unsigned int timeLevelOffset)
const DoubleArray & GetSolution() const
void RotateSolutionVector()
unsigned int GetNimplicitderivs() const
void SetSolutionVector(const int Offset, const DoubleArray &y)
unsigned int GetNvalues() const
void SetValue(const unsigned int timeLevelOffset, const DoubleArray &y, const NekDouble t)
DoubleArray & UpdateSolution()
const TripleArray & GetSolutionVector() const
void SetImplicitDerivative(const unsigned int timeLevelOffset, const DoubleArray &y, const NekDouble timestep)
TripleArray & UpdateSolutionVector()
const Array< OneD, const NekDouble > & GetTimeVector() const
const TimeIntegrationAlgorithmGLM * GetIntegrationSchemeData() const
DoubleArray & GetValue(const unsigned int timeLevelOffset)
const TimeIntegrationAlgorithmGLM * m_schemeAlgorithm
NekDouble GetValueTime(const unsigned int timeLevelOffset)
The above copyright notice and this permission notice shall be included.