Fortranプログラミングの続き

引越しを終えて、新たにPCを購入した。ということで、以前練習しておいたFortran開発環境を実際に構築してみたので、再度やり方をまとめておく。
まずはVisual C++ Express EditionとPlatform SDKのインストールから。
Visual C++のインストールは問題なかったが、Platform SDKのインストールがどうもうまくできていない模様。以前と同じやり方なのになぁ。。。

そうそう、以前は英語の解説ページしかなかったが、日本語に訳されたページが公開されていたので、改めて紹介する。
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/
環境変数はきちんと追加したのに、VC++でWin32アプリをビルドするとincludeファイルがみつからないというエラーが出たが、下記の"ノート"を追加で行ってようやく成功

ノート:
代わりに、Visual C++ Express Edition がインストールされているフォルダのサブフォルダにある \vc\vcpackages に存在するVCProjectEngine.dll.express.config ファイルを修正することで、Visual C++ フォルダの更新を行うことも可能です。ただし、Visual C++ Express Edition を再度立ち上げる前に、「%USERPROFILE%\Local Settings\Application Data\Microsoft\VCExpress\8.0」 において "vccomponents.dat" が存在する場合は、その削除を行うことも忘れずに行ってください。

具体的な修正方法が掲載されていないけど、10行目と12行目のIncludeとLibにそれぞれ

  1. C:\Program Files\Microsoft Platform SDK\Include
  2. C:\Program Files\Microsoft Platform SDK\Lib

を追加したら成功した。

Intelコンパイラをこの後インストールして、例によってifortvars.batとifort.cfgを編集。サンプルコードディレクトリにあるint_sin.f90がコンパイル、実行できればオーケー。

結構面倒な作業ではあるのだが。。。VF9.1でVC++2005に正式対応するとの情報も入っている(VFのユーザーズフォーラム)から、これが出たらもう少しインストールは楽になるのかな。

追記だが、Platform SDKのインストールの際、カスタムインストールでは環境変数への登録がオフになっていることがわかる。どうも、他の環境変数との衝突を避けるためと書いてあったが、今回は強引に登録することにしてみた。その結果、path, lib, includeのほかにいくつかの環境変数が登録されていたのと、システム環境変数とユーザー環境変数の両方にpath, lib, includeが追加されていた。2重登録でも問題はないだろうが、気持ち悪いので、ユーザー環境変数に登録されたPlatform SDK関連のものは削除したことをメモしておく。

環境が整ったところで、簡単な1次元衝撃波管問題のコードをコンパイル
VC++からのプロジェクトには対応していないため、nmakeコマンドによってコンパイルを行う。
Makefileの記述の仕方はUNIXとほぼ同じで問題ないようだが、コンパイルオプションだけは注意が必要。
倍精度のオプションは-r8ではなくて/4R8。(integerの場合はr(R)をi(I)に読み替え)。
ターゲットの実行ファイルには拡張子exeをつける必要がある。

これでコンパイルができ、見事実行された。結果も問題なし。

こんなところだろうか。後はこれからもう少し複雑なものを試して、様子を見ていくことにする。

引越し

気づいたらずいぶんと時間が空いていた。。。一週間前に仙台を離れて北関東の某所へと引っ越してきた。
9年間住み慣れた街を離れることは非常に寂しい思いもあったが、こればかりはやむを得ない。いつかまた訪れることを楽しみにして、新たな地での生活も楽しむようにしよう。

昨日の続き。

気分一新。再チャレンジ。まずはVC++のインストール。とりあえず、この状態でVCを起動して見ると、画面上にPSDKに関する記述があるので、開いてみる。
何と、PSDKはインストールしただけでは駄目で、その後に設定が必要だった。

Step 3: Update the Visual C++ directories in the Projects and Solutions section in the Options dialog box.

Add the paths to the appropriate subsection:

Executable files: C:\Program Files\Microsoft Platform SDK\Bin

Include files: C:\Program Files\Microsoft Platform SDK\include

Library files: C:\Program Files\Microsoft Platform SDK\lib

Note: Alternatively, you can update the Visual C++ Directories by modifying the VCProjectEngine.dll.express.config file located in the \vc\vcpackages subdirectory of the Visual C++ Express install location. Please make sure that you also delete the file "vccomponents.dat" located in the "%USERPROFILE%\Local Settings\Application Data\Microsoft\VCExpress\8.0" if it exists before restarting Visual C++ Express Edition.



Step 4: Update the corewin_express.vsprops file.

One more step is needed to make the Win32 template work in Visual C++ Express. You need to edit the corewin_express.vsprops file (found in C:\Program Files\Microsoft Visual Studio 8\VC\VCProjectDefaults) and

Change the string that reads:

AdditionalDependencies="kernel32.lib" to

AdditionalDependencies="kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib"



Step 5: Generate and build a Win32 application to test your paths.

In Visual C++ Express, the Win32 Windows Application type is disabled in the Win32 Application Wizard. To enable that type, you need to edit the file AppSettings.htm file located in the folder “%ProgramFiles%\Microsoft Visual Studio 8\VC\VCWizards\AppWiz\Generic\Application\html\1033\".

