分割主鏡シミュレータ V (simul02/5) — マニュアル
岡山新技術望遠鏡グループ
平成 22 年 12 月 20 日

目次
1 概要

12 ソフトウェア動作概要

12.1
2.2

actuator-out.pl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
eigen-actuator.pl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

222.3
2.4
2.5

eigen-out.pl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
gapsns-out.pl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
gapsns-pos.pl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2332.6
2.7

random_gapsns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
test_segment_actuator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

333 入出力ファイル仕様
3.1 ギャップセンサー配置データ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44セグメント・アクチュエータ定義ファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

random.generator — 乱数生成器名 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5673.43.3.2 random.method — 乱数分布 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
出力データファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

783.53.4.1 特異ベクトル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.2 制御量出力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
PSF 出力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8893.2
3.3

シミュレータ設定ファイル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.3.11

概要
分割主鏡における制御データとセグメント間ギャップ測定データの振る舞いを検証するために、セグメント間ギャップ測定点を与えると制御のためのパラメータや実際にデータに変動を加えたときの振る舞いを評価できるようなシミュレータを構築した。
このマニュアルでは’divm1-sim05’ (第 2 版バージョン 5) について、シミュレータを利用するためのオプションの設定、入出力ファイルの仕様、各種可視化ツールについて解説する。

2

ソフトウェア動作概要
提供されているシミュレータと可視化ツールの一覧は次のようになる。

12actuator-out.pl アクチュエータ制御量出力ファイルの可視化
eigen-actuator.pl アクチュエータ制御量の特異ベクトル分解の可視化
eigen-out.pl 特異ベクトル (アクチュエータ空間) の可視化
gapsns-out.pl ギャップセンサーデータ出力ファイルの可視化
gapsns-pos.pl ギャップセンサー配置定義の可視化
random_gapsns シミュレータ本体
test_segment_actuator アクチュエータ制御量定義ファイル確認プログラム
可視化ツールの出力は全て EPS 形式のファイルとなり、最大で 1 EPS ファイルに付き 48 個のデータが (6x8 の並びで)出力される。また、eigen-actuator.pl と gapsns-pos.pl を除き、標準出力には作成した EPS ファイル名のリストを出力する。
可視化における色表示は、制御量が 0 なら白、+なら青、-なら赤で表示される。青・赤で表示される絶対値の最大量は各ツールのオプションとして指定し、最大量を超えている場合は (完全な) 青・赤で変化しない。

2.1 actuator-out.pl
アクチュエータ制御量出力ファイルの可視化ツールで、入力ファイルは 1 行に一つのアクチュエータ制御量分布が記述されたファイルとなる。行の形式は平均値、分散値、54 もしくは 57 個のアクチュエータの制御量の値を空白区切りで並べる。
実行はactuator-out.pl <actu_out> <one_side_max>のように行い、出力 EPS ファイル名は出力ファイルのシーケンシャル番号"id"を含む"actu_out.id.eps"という名前になる。
パラメータ"one_side_max"は、制御量を可視化する際の色分布の絶対値での最大を示す。

2.2 eigen-actuator.pl
アクチュエータ制御量の特異ベクトル分解の可視化ツールで、入力ファイルは特異ベクトルのファイルと、1 つのアクチュエータ制御量セットを特異ベクトルに分解した値 (各特異ベクトルに対応する成分の強度) を並べたベクトルが記述されたファイルの二つとなる。
実行はeigen-actuator.pl <eigen_out> <deploy_out> <color>のように行い、出力ファイル名は"deploy_out.id1.id2.eps"となる。id1 は deploy_out の行数 (アクチュエーター制御量セットの ID)、id2 は"actuator-out.pl"でと同じ出力ファイルのシーケンシャル番号である。
パラメータ"color"は可視化の色分布を決定する値で、強度の数値での最大値が 1/color となるような表示となる。(色分布に直す際に強度を color 倍するともいえる。)

2.3 eigen-out.pl
特異ベクトル (アクチュエータ空間) の可視化ツールで、入力ファイルは特異ベクトルのファイルである。
実行はeigen-out.pl <eigen_out> <color>のように行い、出力ファイル名はファイルのシーケンシャル番号 id が入った"eigen_out.id.eps"となる。
パラメータ"color"は可視化の色分布を決定する値で、強度の数値での最大値が 1/color となるような表示となる。(色分布に直す際に強度を color 倍するともいえる。)

