./jisshuu-2009.html
Previous ToC Next

0. Abstract

この文書は 2009/9/7 の総研大講義「シミュレーション天文学」に附属する実 習のための資料です。

Contents

1. 作成状況

1.1. 2009/8/18

ソフトウェアのインストールと動作チェックを兼ねたいくつかのコマンドの紹 介まで書いた。

1.2. 2009/8/20

glnemo2 に関する記述を Troubleshooting に移動。

1.3. 2009/8/24

MacOS X で動作確認。2章の構成変更。

2. 準備

この章では、実習当日までにしておくべき準備について述べます。。これができて いないと当日の実習は無意味になるので、必ずやっておいて下さい。

この実習では、基本的に受講生が自分で持参した計算機の上で作業します。こ のため、使用するソフトウェアをあらかじめインストールする必要があります。 以下、 OS が Windows (Vista では問題があるかもしれません)、 Linux、Mac OS X のそれぞれについて、インストールするべきソフトウェアとその作業手順 を述べます。

一応、CfCA の計算機上でも必要なソフトウェアが実行可能(になる予定)です が、ネットワークごしになるので可視化ツール等はあまりスムースに動かない です。

インストールするべきソフトウェアは、「nemo」です。 Nemo はメリーランド 大学の Peter Teuben が20年以上にわたって開発・メンテナンスをしている、 主に無衝突 体系用(ですが、衝突系にも使えるし SPH 等へのサポートも ある)のシミュレーションをサポートする様々なツールの複合体です。沢山のプ ログラムが共通のユーザーインターフェースやファイル形式をもつことで、色々 便利なことができるようになっています。

nemo のインストールには、グラフィックパッケージ pgplot のインストール が必要ですが、これは nemo のインストールスクリプトの中で自動的に行われ るはずなので、上手くいっていればこれは気にする必要はありません。また、 今回の実習では

といったツールを使いますが、これらも以下の手順に従えば自動的にインストー ルされるはずです。

glnemo はマルセイユ天文台の Jean-Charles Lambert が開発している、 nemo のファイル用に作られた3次元可視化プログラムです。Linux(Qt が動く UNIX 全般) と Windows の両方で動きますが、まだ色々開発中という感じもあ ります。が、スナップショットファイルの3次元表示や簡単なアニメーション作 成には十分に使え、ズーム、回転等を非常に高速に行うことができます。

GalacTICS はバルジ・ディスク・ハローからなる銀河モデルの作成パッケージ です。WIP は PGPLOT をインタラクティブに利用するためのプログラムです。

2.1. nemo インストールの前にすること

nemo インストールのためにには、 OS によって、いくつか別の用意が必要になります。ここではまずそれらにつ いて述べます。

2.1.1. Windows の場合

Windows の場合、 Cygwin の利用が前提になるので、 Cygwin のインストール について述べます。なお、 X11 およびコンパイラ等がはいっていることが必要 なので、 Cygwin を既につかっている、という人の場合でも、 setup.exe を実 行してフルインストールの状態にして下さい。

既に Cygwin を使っていて、 X Windows もコンパイラも入っている、という 人は 2.2 節に進んで下さい。そうでない人は以下の手順 で Cygwin をインストールして下さい。既に Cygwin の基本部分がはいってい て追加インストールする場合でも、以下の手順で問題ありません。

Windows 上の適当なブラウザで以下を実行します。まず、図 1 にある Cygwin のトップページ から、

Figure 1: Cygwin のトップページ

setup.exe をダウンロード(これは実行してOK)します。不明な発行者がなんたらと かでますがかまわずに「実行する」を選択します。

Choose installation type ではデフォルトになっているインターネットから を選択し、

Figure 2: Choose Installation Type のウインドウ

Choose Installation Directory では、デフォルトの C:\cygwin で問題なけ ればそのまま、例えば C ドライブが一杯で別のところにおきたい、という場 合にはそのディレクトリ名をいれます。例では D:\cygwin にしています。 Install For とか Default Text File Type はデフォルトのままにしておきま しょう。

Figure 3: Choose Installation Directory のウインドウ

次にでる Select Local Package Directory でも、デフォルトはデスクトップ ですが、C ドライブに空きがないとかいった事情があれば別のところを指定し ましょう。例では変更しています。

Figure 4: Select Local Package Directory のウインドウ

その次の Select Connection Type は、特殊なネットワーク接続になっていな ければデフォルトの Direct Connection でよいはずです。

Figure 5: Select Connection Type のウインドウ

しばらくたつと、 Choose Dounload Site(s) になります。ここでは、国内の どこかを選びましょう。

Figure 6: Choose Dounload Site(s) のウインドウ

このあとまたしばらく待つことになると思いますが、順調にいっていれば Select Packages の画面になります。

Figure 7: Select Packages の初期ウインドウ

ここで、「All」の横にある丸に矢印をクリックして、「Default」になってい るのを「Install」に変更します。

Figure 8: Select Packages の変更後ウインドウ

これで、無事にインストールが終わると、Installation Status and Create Icons の画面がでます。これは起動方法なので自分の趣味に合わせて下さい。 とりあえず、両方チェックしておくのが簡単です。

Figure 9: Installation Status and Create Icons ウインドウ

