MAD-X (1) インストール

MAD-X とは

特徴

  • MAD-X(Methodical Accelerator Design Version X)

  • CERN によって開発された粒子加速器の ビーム光学・ビームダイナミクスシミュレーション 用ソフトウェア.


利用体系

ソフトウェアの利用体系としては、以下2つが簡単.

  1. コンパイル済みバイナリ をダウンロードしてターミナルから実行.

  2. pythonで cpymad を利用. pip インストールして、バイナリラッパーをpythonから呼ぶ.

  • 内部で バイナリを呼ぶのは同じ なので、計算結果も同じはず.


(A) コンパイル済みバイナリ実行ルート

インストール

tar zxvf madx<VERSION>.tar.gz      # ダウンロード + 解答  >> e.g. /opt/madx/ etc.
chmod u+x madx                     # 実行権限を付与
export PATH=$PATH:/opt/madx/madx   # 実行ファイルへパスを通す
  • madxにパスが通っているはず( tabで補完できるはず.)


実行方法

madx sample1.madx
  • 標準出力が表示される.warning, 等がカウントされる.0のはず.


(B) cpymad でpython実行ルート

インストール

python -m pip install cpymad

実行方法

  • 実行用のpythonスクリプト:

    from cpymad.madx import Madx
    
    madx = Madx()
    madx.option(echo=True)  # MAD-X の出力を Python 側に表示
    
    madx.call("sample1.madx")  # 外部スクリプトの実行
    
  • 実行コマンド:

    (@codes = sample1.py sample1.madx のディレクトリで)
    python sample1.py
    
  • 標準出力が表示される.warning, 等がカウントされる.0のはず.


cpymadでの実行

from cpymad.madx import Madx

madx = Madx()
madx.option(echo=True)  # MAD-X の出力を Python 側に表示

madx.call("my_script.madx")  # 外部スクリプトの実行

MAD-Xのサンプルコード

sample1.madx

title, "Simple FODO Lattice";
beam, particle=proton, energy=1.0;

qf: quadrupole, l=1.0, k1=1.2;
qd: quadrupole, l=1.0, k1=-1.2;
dr: drift, l=2.0;

fodo: sequence, l=6.0, refer=entry;
qf, at=0.0;
dr, at=1.0;
qd, at=3.0;
dr, at=4.0;
endsequence;

use, sequence=fodo;
twiss, betx=1, bety=1;

stop;

標準出力

kent@maxwell ~/.../madx/codes $ python sample1.py

  ++++++++++++++++++++++++++++++++++++++++++++
  +     MAD-X 5.09.03  (64 bit, Darwin)      +
  + Support: [email protected], http://cern.ch/mad +
  + Release   date: 2024.04.25               +
  + Execution date: 2025.05.24 12:58:40      +
  ++++++++++++++++++++++++++++++++++++++++++++
title, "Simple FODO Lattice";

beam, particle=proton, energy=1.0;



qf: quadrupole, l=1.0, k1=1.2;

qd: quadrupole, l=1.0, k1=-1.2;

dr: drift, l=2.0;



fodo: sequence, l=6.0, refer=entry;

qf, at=0.0;

dr, at=1.0;

qd, at=3.0;

dr, at=4.0;

endsequence;



use, sequence=fodo;

twiss, betx=1, bety=1;

enter Twiss module

open line - error with deltap:   0.000000E+00
initial orbit vector:   0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00
final orbit vector:     0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00

++++++ table: summ

            length             orbit5               alfa            gammatr
                 6                 -0                  0                  0

                q1                dq1            betxmax              dxmax
      0.3844525013                  0        225.6324483                  0

             dxrms             xcomax             xcorms                 q2
                 0                  0                  0        0.617032142

               dq2            betymax              dymax              dyrms
                 0        41.49066004                  0                  0

            ycomax             ycorms             deltap            synch_1
                 0                  0                  0                  0

           synch_2            synch_3            synch_4            synch_5
                 0                  0                  0                  0

           synch_6            synch_8             nflips              dqmin
                 0                  0                  0                  0

       dqmin_phase
                 0


stop;

  Number of warnings: 0

  ++++++++++++++++++++++++++++++++++++++++++++
  +          MAD-X finished normally         +
  ++++++++++++++++++++++++++++++++++++++++++++

Tip

  • .madx スクリプト内では文末に ; を忘れない.

  • スクリプトファイル名に拡張子 .madx を付けて、エディタによる構文ハイライトを設定すべし ( e.g. Emacs: madx-mode )

Reference