Technical Issues - FilmStar News 2021

Other editions: 2006, 2007, 2008, 2009, 2010, 2011, 2012
2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2022, 2023

January 4   Negative Spectral Values

A user reported difficulties with FilmStar BASIC code that exports MEASURE spectra to the LBL Window (as in window glass) application. The problem is that Window cannot deal with negative data values resulting from spectrometer noise. One possible solution is the BASIC code listed below.

' Program NoNegVals.bas for FilmStar MEASURE/Scantraq
Option Explicit
Option Base 1

Sub Main
    On Error GoTo MainErr
    Dim i As Integer, yDat() As Single
    yDat = Spectrum_Y
    For i=1 To UBound(yDat)
        If yDat(i) < 0 Then yDat(i) = 0
        ' Other possibilities:
        ' If yDat(i) < 1.0E-6 Then yDat(i) = 1.0E-6
        ' If yDat(i) > 1 Then yDat(i) = 1
    Next i
    Spectrum_Y = yDat
    AxesDraw   ' Optional
    Replot     ' Optional
    Exit Sub
MainErr:
    MsgBox "No spectrum?", vbCritical, "NoNegVals.bas"
End Sub

Automate the procedure by assigning it to the After Sample Scan Macro:


<F4> Embed .bas file, <F2> Edit, <F5> Multi-line editor, <F9> Run

BASIC code can also be embedded directly into (and saved with) the Scan Method:

Embedding code is more reliable. Note that version 2.51.2010 adds Edit.. Run Code <F9> in addition to Edit.. Edit Code <F5> as shown below.


February 25   Flip-Flop Lowpass Example

Users rarely ask about DESIGN's Flip-Flop capability, so it seems a good time for a detailed example.

A FilmStar user was challenged with a lowpass design: ~100% T from 1000 to 2600 nm and ~0%T from 2700 to 5000 nm using indices L = 1.46, M = 1.7 and H = 2.23 on substrate n = 1.7. Designs based on QWOT stacks fail due to harmonics, so we tried flip-flop synthesis {W.H. Southwell, Appl. Opt. 24, 457-460 (1985)}. Flip-flop is selected in Optimize.. Algorithm or in the Optimization Algorithm pull-down.

Calculations proceed layer by layer, replacing elements to lower the merit function. After multiple iterations, DLS refines the design. We then remove very thin layers and re-optimize. Two examples have been uploaded: 2 materials, 3 materials (illustrated below). Can't load designs? Check File.. Configuration.. Capacity, e.g. Groups: 3000, Targets: 1000, Variables: 1000.

When no design is given (blank Groups editor), DESIGN automatically sets it to Element #1 repeated the number of times specified in the Layers field; in this case 2000. We also tried (.1H .1M .1L)667 with similar results. Here you enter the design in the Groups Editor and click the Set button in the Optimize.. Synthesis dialog (left image below) to expand the design and auto-populate the Layers field. Not clear? Contact FTG Software for a online explanation.

If there are too many layers, flip-flop removes them by assigning zero thickness. After switching from flip-flop to DLS, open the Layers editor to combine adjacent layers. Here the final layer count was 567. While the layer count is reduced by deleting thin layers and re-optimizing, eventually spikes cannot be optimized away. In our (extreme?) example we found it crucial to add many targets (600) and evaluate with a tight wavelength interval. Anyone brave enough to fabricate the filter will need to re-optimize after replacing constant indices with dispersive tables.


Defining 'Elements'


Equivalent to 200H


Decrease in merit function in first pass

As shown below, results are encouraging.


While flip-flop is slow, it can run for a long time without intervention.


March 24   QA Report Example

A MEASURE user needs to enter data and generate reports. A worked example illustrates main points. For additional explanation, please refer to tutorials FilmStar BASIC and Report Generator.


Default font MS Sans Serif replaced
by
Arial Rounded MT Bold for better
legibility. See
Sub SetBold.


Spectrum generated in MEASURE Test Mode

A minor modification enables code to work in DESIGN and MEASURE/Scantraq. Users lacking MEASURE can test in DESIGN and consider how to accomplish the same in their current data acquisition software, e.g. UV Winlab.

