Software … powerful tools for your research & development!


RP Coating – Advanced Software for
Designing Optical Multilayer Structures

The Basic Concept of the User Interface



See an example for such a form (a demo file delivered with the software), which can be used for designing anti-reflection coatings. You simply enter the requirements (up to 3 target wavelengths, a bandwidth, angle of incidence, polarization) in addition to some structural parameters (chosen materials, number of layers etc.) and a few numerical parameters (number of Monte-Carlo trials):

form for anti-reflection coating

It is important to note that the forms and the underlying calculations are not hard-coded. You obtain script files, i.e., text files which define a multilayer structure, all the calculations and the generated graphical diagrams, and (optionally) a custom form. You can modify such scripts such they meet your specific needs. The user interface of the software provides powerful editors and a lot of additional helpful features for modifying such scripts or developing new scripts.


  • In RP Coating, the coating structure does not have to be entered as a table (which could be tedious), but can be constructed with loops, for example, where layer thickness values can be varied systematically with mathematical expressions (see below). One can easily combine different parts of the overall design – for example, a Bragg mirror, a spacer, and a few additional top layers. The overall design can be parametrized easily.
  • RP Coating allows you do do optimizations with arbitrary mathematical forms of the figure-of-merit function. Other programs normally only allow one to enter parameters of a predetermined figure-of-merit function.

Note that competing software products usually offer only hard-coded standard forms, which you cannot adapt to your needs. You just have to hope that they will provide everything which you will need.

The Script Language

The script language of RP Coating is very powerful. Each input script can contain

  • the definition of a multilayer structure,
  • any additional calculations for obtaining the quantities of interest,
  • the definition of multiple graphical diagrams,
  • further code for exporting output data to files or importing data (e.g. measured reflection spectra) from files, and
  • a custom form for easy handling.

Instead of using a custom form, you can also simply define the input parameters within the script. However, it is often preferable to make a custom form. For example, it easily allows you to switch between different parameter sets, which you can save in files.


The following code snippets show you that the script language is easy to use.

Simple Bragg Mirror

The first example shows how a simple Bragg mirror is defined:

l_Bragg := 1000 nm  { Bragg wavelength }
N_Bragg := 8  { number of layer pairs }
beam from superstrate
substrate: BK7
for j := 1 to N_Bragg do
  * SiO2, d = l/4 at l_Bragg
  * TiO2, d = l/4 at l_Bragg
superstrate: air

Chirped Mirror

A second example shows the definition of a chirped mirror, where all layer thickness values vary systematically within the coating:

l_Bragg0 := 1000 nm  { Bragg wavelength in the middle }
dl := 5 nm  { change of Bragg wavelength with each layer pair }
N_Bragg := 8  { number of layer pairs }
l_B(j) := l_Bragg0 + (j - N_Bragg / 2) * dl  { Bragg wavelength for layer pair j }
d_SiO2(j) := (var l; l := l_B(j); l / 4 / n_SiO2(l))
d_TiO2(j) := (var l; l := l_B(j); l / 4 / n_TiO2(l))
beam from superstrate
substrate: BK7
for j := 1 to N_Bragg do
  * SiO2, d = d_SiO2(j)
  * TiO2, d = d_TiO2(j)
superstrate: air

You see that it is straight-forward to implement different types of chirps, add some more layers, etc. That flexibility is usually not obtained for competing products.

Numerical Optimization

Here is a little code for a numerical optimization:

l_HR := 1064  { HR wavelength }
l_HT := 808   { HT wavelength }
FOM():= { merit function }
  sqrt(sum(d := -20 to +20 step 5, T(l_HR + d)^2)
      +sum(d := -20 to +20 step 5, R(l_HT + d)^2))
optimize coating for minimum of FOM()

The defined merit function would be zero for a mirror with vanishing transmission around 1064 nm and vanishing reflectivity around 808 nm – that is the design target of a dichroic mirror used for injecting pump light into a Nd:YAG laser. The command “optimize” modifies the structure such that the value of that merit function is minimized.

Displaying a Reflection Spectrum

Finally, we show a little code for showing a reflection spectrum:

diagram 1:
"Reflectivity Profile"
x: lambda_min, lambda_max
"wavelength (nm)", @x
y: 0, 100
"reflectivity (%)", @y
f: 100 * R(x),
  color = red, width = 3

Script Editors


script editing in RP Coating

Some great features of such editors:

  • Multilevel undo/redo functionality
code snippets library

Graphical Output

Your script can define several diagrams for visualizing the results of the calculations. Examples are shown on the pages for various example cases. Each diagram is shown in a separate window. Below you see an example of such a graphics window, showing what optical intensities occur in a Bragg mirror for different wavelengths.

field penetration into a Bragg mirror

Those graphics windows have plenty of convenient features:

  • measure positions and distances using one or two cursors
  • save the graphics in GIF or PNG format
  • export numerical data
  • copy the graphics to the Windows clipboard
  • recall the graphics from the last calculation run (e.g. from a slightly modified coating design), so that you can clearly see any differences
  • browse in multiple versions of a diagram

Comprehensive Documentation


online help of RP Coating

Technical Support


If you have any further questions or need a quotation: