2016-06-02 2 views
0

현재 Fortran에서 스파 스 매트릭스를 작성하고 간단한 AX = b 선형 시스템을 해결하는 코드를 작성 중입니다. 이렇게하려면 프로젝트 감독자의 요청에 따라 Pardiso 스파 스 매트릭스 라이브러리를 사용하고 있습니다.Fortran Pardiso 스파 스 매트릭스 포맷 문제

코드는 두 부분으로 나뉩니다. 전반은 매트릭스와 오른편을 만들고, 후반은 Pardiso에게 그 시스템을 풀어주기를 요구합니다. I 은 처음 반이 작동한다는 것을은 알고 있습니다. 왜냐하면 Fortran 외부에서 해당 데이터를 내보내고 Python으로 시스템을 해결하면 정확히 예상 된 결과가 나오기 때문입니다. 그러나, 나는 Pardiso가 제대로 작동하도록 할 수 없다. 왜냐하면 내가 제공 한 오류 메시지를 오해하기 때문이다. 매뉴얼에는 거의 설명되어 있지 않으며 인터넷 포럼은 Pardiso 관련 질문으로 채워진 드문 드문 방식입니다. 다음과 같이

내가 PARDISO을 위해 사용하고있는 설정은 다음과 같습니다

iparm(1)=0 
iparm(2)=2 
iparm(6)=0 
iparm(10)=13 
iparm(11)=1 
iparm(13)=1 
iparm(19)=0 
iparm(21)=1 
iparm(26)=1 
iparm(52)=1 
mtype = 11 
iparm(3) = 1 
solver=0 
mtype=11 

오류를 내가받을 수 있습니다

오류 PARDISO (sequence_ido, 매개 변수) error_num = 4 입력 확인 :

matrix_number_new 22 ido 32675가 호환되지 않음

설명서 또는 인터넷에서 이것이 무엇을 의미하는지 알 수 없습니다. pardiso_chkmatrixpardiso_printstats은 어떤 오류도 발생시키지 않으므로 어떤 일이 일어나는지 확신 할 수 없습니다.

답변

0

문제가 무엇인지 명확하게 말하기는 어렵지만 여기에는 가설이 있습니다. 32675의 값은 2 바이트 변수 (C : "short int"유형 변수)에 저장 될 수있는 최대 정수 값에 32767에 해당하는 의심스러운 값입니다. Pardiso의 내부 배열 중 일부는 정수 값을 "short 메모리를 절약하기 위해 "int"(4 바이트) 대신 "int"(2 바이트)를 사용하십시오. 내가 말했듯이 그것은 가능한 것입니다.

관련 문제