3

私はPythonでいくつかのsmpsファイルを読み込もうとしていて、Fortranの実装を見つけたので、f2pyを試してみようと思いました。問題は、私がFortranの経験がないことです。

Linuxボックスにgfortranとf2pyを正常にインストールし、w f2pyページで例を実行しましたが、大きなプログラムのコンパイルと実行に問題があります。2つのファイルがあります。1つはファイルリーダーラッパーを含み、もう1つはすべてのロジックを含みます。彼らはお互いを呼んでいるようですが、コンパイルしてリンクしたり、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.

fortran90spmsリーダーはここにあります。

ヘルプや提案をいただければ幸いです。

4

1 に答える 1

0

私は、Fortranビジネスを完全にスキップすることをお勧めします。

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

ここではMPSレコードのレイアウトについて説明し、Pythonで比較的簡単に分解できるように見えます。

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

とにかく、すべてのデータに対して適切なPythonクラス(またはnamedtuples)を定義する必要があります。

私はFortranが役に立っていないと思います。

于 2010-03-17T13:50:39.223 に答える