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); }
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; }
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; }
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); }