Cantera
2.2.1
|
A class for 2D arrays stored in column-major (Fortran-compatible) form. More...
#include <Array.h>
Public Types | |
typedef vector_fp::iterator | iterator |
Type definition for the iterator class that is can be used by Array2D types. More... | |
typedef vector_fp::const_iterator | const_iterator |
Type definition for the const_iterator class that is can be used by Array2D types. More... | |
Public Member Functions | |
Array2D () | |
Default constructor. More... | |
Array2D (const size_t m, const size_t n, const doublereal v=0.0) | |
Constructor. More... | |
Array2D (const size_t m, const size_t n, const doublereal *values) | |
Constructor. More... | |
Array2D (const Array2D &y) | |
Copy constructor. More... | |
Array2D & | operator= (const Array2D &y) |
assignment operator More... | |
void | resize (size_t n, size_t m, doublereal v=0.0) |
Resize the array, and fill the new entries with 'v'. More... | |
void | copyData (const Array2D &y) |
Copy the data from one array into another without doing any checking. More... | |
void | appendColumn (const vector_fp &c) |
Append a column to the existing matrix using a std vector. More... | |
void | appendColumn (const doublereal *const c) |
Append a column to the existing matrix. More... | |
void | setRow (size_t n, const doublereal *const rw) |
Set the nth row to array rw. More... | |
void | getRow (size_t n, doublereal *const rw) |
Get the nth row and return it in a vector. More... | |
void | setColumn (size_t m, doublereal *const col) |
Set the values in column m to those in array col. More... | |
void | getColumn (size_t m, doublereal *const col) |
Get the values in column m. More... | |
virtual | ~Array2D () |
Destructor. More... | |
void | axpy (doublereal a, const Array2D &x, const Array2D &y) |
Evaluate z = a*x + y. More... | |
void | zero () |
Set all of the entries to zero. More... | |
doublereal & | operator() (size_t i, size_t j) |
Allows setting elements using the syntax A(i,j) = x. More... | |
doublereal | operator() (size_t i, size_t j) const |
Allows retrieving elements using the syntax x = A(i,j). More... | |
doublereal & | value (size_t i, size_t j) |
Returns a changeable reference to position in the matrix. More... | |
doublereal | value (size_t i, size_t j) const |
Returns the value of a single matrix entry. More... | |
size_t | nRows () const |
Number of rows. More... | |
size_t | nColumns () const |
Number of columns. More... | |
iterator | begin () |
Return an iterator pointing to the first element. More... | |
iterator | end () |
Return an iterator pointing past the last element. More... | |
const_iterator | begin () const |
Return a const iterator pointing to the first element. More... | |
const_iterator | end () const |
Return a const iterator pointing to past the last element. More... | |
vector_fp & | data () |
Return a reference to the data vector. More... | |
const vector_fp & | data () const |
Return a const reference to the data vector. More... | |
doublereal * | ptrColumn (size_t j) |
Return a pointer to the top of column j, columns are contiguous in memory. More... | |
const doublereal * | ptrColumn (size_t j) const |
Return a const pointer to the top of column j, columns are contiguous in memory. More... | |
Protected Attributes | |
vector_fp | m_data |
Data stored in a single array. More... | |
size_t | m_nrows |
Number of rows. More... | |
size_t | m_ncols |
Number of columns. More... | |
A class for 2D arrays stored in column-major (Fortran-compatible) form.
In this form, the data entry for an n row, m col matrix is index = i + (n-1) * j where J(i,j) = data_start + index i = row j = column
typedef vector_fp::iterator iterator |
typedef vector_fp::const_iterator const_iterator |
|
inline |
|
inline |
Constructor.
Create an m
by n
array, and initialize all elements to v
.
m | Number of rows |
n | Number of columns |
v | Default fill value. The default is 0.0 |
Definition at line 64 of file Array.h.
References Array2D::m_data.
|
inline |
Constructor.
Create an m
by n
array, initialized with the contents of the array values
.
m | Number of rows |
n | Number of columns |
values | Initial values of the array. Must be of length m*n, and stored in column-major order. |
Definition at line 80 of file Array.h.
References Array2D::m_data, Array2D::m_ncols, and Array2D::m_nrows.
Copy constructor.
y | Array2D to make the copy from |
Definition at line 90 of file Array.h.
References Array2D::m_data, Array2D::m_ncols, and Array2D::m_nrows.
|
inlinevirtual |
assignment operator
y | Array2D to get the values from |
Definition at line 104 of file Array.h.
References Array2D::m_data, Array2D::m_ncols, and Array2D::m_nrows.
Referenced by DenseMatrix::operator=().
|
inline |
Resize the array, and fill the new entries with 'v'.
n | This is the number of rows |
m | This is the number of columns in the new matrix |
v | Default fill value -> defaults to zero. |
Definition at line 121 of file Array.h.
References Array2D::m_data, Array2D::m_ncols, and Array2D::m_nrows.
Referenced by RedlichKwongMFTP::initLengths(), IonsFromNeutralVPSSTP::initLengths(), RedlichKisterVPSSTP::initLengths(), MixedSolventElectrolyte::initLengths(), MargulesVPSSTP::initLengths(), PhaseCombo_Interaction::initLengths(), DebyeHuckel::initLengths(), HMWSoln::initLengths(), LiquidTransport::initLiquid(), DenseMatrix::resize(), StFlow::resize(), VCS_PROB::resizeElements(), RedlichKisterVPSSTP::resizeNumInteractions(), VCS_PROB::resizeSpecies(), StFlow::setTransport(), AqueousTransport::stefan_maxwell_solve(), StFlow::StFlow(), and VCS_PROB::VCS_PROB().
|
inline |
Copy the data from one array into another without doing any checking.
This differs from the assignment operator as no resizing is done and memcpy() is used.
y | Array to be copied |
Definition at line 133 of file Array.h.
References DATA_PTR, Array2D::m_data, Array2D::m_ncols, Array2D::m_nrows, Array2D::ptrColumn(), and Cantera::warn_deprecated().
Referenced by SquareMatrix::copyData().
|
inline |
Append a column to the existing matrix using a std vector.
This operation will add a column onto the existing matrix.
c | This vector<doublereal> is the entries in the column to be added. It must have a length equal to m_nrows or greater. |
Definition at line 147 of file Array.h.
References Array2D::m_data, Array2D::m_ncols, Array2D::m_nrows, and Array2D::value().
|
inline |
Append a column to the existing matrix.
This operation will add a column onto the existing matrix.
c | This vector of doubles is the entries in the column to be added. It must have a length equal to m_nrows or greater. |
Definition at line 164 of file Array.h.
References Array2D::m_data, Array2D::m_ncols, Array2D::m_nrows, and Array2D::value().
|
inline |
Set the nth row to array rw.
n | Index of the row to be changed |
rw | Vector for the row. Must have a length of m_ncols. |
Definition at line 178 of file Array.h.
References Array2D::m_data, Array2D::m_ncols, and Array2D::m_nrows.
|
inline |
Get the nth row and return it in a vector.
n | Index of the row to be returned. |
rw | Return Vector for the operation. Must have a length of m_ncols. |
Definition at line 190 of file Array.h.
References Array2D::m_data, Array2D::m_ncols, and Array2D::m_nrows.
Referenced by StFlow::save().
|
inline |
Set the values in column m to those in array col.
A(i,m) = col(i)
m | Column to set |
col | pointer to a col vector. Vector must have a length of m_nrows. |
Definition at line 204 of file Array.h.
References Array2D::m_data, and Array2D::m_nrows.
|
inline |
Get the values in column m.
col(i) = A(i,m)
m | Column to set |
col | pointer to a col vector that will be returned |
Definition at line 217 of file Array.h.
References Array2D::m_data, and Array2D::m_nrows.
Evaluate z = a*x + y.
This function evaluates the AXPY operation, and stores the result in the object's Array2D object. It's assumed that all 3 objects have the same dimensions, but no error checking is done.
a | scalar to multiply x with |
x | First Array2D object to be used |
y | Second Array2D object to be used |
Definition at line 241 of file Array.h.
References Array2D::begin(), and Array2D::end().
|
inline |
Set all of the entries to zero.
Definition at line 251 of file Array.h.
References Array2D::m_data, Array2D::m_ncols, and Array2D::m_nrows.
Referenced by IonsFromNeutralVPSSTP::s_update_dlnActCoeff_dlnN(), MixedSolventElectrolyte::s_update_dlnActCoeff_dlnN(), MargulesVPSSTP::s_update_dlnActCoeff_dlnN(), PhaseCombo_Interaction::s_update_dlnActCoeff_dlnN(), RedlichKisterVPSSTP::s_update_dlnActCoeff_dX_(), and VCS_SOLVE::vcs_prep().
|
inline |
Allows setting elements using the syntax A(i,j) = x.
i | row index |
j | column index. |
Definition at line 269 of file Array.h.
References Array2D::value().
Referenced by SquareMatrix::operator()().
|
inline |
Allows retrieving elements using the syntax x = A(i,j).
i | Index for the row to be retrieved |
j | Index for the column to be retrieved. |
Definition at line 281 of file Array.h.
References Array2D::value().
|
inline |
Returns a changeable reference to position in the matrix.
This is a key entry. Returns a reference to the matrix's (i,j) element. This may be used as an L value.
i | The row index |
j | The column index |
Definition at line 295 of file Array.h.
References Array2D::m_data, and Array2D::m_nrows.
Referenced by Array2D::appendColumn(), SquareMatrix::checkColumns(), SquareMatrix::checkRows(), DenseMatrix::leftMult(), Array2D::operator()(), and DebyeHuckel::s_update_lnMolalityActCoeff().
|
inline |
Returns the value of a single matrix entry.
This is a key entry. Returns the value of the matrix position (i,j) element.
i | The row index |
j | The column index |
Definition at line 307 of file Array.h.
References Array2D::m_data, and Array2D::m_nrows.
|
inline |
Number of rows.
Definition at line 312 of file Array.h.
References Array2D::m_nrows.
Referenced by Cantera::getMatrixValues(), Cantera::increment(), Cantera::invert(), DenseMatrix::leftMult(), DenseMatrix::mult(), Cantera::multiply(), Cantera::operator<<(), Cantera::outputExcel(), Cantera::outputTEC(), and Cantera::solve().
|
inline |
Number of columns.
Definition at line 317 of file Array.h.
References Array2D::m_ncols.
Referenced by Cantera::getMatrixValues(), DenseMatrix::leftMult(), DenseMatrix::mult(), Cantera::multiply(), Cantera::operator<<(), Cantera::outputExcel(), Cantera::outputTEC(), StFlow::save(), SquareMatrix::solve(), and Cantera::solve().
|
inline |
Return an iterator pointing to the first element.
Definition at line 322 of file Array.h.
References Array2D::m_data.
Referenced by Array2D::axpy(), Cantera::operator*=(), and Cantera::operator+=().
|
inline |
Return an iterator pointing past the last element.
Definition at line 327 of file Array.h.
References Array2D::m_data.
Referenced by Array2D::axpy(), Cantera::operator*=(), and Cantera::operator+=().
|
inline |
Return a const iterator pointing to the first element.
Definition at line 332 of file Array.h.
References Array2D::m_data.
|
inline |
Return a const iterator pointing to past the last element.
Definition at line 337 of file Array.h.
References Array2D::m_data.
|
inline |
Return a reference to the data vector.
Definition at line 342 of file Array.h.
References Array2D::m_data.
|
inline |
Return a const reference to the data vector.
Definition at line 347 of file Array.h.
References Array2D::m_data.
|
inline |
Return a pointer to the top of column j, columns are contiguous in memory.
j | Value of the column |
Definition at line 358 of file Array.h.
References Array2D::m_data, and Array2D::m_nrows.
Referenced by Array2D::copyData(), Cantera::increment(), Cantera::invert(), Cantera::multiply(), SquareMatrix::ptrColumn(), HMWSoln::s_updatePitzer_CoeffWRTemp(), Cantera::solve(), AqueousTransport::stefan_maxwell_solve(), DustyGasTransport::updateBinaryDiffCoeffs(), StFlow::updateTransport(), VCS_SOLVE::vcs_Hessian_actCoeff_diag(), and VCS_SOLVE::vcs_line_search().
|
inline |
Return a const pointer to the top of column j, columns are contiguous in memory.
j | Value of the column |
Definition at line 369 of file Array.h.
References Array2D::m_data, and Array2D::m_nrows.
|
protected |
Data stored in a single array.
Definition at line 375 of file Array.h.
Referenced by Array2D::appendColumn(), Array2D::Array2D(), SquareMatrix::begin(), Array2D::begin(), Array2D::copyData(), Array2D::data(), DenseMatrix::DenseMatrix(), Array2D::end(), Array2D::getColumn(), Array2D::getRow(), DenseMatrix::operator=(), Array2D::operator=(), Array2D::ptrColumn(), DenseMatrix::resize(), Array2D::resize(), Array2D::setColumn(), Array2D::setRow(), Array2D::value(), SquareMatrix::zero(), and Array2D::zero().
|
protected |
Number of rows.
Definition at line 378 of file Array.h.
Referenced by Array2D::appendColumn(), Array2D::Array2D(), SquareMatrix::checkColumns(), SquareMatrix::checkRows(), Array2D::copyData(), DenseMatrix::DenseMatrix(), SquareMatrix::factor(), SquareMatrix::factorQR(), Array2D::getColumn(), Array2D::getRow(), DenseMatrix::mult(), SquareMatrix::nRows(), Array2D::nRows(), SquareMatrix::nRowsAndStruct(), DenseMatrix::operator=(), Array2D::operator=(), Array2D::ptrColumn(), SquareMatrix::rcond(), SquareMatrix::rcondQR(), DenseMatrix::resize(), Array2D::resize(), Array2D::setColumn(), Array2D::setRow(), SquareMatrix::solveQR(), Array2D::value(), and Array2D::zero().
|
protected |
Number of columns.
Definition at line 381 of file Array.h.
Referenced by Array2D::appendColumn(), Array2D::Array2D(), Array2D::copyData(), DenseMatrix::DenseMatrix(), Array2D::getRow(), DenseMatrix::mult(), Array2D::nColumns(), DenseMatrix::operator=(), Array2D::operator=(), DenseMatrix::resize(), Array2D::resize(), Array2D::setRow(), and Array2D::zero().