32.4 gapsns-out.pl
ギャップセンサーデータ出力ファイルの可視化ツールで、入力ファイルはシミュレータで利用するギャップセンサー配置定義ファイルと、一つのギャップセンサー制御量を一つ 1 行の形式で並べたファイルの二つである。
このツールは、シミュレーションでのギャップセンサー変位量や制御残差のデータと、ギャップセンサー空間での特異ベクトルの両方のデータに適用可能な可視化ツールとなる。
実行はgapsns-out.pl <gapsns_def> <eiggap_out> <color>のように行い、出力ファイル名はファイルのシーケンシャル番号 id が入った"eiggap_out.id.eps"となる。
パラメータ"color"は可視化の色分布を決定する値で、強度の数値での最大値が color となるような表示となる。(色分布に直す際に強度を color で割るともいえる。) なお、他の特異ベクトル表示ツールとは逆数となるので注意。

2.5 gapsns-pos.pl
ギャップセンサー配置定義の可視化ツールで、入力ファイルはシミュレータでも利用するギャップセンサー配置定義ファイルである。EPS のデータ出力は標準出力に行われるので注意。
実行はgapsns-pos.pl <gapsns_dat>のように行う。

2.6 random_gapsns
シミュレータ本体で、ini 形式の設定ファイルから設定を読み込みシミュレーションを実行する。
設定ファイルの詳細は、設定ファイルの項目を参照。入出力ファイル名は設定ファイル内で定義するので定まっては居ない。
出力ではが [nm] で出力されるパラメータもあるが、入力の設定ファイルはすべて [mm] なので注意。

Usage:CAUTION: Units for input files or arguments MUST BE [mm]Options:-i [ --ini ] arg-h [ --help ]Config .ini file namedisplay option help message

2.7 test_segment_actuator
アクチュエータ制御量定義ファイル確認プログラム% ./test_segment_actuator -h
Test file parser
Sample program for ’segment_actuator’
Options:-h [ --help ]display option help message-f [ --file ] arg
Segment/Actuator definition file-g [ --generator ] arg Random number generator ID-m [ --method ] arg

Random re-format method

4
シミュレータのアクチュエータ初期制御量定義ファイルを解釈し、シミュレータで利用するアクチュエータの初期固定オフセット値のサンプルを出力する。パースした結果をそのまま単純に表示するわけではないので注意。

入出力ファイル仕様

3

特にファイルの仕様に明記がない限り、空白行と’#’ で始まる行は無視される。また、1 行の中における値の間の区切りは空白 (White space; ’ ’) のみが利用できる。

3.1

ギャップセンサー配置データ

ギャップセンサー配置は 1 行 1 ギャップセンサーの定義が並んだファイルであり、4 つの値を並べる。値の意味は先頭から以下のようになる。

• セグメント ID (図 1; 1–18)• ギャップセンサーが取り付く辺の ID (1,2,3)• 辺上の位置• 辺からの距離 (図 2 の点線から)181778169216101553414131112図 1: セグメント ID
ギャップセンサーが取り付く辺の ID は、1 が内側の曲辺、2 が両脇の直線辺、3 が外側の曲辺とする。ID 2 の場合にどちら側の辺であるかは次の辺上の位置の正負で判別する。なお、外周セグメント (ID 7–18) の 3 は無効とし、内周セグメント (ID 1–6) の 1 は最内周に定義した内環との間のギャップセンサーとみなす。
セグメント辺上の位置は、セグメント中心を (x, y) = (0, 0) として半径方向を y 軸としたときの x 座標の値とする。辺の ID が 2 の場合にのみ正・負で両脇のどちらの辺に乗っているかを切り分ける。また、指定された位置 x がセグメントの辺よりも外を指示している場合、セグメントから何らかの固定ブロックを生やして保持している状態とし、無効とはしない。たとえば、セグメント ID 1 では辺 2 の x < 0 は ID 6 と接する側の辺、 x > 0 は ID 2 と接する側の辺である。
辺からの距離が 0 の場合、図 2 の点線上にギャップセンサーが配置されているものとする。距離が + の場合、辺に垂直な方向にセグメントの内側への距離を示すものとする。円状になっている辺 1,3 の場合は、ちょうどギャップセンサーの取り付け位置が半径方向に動くことを意味する。なお、辺からの距離 0 がセグメントのふちを意味するのではなく、隣り合ったセグメントとの中間点を示していることに注意。

5973.7
1174.2
R 1894.0
R 1183.0
R 1182.0
59.57 degree
29.79 degree
710.0

682.0
748.0

R 500.0

749.8

R 1184.0

496.7608.7

図 2: セグメントに対するギャップセンサー固定位置 (点線)

3.2セグメント・アクチュエータ定義ファイル

セグメントの水平ずれ量とシミュレーションにおけるアクチュエータの初期駆動量を定義するファイルになる。

