Optical calculus computer modeling

Consider the formidable task of computer modeling a sophisticated spectrometric technique or instrument and doing it so well that the resulting simulation is of research quality, yielding highly accurate results immediately publishable in the primary refereed scientific literature. What is desired are results so good that they differ negligibly from actual experimental results obtained at far greater expense and with far greater effort. Performance of this task requires a computer program (or computer language) that has the following characteristics:

Any computer language can meet these requirements. However, the optimum language or program would allow users to prepare simulation models that look exactly like the technique or instrument they simulate, so that a user's prior knowledge of the technique or instrument is immediately useful in setting up, initializing and running the simulations. Hence, we are immediately led to ask "What does a spectrometric technique look like?" and the immediate answer is "like its schematic block diagram representation in published papers, text books, or on a chalkboard!"

Thus, we need a computer program that

Fortunately, such a program has existed for quite some time: the commercially available Extend simulation program has an elegant interface, based on a block diagram metaphor, and a powerful, user-accessible internal programming language, for user programming of custom component blocks, that is a reduced instruction subset of the C language. Extend's component blocks can contain a user-specified number of input connectors or output connectors, for transmission of data between interconnected blocks, and these I/O connections can pass either real numbers or dynamic arrays of up to five dimensions. Hence, Extend meets the criteria listed above.

Extend, produced by Imagine That, Inc., is available for both Macintosh and Windows variety PC computers. The full commercial version of Extend is accompanied by a number of libraries of simulation component blocks. The libraries contain a number of electronic and other components sufficient for modeling a wide variety of manufacturing, engineering and scientific scenarios.

However, Extend's broad-based libraries of components do not contain any optical components whatsoever and they also do not include the ubiquitous "fancy" instruments or subsystems needed in modeling a sophisticated spectrometric technique or instrument, i.e., there are no boxcar averagers, lock-in amplifiers, signal averagers, etc. So, Extend, as purchased, does not suffice to accomplish the difficult spectrometric modeling task described above. As it happens, though, Extend allows users to program their own blocks, complete with custom icons (drawn or scanned), dialog boxes, input and output connectors, and error messages. As noted above, Extend also allows input and output connectors to handle both real numbers and passed multidimensional dynamic arrays. The ability to receive or transmit an entire dynamic array through an input or output in a single simulation step is an extremely powerful capability: it means that matrices, vectors, and tensors can be passed from block to block, with every step in a time evolution simulation, as readily as if they were ordinary real numbers. In particular, this capability enables the complete programming of entire optical calculi such as the Jones calculus and the Mueller calculus.

Seizing the opportunity to program custom optical calculus blocks, I have programmed, thus far, more than 300 blocks that implement the entire Jones optical calculus and also the entire Mueller optical calculus. The animated GIF below shows, in cartoon fashion, a stack of optical vectors passing from one optical device to the next devices further along:

The three libraries of custom programmed blocks include a variety of electronic systems and sub-systems, such as the lock-in amplifier, boxcar averager, infinite impulse response filter, signal averager, and many others. The noise generator I have programmed is especially powerful and useful, since it can model 1/f noise and other low frequency noises as well. In fact, it attempts (with reasonable success) to model any noise it is "taught." The blocks I have custom programmed are collectively named LightStone, and are organized into three libraries, named as follows:

LightStone library names (both platforms)
 General.LIX
 Monochrome.LIX
 Polychrome.LIX

The LightStone software libraries, in conjunction with the Extend simulation "engine" which is necessarily needed to use them, offer both monochromatic optical calculus modeling and polychromatic optical calculus modeling over as many as 100,001 discrete "colors". As a consequence of the unique attributes of Extend and LightStone, the combination of the two is the first, and thus far only, "scientific block diagram" program. With LightStone, it is possible to seamlessly integrate optical and electronic signal processing on a computer screen "worksheet" that goes far beyond anything a spreadsheet can do and it is also possible to perform detailed, accurate modeling of scientific block diagrams, from the literature, and elsewhere. The simulations can utilize one or more sophisticated noise generators that accurately simulate actual experimental noises and the simulations can model the signals and noise simultaneously. If effect, LightStone "breathes life" into scientific block diagrams! This is the most natural and intuitive of all possible spectrometric modeling interfaces.

As a direct consequence of the revolutionary power afforded by the LightStone, its simulations may be used to:


Why is LightStone revolutionary, rather than evolutionary?

Extend is a brilliant piece of work by itself, but the combination of LightStone and Extend is revolutionary for the following reasons: