Nektar++
Static Public Member Functions | List of all members
Nektar::DiagonalMatrixFuncs Struct Reference

#include <MatrixFuncs.h>

Static Public Member Functions

static std::tuple< unsigned int, unsigned int > Advance (const unsigned int totalRows, const unsigned int totalColumns, const unsigned int curRow, const unsigned int curColumn)
 
template<typename DataType >
static void Invert (unsigned int rows, unsigned int columns, Array< OneD, DataType > &data)
 
static unsigned int GetRequiredStorageSize (unsigned int rows, unsigned int columns)
 
static unsigned int CalculateIndex (unsigned int row, unsigned int col)
 

Detailed Description

Definition at line 241 of file MatrixFuncs.h.

Member Function Documentation

◆ Advance()

std::tuple< unsigned int, unsigned int > Nektar::DiagonalMatrixFuncs::Advance ( const unsigned int  totalRows,
const unsigned int  totalColumns,
const unsigned int  curRow,
const unsigned int  curColumn 
)
static

Definition at line 319 of file MatrixFuncs.cpp.

References ASSERTL0.

Referenced by Nektar::NekMatrix< DataType, StandardMatrixTag >::Advance().

321  {
322  boost::ignore_unused(totalColumns);
323 
324  ASSERTL0(curRow == curColumn, "Iteration of a diagonal matrix is only valid along the diagonal.");
325 
326  unsigned int nextRow = curRow;
327  unsigned int nextColumn = curColumn;
328 
329  if( nextRow < totalRows )
330  {
331  ++nextRow;
332  ++nextColumn;
333  }
334 
335  if( nextRow >= totalRows )
336  {
337  nextRow = std::numeric_limits<unsigned int>::max();
338  nextColumn = std::numeric_limits<unsigned int>::max();
339  }
340 
341  return std::tuple<unsigned int, unsigned int>(nextRow, nextColumn);
342  }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:216

◆ CalculateIndex()

unsigned int Nektar::DiagonalMatrixFuncs::CalculateIndex ( unsigned int  row,
unsigned int  col 
)
static

Definition at line 350 of file MatrixFuncs.cpp.

Referenced by Nektar::ConstMatrix< NekMatrix< DataType, InnerMatrixType >::NumberType >::CalculateIndex().

351  {
352  if( row == col )
353  {
354  return row;
355  }
356  else
357  {
358  return std::numeric_limits<unsigned int>::max();
359  }
360  }

◆ GetRequiredStorageSize()

unsigned int Nektar::DiagonalMatrixFuncs::GetRequiredStorageSize ( unsigned int  rows,
unsigned int  columns 
)
static

Definition at line 344 of file MatrixFuncs.cpp.

References ASSERTL0.

Referenced by Nektar::ConstMatrix< NekMatrix< DataType, InnerMatrixType >::NumberType >::GetRequiredStorageSize().

345  {
346  ASSERTL0(rows==columns, "Diagonal matrices must be square.");
347  return rows;
348  }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:216

◆ Invert()

template<typename DataType >
static void Nektar::DiagonalMatrixFuncs::Invert ( unsigned int  rows,
unsigned int  columns,
Array< OneD, DataType > &  data 
)
inlinestatic

Definition at line 248 of file MatrixFuncs.h.

References ASSERTL0.

Referenced by Nektar::NekMatrix< DataType, StandardMatrixTag >::Invert().

250  {
251  ASSERTL0(rows==columns, "Only square matrices can be inverted.");
252  for(unsigned int i = 0; i < rows; ++i)
253  {
254  data[i] = 1.0/data[i];
255  }
256  }
#define ASSERTL0(condition, msg)
Definition: ErrorUtil.hpp:216