In a text editor comment out lines 441 - 444 by putting a // in front of them as shown here:

// WIN_APP.disabled = true;
// WIN_APP_LABEL.disabled = true;
// DLL_APP.disabled = true;
// DLL_APP_LABEL.disabled = true;

Save and close the file and open Visual C++ Express.

From the File menu, click New Project. In the New Project dialog box, expand the Visual C++ node in the Product Types tree and then click Win32. Click on the Win32 Console Application template and then give your project a name and click OK. In the Win32 Application Wizard dialog box, make sure that Windows application is selected as the Application type and the ATL is not selected. Click the Finish button to generate the project.

As a final step, test your project by clicking the Start button in the IDE or by pressing F5. Your Win32 application should build and run.

見事にこの3ステップをスルーしてしまっていたので、この手順を行い、まずはVC++でWin32アプリをビルド>実行。

真っ白なウィンドウが表示されればビルドは成功。インストールできているということらしい。
さて、次にIntelコンパイラのインストール。とりあえず現状ではVC++ 2005には対応していないので、Visual Studioとの統合は無視。
で、コンパイルするも「mspdb80.dllが見つかりません」というエラーが発生。探してみると、VC++のダイナミックリンクライブラリだった。あれやこれやと悩んで情報を仕入れたのだが、最終的に下記の手順が必要らしい。

  1. 環境変数PATH, LIB, INCLUDEにVC++インストールディレクトリ直下にあるbin, lib, includeそれぞれを追加。
  2. 環境変数PATH, LIB, INCLUDEにPlatform SDKインストールディレクトリ直下にあるbin, lib, includeをそれぞれ追加。

これでようやくサンプルコードのコンパイル、実行ができた。
こういうことは書いておけよなぁ。。。。

Windows上でのFortranプログラミング

UNIX環境がない場所へ移動するため、Windows上でFortranコード開発を可能とする道を探してみた。
安直にIntel Compiler for Windowsを選択。
インストールすれば使えるだろうと高をくくっていたのが失敗。
ネット検索したが、情報がちと古いので自分で整理しておくことにした。
まず、インテルコンパイラVisual Studioに含まれるライブラリを必要とするようで、単体では動作しない。さらに、Version9.0ではVisual Studio .NET 2002/2003が必要であり、現時点での最新版である2005ではカスタマイズが必要になる。また、Visual Studio 2005になって、Express Editionというフリーのバージョンが利用できるようになり(以前のToolkitの代わりだろうか?)、これを用いてもいいらしい。
出来る限り安価に環境構築をすることが目的であるため、今回はこのVisual C++ Express Editionを利用する。
さらに、これだけでは駄目で、Platform SDKも必要となる。以前はコンポーネント毎にダウンロードできたようだが、こちらも最新版では不可能。インストール時に選択したコンポーネントが自動的にダウンロードされるようだ(isoイメージのダウンロードは可能)。
Visual C++、Platform SDKの順にインストールを行い、Intelコンパイラも続けてインストール。

全てのインストールが修了したら、コンパイラのインストールディレクトリにあるC:\Program Files\Intel\Compiler\Fortran\9.0\IA32\Bin\ifortvars.batを編集。

@call

@call "C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"
@call "C:\Program Files\Microsoft Platform SDK\SetEnv.cmd"

と書き換え保存。
C:\Program Files\Intel\Compiler\Fortran\9.0\IA32\Bin\ifort.cfgを編集

これでコンパイルができるようになるはず。
が、失敗。何がよくなかったのか。。。もう一度最初からやり直すことにする。。

ページェント写真コンクール

仙台の冬の風物詩。光のページェントの写真を撮りに行き、コンクールに応募していたが、結果が到着。
ビギナーズラックとは正に。入選、佳作に一本ずつ、計2本入賞した。3月6日から10日まで仙台市役所にて展示されるようだ。選評を見るのが楽しみ。

「ハミザベス」 栗田有起

以前読んだアンソロジーの中の作品がよかったので、文庫を購入。
文体はやはりあっさりしていて、さわやかさが好印象。ハミザベスでは、死んだと思っていた父親が本当に死んだという連絡を突然受け、さらに遺産としてマンションを譲り受けた娘を描いた物語。
豆姉妹はよく似た姉妹なんだが、姉が突然SMクラブで働きだし、様々な身の回りの変化に戸惑いながらも受け入れていく高校生の妹を描いた物語。
どちらもちょっと突飛な話ではあるのだが、それも至極あっさり描かれている。それほど長くもないし移動時間に読むとちょうどいいかも。

スタック

なんと大学の駐車場でスタック。。。_| ̄|○
アスファルトではない場所に停めたのがまずかったか。。。

  1. 前後に揺する
  2. タイヤの前後を掘る
  3. 方向を変えて脱出を試みる
  4. タイヤの下に雑巾挟んでみる

全ての苦労がタイヤと共に空回り。_| ̄|○
30分ほどあれやこれやとやってみたが、どーにもならないので諦めて放置して徒歩帰宅。悔しい。。。。明日の昼頃に気温が上がるのを待ってもう一度脱出を試みよう。。。