これで Cygwin のインストールは終了ですが、次に、ちゃんとはいっているか どうかの確認が必要です。スタートアップメニューにいれるオプションを選ん でいたなら、「XWin Server」がメニューにあるのでそれをクリックして下さ い。上手くはいっていれば、ターミナルウインドウがでるはずです。

Figure 10: Cygwin の terminal ウインドウ

これが出れば、 X を含めて正しくはいっているはずです。

2.1.1.1. X が動かない時

Cygwin 自体は正しく入っても、 X が動かない時があります。この時には、 Cygwin の X サーバーではないものをいれるとそっちは動くこともあります。 Xming のサイト から、 Xming-fonts をまずインストールして、それから Xming をインストールしましょう。これらはでる画面に従っていけばなんとかなると 思います。もしも、上の、 Xming, Xming-fonts へのリンクが壊れていたら、 Xming のサイト にあるリンクを辿って下さい。

この時は、まず Xming Xserver を起動し、それから Cygwin bash shell を起 動して、その中から Xterm 等を起動する必要があります。環境変数 DISPLAY に 127.0.0.1:0.0 を設定しないと上手く動かないかもしれないので注意して 下さい。

2.1.2. Linux の場合

Linux の場合も、コンパイラ、 X11 の開発環境といった、デフォルトではは いっていないかもしれないものをインストールする必要があるかもしれません。 必要なパッケージ等はディストリビューションによるので、ここで詳細は書き ません。追加インストールで関係ありそうなものをいれるとか、 apt-get や yum で入れるとかして下さい。例えば、CentOS の場合

   yum install gcc compat-gcc-34-g77
   yum install qt qt-devel 
といった辺りだと思います。

2.1.3. Mac OS X の場合

Mac OS X の場合、以下のものをいれる必要があります。

多くの方はすでにこれらのものをインストールしているかもしれません。

以下、手順を簡単に説明します。

まず、Apple の開発環境 Xcode をいれます(いれていない人の場合)。これは、 OS の DVD にはいっているので、 OS の DVD をいれて XCode とかそういう文 字列のほうで何かします。OS の DVD が見つからなくても、 Apple のサイト でユーザ登録すれば XCodeTools なんとかというのをダウンロード、インストールすることができるはず です。これをいれると gcc 4.0 が入るはずです。 g77 ははいりません。

g77 が入っていない人の場合、 Intel Mac であれば、 HPC Mac OS Xのページから、 ここに従っ て 入れるのが簡単そうです。 g77-intel-bin.tar-gz (Intel cpu の場合)をダウンロードして、それ があるディレクトリで

   sudo tar -xvf g77-bin.tar -C /
を実行するだけです。今回の関係は g77 でしかテストしていませんので、 gfortran 等ではコンパイルできません。 g77 をいれて下さい。なお、この手 順でいれた g77 が動作するためには、 gcc が Xcode 由来のもの(fink 等で いれたものではないもの)である必要があるようです。 fink でいれた gcc を お使いの方は、なんとかして fink で g77 をいれる(すみません、牧野にはや り方が今のところわかっていません)か、ソースから make して下さい。

PowerMac の場合、 fink で g77 が入ります。

qt3 も、普通ははいっていないかもしれません。 fink をいれていれば、これ は

  fink install qt3
で入るはずです。 qt3 は可視化ツール glnemo のコンパイルに必要になります。 これがコンパイルできるためには、 環境変数 QTDIR に fink で色々なものを いれるパスである /sw を設定しておく必要があります。また、 fink は /sw の下に bin ディレクトリを作るので、環境変数 PATH に /sw/bin を追加して 下さい。

csh の場合:

 setenv QTDIR /sw
 setenv PATH ${PATH}:/sw/bin
bash等の場合
 QTDIR=/sw ; export QTDIR 
 PATH=${PATH}:/sw/bin ; export PATH

まだ fink をいれていなければ Fink の ダウンロードページの記述に従ってまず fink をインストールします。 この場合、 .profile に勝って fink installer がなんか書くので、 それをやっていれば PATH の設定は必要ないはずです。

2.2. nemo のインストール

2009/8/16 現在の状況では、 nemo はソースプログラムの数箇所に変更を加え ないと Cygwin にインストールできません。変更したファイル等のコピーから、 インストールまでをまとめたスクリプトを牧野が作ったので、これを使ってみ ることにします。

まず、nemo をインストールするディレクトリを作ります。これは /home/yourid/work (yourid は Cygwin での自分の user id) とか、適当な ものを作って下さい。ターミナルウインドウで、そのディレクトリに移動し、 wget 等を使って http://grape.mtk.nao.ac.jp/pub/people/makino/tmp/nemo_cygwin_install.csh をコピーします。

 %cd
 %mkdir work
 %cd work
 %wget http://grape.mtk.nao.ac.jp/pub/people/makino/tmp/nemo_cygwin_install.csh
MacOS X の場合、 wget がはいっていないようなので、代わりに curl を使い ます。

 %cd
 %mkdir work
 %cd work
 %curl -O  http://grape.mtk.nao.ac.jp/pub/people/makino/tmp/nemo_cygwin_install.csh