# ID bias:random:fix? bias:random:fix? bias:random:fix? move_x move_y## ID 1-6 = inner, 7-18 = outer, 19 = inner ring (if inner_ring is true)# All values are in [mm]#10.0001:0.0001:0 0.0001:0.0001:0 0.0001:0.0001:0 0.0 0.0
各行が一つのセグメントを示し、空白 (またはタブ) 区切りのオプションを並べる。オプションは先頭から次のように並ぶ。オプションの個数が違っている場合などは行ごと無視されるので注意。

• セグメント ID• セグメント中のアクチュエーター 1 の制御値 (内周側)• セグメント中のアクチュエーター 2 の制御値 (外周側、上から見て左)• セグメント中のアクチュエーター 3 の制御値 (外周側、上から見て右)• セグメントの x 方向 (動径方向) 横ずれ量
• セグメントの y 方向 (半径方向) 横ずれ量
アクチュエーターの制御値は、’:’ で区切られた 3 つの値で構成され、それぞれ定数の固定バイアス、乱数をかけて加える固定バイアス、アクチュエーターを固定するかどうか、を示す。固定バイアスはシミュレーターのループ前に一度だけ初期化されるため、乱数値を指定しても、毎回のループで反映されるわけではない。3 つ目のアクチュエーターを固定するかどうかについてのフラグは、0 で制御に利用、1 で固定されることを示す。アクチュエーターの ID1-3 は図 3 で定義し、それぞれの位置は表 1 となる。

6
表 1: アクチュエーター軸の座標(x, y)1(x, y)2(x, y)3

背面傾斜角

内周

0.0000-210.0000-275.5556

116.3889

275.5556

116.3889

4.8066772

外周

0.0000-193.7778-251.6667

110.9444

251.6667

110.9444

8.7456477

YP2P3XP1

図 3: セグメント概形
セグメントの横ずれ量は、鏡面の位置ずれを計算するときにしか利用されないので、ギャップセンサー・アクチュエー
タ間のみのランダムシミュレーションではなく、PSF 出力などにしか影響しない1 。
このファイルで指定する数値の単位は全て mm 単位である。
セグメント ID は、1–18 はギャップセンサー定義と同じであるが、ID 19 は内環についての定義となる。ただし、内環の横ずれ量は利用されることはない。

3.3

シミュレータ設定ファイル

シミュレータ設定ファイルは ini 形式のファイルである。表 2 の設定名一覧はセクション名を’.’ でつないだ完全な設定名を記述しているので、セクションで分けた ini 形式の設定ファイルを利用する場合は注意。(配布ソースコード内のサンプル設定ファイルの記述はセクションで分けてある。)
表 2: 設定項目一覧
設定名

既定値

設定内容

シミュレーション関係

simul.reverse_check

真偽値

false

逆変換を行うかどうか

simul.eigen_limit
simul.loop_count

実数0.01

縮退特異値判定閾値整数

simul.gapsns_random

実数0.0

ギャップセンサーのランダム加算値の制御値

ランダムシミュレーション回数

1 ギャップセンサー取り付け位置とアクチュエーター取り付け位置は、セグメントの背面であるので平面上であり横ずれの影響を (高さ方向では) 受けない。

7
表 2: 設定項目一覧
設定名

既定値

設定内容

シミュレータ定義ファイル名関係

def.offset
def.segment
def.inner_ring

文字列セグメント・アクチュエーター定義ファイル

文字列

ギャップセンサー配置定義ファイル

真偽値

内環を入れるか (アクチュエーター数)

false

出力ファイル名関係

output.actuator
output.eigen

文字列

アクチュエータ制御量出力

文字列

アクチュエータ空間での特異ベクトル出力

output.eigen_gapsns
output.gapsns

文字列

ギャップセンサー空間での特異ベクトル出力

文字列ギャップセンサー制御量出力

output.deploy
output.psf_fits

文字列

アクチュエーター制御量の特異ベクトル分解の出力

文字列

PSF 出力 FITS ファイル名
乱数生成関係random.generator

文字列

mt19937

GSL での乱数生成器名

random.method

文字列

uniform

乱数分布

PSF 関係
psf.wavelen

実数0.001

参照波長 [mm]動作テストコード関係

test.actuator
test.gapsns

実数
実数0.00.0

試験コードでのアクチュエーター駆動量 [mm]試験コードでのギャップセンサー駆動量 [mm]その他

general.verbose

整数0

出力の詳細度合い3.3.1 random.generator — 乱数生成器名
すべて GSL で定義されているものそのまま。

mt19937 Mersenne Twister で、219937 − 1 の周期と 623 次元をもつ乱数生成器。
ranlxs0, ranlxs1, ranlxs2 RANLUX アルゴリズムの 24bit 乱数生成器。10171 の周期を持つ。
ranlxd1, ranlxd2 RANLUX アルゴリズムの 48bit 乱数生成器。
ranlux, ranlux389 オリジナルの RANLUX アルゴリズムの 24bit 乱数生成器。
cmrg
mrg
taus
taus2
gfsr4

