AbstractLinAlgPack: C++ Interfaces For Vectors, Matrices And Related Linear Algebra Objects  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
AbstractLinAlgPack_MatrixLoadSparseElements.hpp
1 // @HEADER
2 // ***********************************************************************
3 //
4 // Moocho: Multi-functional Object-Oriented arCHitecture for Optimization
5 // Copyright (2003) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8 // license for use of this work by or on behalf of the U.S. Government.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov)
38 //
39 // ***********************************************************************
40 // @HEADER
41 
42 #ifndef ALAP_MATRIX_LOAD_SPARSE_ELEMENTS_H
43 #define ALAP_MATRIX_LOAD_SPARSE_ELEMENTS_H
44 
45 #include "AbstractLinAlgPack_MatrixBase.hpp"
46 
47 namespace AbstractLinAlgPack {
48 
72  : public virtual AbstractLinAlgPack::MatrixBase
73 {
74 public:
75 
80  };
81 
88  virtual void reinitialize(
89  size_type rows
90  ,size_type cols
91  ,size_type max_nz
93  ) = 0;
94 
103  virtual void reset_to_load_values() = 0;
104 
132  virtual void get_load_nonzeros_buffers(
133  size_type max_nz_load
134  ,value_type **val
135  ,index_type **row_i
136  ,index_type **col_j
137  ) = 0;
138 
166  virtual void commit_load_nonzeros_buffers(
167  size_type nz_commit
168  ,value_type **val
169  ,index_type **row_i
170  ,index_type **col_j
171  ) = 0;
172 
188  virtual void finish_construction( bool test_setup ) = 0;
189 
190 }; // end class MatrixLoadSparseElements
191 
192 } // end namespace AbstractLinAlgPack
193 
194 #endif // ALAP_MATRIX_LOAD_SPARSE_ELEMENTS_H
Base class for all polymorphic matrices.
Mix-in interface for loading nonzero elements into a sparse matrix data structure.
virtual void finish_construction(bool test_setup)=0
To be called when the matrix construction is finally finished after all of the nonzero entries have b...
virtual void reset_to_load_values()=0
Reinitialize internal counter to load new nonzero values.
virtual void commit_load_nonzeros_buffers(size_type nz_commit, value_type **val, index_type **row_i, index_type **col_j)=0
Commit nonzeros in buffers obtained from get_load_nonzeros_buffers().
Entries assumed have unique row and column indexes (client must enforce this!)
virtual size_type cols() const
Return the number of columns in the matrix.
virtual void get_load_nonzeros_buffers(size_type max_nz_load, value_type **val, index_type **row_i, index_type **col_j)=0
Get pointers to buffers to add nonzero elements.
Entries allowed with duplicate row and column indexes with the understanding that the values are summ...
virtual size_type rows() const
Return the number of rows in the matrix.
virtual void reinitialize(size_type rows, size_type cols, size_type max_nz, EAssumeElementUniqueness element_uniqueness=ELEMENTS_ASSUME_DUPLICATES_SUM)=0
Resize the matrix and reserve space for nonzero elements to be added.