このファイルの中身はこんな感じのものです

 #!/bin/csh -f
 #
 # nemo_cygwin_install.csh
 #
 # J. Makino
 # 2009/8/16 created
 # 2009/8/18 added hack for qmake on Cygwin
 # 2009/8/20 Major rewrite: Try not to download/compile if files are already
 #           there
 # 2009/8/24 Try curl if wget failed
 # 2009/8/25 Hacks to work on OSX 10.4 and 10.5
 #
 set hostsys = `uname`
 
 # First get the source from Peter's standard location
 if ( ! ( -e nemo_cvs  ) ) then
     wget  ftp://ftp.astro.umd.edu/pub/nemo/nemo_cvs.tar.gz
     if ( $status == 1) then
       curl -O     ftp://ftp.astro.umd.edu/pub/nemo/nemo_cvs.tar.gz
     endif
     tar zxf nemo_cvs.tar.gz 
     cd nemo_cvs
     cvs login ; cvs update -d          # just to be sure to be up to date
 else
     cd nemo_cvs
 endif    
 
 # download wip as well
 if ( ! ( -e wip) ) then
   wget ftp://ftp.astro.umd.edu/progs/morgan/wip2p3.tar.gz
   if ( $status == 1) then
      curl -O  ftp://ftp.astro.umd.edu/progs/morgan/wip2p3.tar.gz
   endif     
   tar xzf wip2p3.tar.gz
 endif
 # Then get the patched files from Makino's location
 wget http://grape.mtk.nao.ac.jp/pub/people/makino/tmp/nemo+pgplot.patch.tgz
 if ( $status == 1) then
     curl -O  http://grape.mtk.nao.ac.jp/pub/people/makino/tmp/nemo+pgplot.patch.tgz
 endif
 tar xvzf nemo+pgplot.patch.tgz
 if ( ( -e bin/snapplot ) ||  ( -e bin/snapplot.exe ) ) then
    echo You seem to have nemo already
    echo so skip the installation.
    echo If you want to re-install nemo,
    echo either remove or rename nemo_cvs and try to run this
    echo script again.
    source nemo_start
 else   
 
 
    switch ($hostsys)
 # Cygwin does not have /usr/bin/qmake, even after qt3-devel is installed.
 # So make a soft link
       case CYGWIN*
          echo This system is Cygwin. prepare /usr/bin/qmake
          if  ( ! ( -e  /usr/bin/qmake)  ) then
             if ( -e  /usr/lib/qt3/bin/qmake )  then
                ln -s /usr/lib/qt3/bin/qmake /usr/bin/qmake
             else
                echo cannot find qmake. Please try some other fix.
             endif
          else
             echo qmake is already in /usr/bin
          endif
       breaksw
       case Darwin*
          echo This system is Mac OS X. Additional setup for QT
          setenv  PATH ${PATH}:/sw/bin
          setenv QTDIR /sw
       breaksw      
    default:
       echo none approptiate
    endsw
 
 
 #and then run the standard script
    source AAA_SOURCE_ME
 #and try to fix the problem with powerpc macs (or OS X 10.4)
 # not sure if this problem is due to PPC implementation or OS X version.
    set nemohost = $NEMOHOST
    switch ($nemohost)
       case powerpc-apple*
          echo This system is PowerMac. Things have probably badly failed.
          echo Now try to edit lib/makedef and make again
          if ( ! ( -e lib/makedefs.org ) ) then
              cp -p lib/makedefs   lib/makedefs.org
          endif
          sed -e 's/-lcrt2.o/ /g' <  lib/makedefs.org >   lib/makedefs
          make libs
       breaksw
    default:
       echo Nothing to do here
    endsw
 endif   
 
 # and then make usual binaries
 make bins
 # make sure that GalacTICS and glnemo are there
 mknemo mkkd95
 mknemo glnemo
 
 
 if ( ( -e bin/wip ) ||  ( -e bin/wip.exe ) ) then
    echo WIP is already installed
 else   
    echo now compile wip
    cd wip
    switch ($hostsys)
       case Darwin*
         ./makewip -host darwin -pgplot $NEMOLIB -xlib /usr/X11R6/lib
       breaksw
    default:
      ./makewip -host linux -pgplot $NEMOLIB -xlib /usr/X11R6/lib
    endsw
    switch ($hostsys)
       case CYGWIN*
         mv wip.exe $NEMOBIN
       breaksw
    default:
       mv wip $NEMOBIN
    endsw
 endif
最初の、 cvs update -d までは nemo のサイトに書いてある通りです。

実行には、ターミナルウインドウで、

  $ csh -f   nemo_cygwin_install.csh
とします。すると

  $ csh -f   nemo_cygwin_install.csh
  --2009-08-17 01:08:42--  ftp://ftp.astro.umd.edu/pub/nemo/nemo_cvs.tar.gz
             => `nemo_cvs.tar.gz'
  Resolving ftp.astro.umd.edu... 129.2.14.3
  Connecting to ftp.astro.umd.edu|129.2.14.3|:21... connected.
  Logging in as anonymous ... Logged in!
  ==> SYST ... done.    ==> PWD ... done.
  ==> TYPE I ... done.  ==> CWD /pub/nemo ... done.
  ==> SIZE nemo_cvs.tar.gz ... 10949723
  ==> PASV ... done.    ==> RETR nemo_cvs.tar.gz ... done.
  Length: 10949723 (10M)
  
  100%[==============================================>] 10,949,723   250K/s   in 48s     
  
  2009-08-17 01:09:33 (222 KB/s) - `nemo_cvs.tar.gz' saved [10949723]
  
  Logging in to :pserver:anonymous@cvs.astro.umd.edu:2401/home/cvsroot
  CVS password: 
