月別アーカイブ: 2012年4月

Windows Developer Days の感想

感想をざっくりと30分位で記録しておきます。以前だときちっとレポートを書いたのだけど、年齢には勝てず…ってことにしておく。 Microsoft Windows Developer Days (WDD) ホーム http://www.microsoft.com/ja-jp/events/wdd/default.aspx 「Developer」ってことなので、Wndows 8 の metro アプリケーション、Visual Studio 11 での開発ってのが中心になります。私としては、既に acer w500 に windows 8 cosumer preview を入れ、visual studio 11 beta で試して、って具合でもあり、あとは半年後のための情報収集ってことで、 Visual C++ 関係 Azure 関係 ASP.NET MVC 関係 ってところを中心に聴 … 続きを読む

カテゴリー: 雑談 | 3件のコメント

Fortranで複雑な構造体にファイルをロードする

もう少し本格的に Fortran と C++ の相互運用を試してみる。 Fortran に FEMDATA構造体とFEMFILE構造体を作る。FEMDATA構造体は、有限要素データを意識してidと頂点(x,y,z)と応力(qx,qy,qz)のデータを持つ。この頂点データを、FEMFILE構造体にまとめて持つことにする。FEMDATA構造体の最大数は固定長にしておいて、別途 count を持って実際の頂点数を決める。 データをファイルに書き出すのがFEMWRITE関数で、同じファイルから読み込むのがFEMREAD関数。いわゆる永続化処理。Fortranで書き出しファイルはFortran自身で読み出すのが良いのと、配列の実体はFortran上にあるのでこれをアクセスするのは、Fortran自身で行うのが良い、という主旨です。 で、データをGUIを使って突っ込むところはC++(MFC)でやったほ … 続きを読む

カテゴリー: C++, Fortran | コメントする

FortranとC++のstringクラスでやり取りする

FortranではC言語の文字列(char[])位のやり取りをするついでに、C++のstringクラスとのやり取りも実験的に。 今回、画面側がMFCなので、CStringを使うかstringを使うか悩むところなのですが、まぁSTLをごりごり使うという前提でstd::stringを使ってみます。 Fortran側の module は、「character(*)」で文字列を受け取ります。逆に文字列を渡す場合には「character*80」のようにサイズを指定します。Fortranだけでで文字列を表示するときはいいのですが、C言語とやり取りする時にはうしろの空白が面倒なのです。Fortranの場合は、空きの分は空白で埋めてくれます。 なので、std::stringから、Fortranの関数に渡す時には長さを指定して、逆に受け取る場合には string::find_last_not_of で後ろの … 続きを読む

カテゴリー: C++, Fortran | コメントする

Fortranでファイルの読み書きRead/Writeする

Fortran入門: データ入出力 http://www.nag-j.co.jp/fortran/FI_14.html format文 (Fortranプログラミング入門マニュアル | Fortran プログラミング 入門 講座) http://harukin.la.coocan.jp/fortran/004/format.html Fortranのファイル読み書き&フォーマット文に関しては上記を参照。 ただし、Fortran77 の時もそうだったのだが、Fortran で書き出して、Fortran で読み込む分にはさほど書式に気を遣わなくていい…というか、適当に write(*,*) で書き出して、read(*,*) で読み込めるってのが Fortran の便利なところ。 フォーマットを決めずに write した後に read する例。単純に、変数を並べて write すれば … 続きを読む

カテゴリー: 開発, Fortran | コメントする

FortranにC++から文字列を渡す

文字列の受け渡しはなるべくしたくないのだが、設定やら名称取得やらで必要になってくる。 Fortran の場合は、NULL terminate ではないのでC++で扱うときにはちょっと厄介である…そういえば、stringクラスを使うことになるので、そのあたりも考えないと。 基本は、固定領域をとっておいて、あとからC++側でnullを付け加えるとok。 文字列を引数にすると、C++の関数では長さを定義する変数が入る。これは数値の変数とは違って、値型で渡す。 戻り値で扱うことができるかは不明。引数で渡すほうが無難だろう。 string型との変換を考えると、適当なマクロをC++側に仕込むのがよかろう。

カテゴリー: 開発, C++, Fortran | 1件のコメント

FortranにC言語から固定配列を渡す

