SSブログ

光学薄膜設計ソフトの設計 その33 - 入力用のXML形式 [考え中 - 光学薄膜設計]

前回計算エンジンを単独動作(GUIを持たないコマンドラインソフトとして)させて計算に間違いがないか確認することにした。そのための膜構成や計算の設定をファイルから読み込むことにして、そのファイル形式をXMLにすることにした。今回はそのXMLの形式の詳細について。

木構造を具体的に定義してみる。木構造のトップレベルはdotfDataで、ふたつの要素を持つ。

図-5.9にトップレベルから深さ2のレベルまでの具体的な構造を示す。
0317fig509.png

filmComposition要素

filmComposition要素は膜構成を記述するためのものでlayer要素を複数(0個以上)持ち、baseMediumとouterMediumをそれぞれひとつずつ持つ。それ以上はとりあえずいらないな。 leyer要素は出現順で基板側から堆積しているとする。またleyer要素はやはり出現順で0から層番号が自動的にふられるとする。

また、タイムスタンプ用にdataDate属性を持つ。この属性の値でどうこうと言うことはない。単に同一性の確認のための目安。

layer要素

0317fig510.png

layer要素はひとつの層を表す。これは媒質を指定するmedium要素と厚さを指定するthickness要素からなる。

あるいはそれらふたつのかわりにsynchronized要素を持つこともできるとする。synchronized要素とmedium、あるいはthickness要素は同時に含まれてはならないとする。図中の「//」はOR(または)を表しているとする。

layer要素はlayerDescriptor属性を持つことができる。これはあとのlayer要素のsynchronizedで層番号のかわりに指定できる。

synchronized要素

synchronized要素はそれまでに出現したlayer要素を層番号か、layerDescriptor、mediumDescriptor、thicknessDescriptorなどで参照して、その参照先と同じ内容を持つとする。層番号はそれまでの層数より小さい値、layerDescriptorの場合だと出現済みであるとする。synchronizedが指定されると最適化の過程で値が変化しても、いつも指定先と同じになる。

medium要素

medium要素はmediumName要素か、synchronized要素のどちらかを持つ。さらにmedium要素はmediumDescriptor属性を持つことができる。

mediumNameの場合は媒質の名前、synchronized要素は層番号かlayerDescriptor、mediumDescriptorで定義された名前を指定する。

mediumName要素

文字列で媒質の名前を指定する。mediumName要素はoffsetType属性とoffsetValue属性を持つ。offsetType属性はfixedかvariableかの値を持つ。波長から計算される屈折率の値にoffsetValueで示される値(全波長域で一定の値)を足し算する。variableの場合は屈折率を最適化変数として使うと言う意味にする。とりあえずなんらかの媒質を指定して、そこからの単なるオフセット(全波長域で一定の値)を最適化する。

デフォルトはオフセットなしで最適化に使わないという指定とする。

特別なmediumNameとしてNULLを用意する。これはoffsetValueの値がそのまま屈折率の値になり、分散はない。

thickness要素

膜厚を指定する。thicknessValueかあるいはsynchronizedを子要素に持つ。synchronizedの場合はこれまでと同じ。でもmediumが独立(synchronizedでない)でthicknessがsynchronizedは意味がない。ただ対称性のために作っておく。thicknessValue要素は膜厚の値を持つ。

thickness要素にはunit属性があってthicknessValueが保持している値の単位を指定する。m(メータ)、um(ミクロン)、nm(ナノメータ)、quarterLambda(光路長でλ/4を1とする)が指定できる。デフォルトはum。quarterLambdaの場合の波長はimplicitConditionにある波長の値を参照する。

さらにthicknessDescriptor属性を持つことができる。これをsynchronizedで指定することができる。

とうぜんthicknessだけをsynchronizedにする意味はないのでmediumだけか、layer全体がsynchronizedに指定されるべきである。

うわあ、めんどくさ。これで半分。まあ、こういうもんなのでしょうがない。こういうところでちゃんとやっておくと、後が楽になる。それは間違いないのでやっておく。残りは次回。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

献立03/17献立03/18 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。