と、パスワードをいれて、といってくるので、単にリターンをいれます。すると、

  ? .cvspass
  ? VERSION_cvs
  ? local
  cvs update: Updating .
  cvs update: Updating bugs
  cvs update: Updating csh
  cvs update: Updating data
  cvs update: Updating data/GalPot
  cvs update: Updating data/filter

  (途中省略)

  cvs update: Updating usr/vogl/src/msfort
  cvs update: Updating usr/vogl/src/sunfort  
といった感じに延々ファイルの更新をした後に

  --2009-08-17 01:15:27--  http://grape.mtk.nao.ac.jp/pub/people/makino/tmp/nemo+pgplot.patch.tgz
  Resolving grape.mtk.nao.ac.jp... 133.40.7.128
  Connecting to grape.mtk.nao.ac.jp|133.40.7.128|:80... connected.
  HTTP request sent, awaiting response... 200 OK
  Length: 20361 (20K) [application/x-tar]
  Saving to: `nemo+pgplot.patch.tgz'
  
  100%[==============================================>] 20,361      --.-K/s   in 0.05s   
  
  2009-08-17 01:15:27 (441 KB/s) - `nemo+pgplot.patch.tgz' saved [20361/20361]
  
  inc/nr.h
  inc/mathfns.h
  src/kernel/loadobj/loadobjCYGWIN.c
  src/kernel/loadobj/loadobj.c
  src/nbody/cores/bodytrans.c
  src/scripts/pgplot.install
という感じのメッセージがでます。ここで、牧野が用意したファイルでいくつ かのファイルを置き換えています。 その後に、 nemo のコンパイルが始まり ます。

  (Sending output to install.log)
  Found a local pgplot, Assuming we're using it
  mkdir: cannot create directory `/tmp/NEMO_WAS_HERE': File exists
  Your filesystem does not support multi-case unique filenames (like A and a)
  A real Unix depends on it...
  You probably have a Mac, or use Windows, so, good luck to you
  rmdir: failed to remove `/tmp/NEMO_WAS_HERE': Not a directory
  ./configure --with-yapp=pgplot --with-pgplot-prefix=/home/Makino/work2/nemo_cvs/lib
これはとても長い時間がかかります。コンパイルの作業状況はこのディレクト リの下にできた nemo_cvs というディレクトリの install.log というファイル に書かれていくので、端末画面をもうひとつ出すとかして、

  tail -f ~/work/nemo_cvs/install.log
で作業状況を確認しましょう。元々のスクリプトを実行した画面では

  Initializing NEMO environment
  Postconfig
  Building NEMO library
  Building html files for all the manual pages
  Building some sample executables by running the testsuite with -b:
     You can later build all executables with "cd $NEMO;make bins"
     or using "mknemo <program-name>" on a per-case basis
      Since you also seem to have a CVS structure (very good!)
      you can also update code directly via CVS, using the -u flag to mknemo:
                  mknemo -u <programname>
  or
                  mknemo -u -l <programname>
  if the library also needs to be rebuild.
  Compiling falcON and its tools.
  Note: Although your current shell now has the NEMO environment loaded,
        new shells will not have NEMO pre-loaded. You would need to add
        the following command/alias to your .cshrc (or equivalent) file:
                     source /home/Makino/work2/nemo_cvs/nemo_start
  Found 130 executables (132 at last count)
  Found 12/30 problems with the TESTSUITE
  TESTSUITE: /home/Makino/work2/nemo_cvs/src/nbody/cores Problems
  TESTSUITE: /home/Makino/work2/nemo_cvs/src/nbody/evolve/aarseth/nbody0 Problems
  TESTSUITE: /home/Makino/work2/nemo_cvs/src/nbody/evolve/aarseth/tools Problems
  TESTSUITE: /home/Makino/work2/nemo_cvs/src/nbody/evolve/dehnen Problems
  TESTSUITE: /home/Makino/work2/nemo_cvs/src/nbody/evolve/flowcode Problems
  TESTSUITE: /home/Makino/work2/nemo_cvs/src/nbody/evolve/scfm Problems
  TESTSUITE: /home/Makino/work2/nemo_cvs/src/nbody/init Problems
  TESTSUITE: /home/Makino/work2/nemo_cvs/src/nbody/io Problems
  TESTSUITE: /home/Makino/work2/nemo_cvs/src/nbody/io_nemo Problems
  TESTSUITE: /home/Makino/work2/nemo_cvs/src/nbody/reduc Problems
  TESTSUITE: /home/Makino/work2/nemo_cvs/src/orbit/misc Problems
  TESTSUITE: /home/Makino/work2/nemo_cvs/src/orbit/potential Problems
  All done.
  Starting at Mon Aug 17 01:46:12 2009, tail -f /home/Makino/work2/nemo_cvs/install.log
  cd src;make -i bins >> ../install.log 2>&1 
  cd usr;make -i bins >> ../install.log 2>&1 
  Done at Mon Aug 17 01:52:32 2009

  
