65template<
class Form,
class Type>
class Matrix;
66template<
class MatrixType>
class ConstMatrixBlock;
67template<
class MatrixType>
class MatrixBlock;
69template<
class Form,
class Type>
70Istream&
operator>>(Istream& is, Matrix<Form, Type>& mat);
72template<
class Form,
class Type>
73Ostream&
operator<<(Ostream&
os,
const Matrix<Form, Type>& mat);
80template<
class Form,
class Type>
89 Type* __restrict__ v_;
95 inline void doAlloc();
98 template<
class ListType>
102 template<
class ListType>
136 Matrix(const label
m, const label
n);
144 Matrix(const label
m, const label
n, const Type& val);
164 template<class Form2>
168 template<class MatrixType>
172 template<class MatrixType>
197 inline label
size() const;
234 inline const Type*
rowData(const label irow) const;
238 inline Type*
rowData(const label irow);
242 inline const Type&
at(const label idx) const;
246 inline Type&
at(const label idx);
257 const label colIndex,
258 const label rowIndex = 0,
269 const label rowIndex,
270 const label colIndex = 0,
278 const label rowIndex,
279 const label colIndex,
288 const label rowIndex,
297 const label colIndex,
298 const label rowIndex = 0,
305 const label rowIndex,
306 const label colIndex = 0,
313 const label rowIndex,
314 const label colIndex,
323 const label rowIndex,
330 inline
void checki(const label irow) const;
333 inline
void checkj(const label jcol) const;
358 void resize(const label
m, const label
n);
364 inline
void setSize(const label
m, const label
n);
370 void round(const scalar tol = SMALL);
412 scalar
columnNorm(const label colIndex, const
bool noSqrt=false) const;
416 scalar
norm(const
bool noSqrt=false) const;
423 inline const Type* operator[](const label irow) const;
427 inline Type* operator[](const label irow);
431 inline const Type& operator()(const label irow, const label jcol) const;
435 inline Type& operator()(const label irow, const label jcol);
438 void operator=(const
Matrix<Form, Type>& mat);
441 void operator=(
Matrix<Form, Type>&& mat);
444 template<class MatrixType>
448 template<class MatrixType>
455 void operator=(const Type& val);
458 void operator+=(const
Matrix<Form, Type>& other);
461 void operator-=(const
Matrix<Form, Type>& other);
464 void operator+=(const Type&
s);
467 void operator-=(const Type&
s);
470 void operator*=(const Type&
s);
473 void operator/=(const Type&
s);
535 const Type*
v()
const
605 void col(
const label
m,
const label rowStart)
const =
delete;
609 void col(
const label
m,
const label rowStart) =
delete;
616template<
class Form,
class Type>
626template<
class Form,
class Type>
Generic templated field type.
Base for lists with indirect addressing, templated on the list contents type and the addressing type....
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
A templated block of an (m x n) matrix of type <MatrixType>.
A templated (m x n) matrix of objects of <T>. The layout is (mRows x nCols) - row-major order:
const Type * const_iterator
Random access iterator for traversing a Matrix.
ConstMatrixBlock< mType > col(const label m, const label mStart, const label nStart) const
Deprecated(2019-04) - use subColumn()
const Type * cdata() const noexcept
Type * iterator
Random access iterator for traversing a Matrix.
ConstMatrixBlock< mType > subRow(const label rowIndex, const label colIndex=0, label len=-1) const
Return const row or const row's subset of Matrix.
char * data_bytes() noexcept
const_iterator cbegin() const noexcept
Return const_iterator to begin traversing a constant Matrix.
bool readMatrix(Istream &is)
Read Matrix from Istream, discarding existing contents.
Type cmptType
Component type.
bool empty() const noexcept
Return true if Matrix is empty (i.e., size() is zero)
const Type * rowData(const label irow) const
Return const pointer to data in the specified row.
Ostream & writeMatrix(Ostream &os, const label shortLen=0) const
label size() const
The number of elements in Matrix (m*n)
autoPtr< mType > clone() const
Clone.
void round(const scalar tol=SMALL)
Round elements with magnitude smaller than tol (SMALL) to zero.
void transfer(Matrix< Form, Type > &mat)
Form transpose() const
Return non-conjugate transpose of Matrix.
void checki(const label irow) const
Check index i is within valid range [0, m)
label mRows() const noexcept
The number of rows - same as m()
void shallowResize(const label m, const label n)
Resize Matrix without reallocating storage (unsafe)
labelPair sizes() const
Return row/column sizes.
const Type * v() const
Deprecated(2019-04) raw data pointer, const access.
void checkSize() const
Check that dimensions are positive, non-zero.
Type trace() const
Return the trace.
ConstMatrixBlock< mType > subMatrix(const label rowIndex, const label colIndex, label szRows=-1, label szCols=-1) const
Return const sub-block of Matrix.
iterator begin() noexcept
Return an iterator to begin traversing a Matrix.
Form T() const
Return conjugate transpose of Matrix.
label nCols() const noexcept
The number of columns - same as n()
void resize_nocopy(const label mrow, const label ncol)
Change Matrix dimensions without preserving existing content.
iterator end() noexcept
Return an iterator to end traversing a Matrix.
void setSize(const label m, const label n)
Change Matrix dimensions, preserving the elements.
label nRows() const noexcept
The number of rows - same as m()
std::streamsize byteSize() const
void swap(Matrix< Form, Type > &mat)
Swap contents.
const Type & at(const label idx) const
Linear addressing const element access.
const char * cdata_bytes() const noexcept
Matrix() noexcept
Default construct (empty matrix)
void clear()
Clear Matrix, i.e. set sizes to zero.
void checkj(const label jcol) const
Check index j is within valid range [0, n)
List< Type > diag() const
Extract the diagonal elements. Method may change in the future.
scalar columnNorm(const label colIndex, const bool noSqrt=false) const
Return L2-Norm of chosen column.
label m() const noexcept
The number of rows.
std::streamsize size_bytes() const noexcept
scalar norm(const bool noSqrt=false) const
Return Frobenius norm of Matrix.
tmp< Field< Type > > Tmul(const UList< Type > &x) const
Left-multiply Matrix by a row vector (x * A)
tmp< Field< Type > > Amul(const UList< Type > &x) const
Right-multiply Matrix by a column vector (A * x)
static const Matrix< Form, Type > & null()
Return a null Matrix.
ConstMatrixBlock< mType > subColumn(const label colIndex, const label rowIndex=0, label len=-1) const
Return const column or column's subset of Matrix.
void resize(const label m, const label n)
Change Matrix dimensions, preserving the elements.
Matrix< Form, Type > mType
Matrix type.
const_iterator cend() const noexcept
Return const_iterator to end traversing a constant Matrix.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
Creates a single block of cells from point coordinates, numbers of cells in each direction and an exp...
Database for solution data, solver performance and other reduced data.
A class for managing temporary objects.
A class representing the concept of 0 (zero) that can be used to avoid manipulating objects known to ...
OBJstream os(runTime.globalPath()/outputName)
gmvFile<< "tracers "<< particles.size()<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().x()<< " ";}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().y()<< " ";}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
Ostream & operator<<(Ostream &, const boundaryPatch &p)
Write boundaryPatch as dictionary entries (without surrounding braces)
Istream & operator>>(Istream &, directionInfo &)
#define FOAM_DEPRECATED_FOR(since, replacement)
Number of items before requiring line-breaks in the list output.