IonAssistant is a tool that allows you to:
- Model the ion beam current density distribution
- rotating or stationary substrate holder
- effect of a shadow mask
- current density history for each substrate
- Optimize the resulting distribution to
- maximize total current
- maximize uniformity
- find a compromise between both using weighting factors
IonAssistant is a freely distributable software which was coded in MATLAB language. In order to use it, you will need to:
- download IonAssistant_mat.zip MATLAB code folder. MATLAB 2011 or higher is required to run it, plus the following toolboxes
- Optimization toolbox
- image toolbox
- or download ionAssistant.exe version4 compiled for 32-bit computers running on Microsoft Windows.
- You will also needdownload the proper MATLAB MCR in order to run the .exe. When you attempt to run the .exe, a popup message will tell you what version to download.
- http://www.mathworks.com/products/compiler/mcr/
This program was coded by Martin Caron.
The original idea and supervision - Oleg Zabeida.
The details about the matematics behind can be found in our article:
V.Marushka, O. Zabeida,L. Martinu, "Distribution of ion current density on a rotating spherical cap substrate", J.Vac.Sci.Technol. A 32(6) (2014) 061513.
OpenFilters is a free and open source software, released under the GNU General Public License, for the design of optical interference filters.
It offers multiple tools for the design and optimization of optical interference coatings, including refinement, the needle method, the step method, the Fourier transform method and multiband rugates. It can calculate the transmission, the reflection, the absorption, ellipsometric variables, phase, group delay, group delay dispersion, the circle and admittance diagrams, the electric field distribution and the color of the filter. It can also be used to generate photometric or ellipsometric monitoring curves. It is described in details in the article: Stéphane Larouche and Ludvik Martinu, “OpenFilters: open-source software for the design, optimization, and synthesis of optical filters”, Applied Optics, vol. 47, 2008, pp. C219–C230.
OpenFilters was written by Stéphane Larouche while he was a graduate student at École polytechnique de Montréal under the supervision of Professor Ludvik Martinu.
SCREENSHOTS
![]() |
![]() |
![]() |
Main windows of OpenFilters on Windows | Fourier transform method dialog on Mac OSX | Needle method dialog on Ubuntu |
OPENFILTERS IN ACTION
Here are a few recent examples of what can be done with OpenFilters:
- Noha Anous, Mohamed Abdallah, Tarek Ramadan, Khalid Qaraqe, and Diaa Khalil, “Angle-tolerant hybrid plasmonic filters for visible light communications”, Applied Optics, vol. 56, 2017, pp. C106–C116.
- Gyuhyon Lee, David A. Scripka, Zhitao Kang, Naresh N. Thadhani, and Christopher J. Summers, “Asymmetrical optical microcavity structures for dynamic pressure sensing: design, fabrication, validation ”, Optics Express, vol. 24, 2016, pp. 23494–23504.
- Lu Tang, Feng Cao, Yang Li, Jiming Bao, and Zhifeng Ren, “High performance mid-temperature selective absorber based on titanium oxides cermet deposited by direct current reactive sputtering of a single titanium target”, Journal of Applied Physics, vol. 119, 2016, 045102.
- L. Guzman, F. Vettoruzzo, and N. Laidani, “Coloration of metallic and/or ceramic surfaces obtained by atomic layer deposited nano-coatings”, Thin Solid Films, vol. 601, 2016, pp. 63–67.
- Rhainer Guillermo-Ferreira, Pitágoras C. Bispo, Esther Appel, Alexander Kovalev, and Stanislav N. Gorb, “Mechanism of the wing colouration in the dragonfly Zenithoptera lanei (Odonata: Libellulidae) and its role in intraspecific communication”, Journal of Insect Physiology, vol. 81, 2015, 129–136.
- David Scripka, Garrett LeCroy, Christopher J. Summers, and Naresh N. Thadhani, “Spectral response of multilayer optical structures to dynamic mechanical loading”, Applied Physics Letters, vol. 106, 2015, 201906.
- Ahmad Mojiria, Cameron Stanleya, Robert A. Taylorb, Kourosh Kalantar-zadehc, and Gary Rosengarten, “A spectrally splitting photovoltaic-thermal hybrid receiver utilising direct absorption and wave interference light filtering”, Solar Energy Materials and Solar Cells, vol. 139, 2015, pp. 71–80.
- David J. McPherson, Supitcha Supansomboon, Benjamin Zwan, Vicki J. Keast, David L. Cortie, Angus Gentle, Annette Dowd, and Michael B. Cortie, “Strategies to control the spectral properties of Au–Ni thin films”, Thin Solid Films, vol. 551, 2014, pp. 200–204.
- Yi Yu Li, Jiao Jie Chen, Hai Hua Feng, Hao Chen, and Qin Mei Wang, “Rugate filters used in slit-lamp delivery to improve color rendering of illumination for retinal photocoagulation”, Applied Optics, vol. 53, 2014, pp. 3361–3369.
CONTACT US
All comments, bug reports and questions should be sent to help@OpenFilters.org. If you want to be informed of the release of new versions of OpenFilters, please indicate it in your email. We will not use your address for any other purpose.
OpenFilters 1.1.1 (2016/12/19)
This is a bug fix release. A complete list of changes can be found in the release notes.
Download:
- PC installer: 32 bit and 64 bit;
- MAC installer;
- Source code.
OpenFilters 1.1 (2015/12/18)
OpenFilters 1.1 includes many more optimization targets, a tool to simulate the effect of random fabrication errors, the possibility to import a material or an index profile from a text file, the Sellmeier dispersion model, as well as many bug fixes. A complete list of changes can be found in the release notes.
Download:
- PC installer: 32 bit and 64 bit;
- MAC installer;
- Source code.
OpenFilters 1.0.2 (2008/04/04)
This is a bug fix release. A complete list of changes can be found in the release notes.
Download:
OpenFilters 1.0.1 (2007/12/08)
This is a bug fix release. A complete list of changes can be found in the release notes.
Download:
OpenFilters 1.0 (2007/06/03)
First public release of OpenFilters.
Download:
OBTAINING AND INSTALLING OPENFILTERS
You can download the latest version of OpenFilters on the download page. You may download a Windows installer (32 or 64 bits), a Mac OS X installer, or the source code.
On Windows, it is very easy to install OpenFilters: download the installer and run it.
On Mac OS X, download the disk image (.dmg file), mount it, and install OpenFilters by draging it onto the application folder.
There is no official compiled version of OpenFilters available for other operating systems (such as Linux). In that case you need install Python and wxPython on your system, download the source code, and run the file Filters.py using Python. We have tested OpenFilters with success on Ubuntu, OpenSUSE, and FreeBSD. We believe it should work on any system where Python and wxPython are installed.
THE FIRST TIME YOU RUN OPENFILTERS
The first time you run OpenFilters, you will be requested to choose a directory for the user materials. User materials are materials created by the user, in addition to those provided by default with OpenFilters. Any advanced use of OpenFilters will require the use of user defined material, so you should not skip this step. Obviously, you should choose a directory where you have write access, or otherwise you will not be able to create new materials.
DESIGNING AN AR COATING
To demonstrate some of the basic features of OpenFilters as well as a typical workflow, we will design an antireflective (AR) coating for a fused silica lense in the visible spectrum. We will demonstrate the use of refinement.
The first step in using OpenFilters is creating a project (menu item File|New Project). A project is meant to group many filters designed to respect a set of targets.
Once you have created a new project, you can add filters to it (menu item Project|Add Filter). When you add a filter to a project, you are presented a dialog to set some of its basic properties (Fig. 1). You should first set the substrate and medium. For this example, let the substrate be fused silica and the medium be vacuum (void).

