2017-01-16 12 views
-3

私はいくつかのODEを解決しようとしており、ODEPACKのようなfortranコード を探していましたが、fortran 90のバージョンは見つかりませんでした。 fortran 90にOPEPACKなどのodeソルバーコードはありますか?fortran 90にOPEPACKなどのodeソルバーコードはありますか?

+2

結果が悪い結果が得られた検索はどのようなものでしたか?私たちはツールを提案するためではありません。 – Ross

答えて

2

Fortran 77バージョンのODEPACKは、Fortran 90から呼び出すことができます。Fortranは、そこで最も後方互換性のあるプログラミング言語の1つです。彼らは良い古いコードをすべて無効にしたくなかった。メインコードにFortran 90を使用しても、ODEPACKなどの古いライブラリを使用することはできません。

+0

Fortranは後方互換性のために有名であり、コンパイラによっては、レガシーコードが許可されていることを示すフラグを追加する必要があるかもしれません)Fortun 90プログラムでForty 77コードを使用することをJuYongLeeが止めるものはありません。私がうまく理解すれば、JuYongLeeは "使いやすい" ODEソルバーを探しています。 – Pap

+0

ありがとうございました。 – JuYongLee

2

私がしているのは、レガシーコードの使用を簡略化するFortran 90/95サブルーチンを実装することです。そのため、メインプログラムは従来のコードにまったく直接アクセスできません。 Fortran 90でODEPACKを再実装する必要は特にありません。ホイールを再開発する必要はありません。特に、「ホイール」がODEPACK(これまでのところ最高のODEソルバー)でした。

以前は、DLSODAR_F95を実装しましたが、試してみることをおすすめします。これは実際にODEPACKの最も強力な(そして洗練された)ODEソルバー、すなわちDLSODARの使用を簡素化するFortran 95モジュールです。このモジュールには、元のDLSODARサブルーチンの代わりに使用できるパブリックサブルーチンODE_DLSODARがあります。 ODE_DLSODARは、同じ機能を提供するためにはるかに使いやすくなります。

元のFortran 77コードでは、多くの引数を渡す必要があります。そのほとんどは、解決するODEによって変更する必要はありません。また、必要な変更は簡単です。 ODE_DLSODARはこれらの引数をすべて設定し、内部的にDLSODARを呼び出して問題を解決します。必要ならば、ODE_DLSODARにオプションの引数を渡してDLSODARを完全に制御できますが、通常は引数がほとんどないODE_DLSODARを呼び出すだけで済むので、モジュールは残りの部分を処理します。

リンクのパッケージには、DLSODAR_F95の使用方法に関するいくつかの例も含まれています。 DLSODARの代わりに他のODEPACKのソルバーが必要な場合は、DLSODAR_F95に似たモジュールを実装する必要があると思います。

+0

ありがとうございました。 – JuYongLee

関連する問題