2017-10-06 6 views
1

Ich schreibe in C++ und ich benutze FEniCS fenics/2016.1.0. Ein Teil meines Code istwandelt eine dolfin :: matrix in eine eigen :: matrix um

Matrix A; 
Vector f; 
std::vector<std::shared_ptr<const DirichletBC>> dirichlet_matrici({dirichlet}); 
assemble_system(A,f,a,L,dirichlet_matrici); 
solve(A, *(u.vector()), f); 

Ich mag so das System mit Eigen zu lösen, so brauche ich die dolfin :: Matrix A und die dolfin :: Vektor f in Eigen-Objekten zu konvertieren. Ist es möglich? Vielen Dank für Ihre Hilfe

+1

Duplikat (auch keine Antwort): https://stackoverflow.com/questions/33565670/transform-dolfinmatrix-into-eigenmatrix – chtz

Antwort

0

Ich bin mir nicht sicher, ob es möglich ist, eine direkte Umwandlung zu machen. Es ist jedoch möglich, eine neue Eigenmatrix zu erstellen und dann jeden einzelnen Wert von der ersten Matrix in die zweite Matrix zu füttern.

+0

Wissen Sie, wie Sie jeden einzelnen Wert aus der Dolfin :: Matrix in das Eigen einspeisen können: :Matrix. Weil ich nicht verstehe, wie man einen bestimmten Wert aus einer Dolfin :: Matrix zurückgibt. Ich weiß nur, dass diese Funktion existiert: void get (double * block, std :: size_t m, const dolfin :: la_index * rows, std :: size_t n, const dolfin :: la_index * cols) const, aber ich weiß es nicht Was la_index ist und wie es funktioniert – GregL

+1

Ich würde die Dokumentation überprüfen: https://fenicsproject.org/olddocs/dolfin/2016.1.0/cpp/programmers-reference/adaptivity/index.html –

+0

Die Dokumentation sagt nicht ein viel für alle Methoden und Klassenkonstruktionen. Zum Beispiel für die zuvor genannte Funktion: Get block of values. Für la_index lautet die Beschreibung: Indextyp für Kompatibilität mit linearen Algebra-Backend (s) – GregL

Verwandte Themen