f2py가있는 Fortran 프로그램에서 Python 모듈을 어떻게 작성합니까?

StackOverflow https://stackoverflow.com/questions/2462354

  •  20-09-2019
  •  | 
  •  

문제

Python이있는 SMPS 파일을 읽으려고 노력하고 있으며 Fortran 구현을 찾았으므로 F2Py에게 샷을 줄 것이라고 생각했습니다. 문제는 Fortran에 대한 경험이 없다는 것입니다.

Linux 상자에 Gfortran 및 F2Py를 성공적으로 설치하고 Thew F2Py 페이지에서 예제를 실행했지만 큰 프로그램을 컴파일하고 실행하는 데 어려움이 있습니다. 파일 리더 래퍼와 하나는 모든 로직이있는 두 파일이 있습니다. 그들은 서로에게 전화하는 것처럼 보이지만 f2py를 컴파일하고 링크하거나 시도 할 때 어떻게 든 서로를 찾을 수 없다는 오류가 발생합니다.

f95 -c FILEWR~1.F
f95 -c SMPSREAD.F90 
f95 -o smpsread SMPSREAD.o FILEWR~1.o 

FILEWR~1.o In function `file_wrapper_'
FILEWR~1.F(.text+0x3d) undefined reference to `chopen_'
usrlibgcci486-linux-gnu4.4.1libgfortranbegin.a(fmain.o) In function `main'
(.text+0x27) undefined reference to `MAIN__'
collect2 ld returned 1 exit status  

또한 이름을 file_wrapper.f로 변경하려고 시도했지만 도움이되지 않았습니다.

f2py를 사용하면 무료 형식을 수락하기 위해 의견을 포함해야한다는 것을 알았고 이것을 새 파일로 저장하고 시도했습니다.

f2py -c -m smpsread smpsread.f90

나는 많은 출력과 경고를 얻지 만 오류는 이것으로 보인다.

getctype: No C-type found in "{'typespec': 'type', 'attrspec': ['allocatable'],  'typename': 'node', 'dimension': [':']}", assuming void.

그만큼 Fortran 90 SPMS 리더는 여기에서 찾을 수 있습니다.

도움이나 제안에 감사드립니다.

도움이 되었습니까?

해결책

Fortran 사업을 완전히 건너 뛰는 것이 좋습니다.

http://myweb.dal.ca/gassmann/smps2.htm

MPS 레코드 레이아웃은 여기에 설명되어 있으며 파이썬에서 선택하기가 비교적 간단 해 보입니다.

http://myweb.dal.ca/gassmann/smps2.htm#corempsline

어쨌든 모든 데이터에 대해 적절한 Python 클래스 (또는 명명)를 정의해야합니다.

나는 Fortran이 돕고 있다고 생각하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top