1. MEASURE/Scantraq version (as downloaded):

 DESIGN
'GetMinAveMax 1, yMin, yAve, yMax, wMin, wMax ' Reflectance
'GetMinAveMax 2, yMin, yAve, yMax, wMin, wMax ' Transmittance
' MEASURE/Scantraq
AveCalc yMin, yMax, yAve, wMin, wMax

2. DESIGN modification:

' DESIGN
GetMinAveMax 1, yMin, yAve, yMax, wMin, wMax ' Reflectance
'GetMinAveMax 2, yMin, yAve, yMax, wMin, wMax ' Transmittance
' MEASURE/Scantraq
'AveCalc yMin, yMax, yAve, wMin, wMax

One way to implement BASIC code in MEASURE is through an After Sample Scan Macro. As shown, the entire macro can be embedded and saved with the Scan Method.

Please contact FTG Software with questions and help with modifications meeting particular requirements.


April 7   FileMaker Pro Update (FilmStar Database)
Revised April 23

FileMaker can trigger scripts via URL commands. We have replaced ActiveX scripting (problematic in FM 19) with FilmStar BASIC function OpenURL and Excel VBA function ShellExecute. Downloads:

Spectra_12.fmp12 FileMaker Pro 12-19 required; Sign In as Guest or Account Name Fred and Password Fred to view or modify.

1. FilmStar users with current Database installation password: FM12Setup.exe.

2. Others: Files below. Temp files saved in C:\Windows\Temp; you may need to add write permission.

FM12_GetSpectrum.xlsm Extract and plot single spectrum (FilmStar not required).
FM12_GetSpectra.xlsm Extract multiple spectra, AR yield calculation (FilmStar nor required).
FM12_GetSpectrum.bas  Extract and plot spectrum in FilmStar DESIGN 2.61.4580, MEASURE 2.51.3030, DESIGN Free Version 2.61.4592.

If currently using the FilmStar Database, previous ActiveX-based code is easily modified for URL scripting. DESIGN 2.61.4580 or MEASURE 2.51.2030 is required. Contact FTG Software if any issues.

'PREVIOUS METHOD USING ACTIVEX SCRIPTING
Private Sub DoFMTasks ' Run script Export Spectrum
    dbFile.DoFMScript "Export Spectrum" ' exports FM to spc$
    Wait Delay
    FileOpen "c:\winfilm\filemaker_12\temp.dx"
    MainActivate: AxesDraw: Replot
End Sub

'CURRENT METHOD USING URL SCRIPTING
Const dBase$ = "Spectrum_12"
Private Sub DoFMTasks ' Run script Export Spectrum
    RunFMScript "Export Spectrum"  ' FM Pro 12-19
    FileOpen "c:\winfilm\filemaker_12\temp.dx"
    MainActivate: AxesDraw: Replot
End Sub

Private Sub RunFMScript(ByVal Cmd$)
    OpenURL "fmp://$/" & dBase$ & ".fmp12?Script=" & Cmd$
    DoEvents
    Wait Delay
End Sub

A free FileMaker 19 trial (Windows 10 required) is available. As shown below, be sure to add fmurlscript to Advanced Security Settings. fmextscriptaccess can be cleared since ActiveX is no longer utilized. According to the FileMaker website, URL scripting was added in Version 12. We were able to test 14, 17-19.


File...Manage...Security...Advanced Settings...Extended Privileges

The Excel workbooks have been tested in Windows 10 (32-bit Excel, FileMaker 19) and in Windows 7 (32-bit and 64-bit Excel, FileMaker 18). If you get a File not found error; try again. You may also need to ensure that you are able to write to C:\Windows\Temp. Contact FTG Software if you can't get the examples to work.


May 25   Si Wafer n&k Gedanken Analysis

A researcher purchased a Cary UMA spectrophotometer hoping that reflectance measurements would lead to a Standard Operating Procedure (SOP) for n&k determination for visible films on Si wafers. In a previous study we analyzed the researcher's Si3N4 films on Si.

