42 #ifndef __MATRIX_HPP___
43 #define __MATRIX_HPP___
50 #include <boost/multi_array.hpp>
52 namespace openfluid {
namespace core {
85 Matrix(
unsigned long ColsNbr,
unsigned long RowsNbr);
90 Matrix(
unsigned long ColsNbr,
unsigned long RowsNbr, T InitValue);
101 inline unsigned long getColsNbr()
const {
return m_ColsNbr; };
107 inline unsigned long getRowsNbr()
const {
return m_RowsNbr; };
113 inline unsigned long getSize()
const {
return (m_ColsNbr * m_RowsNbr); };
118 inline unsigned long size()
const {
return (m_ColsNbr * m_RowsNbr); };
124 T*
getData()
const {
return (T*)(m_Data.data()); };
129 void setData(T* Data);
134 T getElement(
unsigned long ColIndex,
unsigned long RowIndex)
const;
139 inline T
at(
unsigned long ColIndex,
unsigned long RowIndex)
const {
return getElement(ColIndex,RowIndex); };
144 inline T
get(
unsigned long ColIndex,
unsigned long RowIndex)
const {
return getElement(ColIndex,RowIndex); };
150 void setElement(
unsigned long ColIndex,
unsigned long RowIndex, T Element);
155 inline void set(
unsigned long ColIndex,
unsigned long RowIndex, T Element) { setElement(ColIndex,RowIndex,Element); };
165 void fill(
const T& Val);
179 m_Data(boost::extents[0][0],boost::fortran_storage_order()),
180 m_ColsNbr(0),m_RowsNbr(0)
190 m_Data(boost::extents[A.m_ColsNbr][A.m_RowsNbr],boost::fortran_storage_order()),
191 m_ColsNbr(A.m_ColsNbr),m_RowsNbr(A.m_RowsNbr)
202 m_Data(boost::extents[ColsNbr][RowsNbr],boost::fortran_storage_order()),
203 m_ColsNbr(ColsNbr),m_RowsNbr(RowsNbr)
215 m_Data(boost::extents[ColsNbr][RowsNbr],boost::fortran_storage_order()),
216 m_ColsNbr(ColsNbr),m_RowsNbr(RowsNbr)
229 for (
unsigned long j=0; j < m_RowsNbr;j++)
231 for (
unsigned long i=0; i < m_ColsNbr;i++)
233 m_Data[i][j] = Data[i+(j*m_ColsNbr)];
247 return m_Data[ColIndex][RowIndex];
259 m_Data[ColIndex][RowIndex] = Element;
271 if (
this == &A)
return *
this;
289 for (
unsigned long i=0;i<m_ColsNbr;i++)
290 for (
unsigned long j=0;j<m_RowsNbr;j++)
301 m_Data.resize(boost::extents[0][0]);
Definition: Matrix.hpp:59
boost::multi_array< T, 2 > m_Data
Definition: Matrix.hpp:63
T at(unsigned long ColIndex, unsigned long RowIndex) const
Definition: Matrix.hpp:139
Matrix()
Definition: Matrix.hpp:178
void clear()
Definition: Matrix.hpp:299
T getElement(unsigned long ColIndex, unsigned long RowIndex) const
Definition: Matrix.hpp:244
Definition: FrameworkException.hpp:49
void set(unsigned long ColIndex, unsigned long RowIndex, T Element)
Definition: Matrix.hpp:155
unsigned long m_ColsNbr
Definition: Matrix.hpp:65
unsigned long m_RowsNbr
Definition: Matrix.hpp:67
unsigned long getSize() const
Definition: Matrix.hpp:113
void fill(const T &Val)
Definition: Matrix.hpp:287
unsigned long size() const
Definition: Matrix.hpp:118
void setData(T *Data)
Definition: Matrix.hpp:227
Matrix< T > & operator=(const Matrix &A)
Definition: Matrix.hpp:268
virtual ~Matrix()
Definition: Matrix.hpp:95
void setElement(unsigned long ColIndex, unsigned long RowIndex, T Element)
Definition: Matrix.hpp:256
unsigned long getColsNbr() const
Definition: Matrix.hpp:101
unsigned long getRowsNbr() const
Definition: Matrix.hpp:107
T * getData() const
Definition: Matrix.hpp:124
#define DLLEXPORT
Definition: dllexport.hpp:51