3.3.2 random.method — 乱数分布
uniform 一様分布。制御値 γ に対して (−γ, γ) に一様分布する乱数を返す。
gaussian ガウス分布。制御値を標準偏差とする正規分布をなす乱数を返す。

8exponential 指数分布。制御値 γ に対して exp(−x/γ)/γ に分布する乱数を返す。(ただし x > 0)
laplace ラプラス分布。制御値 γ に対して exp(−x/γ)/2γ に分布する乱数を返す。
()−1cauchy コーシー分布。制御値 γ に対して γπ(1 + (x/γ)2 )) に分布する乱数を返す。
rayleigh レーリー分布。制御値 γ に対して x/γ2 × exp(−x2 /(2γ2 )) に分布する乱数を返す。(ただし x > 0)

3.4

出力データファイル

シミュレータの ini 設定ファイルの output グループの項目は出力ファイル名を指定するオプションである。これらのうち PSF 以外の出力ファイルのフォーマットについて説明する。
なお、以下で 1 行の中での一つのカテゴリ (アクチュエータ・ギャップセンサーなど) についての数値の並び順は、アクチュエーターでは図 1 および図 3 で定義されたアクチュエータ ID の順2 とし、ギャップセンサーについてはギャップセンサー定義ファイルでの定義順とする。

3.4.1

特異ベクトル

特異ベクトルの出力は、アクチュエーター空間での output.eigen とギャップセンサー空間での output.eigen_gapsnsの二つ。
それぞれ 1 行に 1 つの特異ベクトルが出力され、ファイル全体での行数は特異ベクトルの個数と同じ。アクチュエー
ター空間での output.eigen では先頭 1 カラムが対応する特異値でその後に特異ベクトルの要素 (アクチュエータ本数分) が並び、ギャップセンサー空間での output.eigen_gapsns では先頭 2 カラムが対応する特異値とその最大特異値で割った値で、その後に特異ベクトルの要素 (ギャップセンサー個数分) が並ぶ。

3.4.2

制御量出力

制御量の出力はアクチュエーター制御量の出力 output.actuator、ギャップセンサー制御量の出力 output.gapsns、アクチュエーター制御量の特異ベクトル分解の出力 output.deploy の 3 つ。
それぞれ一つのシミュレーションでの結果を 1 行で表し、平均、分散、各点の制御量が並んでいる。
出力行の並びは、他のオプションの状況によっても異なる。以下で"v+"は general.verbose が設定されている (1以上) 場合、"r+"は simul.reverse_check が設定されている場合、をそれそれ示す。
アクチュエーター制御量とその特異ベクトル分解については• 初期アクチュエーター制御量の出力 (アクチュエーター制御量のみ必ず)• アクチュエーター制御試験の各入力値と制御後残差 (試験が有効の場合)• ギャップセンサー制御試験の制御後値 (試験が有効の場合)• 1 回のシミュレーション試行につき– シミュレーションでの制御量 (の × − 1 値)
– シミュレーションでの制御残差 (v+)
ギャップセンサー制御量については• 初期アクチュエーター制御量でのギャップセンサー値 (必ず)• アクチュエーター制御試験の各入力変換値と制御補正量 (試験が有効の場合)• ギャップセンサー制御試験の各入力値、制御後量、制御補正量 (試験が有効の場合)• 1 回のシミュレーション試行につき– ランダム値が加算されたギャップセンサー入力 (v+)
2 全体でのアクチュエーター ID = アクチュエーター ID + セグメント ID × 3

9– 制御後のギャップセンサー残差 (v+; r+)– 制御されたギャップセンサー量 (v+; r+)

3.5 PSF 出力
PSF は FITS 形式のファイルで出力され、ファイル名は output.psf_fits で指定されたパスを含むファイル名ヘッ
ダに、シミュレーション試行回数と拡張子"fits"が"."区切りで追加されたファイル名となる。出力 FITS ファイルは、5 つの HDU で構成され、HDU の中身は以下のとおり。リファレンス波長は psf.wavelen [mm]、波面ずれの FITS 画像は
生で 4mm/pixel、PSF 演算用で 4cm/pixel、PSF 画像の分解能はリファレンス波長が 1[mum] の場合に 5.04mas となる。

• 1 (PHDU) : 補正前の入力アクチュエーター制御値・セグメント横ずれ量による波面形状• 2 : 有効開口面• 3 : PSF
• 4 : 補正後の波面ずれ量 (PSF 演算用変換後)• 5 : 補正後の波面ずれ量