Consider the simplest configuration: bare substrate. We want to compute n&k (if possible) and compare to Green-2008 values downloaded from RefractiveIndex.INFO. Applying the CAUCHYS formula in DESIGN and INDEX (applicable over most of the wavelength range), results were discouraging: n was reasonable but not k.

Investigating further, we implemented Gedankenspektrum techniques. Since n&k are known, we can determine the validity of reverse-engineering solutions. Generating Gedankenspektra is facilitated with the Collector to Targets function found in the Optimization Targets dialog when the Collector is open. A BASIC macro creates the required spectra, in this case 0° and 45° P&S and 70° P&S.

' Program UMASimulate.bas for FilmStar DESIGN
' 0°, 45° P and S, 70° P and S

Option Explicit
Sub Main
    Dim s$
    s$ = CStr(SubThick) & " mm"
    Angle=0: Calculate
    Collect s$, "RR 0", True
    Angle = 45: Pol = "P": Calculate
    Collect s$, "RP 45"
    Pol = "S": Calculate
    Collect s$, "RS 45"
    Angle = 70: Pol = "P": Calculate
    Collect s$, "RP 70"
    Pol = "S": Calculate
    Collect s$, "RS 70"
End Sub

Running the code and converting to optimization targets gives the following (red S pol, blue P pol).

Fitting CAUCHYS for a 1 mm substrate, we obtain reasonable results for n, but not k (blue trace). Explanation: For k to affect reflectance (assuming k<<n), light must pass through the substrate and be reflected from the second surface. If the substrate is too thick, no light is reflected from the second surface. As shown below, we obtain correct k values above 400 nm for 0.001 mm substrates but poor agreement for 1.0 mm. (You might want to convince yourself that a 1000 µm substrate is thick enough to suppress fringes.) Ultimately there is a point at which increasing k results in metallic behavior. We leave that as a subject for a future edition of the FilmStar News!

A possible glitch is revealed below. Note the considerable difference between 6° calculated and measured spectra, but surprisingly little difference at 70°.

Is it possible that differences disappear at high angle? In the graph below we implement User-Defined Index Function n = A*N1, k = K1 where N1,K1 indicate Si look-up tables. Coefficient 'A' varies from 1.0 to 0.8 giving the difference between the red and blue traces. As indicated in the magenta and green traces, a difference remains at 70°. This suggests a possible issue with the user's WinUV UMA measurement technique and points out the need to examine and contemplate spectra prior to computer analysis.


June 1   Illuminants Editor

A user requires LED illuminants. As this necessitated editing Design1.ini or Measure.ini in ..Winfilm\Config we realized that the procedure could be simplified. We therefore implemented an Illuminants dialog accessed in the CIE Color module (<Ctrl+F9>) with Edit...Illuminants (<Ctrl+I>).

The first 11 rows refer to illuminants installed by Setup32. Any modifications to rows 1-11 are ignored, as can be verified by clicking <OK> and reopening the dialog. Click Edit...Add Illuminant (<Ctrl+A>) to add or modify rows 12 through 31. Most importantly, each illuminant file is a single column of normalized (range 0 to 1) intensity with either 81 (380 to 780 nm x5 nm) or 401 (380 to 780 x1 nm) rows. Notes: Use Excel to verify row count and normalize (range 0 to 1) if necessary.

User-defined illuminants are specified under [CIE Color] in ..\Winfilm\Config\Design1.ini and/or Measure.ini. Files are saved in ..\Winfilm or in a subdirectory such as ..\Winfilm\LED.

[CIE Color]
Window32=0 15000 3675 7725 7125 0 0
Illum1=White LED;IllumWtLED_1nm.csv
Illum2=CREE 465;LED\CREE_465.csv
Illum3=OSRAM 494;LED\OSRAM_494.csv
Illum4=Lumileds 470;LED\Lumileds_470.csv
Illum5=
Illum6=
...
Illum20=

Note how BASIC Sub SetIlluminant works with user-defined illuminants as in

Sub Main
    SetIlluminant 12
    Debug.Print CieParams$ ' Verifies setting