Then, you should set the wavelength range and resolutions. This determines the spectrum where the filter properties will be calculated. Since we want to design a AR coating for the visible, let's set the wavelength range from 380 nm to 780 nm, with an increment of 1 nm. The reference wavelength is the wavelength at which the index profile is shown, and it is used to calculate the optical thickness of the layers. Let us set it to the middle of the visible, 580 nm.
Finally, the lens will need an AR coating on both its front and back sides. However, it is simplier to design them one at a time. Therefore, we will only consider the front surface by unchecking the Consider backside checkbox in the Analysis box at the bottom left.
Other properties apply to graded-index filters, color calculation, and monitoring. They will not be used in this example.
Click OK. You can modify the properties of a filter at a later moment by using the menu item Filter|Properties.
We are now ready to begin adding layers to the filter. A well know way to design a broadband AR coating is to use a quarter wave of a medium index material, followed by a half wave of the hign index material and, finally, a quarter wave of low index material. To add a layer, select the menu item Filter|Add layer and a dialog box shown in Fig. 2 will be shown. Put SiN in the material box and 71.5 in the thickness box. Repeat the operation to add a 120 nm thick layer of TiO2 and a 80 nm thick layer of SiO2.

Now that you have defined a filter, you can calculate its optical properties. In the present case, we are mainly interested by the reflection, which can be calculated by selecting the menu item Analyse|Calculate Reflection. After you have calculated the reflection, the main window of OpenFilters should look like that shown in Fig. 3.