というような感じで時々出力がでます。

2.3. 簡単な動作確認

ここでは、nemo の基本的な概念の学習を兼ねて、簡単な動作確認をします。

そのために、

ということをします。

2.3.1. nemo の基本機能の確認

まず、 nemo のコマンドが使えるような環境設定をする必要があります。これ には、色々な環境変数やパスを設定する必要がありますが。 csh 系のシェル に対しては nemo_start というスクリプトが用意されているので、

 % source ~/work/nemo_cvs/nemo_start
で設定ができます。 bash 等 sh 系の場合にはまともなスクリプトが用意され てないような気がするので、

  % csh
  % source ~/work/nemo_cvs/nemo_start
  % bash
(bash の場合)

としてみるのが無難です。

Figure 11: bash の場合の nemo の環境設定

このあと、適当な作業ディレクトリに移動します。例えば ~/work/sandbox を 使うなら、

 % cd ~work
 % mkdir sandbox
 % cd sandbox
です。次に、以下のコマンドを実行してみます。

 % mkplummer
以下のような出力がでるはずです。

 Insufficient parameters, try 'help=', 'help=?' or 'help=h',
 Usage: mkplummer out=??? nbody=??? ...
 construct a Plummer model
mkplummer に限らず、 nemo のコマンドは基本的にコマンドラインオプション で色々なパラメータを与えます。その中には必須なものがあり、それらが与え られていない、というのが出力の最初の2語 "Insufficient parameters," で いいたかったことと思われます。次に try 'help=', 'help=?' or 'help=h' とあるので次にはそれをやりますが、

 Usage: mkplummer out=??? nbody=??? ...
の行を見ると、 out=???, nbody=??? といったパラメータを指定しないといけ なさそうだとわかります。

 % mkplummer help=
 mkplummer out=??? nbody=??? mlow=0 mfrac=0.999 rfrac=22.8042468
 seed=0 time=0.0 zerocm=t scale=-1 quiet=0 massname= massexpr=pow(m,p)
 masspars=p,0.0 massrange=1,1 headline= nmodel=1 VERSION=2.8b
mkplummer "help=?" や mkplummer help=h を実行しても、今一つ暗号めいた メッセージしかでない、思ったことでしょう。しょうがないので、

 % man mkplummer
を実行してみます。途中のほうに、

       out=snapfile             Output data is  written  into  snapfile,  in
                                standard snapshot format.

       nbody=integer            Number  of  particles nobj in Nbody snapshot
                                realization of the Plummer model.
と書いてあるので、 nbody で指定した粒子数のプラマーモデルを、 out で指 定したファイルに書いてくれそうです。そこで

 % mkplummer test3 3
と実行してみます。なにもメッセージはでませんが、

 % ls -l
 合計 4
 -rw-r--r-- 1 makino makino 427  8月18日 18:45 test3
といった感じでファイルができているはずです。このファイルの中身はバイナ リなので、 cat 等で見ることはできませんが、

 % tsf test3
 char Headline[35] "init_xrandom: seed used 1250588738"
 char History[31] "mkplummer test3 3 VERSION=2.8b"
 set SnapShot
   set Parameters
     int Nobj 3 
     double Time 0.00000 
   tes
   set Particles
     int CoordSystem 66306 
     double Mass[3] 0.333333 0.333333 0.333333 
     double PhaseSpace[3][2][3] 0.789543 -0.771532 -0.263389 -0.220791 
       -0.0611593 0.391509 -0.840700 -0.120641 0.277537 0.416235 
       -0.0746009 0.219864 0.0511569 0.892173 -0.0141488 -0.195444 
       0.135760 -0.611373 
   tes
 tes
で見ることができます。nemo のファイルは単なるバイナリの数字の羅列では なく、それを作るのに実行したコマンドの履歴等のヘッダ情報と、 はいっているデータの実体からなり、実体は、さらに型+名前+データ、 という規則的な構造をもっていること、また、「型」に set、つまり「集合」 という型を準備することで、構造型のようなものも表現可能にしていることが わかります。

また、質量(Mass)、位置、速度(PhaseSpace) については、それぞれを配列に しているらしい、ということもわかるかと思います。

tsf の出力はそういうわけでなかなか高級なものですが、例えば gnuplot と か mongo とか、様々なプロットパッケージで処理するにはあまり向いていま せん。そういう出力のためにには snapprint を使います

 % snapprint test3
 ### nemo Debug Info: x y z vx vy vz 
 0.789543 -0.771532 -0.263389 -0.220791 -0.0611593 0.391509 
 -0.8407 -0.120641 0.277537 0.416235 -0.0746009 0.219864 
 0.0511569 0.892173 -0.0141488 -0.195444 0.13576 -0.611373 

 % snapprint test3 options=m,x,y,z,vx,vy,vz
 ### nemo Debug Info: m x y z vx vy vz 
 0.333333 0.789543 -0.771532 -0.263389 -0.220791 -0.0611593 0.391509 
 0.333333 -0.8407 -0.120641 0.277537 0.416235 -0.0746009 0.219864 
 0.333333 0.0511569 0.892173 -0.0141488 -0.195444 0.13576 -0.611373 