End Sub

giving ..White LED.. in the Immediate window.


June 10   Bandwidth Compensation in R/T vs Thickness Spectra

A FilmStar user with an Excel VBA-DESIGN model for optical monitor strategy needs to compensate for nonzero monochromator bandwidth. This is now implemented (DESIGN 2.61.4640) with new Collector BASIC function CollectAvg where weighting values (0 to 1) are placed in Row 1. Averaging is also available in Collector menu command Spectra.. Weighted Average.

Examining the DESIGN BASIC code, note how Gaussian Exp(-d*d*2.7726) populates Row 1. If the Gaussian is unsuitable (e.g. using a bandpass filter instead of monochromator), replace with a custom weighting function. Multiple monitor wavelengths are supported. New and modified BASIC commands are
highlighted below.

Option Explicit
Const Wave! = 550  ' Applies to same wavelength for all layers
Const B! = 20      ' 50% monochromator bandwidth in nm

Sub Main
    Dim v!, d!, c As Boolean
    AxesDraw
    StatusLabel "Busy - Please wait"
    For v = -50 To 50 Step 5   ' Adjust Step according to bandwidth
        d = v/B                ' e.g. Step = 1 for B = 5
        If Abs(d) < 1.5 Then   ' Neglect energy < ~ .2%
            If MultWave Then   ' Wavelengths specified in list
                Calculate , 1, v     ' Use alias CalculateA in Excel VBA
            Else
                EvalWave = Wave + v  ' Same wavelength for all layers
                Calculate
            End If
            Collect CStr(B) & " nm", Format(Exp(-d*d*2.7726), "0.00000"), Not c
            c = True
        End If
    Next v
    CollectAvg
    If Not MultWave Then EvalWave = Wave ' Restore design evaluation wavelength
    StatusLabel ""
    CollectClose
    Replot
End Sub

The Collector in our example is shown below. Blue text indicates calculated as distinct from measured spectra. While the Collector was initially developed for multi-angle data acquisition (UMA, ARTA/TAMS, Photon RT), it was readily modified for monitor simulation.

CollectAvg places spectra in memory for plotting or analysis. For illustration purposes we utilize thick films (layers in nm) and wide bandwidth. While thin layers may not be appreciably affected, the capability should interest filter manufacturers as well as those fabricating IR coatings with visible monitoring. Ultimately there are filters requiring laser monitoring.

Note the agreement with FilmStar MONITOR:


July 12   OKP Optical Plastic

A FilmStar user requested OKP-1 dispersion files. Manufacturer Osaka Gas Chemicals kindly supplied data in PDF format which we converted to Excel tables.

Since the minimum wavelength is 404.6 nm, an error message is triggered when performing CIE color calculations (range 380 to 780 nm):

The error is avoided by replacing look-up table OKP-1_20°C with built-in dispersive function $LOREN.

You can also use Functions.. Create Table in INDEX to create tables from 380 to 780 nm x5 or x1 nm. In the graph below the heavier line is original data while the thinner line is the $LOREN function.

The FilmStar installer now prompts you to add OKP INDEX files (20°C).

As shown here, these are saved in ..\Winfilm\Index\OKP Optical Plastic. Copy files that you utilize to  ..\Winfilm\Index so that they are displayed in the Film Indices Dispersion pull-down.

Please contact us if you have any difficulty modifying $LOREN coefficients for different temperatures. Note that LOREN must be checked in the Built-in Index Functions dialog.

Users requiring INDEX files (*.itw) for other materials should contact us.


July 21   Sumita Optical Glass

A FilmStar user, commenting on the July 12 FilmStar News topic (above), asked about Sumita Glass. We found complete glass data on the Sumita Download Page and added VBA macros and command buttons to simplify exporting data in useable form. The worksheet shown below has over 150 columns: quite a chore to manually extract optical coating data. Click here to download SumitaGlass.xlsm.

Starting In the Data worksheet, click a cell to select glass type and hit <Load Data> to generate W,n,k tables and extract Sellmeier glass coefficients (Index Function $SELLG2).

