光学薄膜設計ソフトの設計 その30 - 薄膜を表すオブジェクトの設計 [考え中 - 光学薄膜設計]
えー、まっ、そのー、一億三千万の、日本国民がですね、三十七万七千八百三十五平方キロメートルという日本にですね、暮らしとるわけですよ!?いや、すべってるがな。スタック深さ1なのでなにをやっていたかすっかり忘れてしまった。前回、といってももう1ヶ月近く前、光学薄膜設計用の計算エンジンの具体的なオブジェクトの設計を始めて、計算の中心になるOTFLayerオブジェクトの実装方針を決めた。その続きを考えようと思う。
光学薄膜設計ソフトの設計 その28 - 材料屈折率データベース [考え中 - 光学薄膜設計]
何回か前、材料の屈折率の最適化に関する問題を考えた。最適化の前にまず、実在する材料の屈折率/分散のデータが必要になる。
TFCalcのサイトで見つけたSopra SA社が公開しているデータを取り込むことを考えた。そのやり方を整理する。
光学薄膜設計ソフトの設計 その27 - 複素数を返すメソッドの問題 [考え中 - 光学薄膜設計]
前回C99でサポートされた複素数型を使うことにした。Objective-CはC99の拡張にも互換性が維持されている、ということなのでメソッドによっては複素数型を返すこともありえる。これに問題が発生してずいぶん悩んだ。
光学薄膜設計ソフトの設計 その23 - 具体的な実装例のやりなおし [考え中 - 光学薄膜設計]
実装を始めると、さっさとやらないとすぐ忘れてしまって、なにをやっているのかわからなくなる。集中してやろう。
前回、薄膜の光学特性の計算のありがちなパターンを利用して計算量を減らすために、同じ計算結果を返すオブジェクトをオブジェクトの実体が自動的に同じになるようなメカニズムを考えた。それを具体的に実装してみる。
光学薄膜設計ソフトの設計 その22 - 同じ結果を返すオブジェクト [考え中 - 光学薄膜設計]
光学薄膜計算エンジンの実装の続き。前回まで、計算結果をキャシュするためのメカニズムを考えてきた。そもそもなんでこんな面倒なことをするかと言うと、薄膜の光学特性の計算は同じことを繰り返すことが多いから。
例えば、ある波長帯域で反射防止膜を設計するとする。垂直入射でλn(n = 1..N)で反射率Rがなるべく小さくなるようにする。λnごとに反射率を計算するオブジェクトをN個作っておけば最適化によって変化するパラメータを持っていない層のマトリクスは再計算する必要がない。これを「これは膜厚が変化してるので計算やり直し、こっちは前回と変わってないので結果使い回し・・・」というふうにいちいち確認しながら計算を進めるように書くのは大変。ミニマルな実装で再計算を防止できるメカニズムとして考えている。
ということで、今回はさらに再計算を減らすためのメカニズムの話。