これは、粒子一つを1行にまとめています。 nemo の特徴として、粒子データ から計算したものを出力にできる、ということがあります。

 % snapprint test3 options="vx*vx+vy+vy+vz*vz"
 ### nemo Debug Info: [bodytrans_new: invoking cc +saving .o]
 ### nemo Debug Info: vx*vx+vy+vy+vz*vz 
 0.079709 
 0.0723902 
 0.683496 
この場合、粒子データに対して "vx*vx+vy+vy+vz*vz" という式を評価する関 数を作り、コンパイルして、自分自身にリンクした上で評価して出力する、と いう、なかなか気が効いたことをしています。

粒子3個ではつまらないので、増やしてみます。

 % mkplummer test8k 8192
tsf や snapprint で見るにはデータが膨大過ぎるので、グラフィック表示し てみます。

 % snapplot test8k
 

Figure 12: snapplot test8k の出力結果

12 が出れば大成功です。折角なので、少し違うこ とをしてみます。

なお、 Cygwin の場合(他の OS でもあるかもしれません)、

 %PGPLOT, PGSCI: no graphics device has been selected
とかいったメッセージが大量にでて、グラフィック表示はされない、というこ とがあるかもしれません。この時の対応は 3.2.1 節をみてみて下さい。

 % snapplot test8k xvar=r yvar=v xrange=0:5 yrange=0:2
 

Figure 13: snapplot test8k xvar= ... の出力結果

この場合、x 軸に , y軸に をとり、またそ れぞれの軸の範囲も指定しています。半径の関数としての速度分布がなんとな くわかるプロットになっています。

2.3.2. glnemo の利用

というわけで、こちらでは glnemo を使ってみます。

 % glnemo test8k

Figure 14: glnemo での test8k の表示

画面の左の赤い格子をクリックすると格子がでます。

Figure 15: 格子付き表示

あとは表示画面にマウスカーソルをいれて

ができるはずです。色々やってみて下さい。

これくらいが全部動くなら、基本的な機能は大丈夫なはずです。

2.3.3. glnemo2 の利用

ここは、Windows で glnemo2 が動いた人向けです。

さらに、 glnemo2 を使ってみます。

 ../glnemo2-win32/glnemo2
で、図
16 のウインドウがでます。

Figure 16: glnemo2 の画面。ファイルをオープンする途中。

図のように左上の「File」メニューをクリックすると、Windows の普通のファ イル選択のダイアログウインドウがでますから、 test8k を選択します。そう すると、

Figure 17: glnemo2 の画面。ファイル読み込みの詳細指定

17 のウインドウがでます。ここで はとりあえず OK をクリックします。

Figure 18: glnemo2 での test8k の表示

18 のように粒子データが表示されたら、表示ウイン ドウにマウスカーソルをいれると、

ができるはずです。色々やってみて下さい。

これくらいが全部動くなら、基本的な機能は大丈夫なはずです。

2.3.4. mkkd95 のテスト

nemo には Kuijken と Dubinski の作った、 GalactICS という銀河モデル作成パッケージがはいっています。

 %mkkd95 testkd
を実行してみて下さい。 testkd というファイルができていれば OK です。駄 目な時には、、、色々調べてみて下さい。

2009/9/3 20時前後以前に Cygwin に nemo をインストールした場合には、 mkkd95.c にバグがあってファイルができません。

http://grape.mtk.nao.ac.jp/pub/people/makino/tmp/mkkd95.c で ~/work/nemo_cvs/src/nbody/init/mkkd95.c を置き換えてから

 % mknemo mkkd95
を実行して mkkd95 を作り直して下さい。

なお、すみません、 an03 では mkkd95 が動きません。

3. Troubleshooting

色々、トラブルが起こって上手く動かない時にどうするか、というのを、実例 があったものをまとめてみます。

3.1. 空きディスクが不足で Cygwin 等がインストールできない

開発環境まで含めた Cygwin は数 GB の空きディスク領域を要求するので、既 にハードディスクが色々なもので一杯で、インストールできない、という人が いることと思います。

もちろん、色々努力して空きを作ればよいのですが、どうしても無理な時には、 外付の USB ハードディスク等を使うのが1つの方法です。 Choose Installation Directory、 Select Local Package Directory の両方のウインドウで、そちら、例えば、ド ライブ名が F: になっていれば

 F:\CYGWIN
 F:\CYGWINPACKAGES
といったものを指定します。必要な容量は 8GB 程度なので USB メモリでもよ さそうなものですが、安物の USB メモリで実験したところでは5時間程度たっ ても Cygwin のインストールが終わりませんでした。ただ、これは、 USB メモリのプロパティをなんかすることで高速化できるようです。

3.2. X ウインドウ関係

glnemo で

 glnemo: cannot connect to X server
というメッセージがでたり、

snapplot で

 %PGPLOT, PGSCI: no graphics device has been selected
というメッセージがでた場合、色々な可能性があります。

3.2.1. X サーバーが正常に起動しているかどうか

まず、 X server が起動しているかどうか確認して下さい。 Linux や Mac の 場合には起動していないということはないと思いますが、 Cygwin の場合には デスクトップアイコンにできた「Cygwin」やスタートアップメニューから Cygwin を起動して、シェルウインドウがでても X は起動していません。

