The program consists of three main parts: The simulator core, a graphics program, and a text editor. These parts can work independently, but they can also communicate in various ways. For example, the graphics program, whose main task is the graphical presentation of the simulator's results, can store and load single graphics and groups of graphics, hold them in a stack for quick access, print them in various sizes, and convert them into standard graphics formats that may be used in other programs. With assistance of the text editor, graphics can also be modified or combined, or produced from numerical tables, e.g. from measured data or from numerical results of other programs.
The main task of the text editor is producing tables of various system parameters, or of the numerical results of the simulator, which can be included in technical reports that are written with text processing programs such as WINWORD. But the text editor can also be used for producing and editing other texts, and for comparing or printing them. In addition it is macro-programmable, and this allows, for example, the automatic conversion of SIMFOCS results for use in other programs, or vice versa the use of results of other programs in SIMFOCS calculations (using these abilities, a bidirectional gateway to SPICE has been realized, which allows, if needed, to combine the simulation power of SPICE and SIMFOCS).
Another application for macroprograms (which can also contain instructions for using simulator functions) is the definition and simulation of complex-structured communication networks. As input signals, transfer functions and similar data optionally can be entered into SIMFOCS in the form of numerical tables, and as all simulation results can be optionally output as numerical tables, too, it is possible to simulate parts of the system, one after the other, and to combine them afterwards, using numerical tables (if necessary modified with the text editor) as signals connecting the system parts.
In the simulator core of SIMFOCS, mathematical models are available for all relevant components of fiber-optic transmission systems, and these are divided in three groups: Signal source and optical transmitter, optical transmission medium, and photo receiver. Among these are models of signal generator, laser diode, external modulator, single-mode fiber, graded-index fiber, attenuator, erbium-doped fiber amplifier, optical filter, photodetector, low-pass filter, and binary decider, as well as models of the noise sources that are active in some of these components. All these models can be modified by entering adequate parameter values, and thereby they can be fitted to the properties of real systems; for parameters that are not explicitely specified, SIMFOCS assumes plausible default values. Moreover, numerical descriptions of components can also be used instead of analytical models. For example, a transmitted signal can optionally be defined by a bit pattern and an analytical pulse shape, or by a numerical table describing the signal amplitude as a function of time. Therefore, simulations are not limited to binary digital signals. As an alternative to using a laser model, the temporal shape of the optical power at the laser output (including chirp) can be defined directly by a numerical table, and the same is true for laser noise, for the wavelength-dependent properties of optical fiber and fiber amplifier, for optical and electrical filter functions, for receiver noise, etc. This allows a close approximation between simulated and real transmission systems, and also the use of measured properties of some of the system components, or the analysis of systems with hypothetic components.
For simulating a transmission link, the models of all its components are connected together: The signal generator produces a signal with desired bit rate, bit pattern, pulse shape, and amplitude, which feeds a directly modulated laser diode, or the external modulator of a CW laser diode. For WDM systems multiple optical transmitters with different wavelengths can be defined, whose combined optical power is fed into the first fiber. The transmission medium can consist of only one long fiber with wavelength-dependent attenuation and dispersion, and in some cases with optical nonlinearity, but it can also consist of a chain of so-called sections, which don't have to be identical. Generally, each section consists of a long fiber, an optical attenuator, a fiber amplifier, and an optical filter, but not all of these elements need to be present.
As the algorithms used in SIMFOCS are very fast, it is possible to calculate within moderate computing time, at the end of each section, the temporal shape of optical amplitude and phase, the optical spectrum and the baseband spectrum of the transmitted signal, and also the signal-to-noise ratio and the bit-error rate that would occur if the photoreceiver were connected to that point of the system. Therefore all these properties can be observed along the transmission link, and their length-dependence can be plotted in graphics or listed in tables. Finally, the signal arrives at the photoreceiver at the end of the link, where it is demodulated, lowpass-filtered and sampled. It is also combined with the noise caused by various noise sources in the system, and the resulting bit-error rate is calculated. In addition, other interesting system properties can be found, e.g. the eye diagram or the optical power need of the photoreceiver for a given error rate, the influence of decision threshold, crosstalk, and jitter on the error rate, etc. For some of these calculations no closed-form solution exists; therefore iterative procedures have to be used which need multiple repetitions of the simulation, for which the fast algorithms of SIMFOCS are also advantageous.
In conclusion it can be said, that SIMFOCS, which is based on mathematical models of the components of optical transmission systems, simulates the very complex cooperation of these components and illustrates it by producing various tables and graphics. Thus it can replicate and explain the behaviour of existing systems and also help to optimize them, and on the other hand it can illustrate the behaviour of hypothetic systems, before they are constructed. In both cases it allows deep (and sometimes unexpected) insights into the processes going on within systems, and therefore it is also of didactical value.