이것은 일종의 모호한 질문이며 나는 아무에게도 대답을 기대하지 않지만 Eigen :: SparseMatrix를 가져 와서 반환하는이 메서드가 있습니다. 나는 그것을 deal.ii 라이브러리에 넣고 싶습니다. deal/iigen에서 SparseMatrix를 복사/변환하는 방법이 있습니까? 비슷한 방법으로 아이겐 :: 희소 행렬이 있습니까Eigen :: SparseMatrix를 <double>에서 deal.ii로 변환 : SparseMatrix <double>?
`SparseMatrix<double> matrix(sparsity);
...//fill matrix
Epetra_Map map(TrilinosWrappers::types::int_type(5),
TrilinosWrappers::types::int_type(5),
0,
Utilities::Trilinos::comm_world());
TrilinosWrappers::SparseMatrix tmatrix;
tmatrix.reinit (map, map, matrix, 0, false);`
: 난 당신이 같은 Trilinos 희소 행렬 뭔가에 deal.ii를 복사 할 수 있습니다 알아? 나는 Eigen이 거래에서 그런 종류의 지원을 정말로 가지고 있다고 생각하지 않는다 .ii. 그래서 아마도 거기에 약간의 '폭력'유형의 방법은 분명히 작동하지 않는 코드에서 이러한 시도 같이이다 :
`
Eigen::SparseMatrix<double> ConvertToEigenMatrix(SparseMatrix<double> data)
{
Eigen::SparseMatrix<double> eMatrix(data.m(), data.n());
for (int i = 0; i < data.m(); ++i)
eMatrix.row(i) = Eigen::SparseMatrix<double> ::Map(&data[i][0], data.n());
return eMatrix;
`
이 좋아, 그래서 변환하는 방법을 알아 냈어 dealii :: SparseMatrix -> Eigen :: SparseMatrix에서.
SparseMatrix<double>::iterator smi = matrix.begin();
SparseMatrix<double>::iterator smi_end = matrix.end();
unsigned int row,col;
double val;
for (; smi!=smi_end; ++smi)
{
row = smi->row();
col = smi->column();
val = smi->value();
spMat.insert(row, col) = val;
std::cout << val << std::endl;
}
아니요, 저는 그 반대를 이해해야합니다.
'deal.ii'에 대해서는 모르겠지만 CRS 또는 CCS 형식의 원시 버퍼를 전달하는 방법이 있다면'Eigen :: SparseMatrix'를 전달할 수 있습니다. outerIndexPtr()','innerIndexPtr()','valuesPtr()'메소드를 호출합니다. – ggael