The top part of the main window has tabs to show the filters and the targets included in a project. This is also a tab to put a text comment. If you double-click on a filter, you can see the layers of that filter (see Fig. 4). To go back to the list of filters, click the button Back to filter list.

We are interested in optimizing a filter that minimizes the reflection in the visible. For that, we can add a continuous target by selecting the menu item Project|Add Target|Add Reflection Spectrum Target. Select a range of wavelength and an increment (from 380 nm to 780 nm by 5 nm) and indicate that you want 2 definition points. Enter 2 points at the two extremes of the visible range with a reflection of 0 (as in Fig. 5}); the reflection for wavelengths in between those 2 points will be interpolated.

Then you can optimize the filter by selecting the menu item Design/Optimize|Refine. You will be presented with the dialog shown in Fig. 6}. Click Go to optimize the filter and Ok when you are done. You can finally calculate the reflection of the optimized filter as you did before and the main window should look like that presented in Fig. 7}. By comparing Figs. 4 and 7, you can see that the reflection is now smaller over most of the visible spectrum.


WHY CAN'T I ADD NEW MATERIALS? MODIFY EXISTING MATERIALS?
Materials can be added or modified only when no project is opened.
IS THERE A MANUAL FOR OPENFILTERS?
Not at this time. You can however consult the short Getting started guide available online. We will also be happy to answer questions sent to help@OpenFilters.org.
WHAT DO I NEED TO RUN OPENFILTERS ON WINDOWS, MAC OSX?
The installer installs everything you need to run OpenFilters on Windows or Mac OSX.
CAN I USE OPENFILTERS ON LINUX, ... ?
OpenFilters should work on all systems where Python and wxPython are available. We have tested it with many Linux distributions. If they are not installed by default, install Python (2.5 ≤ version < 3.0) and wxPython. Then download OpenFilters's source code, and simply run the file Filters.py using Python. OpenFilters will complain that the abeles and moremath dynamic libraries cannot be imported; OpenFilters works without them, but is much slower.
If you want to use the abeles and moremath dynamic libraries, you will need to compile them. To do so, you need to make sure that the Python header files are installed (in most distributions, the package is named python-dev or python-devel). You should then be able to compile the libraries simply by running "make" in the OpenFilters main directory. If your version of Python is not 2.7, or if the header and library files are not in a standard location, you may need to modify the Makefiles in the abeles and moremath directories.
WHAT DO I NEED TO MODIFY OPENFILTERS?
If you want to modify OpenFilters's source code, you will need Python (2.5 ≤ version < 3.0) and wxPython. If you want to recompile the abeles and moremath dynamic libraries, you will need a C++ compiler. On Windows, I use MinGW-w64. On Mac OSX, I use clang, which comes by default with Mac OSX (if you don't already have it, you will be prompted to install it the first time you compile the libraries).