22 2016年暮 GLSC のインストール

昨年とほとんど変わらない。状況の変化は以下の二点くらい。

以下、curl -O でネット越しにファイルを入手している (-OO はアルファベットのオー)。

  1. まず [*] の 4, 5 を実行する (必要なファイルの入手、 コンパイル、インストール)。再録すると
    mkdir sagyou
    cd sagyou
    curl -O  http://www602.math.ryukoku.ac.jp/~nakano/software/math/glsc-3.5.a.tar.Z
    curl -O  http://nalab.mind.meiji.ac.jp/~mk/daishin/glsc-3.5+a.patch
    curl -O  http://nalab.mind.meiji.ac.jp/~mk/program/graphics/glsc+2014.tar.gz
    ls
    
    続いて (コピー&ペーストで実行する場合は、 事前に sudo ls のように害のないコマンドを実行して、 パスワードを入力しておくと良い。)
    tar xzf glsc-3.5.a.tar.Z
    cd glsc-3.5.a
    patch -p1 < ../glsc-3.5+a.patch
    tar xzf ../glsc+2014.tar.gz
    cp libs/pMakefile.mk libs/pMakefile
    cp libs/src/glsc.h.mk libs/src/glsc.h
    make
    sudo mkdir /usr/local/include
    sudo mkdir /usr/local/lib
    sudo mkdir /usr/local/bin
    sudo make install
    
  2. cglsc, cglscs を入手してインストール。
    curl -O  http://nalab.mind.meiji.ac.jp/~mk/labo/cglsc
    curl -O  http://nalab.mind.meiji.ac.jp/~mk/labo/cglscs
    chmod +x cglsc cglscs
    sudo mv cglsc cglscs /usr/local/bin
    
    動作チェックは
    curl -O  http://nalab.mind.meiji.ac.jp/~mk/program/fdm/heat1d-e-glsc.c
    cglsc heat1d-e-glsc.c
    ./heat1d-e-glsc
    
    (例えば $ N$ $ 100$ , $ \lambda$ $ 0.5$ , $ T_{\text{max}}$ $ 1$ を入力する。)
  3. matrix-library をインストールする。
    curl -O  http://nalab.mind.meiji.ac.jp/~mk/program/matrix/matrix-lib3.41.tar.gz
    tar xzf matrix-lib3.41.tar.gz
    cd matrix-lib3.41
    make
    sudo make install
    sudo cp ccmg /usr/local/bin
    
    動作チェックする。
    curl -O  http://nalab.mind.meiji.ac.jp/~mk/program/fdm/heat2d-i.c
    curl -O  http://nalab.mind.meiji.ac.jp/~mk/program/fdm/symbandlu.h
    curl -O  http://nalab.mind.meiji.ac.jp/~mk/program/fdm/symbandlu.c
    ccmg heat2d-i.c symbandlu.c
    ./heat2d-i
    
    プログラムへの入力は
    Nx, Ny: 100 100
    θ (0≦θ≦1): 0.5
    τ(≦5e-05≡最大値ノルムに関する安定性条件を満たすτの上限): 1e-4
    注意: λ=2>1/2(1-θ) となっています。
    備考: 1+2θλ= 3.0, -θλx= -0.5, -θλy= -0.5
    Tmax: 1
    Δt: 0.01
    

(2017/3/17) GLSC で描画した図をファイルに保存しようとして、うまく行かない、 という訴えがあった。 プログラムを見ると、
void
g_dump_ (char *fname, Display *display, Window wid)
{
    char command[256];

    sprintf(command, "import -silent -window %lu %s", wid, fname);
    system(command);
}
という関数を使って画像を保存しようとしていて (ImageMagick の import を使って、 X Window System のウィンドウをイメージ・ファイルに出力)、 時々 resource not available というエラー・メッセージが出ていた。 確信があるわけではないが、最近の Mac では、 同時に起動できるプロセス数が小さいためであるらしい。 [*] 節で説明したようにして、 オープン可能なファイル数、起動可能なプロセス数の制限を緩めたら、 エラーが起こらないようになった。

桂田 祐史
2017-07-02