diff --git a/Cantera/src/base/Array.h b/Cantera/src/base/Array.h index 96ed1424b..7c089ae7b 100755 --- a/Cantera/src/base/Array.h +++ b/Cantera/src/base/Array.h @@ -27,6 +27,13 @@ namespace Cantera { /** * 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 */ class Array2D { @@ -69,7 +76,12 @@ namespace Cantera { return *this; } - /// resize the array, and fill the new entries with 'v' + //! resize the array, and fill the new entries with 'v' + /*! + * @param n This is the number of rows + * @param m This is the number of columns in the new matrix + * @param v Default fill value -> defaults to zero. + */ void resize(int n, int m, doublereal v = 0.0) { m_nrows = n; m_ncols = m; @@ -147,6 +159,13 @@ namespace Cantera { */ doublereal operator() ( int i, int j) const {return value(i,j);} + //! Returns a changeable reference to position in the matrix + /*! + * This is a key entry. Returns a reference to the matrixes (i,j) + * element. This may be used as an L value. + * @param i The row index + * @param j The column index + */ doublereal& value( int i, int j) {return m_data[m_nrows*j + i];} doublereal value( int i, int j) const {return m_data[m_nrows*j + i];} diff --git a/Cantera/src/base/misc.cpp b/Cantera/src/base/misc.cpp index 2c95aa5d2..1fbb48335 100755 --- a/Cantera/src/base/misc.cpp +++ b/Cantera/src/base/misc.cpp @@ -244,7 +244,7 @@ namespace Cantera { * * @ingroup errorhandling */ - void getErrors( std::ostream& f) ; + void getErrors(std::ostream& f) ; //! Prints all of the error messages using writelog /*! @@ -427,37 +427,47 @@ namespace Cantera { } ; #ifdef THREAD_SAFE_CANTERA + //! Typedef for thread specific messages typedef boost::shared_ptr< Messages > pMessages_t ; + + //! Typedef for map between a thread and the message typedef std::map< cthreadId_t, pMessages_t > threadMsgMap_t ; + class ThreadMessages { public: - ThreadMessages() - { - } - - Messages* operator->() - { - MSG_LOCK() ; - cthreadId_t curId = getThisThreadId() ; - threadMsgMap_t::iterator iter = m_threadMsgMap.find( curId ) ; - if ( iter != m_threadMsgMap.end() ) + //! Constructor + ThreadMessages() + { + } + + //! Provide a pointer deferencing overloaded operator + /*! + * @return returns a pointer to Messages + */ + Messages* operator->() + { + MSG_LOCK() ; + cthreadId_t curId = getThisThreadId() ; + threadMsgMap_t::iterator iter = m_threadMsgMap.find( curId ) ; + if ( iter != m_threadMsgMap.end() ) { - return (iter->second.get()) ; + return (iter->second.get()) ; } - pMessages_t pMsgs( new Messages() ) ; - m_threadMsgMap.insert( std::pair< cthreadId_t, pMessages_t >( curId, pMsgs ) ) ; - return pMsgs.get() ; - } + pMessages_t pMsgs( new Messages() ) ; + m_threadMsgMap.insert( std::pair< cthreadId_t, pMessages_t >( curId, pMsgs ) ) ; + return pMsgs.get() ; + } - void removeThreadMessages() { - MSG_LOCK() ; - cthreadId_t curId = getThisThreadId() ; - threadMsgMap_t::iterator iter = m_threadMsgMap.find( curId ) ; - if ( iter != m_threadMsgMap.end() ) { - m_threadMsgMap.erase( iter ) ; - } - } + //! Remove a local thread message + void removeThreadMessages() { + MSG_LOCK() ; + cthreadId_t curId = getThisThreadId() ; + threadMsgMap_t::iterator iter = m_threadMsgMap.find( curId ) ; + if ( iter != m_threadMsgMap.end() ) { + m_threadMsgMap.erase( iter ) ; + } + } private: //! Thread Msg Map diff --git a/Cantera/src/base/units.h b/Cantera/src/base/units.h index 681e1381c..02a609d99 100644 --- a/Cantera/src/base/units.h +++ b/Cantera/src/base/units.h @@ -169,7 +169,8 @@ namespace Cantera { std::map m_act_u; #if defined(THREAD_SAFE_CANTERA) - static boost::mutex units_mutex; + //! Decl for static locker for Units singelton + static boost::mutex units_mutex; #endif /*!