summaryrefslogtreecommitdiff
path: root/thirdparty/linux/include/coin1/IpTripletHelper.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/linux/include/coin1/IpTripletHelper.hpp')
-rw-r--r--thirdparty/linux/include/coin1/IpTripletHelper.hpp135
1 files changed, 135 insertions, 0 deletions
diff --git a/thirdparty/linux/include/coin1/IpTripletHelper.hpp b/thirdparty/linux/include/coin1/IpTripletHelper.hpp
new file mode 100644
index 0000000..35424c0
--- /dev/null
+++ b/thirdparty/linux/include/coin1/IpTripletHelper.hpp
@@ -0,0 +1,135 @@
+// Copyright (C) 2004, 2009 International Business Machines and others.
+// All Rights Reserved.
+// This code is published under the Eclipse Public License.
+//
+// $Id: IpTripletHelper.hpp 2380 2013-09-06 22:57:49Z ghackebeil $
+//
+// Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
+
+#ifndef __IPTRIPLETHELPER_HPP__
+#define __IPTRIPLETHELPER_HPP__
+
+#include "IpTypes.hpp"
+#include "IpException.hpp"
+
+namespace Ipopt
+{
+
+ DECLARE_STD_EXCEPTION(UNKNOWN_MATRIX_TYPE);
+ DECLARE_STD_EXCEPTION(UNKNOWN_VECTOR_TYPE);
+
+ /** forward declarations */
+ class Matrix;
+ class GenTMatrix;
+ class SymTMatrix;
+ class DiagMatrix;
+ class IdentityMatrix;
+ class ExpansionMatrix;
+ class ScaledMatrix;
+ class SymScaledMatrix;
+ class SumMatrix;
+ class SumSymMatrix;
+ class ZeroMatrix;
+ class ZeroSymMatrix;
+ class CompoundMatrix;
+ class CompoundSymMatrix;
+ class TransposeMatrix;
+ class ExpandedMultiVectorMatrix;
+ class Vector;
+
+ class TripletHelper
+ {
+ public:
+ /**@name A set of recursive routines that help with the Triplet format. */
+ //@{
+ /** find the total number of triplet entries of a Matrix */
+ static Index GetNumberEntries(const Matrix& matrix);
+
+ /** fill the irows, jcols structure for the triplet format from the matrix */
+ static void FillRowCol(Index n_entries, const Matrix& matrix, Index* iRow, Index* jCol, Index row_offset=0, Index col_offset=0);
+
+ /** fill the values for the triplet format from the matrix */
+ static void FillValues(Index n_entries, const Matrix& matrix, Number* values);
+
+ /** fill the values from the vector into a dense double* structure */
+ static void FillValuesFromVector(Index dim, const Vector& vector, Number* values);
+
+ /** put the values from the double* back into the vector */
+ static void PutValuesInVector(Index dim, const double* values, Vector& vector);
+ //@}
+
+ private:
+ /** find the total number of triplet entries for the SumMatrix */
+ static Index GetNumberEntries_(const SumMatrix& matrix);
+
+ /** find the total number of triplet entries for the SumSymMatrix */
+ static Index GetNumberEntries_(const SumSymMatrix& matrix);
+
+ /** find the total number of triplet entries for the CompoundMatrix */
+ static Index GetNumberEntries_(const CompoundMatrix& matrix);
+
+ /** find the total number of triplet entries for the CompoundSymMatrix */
+ static Index GetNumberEntries_(const CompoundSymMatrix& matrix);
+
+ /** find the total number of triplet entries for the TransposeMatrix */
+ static Index GetNumberEntries_(const TransposeMatrix& matrix);
+
+ /** find the total number of triplet entries for the TransposeMatrix */
+ static Index GetNumberEntries_(const ExpandedMultiVectorMatrix& matrix);
+
+ static void FillRowCol_(Index n_entries, const GenTMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
+
+ static void FillValues_(Index n_entries, const GenTMatrix& matrix, Number* values);
+
+ static void FillRowCol_(Index n_entries, const SymTMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
+
+ static void FillValues_(Index n_entries, const SymTMatrix& matrix, Number* values);
+
+ static void FillRowCol_(Index n_entries, const DiagMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
+
+ static void FillValues_(Index n_entries, const DiagMatrix& matrix, Number* values);
+
+ static void FillRowCol_(Index n_entries, const IdentityMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
+
+ static void FillValues_(Index n_entries, const IdentityMatrix& matrix, Number* values);
+
+ static void FillRowCol_(Index n_entries, const ExpansionMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
+
+ static void FillValues_(Index n_entries, const ExpansionMatrix& matrix, Number* values);
+
+ static void FillRowCol_(Index n_entries, const SumMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
+
+ static void FillValues_(Index n_entries, const SumMatrix& matrix, Number* values);
+
+ static void FillRowCol_(Index n_entries, const SumSymMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
+
+ static void FillValues_(Index n_entries, const SumSymMatrix& matrix, Number* values);
+
+ static void FillRowCol_(Index n_entries, const CompoundMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
+
+ static void FillValues_(Index n_entries, const CompoundMatrix& matrix, Number* values);
+
+ static void FillRowCol_(Index n_entries, const CompoundSymMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
+
+ static void FillValues_(Index n_entries, const CompoundSymMatrix& matrix, Number* values);
+
+ static void FillRowCol_(Index n_entries, const ScaledMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
+
+ static void FillValues_(Index n_entries, const ScaledMatrix& matrix, Number* values);
+
+ static void FillRowCol_(Index n_entries, const SymScaledMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
+
+ static void FillValues_(Index n_entries, const SymScaledMatrix& matrix, Number* values);
+
+ static void FillRowCol_(Index n_entries, const TransposeMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
+
+ static void FillValues_(Index n_entries, const TransposeMatrix& matrix, Number* values);
+
+ static void FillRowCol_(Index n_entries, const ExpandedMultiVectorMatrix& matrix, Index row_offset, Index col_offset, Index* iRow, Index* jCol);
+
+ static void FillValues_(Index n_entries, const ExpandedMultiVectorMatrix& matrix, Number* values);
+
+ };
+} // namespace Ipopt
+
+#endif