모두 거래, 제 질문을 읽어 주셔서 감사합니다. 일부 FEM 코드를 작성하기 위해 Eigen3.3.4 (http://eigen.tuxfamily.org/index.php?title=Main_Page)를 사용하고 있습니다.FEM 희소 행렬을 효율적으로 조립하는 방법
Eigen3.3.4 문서를 읽었으며이 웹 사이트 (http://eigen.tuxfamily.org/dox/TopicFunctionTakingEigenTypes.html)에 이라고 말하면 추가 사본을 피하고 고성능을 얻으려면 Ref<MatrixBase>
을 사용해야합니다. 일부 조립 스파 스 매트릭스 내 FEM 코드 그래서
FormFE(const Ref<VectorXd> &U,const Ref<VectorXd> &V,
Ref<SparseMatrix<double> > AMATRIX,Ref<VectorXd> RHS)
는, V는 속도 기간을 나타냅니다. AMATRIX는 내 희소 행렬이고 RHS는 잔여 항입니다.
그럼 내가 먼저 내 A- 매트릭스 전에 (내가 모든 비 - 제로 요소와 값 (I 초기화 0으로 값을 설정)을 포함하는 tripletList가) 조립 초기화하려고 그래서 시도 :
AMATRIX.setFromTriplets(ZeroTripList.begin(),ZeroTripList.end());
하지만 오류가 있습니다
class Eigen::Ref<Eigen::SparseMatrix<double, 0, int> >’ has no member named ‘setFromTriplets
그래서 어떻게이 문제를 해결할 수 있습니까? 내 솔루션의
하나는 사용이 매우 잘 작동하지만, 잘 모르겠어요
FormFE(const Ref<VectorXd> &U,const Ref<VectorXd> &V,
SparseMatrix<double> &AMATRIX,Ref<VectorXd> RHS)
가 효율적인지. 내가 CPP에서 아주 좋은 아니에요 : P 실제로
, 내 질문은 :
- 효율적으로 (특히 FEM 계산을위한) 아이겐를 사용하는 방법, 나는 각각의 거의 모든 곳에서 아이겐의 VectorXd 및 MatrixXd 사용 내 FEM 관련 기능.
- SparseMatrix를 효율적으로 조립하는 방법은 무엇입니까?
- FEM 어셈블을 위해 OpenMP 병렬 처리를 수행 할 수 있습니까?
- C++ 기반 FEM 코딩에 대한 유용한 제안 (라이브러리 권장 사항 또는 유용한 아이디어)을 환영합니다!
감사합니다. 감사합니다.
어셈블리 프로그래밍과 어떤 관련이 있습니까? – fuz
안녕하세요, 모든 현재 요소의 계수는 tripletList에 저장되어 있으므로 setFromTriplist를 통해 어셈블 할 수 있습니다. – walkandthinker
이것은 어셈블리 프로그래밍이 아닙니다. 그 단어는 특별한 의미가 있습니다. – fuz