RailGunのドキュメントへようこそ!

これだけ書けばあとは RailGun が C と Python をつないでくれます
C言語側のコード Python側のコード
typedef struct linearode_{
  int num_d, num_s;
  double dt;
  double **a;
  double **x;
} LinearODE;

int LinearODE_run(LinearODE *self)
{
  int s, d1, d2;
  for (s = 1; s < self->num_s; ++s){
    for (d1 = 0; d1 < self->num_d; ++d1){
      self->x[s][d1] = self->x[s-1][d1];
      for (d2 = 0; d2 < self->num_d; ++d2){
        self->x[s][d1] += self->dt * \
          self->a[d1][d2] * self->x[s-1][d2];
      }
    }
  }
  return 0;
}
from railgun import SimObject, relpath


class LinearODE(SimObject):
    _clibname_ = 'liblode.so'
    _clibdir_ = relpath('.', __file__)
    _cmembers_ = [
        'num_d',
        'num_s = 10000',
        'double dt = 0.001',
        'double a[d][d]',
        'double x[s][d]',
        ]
    _cfuncs_ = ["x run()"]

lode = LinearODE(num_d=2)
lode.a = [[0, 1], [-1, 0]]
lode.x[0] = [1, 0]
x = lode.run()

import pylab
pylab.plot(x)
pylab.show()

RailGun はC言語の関数をお手軽にPythonから呼び出すためのツールです. シミュレーション用に速度が要求されるプログラムを素早く書かなければ ならない研究者/エンジニアは重宝すると思います.

RailGunはPythonのクラスを生成し,そのクラスを使えば簡単に

  • Cのライブラリからの関数の読み込み,
  • 整合性のとれた配列のアロケーション,
  • Cに渡す変数の範囲チェック,
  • Cの変数へのアクセス

ができます.あるスタイルに沿ってCのプログラムを書く必要がありますが, その代わり面倒なことはすべてRailGunに任せられます!

インストール

easy_install railgun  # using setuptools
pip install railgun   # using pip

リンク

Indices and tables

Table Of Contents

Next topic

RailGun チュートリアル

This Page