In the Calc sheet, <Copy W,n,k> copies data in FilmStar INDEX (Excel) format. Rows 2, 3, 15, 16 are automatically ignored when corresponding n values are blank.

Click <Copy SELLG2> to copy Sellmeier glass coefficients for the FilmStar INDEX Functions.. Fit Index dialog or for similar functions in other software.


SELLG2: n=Sqr(A+B*W^2+C/W^2+
D/W^4+E/W^6+F/W^8), k=0 (W in µm)

FilmStar user can click <INDEX Save to> to auto-create INDEX *.itw files.

Usual legal notice: Verify and use at your own risk. Accuracy cannot be guaranteed.

Assuming k=0, use Functions.. Fit Index.. Glass in INDEX or Setup.. Film Indices.. Glass in DESIGN.


 


In the above, wavelengths correspond to refractometer wavelengths (365, 404.7, etc.) with k obtained by interpolation at those wavelengths. Since transmittance measurements are performed over a wider range (270-2000), it seems better to compute n with the Sellmeier formula. We assume extrapolation is accurate over the given wavelength intervals.

Click here to download SumitaClassT.xlsm.

Index n shows Sellmeier function ($SELLG2) values computed at the wavelengths utilized in transmittance measurements. The FilmStar installer creates directory ..\Winfilm\Index\Sumita Glass based on 3-10 mm t values. Please advise FTG Software about any issues.


August 19   Scanning vs. Time (Time Series)