スタートアップメニューの「すべてのプログラム」から Cygwin-X, XWin Server の順番に選択して、 X server を起動して下さい。Xming のほうをイ ンストールした場合には、 XLaunch か Xming のアイコンかスタートアップ メニューから起動して下さい。これはどちらでもよいですが、 XLaunch では 細かい設定ができます。基本的にはデフォルトでよいはずなので、 Xming を 起動で大丈夫なはずです。

X サーバが起動したら、画面の右下隅に X のアイコンがでるはずです。

この状態で、シェルから

 % xterm &
と入力してみます。

  xterm Xt error: Can't open display:
  xterm: DISPLAY is not set
とでるはずです。もっとも、なぜかちゃんと xterm の画面がでるかもしれません。こ の場合には以下は不要です。 csh 系なら

 % setenv DISPLAY 127.0.0.1:0.0
bash 等なら

 % DISPLAY=127.0.0.1:0.0; export DISPLAY
と入力します。そうすると、X ウインドウを使うプログラムがどこに表示する かが指定されるので、今度は

 % xterm &
を実行すればウインドウがでるはずです。但し、Cygwin だとウインドウがで るのですが他のウインドウに隠れているかもしれないので、タスクバーとかで 捜して下さい。

xterm が起動できたウインドウからなら、snapplot や glnemo も動くはずで す。なお、ここで起動した xterm のほうに移動してしまうと、最初のほうの

 % source ~/work/nemo_cvs/nemo_start
をもう一度実行する必要があります。

Unix にある程度なれている人なら、 ~/.cshrc や ~/.bash_login で上の設 定や、 DISPLAY の設定もしておくとあとが楽です。

3.2.2. xterm は動くが snapplot が動かない

xterm は起動でき、 glnemo も起動できるけれど snapplot が動かなくて、相 変わらず

 %PGPLOT, PGSCI: no graphics device has been selected
というメッセージが大量にでる、ということがひょっとしたらあるかもしれま せん。これは、 PGPLOT が使っている Xwindow 用の表示プログラム pgxwin_server の起動に何故か失敗した、という場合がありえます。この時に は

 % ~/work/nemo_cvs/lib/pgxwin_server &
で、 pgxwin_server を起動しておくと、幸せになれるかもしれません。

また、既に pgplot がインストール済みであった場合には、そっちを使ってい るかもしれないので、 nemo が使うことを想定している、独自にいれた pgplot とは違うデバイスを使うようになっているかもしれません。この時に は

  % unsetenv YAPP (csh)
  % unset YAPP (bash 等)
してから snapplot を実行すると、

  %snapplot test8k
  Graphics device/type (? to see list, default /NULL):
というふうに何を使うか聞いてきます。ここで、 ? をいれてリターンすると、 例えば以下のようなリストがでるはずです。

 PGPLOT v5.2.2 Copyright 1997 California Institute of Technology
 Interactive devices:
    /XWINDOW   (X window window@node:display.screen/xw)
    /XSERVE    (A /XWINDOW window that persists for re-use)
 Non-interactive file formats:
    /CGM       (CGM file, indexed colour selection mode)
    /CGMD      (CGM file, direct colour selection mode)
    /GIF       (Graphics Interchange Format file, landscape orientation)
    /VGIF      (Graphics Interchange Format file, portrait orientation)
    /NULL      (Null device, no output)
    /PGMF      (PGPLOT metafile)
    /PPM       (Portable Pixel Map file, landscape orientation)
    /VPPM      (Portable Pixel Map file, portrait orientation)
    /PS        (PostScript file, landscape orientation)
    /VPS       (PostScript file, portrait orientation)
    /CPS       (Colour PostScript file, landscape orientation)
    /VCPS      (Colour PostScript file, portrait orientation)
    /WD        (X Window Dump file, landscape orientation)
    /VWD       (X Window Dump file, portrait orientation)
 Graphics device/type (? to see list, default /NULL): 
でたデバイスの中で、画面にでそうなものを選んでみて下さい。

3.2.3. snapplot で、 yvar=v としたらそんなのは知らないと言われた。

nemo が、 v とかはあらかじめ知っているはずなのですが、上手くいかないケー スがあります。この時は、 yvar=v の代わりに、

   yvar="sqrt(vx*vx+vy*vy+vz*vz)"
としてみて下さい。このようなエラーがでる場合でも、 x, y, z, vx, vy, vz, m といった基本的な変数の組合せであれば上手くいくはずです。

3.2.4. glnemo が動かない

Linix, Cygwin, MacOS のどれでも、運がよければ glnemo はコンパイルされていま すが、

 % glnemo
と実行したら「そんなコマンドは知らない」的なメッセージがでるかもしれま せん。コマンド自体がない、つまり make に失敗している場合、色々な理由が ありえるので一般的な対応は困難です。

一つのありえる理由は、 glnemo は Qt Version 3.x を想定していることです。 ディストリビューションのほうがもしも Qt4 以降をデフォルトにする設定に なっていたら、コンパイルできないことはありえます。

なお、 glnemo2 は4.3 以降を想定しています。ですので、ディストリビューショ ンが新しすぎてglnemo がコンパイルできない、といったことがもしもあれば、 glnemo2 ならコンパイルできるかもしれません。但し、 glnemo2 は gcc もバー ジョン 4.1 以降であることを要求するようです。