科学計算の場合、行列式や1次元配列、2次元配列が頻繁に出てくる…と思われる。 Fortran の場合、あまり可変配列を使わずに、あらかじめメモリ領域を確保する固定配列を使う…ってそうしていたのだが、最近はどうなのだろう。可変にするとメモリの確保に時間がかかってスピードに問題がでるので、固定長さの配列のほうが有利。 引き数で配列の数を渡しているが、内部で固定にしかならないので、この場合はあまり意味がない。 最大長をチェックしてオーバーフローにならないように気を付けるとか。 注意しないといけないのは、Fortranは「1」始まりで、C++は「0」始まりということ。なので、Fortranで「3」番目にアクセスをすると、C++では添え字の「2」にアクセスする(0始まりなので、3番目の要素になる)。配列そのものを扱う場合には気にならないが、index を渡す場合には注意が必要 … 続きを読む

カテゴリー: 開発, Fortran | コメントする

Fortranの構造体(TYPE)をC++で扱う

Fortranへのデータの取り回しは、C言語と同じように構造体を使うとok。C++ならばクラスを使いたいところなのだが、Fotranで扱うことはできないので構造体(TYPE)で。 Fortranの構造体は TYPE で定義して、メンバ変数には「%」を使って参照する。 構造体はC言語側でもう一度定義しないさないといけない。 型だけを合わせれば OK で、メンバ変数名は自由につけてよい…が、同じようにつけたほうが良かろう。 関数の引き数に使う場合は、integerの変数と同じようにポインタにする。 function の戻り値に構造体を使うことも可能だと思うのだが、メモリ関係がややこしくなりそうなので構造体のデータ受け渡しは、引数で行ったほうが無難。

カテゴリー: 開発, Fortran | コメントする

FortranのCOMMONブロックをC++から扱う

少しメモ書きとして垂れ流し状態にするので、ご容赦を。 Fortranの引数は、C言語のポインタに変換することを覚えておけば、引数で渡すときは特に問題なし。 ただし、いちいち大量の設定データなどを、CからFortranに渡すのは大変なので、初期値っぽく Fortran の common ブロックを使うのがよい。 のように、commodule というモジュールの中に、compos という名前の common ブロックを作っておく。compos は、commodule モジュール内で共有できるし、モジュールの外に出してしまえば所謂グローバル変数として扱うことができる。ただし、大きなプログラムになると変数名がバッティングするので、モジュール内に入れるかなんらの命名規則を作ったほうがよかろう。 C++から扱うときは、common ブロックのパラメータをそのまま構造体にする。この順番は fortran … 続きを読む

カテゴリー: 開発, C++, Fortran | コメントする

windows 環境で fortran と C++ を連携させる(intel fortranの場合)

お仕事用のメモです。 FORTRANとCが混在したプログラム – Nobuhito Mori http://www.oceanwave.jp/index.php?FORTRAN%A4%C8C%A4%AC%BA%AE%BA%DF%A4%B7%A4%BF%A5%D7%A5%ED%A5%B0%A5%E9%A5%E0#ubf9712b プログラミングの話:Fortran,C,C++ の連携 http://www.mlab.ice.uec.ac.jp/~ej-sib/prog/prog_mixed.html#fortran_from_other_C Fortran プログラマーズガイド: 11 – C と Fortran のインタフェース http://www.hiroshima-cu.ac.jp/japanese/IPC/hunet99/sun/WorkShop/ja/ht … 続きを読む

カテゴリー: 開発, Fortran | 7件のコメント

リモートコンピュータの画面をキャプチャする

acer w500 に win8 を試していて、何が困るかと言えばキーボードが無いことです。いや、USB があるのだから差し込めばいいのですが(iPadの場合は、Bluetoothキーボードか、ソフトウェアキーボードで我慢)、画面キャプチャが出来ないのが不便。キーボードを繋げば、Print Screen キーでキャプチャできるのはわかっているし、リモートデスクトップを使えばキャプチャができるのはわかっているのですが、画面そのままの状態が欲しい。iPad の場合は、電源+ホームボタンでOKなのですが、win8 の場合はどうなんでしょう? 試しに、winキー + 電源ボタンを押すと、ctrl+alt+del と同じ画面がでます。 ■Mouse without Borders を使う Mouse without Borders – k本的に無料ソフト・フリーソフト http://ww … 続きを読む

カテゴリー: 開発, C# | コメントする