At first it appears that FilmStar MEASURE (Scantraq) does not support Time Series (repeated scans over a time interval). Digging deeper however, we see it easily implemented with Excel XLS/XLSX output (far more useful than CSV/TXT or similar text formats provided in instrument manufacturers' software).

In addition to the Excel-compatible Collector, DESIGN and MEASURE include XL functions based on a hidden worksheet originally developed for measuring angular dispersion.

1. XL functions...Time Series at single or multiple wavelengths:

Sub Main ' using BASIC XL functions
    Dim i&, t0!
    Const n& = 10     ' iterations
    Const Delay! = 2  ' sec delay (Test Mode)
    Const Wave! = 550 ' wavelength
    XLnew n, 2, "Test 1"
    XLwrite 1, 1, "t (sec)": XLwrite 1, 2, "%T"
    t0 = Timer
    For i = 1 To n
        XLwrite i + 1, 1, Timer - t0
        XLwrite i + 1, 2, 100 * Reading(Wave)
        ' Modification for additional wavelengths:
        ' XLwrite i + 1, 3, 100 * Reading(Wave2)
        Wait Delay
    Next i
    XLsave "C:\TestData1.xlsx"
    XLclose
End Sub

A second XL functions example (temperature controller simulation) can be found here.

2. Collector...Time Series over a wavelength range:

Sub Main ' using the Collector
    Dim i&, t0!
    Const n& = 10     ' iterations
    Const Delay! = 2  ' sec delay (Test Mode)
    t0 = Timer
    For i = 1 To n
        Scan
        Collect "Test 2", Format$(Timer - t0, "0.00") & " sec", i=1
        Wait Delay
    Next i
    CollectProc ,,,,, "C:\TestData2.xlsx"
End Sub

While the above solutions do not require Excel, another (somewhat more complex) option is to send data directly to Excel. Users requiring assistance in implementing FilmStar/Scantraq BASIC should contact FTG Software for an online tutorial. Your company and career will benefit!


September 14   Cicadas Inspire Optical Technology

For weeks, starting in May, Princeton NJ suffered from noise (88 dB at FTG HQ) and mess. Gone for now, Brood X returns in 2038.

While observing them close-up, they appear to be optically interesting. A Google search "optical properties cicada wings" leads one to an OSA news article as well as papers on AR coatings (Wang et al.), light absorption and solar cells. Optically interesting indeed! Who knew?

Wang et al. provide an equation (#4) for the effective refractive index nEff of a cicada substrate. This is readily implemented in FilmStar as User-Defined Index Function $NEFF=SQR(A+(1-A)*N1^2) where N1 is substrate index and A the proportion of air and substrate materials.

Fascinating, but unrelated to your work in optical films? User-Defined Index Functions are, of course, not limited to cicada wings. Examples: alloys, very thin metal films, and determining k when n known. Since designs are only as good as n&k data, you really need to understand FilmStar's unique capabilities as explained in our SVC 2021 presentation "Specifying n&k in Optical Thin Film Calculations" (YouTube)


October 5   Peaks in %R/%T vs. Thickness Plots

A not well known DESIGN feature is its ability to compute peaks and valleys in R/T vs. thickness graphs. This was added for monitoring with a flip fixture wherein coatings are deposited on both sides of the substrate and the more convenient FilmStar MONITOR cannot be utilized.

A user recently pointed out a problem when not starting with Layer Number 1. As shown below, the issue has been rectified in DESIGN 2.61.4662. Please report any discrepancies such as displayed numbers which do not match the graph trace.

NOTE: Discrepancies reported in thick designs were addressed in 2.61.4671 (Oct 14).

Displayed values are copied to the clipboard. In the image at the right, we then sorted by Column A thickness values.

Note that P = Peak, V = Valley, B = Boundary, L = Layer. There are Layers+1 Boundaries, in this case 8. (Note: Layers displayed, not total in the design.)

ROW 1: Layer 3 Boundary (87.14% at 136.45 nm)

ROW 2: 1st Peak/Valley (91.321% Peak at 143.12 nm) in Layer 3.

It is possible to have multiple peaks and valleys in the same layer as indicated below. (It is also possible to have neither peaks nor valleys in a thin layer.)

ROW 12: 6th Peak/Valley (6.535% Valley at 477.668 nm in Layer 8).

ROW 13: 7th Peak/Valley (19.159% Peak at 571.846 nm in Layer 8).


October 7   StellarNet Support


November 11  Index Formulator vs. BASIC

An advanced DESIGN user required assistance with setting up complex dispersion equations. This inspired us to review and compare dispersion functions in the Index Formulator and FilmStar BASIC. It is interesting to note that the equations were too complex for Excel VBA, but worked in FilmStar. Curious indeed!

Tests revealed that computing indices in BASIC was quite slow. The main issue was screen updating when enabling and disabling menus at each wavelength. That issue has been rectified (~14X improvement). Further improvement (~2X) resulted from replacing Clipboard commands with new BASIC functions StrGet and StrSet. Note, however, that the Index Formulator is still ~5X faster for the equation shown below.

' BASIC Program NKTest.bas
DefDbl A-Z
Option Base 1

Sub Main
    s$ = StrGet$() ' Replaces s$ = Clipboard$()
    Parse s$, Wave ' Wavelength in nm
    WM = Wave/1000 ' Formula requires wavelength in Wave in µm
    xi = (7.2*Sqr(WM)/(Sqr(WM)-.56)+3.2*Sqr(WM)/(Sqr(WM)-8.5))^0.5
    xk = 0
    StrSet CStr(xi) & "," & CStr(xk) ' Replaces Clipboard CStr(xi) &","& CStr(xk)
End Sub

Sub Parse (s$, x)
    i = InStr(s$, ",") ' Comma delimited
    x = Val(Mid$(s$, 1, i - 1))
    s$ = Mid$(s$, i + 1)
End Sub

In the above case Index Coefficients (as displayed in the Film Indices dialog) are not utilized. That possibility is displayed below for NKTest.faw.

' Sub Main in BASIC Program ACONST.bas with Index Coefficients A and B
Sub Main
    s$ = StrGet$()
    Parse s$, Wave ' Wavelength in nm
    For i = 1 To 2 ' 7 maximum (default)
        Parse s$, Aconst(i)
    Next i
    xi = Aconst(1)
    xk = 2 * Aconst(2) ' Easily verified
    StrSet CStr(xi) & "," & CStr(xk)
End Sub

To test, download and extract NKTest.zip. Copy *.bas to C:\Winfilm\Basic32. (NKTest.itf is the Collection of index functions [File.. Open Collection] in case functions get 'lost'.) Note that DESIGN 2.61.4674 and INDEX 2.51.0683 are required.

Try changing the design from 200K to 200L to 200M, etc. (200K and 200L should match.) Problems? Send data files enabling us to duplicate your issue. Screen images alone are often insufficient. Be prepared for a ZOOM session if necessary.

Finally, Index Formulator vs. BASIC? Use the Formulator (5X faster) when it's possible to write one-line code for n and k. Use BASIC otherwise. Additional Index Formulator examples are given here.


November 22  Tolerancing with Index Variations

In DESIGN tolerancing we simulate errors arising from random thickness variations. A user recently asked about varying indices. The capability is readily implemented with BASIC and User Index Functions.

Note: Downloads for those wishing to duplicate these results: TiO2 Sopra 400-800.itw, RandIndex.faw.

The simplest case (constant indices) is of use over a limited wavelength range. RndNorm() returns a pseudo-normal (Guassian) error distribution with standard deviation 1.0. Here we assume that n = 2.35 with SD = 0.02 and k = 0.01 with SD = 0.002.

Copy the code and  paste into the BASIC editor.

Sub Main
    AxesDraw
    For i = 1 To 100
        SetIndexCoeff 3, 1, 2.35 + .02 * RndNorm() ' n A
        SetIndexCoeff 3, 2, .01 + .002 * RndNorm() ' k B
        CalcPlot
    Next i
End Sub

Dispersive materials can also be utilized. In that case we take advantage of User-Defined Index Functions. In the following we define function RANDI based on TiO2.

As shown below, columns A and B now contain index multipliers instead of n and k.

In the above BASIC code we utilized the Main Menu graphics window screen. In the code below we use the FSPlot Module wherein the light green background matches this web page. Here A and B are index multipliers, NOT actual index values.

Sub Main
    PlotClose
    PlotActivate   ' FSPlot Module
    For i = 1 To 100
        SetIndexCoeff 3, 1, 1 + .01 * RndNorm() ' n A
        SetIndexCoeff 3, 2, 1 + .02 * RndNorm() ' k B
        Calculate
        PlotNext
     Next i
End Sub

Here's the result for design 500H (physical thickness).

Users with advanced knowledge of index variations (wavelength and/or thickness dependence) can implement more sophisticated models in the Index Formulator. Please e-mail FTG Software or call +1 609-924-6222 with any questions, issues, or comments.


December 13  Massive Layers Revisited (previous discussion)

We were asked about n,k determination in thick thin films (layers with multiple fringes). We propose that measured spectra be smoothed and converted to optimization targets over a wavelength range simulating a massive layer. The procedure can be implemented manually (Spectra.. Smooth Data, Spectra.. Convert Table, Optimize.. Targets.. Convert  Spectrum) or automated as follows.

Sub Main
    Dim bErr As Boolean
    MonoLight 100, bErr ' Averages fringes with 100 nm monochromator bandwidth
    If Not bErr Then
        DataConvert 1000, 3500, 50 ' Useful targets < 3500 nm
        SpecTargets True, "T", 1, 0, "R"
    End If
End Sub

The Original design is 25000H (n=2.4, k=0.0003, SUB = 1.52). Average utilizes 100 nm bandwidth simulation. The massive design is 0.025N (n=2.4, k=0.0003). Error: Massive does not overlap Average below 3500 nm!

The error results from effectively calculating the massive layer with an AR on the uncoated surface while FWD Include Sd 2 (Setup.. Parameters) was utilized for Original and Average.

The correct solution is obtained by treating the substrate as a massive layer.

Users should carefully review data before refining n,k values. While the erroneous Massive curve appears reasonable at first glance (similar shape as the correct curve), it leads to incorrect solutions. Measured spectra will not be as well-behaved as the theoretical Gedankenspektrum data given above. Should spectrophotometry prove inadequate, try ellipsometry. An article (pg 34) in Dec 2021 Vacuum Coating & Technology discusses thick organic films. We invite users to report on the success or failure of the massive layer simulation method.

Back to Technical Issues

Copyright © 2023 FTG Software Associates
Last updated on October 11, 2023