Example #1
0
        public static CholmodInfo cConverter(ref SparseMatrixComplex A, CholmodInfo.CholmodMatrixStorage storage)
        {
            CholmodInfo info = new CholmodInfo();

            info.MatrixType          = CholmodInfo.CholmodMatrixType.Sparse;
            info.MatrixStorageType   = storage;
            info.MatrixStorageMethod = CholmodInfo.CholmodMatrixStoageMethod.Normal;
            info.MatrixItemType      = CholmodInfo.CholmodMatrixItemType.Complex;
            info.RowCount            = A.RowCount;
            info.ColumnCount         = A.ColumnCount;

            switch (storage)
            {
            case CholmodInfo.CholmodMatrixStorage.CRS:
                A.ToCRS(out info.colIndex, out info.rowIndex, out info.values, out info.nnz);
                break;

            case CholmodInfo.CholmodMatrixStorage.CCS:
                A.ToCCS(out info.colIndex, out info.rowIndex, out info.values, out info.nnz);
                break;

            case CholmodInfo.CholmodMatrixStorage.Triplet:
                A.ToTriplet(out info.colIndex, out info.rowIndex, out info.values, out info.z, out info.nnz);
                break;

            default:
                A.ToTriplet(out info.colIndex, out info.rowIndex, out info.values, out info.z, out info.nnz);

                break;
            }
            return(info);
        }
Example #2
0
        public static CholmodInfo cConverter(ref SparseMatrixComplex A, CholmodInfo.CholmodMatrixStorage storage)
        {
            CholmodInfo info = new CholmodInfo();
            info.MatrixType = CholmodInfo.CholmodMatrixType.Sparse;
            info.MatrixStorageType = storage;
            info.MatrixStorageMethod = CholmodInfo.CholmodMatrixStoageMethod.Normal;
            info.MatrixItemType = CholmodInfo.CholmodMatrixItemType.Complex;
            info.RowCount = A.RowCount;
            info.ColumnCount = A.ColumnCount;

            switch (storage)
            {
                case CholmodInfo.CholmodMatrixStorage.CRS:
                    A.ToCRS(out info.colIndex, out info.rowIndex, out info.values, out info.nnz);
                    break;
                case CholmodInfo.CholmodMatrixStorage.CCS:
                    A.ToCCS(out info.colIndex, out info.rowIndex, out info.values, out info.nnz);
                    break;
                case CholmodInfo.CholmodMatrixStorage.Triplet:
                    A.ToTriplet(out info.colIndex, out info.rowIndex, out info.values, out info.z, out info.nnz);
                    break;
                default:
                    A.ToTriplet(out info.colIndex, out info.rowIndex, out info.values, out info.z, out info.nnz);

                    break;
            }
            return info;
        }
Example #3
0
        public static CholmodInfo cConverter(ref SparseMatrixComplex A, CholmodInfo.CholmodMatrixStorage storage, CholmodInfo.CholmodMatrixStoageMethod method)
        {
            CholmodInfo info = new CholmodInfo();
            info.MatrixType = CholmodInfo.CholmodMatrixType.Sparse;
            info.MatrixStorageType = storage;
            info.MatrixStorageMethod = method;
            info.MatrixItemType = CholmodInfo.CholmodMatrixItemType.Complex;
            info.RowCount = A.RowCount;
            info.ColumnCount = A.ColumnCount;

            double[] values = null;

            switch (storage)
            {
                case CholmodInfo.CholmodMatrixStorage.CRS:
                    A.ToCRS(out info.colIndex, out info.rowIndex, out values, out info.nnz);
                    break;
                case CholmodInfo.CholmodMatrixStorage.CCS:
                    A.ToCCS(out info.colIndex, out info.rowIndex, out values, out info.nnz);
                    break;
                case CholmodInfo.CholmodMatrixStorage.Triplet:
                    A.ToTriplet(out info.colIndex, out info.rowIndex, out values, out info.z, out info.nnz);
                    break;
                default:
                    A.ToTriplet(out info.colIndex, out info.rowIndex, out values, out info.z, out info.nnz);

                    break;
            }

            switch (method)
            {
                case CholmodInfo.CholmodMatrixStoageMethod.Normal:
                    info.values = values;
                    break;
                case CholmodInfo.CholmodMatrixStoageMethod.Divided:
                    double[] realParts = new double[info.nnz];
                    double[] imgParts = new double[info.nnz];

                    for (int i = 0; i < info.nnz; i++)
                    {
                        realParts[i] = values[2 * i];
                        imgParts[i] = values[2 * i + 1];
                    }

                    info.values = realParts;
                    info.z = imgParts;

                    values = null;

                    break;
                default:
                    break;
            }

            GC.Collect();
            return info;

        }
Example #4
0
        public static CholmodInfo cConverter(ref SparseMatrixComplex A, CholmodInfo.CholmodMatrixStorage storage, CholmodInfo.CholmodMatrixStoageMethod method)
        {
            CholmodInfo info = new CholmodInfo();

            info.MatrixType          = CholmodInfo.CholmodMatrixType.Sparse;
            info.MatrixStorageType   = storage;
            info.MatrixStorageMethod = method;
            info.MatrixItemType      = CholmodInfo.CholmodMatrixItemType.Complex;
            info.RowCount            = A.RowCount;
            info.ColumnCount         = A.ColumnCount;

            double[] values = null;

            switch (storage)
            {
            case CholmodInfo.CholmodMatrixStorage.CRS:
                A.ToCRS(out info.colIndex, out info.rowIndex, out values, out info.nnz);
                break;

            case CholmodInfo.CholmodMatrixStorage.CCS:
                A.ToCCS(out info.colIndex, out info.rowIndex, out values, out info.nnz);
                break;

            case CholmodInfo.CholmodMatrixStorage.Triplet:
                A.ToTriplet(out info.colIndex, out info.rowIndex, out values, out info.z, out info.nnz);
                break;

            default:
                A.ToTriplet(out info.colIndex, out info.rowIndex, out values, out info.z, out info.nnz);

                break;
            }

            switch (method)
            {
            case CholmodInfo.CholmodMatrixStoageMethod.Normal:
                info.values = values;
                break;

            case CholmodInfo.CholmodMatrixStoageMethod.Divided:
                double[] realParts = new double[info.nnz];
                double[] imgParts  = new double[info.nnz];

                for (int i = 0; i < info.nnz; i++)
                {
                    realParts[i] = values[2 * i];
                    imgParts[i]  = values[2 * i + 1];
                }

                info.values = realParts;
                info.z      = imgParts;

                values = null;

                break;

            default:
                break;
            }

            GC.Collect();
            return(info);
        }