また、ディストリビューションによっては、 Qt の make コマンドである qmake が、通常の実行パスのあるところのどこにもない、というようなことも あります。その時には、適切なqmake に例えば /usr/local/bin からシンボリッ クリンクをはってから、の、nemo が使える環境で

 % mknemo glnemo
でコンパイルできるかもしれません。

牧野の手元の CentOS 5.2 のシステムでは、システムについてくる gcc 4.1.2 と Qt 3.3.6 (それぞれ、 gcc -v と qmake -v でバージョンをチェックでき ます)で glnemo は問題なくコンパイルされました。また、 Qt 4.5.2 をいれ たら glnemo2 も問題なくコンパイルできました。

MacOS X の場合、環境変数 QTDIR が上手く設定されない等の理由で、 glnemo のコンパイルに失敗することがあります。この時には

  (csh の場合)
  %setenv QTDIR /sw
  %mknemo glnemo

  (bash 等の場合)
  %QTDIR=/sw; export QTDIR
  %mknemo glnemo
  
で上手くいく可能性があります。もしも /sw/bin/qmake がないなら、 fink で qt3 をインストールして下さい:

  fink install qt3
Cygwin でも、何故か失敗していることがあります。

/usr/lib/qt3/bin/qmake というファイルあることを確認して、あれば、

    ln -s /usr/lib/qt3/bin/qmake /usr/bin/qmake
を実行してから

  mknemo glnemo
を実行して下さい。

ここは、少し大変かもしれませんが皆様色々試してみて下さい。

3.2.5. Ubuntu で glnemo が動かない。

すみません、動かないようです。 snapplot を使って下さい。

メニューの、システム -> 外観の設定というので、「視覚効果」というものを オフにすると表示できるそうです。

3.2.6. glnemo2 を使う

Cygwin 環境で glnemo がどうしても動かない時には、 glnemo2 のほうは動く かもしれないのでこっちをインストールしてみましょう。

Glnemo のダウンロードページから、 Microsoft Win 32 binaryをダウンロードし、展開します。これは、ブラウザのオプ ションで「展開する」みたいなのがあると思いますので、それを選択します。 で、できたファイル glnemo2.exe をダブルクリックして実行します。そうする と、ちゃんと展開したファイルをセーブするかどうか、みたいなことを聞いて きたら、そうするようにします。そうすると、 glnemo2-win32 というディレク トリを新しく作って、その下にファイルを展開するはずです。これをもう一度 ダブルクリックして実行してみて下さい。起動すればとりあえず OK です。

3.3. nemo の色々なコマンドが全然できていない

PowerMac G4 + MacOS X 10.4 だと、そもそも configure + make の基本的な やり方で失敗することがわかっています。

nemo のインストールの項で csh -f nemo...csh を実行したあとで、

nemo_cvs/lib/makedefs を以下のように編集して下さい

 *** makedefs    Tue Aug 25 14:50:41 2009
 --- makedefs.original   Tue Aug 25 14:30:17 2009
 ***************
 *** 92 ****
 ! YAPPLIB = $(NEMOLIB)/yapp_pgplot.o -L/Users/makino/work/nemo_cvs/lib -lcpgplot -lpgplot   -L/usr/X11R6/lib  -lSM -lICE -lXext -lX11   -L/sw/lib/gcc/powerpc-apple-darwin8.4.0/3.4.3  -lfrtbegin -lg2c -lSystemStubs -lSystem -lmx /usr/lib/gcc/powerpc-apple-darwin8/4.0.1/libgcc.a
 --- 92 ----
 ! YAPPLIB = $(NEMOLIB)/yapp_pgplot.o -L/Users/makino/work/nemo_cvs/lib -lcpgplot -lpgplot   -L/usr/X11R6/lib  -lSM -lICE -lXext -lX11   -lcrt2.o -L/sw/lib/gcc/powerpc-apple-darwin8.4.0/3.4.3 -L/sw/lib/gcc/powerpc-apple-darwin8.4.0/3.4.3/../../.. -lfrtbegin -lg2c -lSystemStubs -lSystem -lmx /usr/lib/gcc/powerpc-apple-darwin8/4.0.1/libgcc.a
ちょっとなんだかわからないですが、

   -lcrt2.o
   -L/sw/lib/gcc/powerpc-apple-darwin8.4.0/3.4.3/../../.. (こっちはこのままでもいいかも)
を消して下さい。で、 csh で

  cd ~/work/nemo_cvs
  source nemo_start
  make libs
  make bins
のあと、もう一度

  cd ~/work
  csh -f nemo*.csh
を実行してみて下さい。

また、 OSX 10.5 の場合でも、同じような問題が発生することがあります。

nemo_cvs/lib/makedefs の中に -lf2c という文字列があったら、それを -lg2c に変更してから、上と同様に

  cd ~/work/nemo_cvs
  source nemo_start
  make libs
  make bins
を実行してみて下さい。

3.4. なんだか全然わからなくなった時

連絡用アドレス simulation2009 - at - grape.mtk.nao.ac.jp に質問してみ て下さい。時間がある限り対応します。
Previous ToC Next