2017-10-06 5 views
1

Je suis en train de coder en C++ et j'utilise FEniCS fenics/2016.1.0. Une partie de mon code estconvertir un dolfin :: matrix dans un eigen :: matrix

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

Je veux résoudre si le système avec Eigen, donc je dois convertir le Dolfin :: matrice A et le Dolfin :: Vector f dans les objets Eigen. C'est possible? Merci pour votre aide

+1

Dupliquer (pas de réponse, non plus): https://stackoverflow.com/questions/33565670/transform-dolfinmatrix-into-eigenmatrix – chtz

Répondre

0

Je ne suis pas sûr s'il est possible de faire une conversion directe. Cependant, il est possible de créer une nouvelle matrice propre, puis de transmettre chaque valeur individuelle de la première matrice à la seconde.

+0

Savez-vous comment alimenter chaque valeur individuelle de la Dolfin :: Matrix dans l'Eigen: :Matrice. Parce que je ne comprends pas comment retourner une valeur particulière d'un Dolfin :: Matrix. Je sais juste qu'il existe cette fonction: void get (double * block, std :: taille_t m, const dolfin :: la_index * lignes, std :: taille_t n, const dolfin :: la_index * cols) const mais je ne sais pas ce que la_index est et comment cela fonctionne – GregL

+1

Je voudrais consulter la documentation: https://fenicsproject.org/olddocs/dolfin/2016.1.0/cpp/programmers-reference/adaptivity/index.html –

+0

La documentation ne dit pas un beaucoup pour toutes les méthodes et constructions de classe. Par exemple pour la fonction dite avant que la description soit: Obtenir un bloc de valeurs. Pour la_index, la description est la suivante: Type d'index pour la compatibilité avec le (s) backend (s) de l'algèbre linéaire – GregL