You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: paper/paper.md
+28-23Lines changed: 28 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,11 +10,12 @@ authors:
10
10
- name: Marius J. Müller
11
11
orcid: 0009-0005-2187-0122
12
12
affiliation: 1
13
-
- name: Florian Dobener
14
-
orcid: 0000-0003-1987-6224
15
13
- name: Sangam Chatterjee
16
14
orcid: 0000-0002-0237-5880
17
15
affiliation: 1
16
+
- name: Florian Dobener
17
+
orcid: 0000-0003-1987-6224
18
+
affiliation: 1
18
19
affiliations:
19
20
- name: Institute of Experimental Physics I and Center for Materials Research (ZfM/LaMa), Justus Liebig University Giessen, Heinrich-Buff-Ring 16, Giessen, D-35392 Germany
20
21
index: 1
@@ -25,20 +26,23 @@ bibliography: paper.bib
25
26
# Summary
26
27
27
28
**PyElli** is an open-source Python-based analysis tool for evaluating the linear optical interaction of layered materials.
28
-
The code primarily targets spectroscopic ellipsometry (SE) but is adaptable to various transmission and reflection experiments featuring spectral and polarization resolution.
29
+
The code primarily targets spectroscopic ellipsometry (SE).
30
+
In addition, it is adaptable to various transmission and reflection experiments featuring spectral and polarization resolution.
29
31
30
-
Various scientific fields use SE to determine the optical constants - or rather functions - of materials and multiple-layer stacks.
31
-
The as-measured SE experimental data requires numerical analysis to deduce physically meaningful material parameters.
32
-
A typical approach uses transfer-matrix methods (TMM) [@tompkins2005; @WVASEguide].
32
+
Various scientific fields use SE to determine the optical functions of materials and multiple-layer stacks often referred to simply as "optical constants" or "material parameters".
33
+
The respective experimental "as-measured" SE data requires numerical analysis to deduce physically meaningful quantities.
Here, an interaction matrix describes the optical response of each individual material layer.
34
-
The full optical response of a multilayer system is then determined by matrix multiplication of the layers' matrices.
36
+
Determining the optical response of a multilayer system then requires matrix multiplication of the individual layers' matrices.
35
37
36
-
The ellipsometer hardware typically supports bundled proprietary software solutions for such analyses.
37
-
Unfortunately, each manufacturer supplies their own adapted tools.
38
-
This approach promises efficient laboratory workflows if working flawlessly.
39
-
However, it binds scientists to specific optical models and experiments available in the provided software.
40
-
Furthermore, data interchange can be cumbersome, and results may be hard to reproduce on competitive systems due to the use of other models or parameters.
41
-
In addition, limitations of the bundled software may stimulate scientists to use third-party software: bundled software packages may not support specific kinds of analyses, such as including the response of optically anisotropic materials or simultaneous fitting of external experimental parameters.
38
+
Ellipsometer hardware typically supports bundled proprietary software solutions enabling such analyses.
39
+
Unfortunately, each manufacturer supplies their own adapted software solution.
40
+
This approach promises efficient laboratory workflows - if working flawlessly.
41
+
However, it binds scientists to specific optical models available and limits experiments to the ones supported in the provided software.
42
+
Furthermore, data interchange can be cumbersome.
43
+
For example, results may even be hard to reproduce on competitive systems due to the use of other models or parameters.
44
+
In addition, limitations of the specific software included with each instrument may stimulate scientists to use third-party software:
45
+
bundled software packages may not support specific desirable kinds of analyses, such as including the response of optically anisotropic materials or simultaneous fitting of external experimental parameters.
42
46
43
47
**PyElli** offers an open-source alternative extending the capabilities of existing solutions, while aiming to remain as compatible as possible, by providing data imports from various manufacturers (Woollam VWASE, Woollam CompleteEASE, Sentech, Accurion).
44
48
The code is designed with extensibility and adaptability in mind enabling the implementation of individually adapted models as well as data evaluation with custom tools.
@@ -49,7 +53,7 @@ Typical examples for advanced use-cases are implementations of custom experiment
49
53
All optical models adhere closely to the literature [@Hilfiker2018].
50
54
The software easily includes the popular public-domain database for optical constants [refractiveindex.info](https://refractiveindex.info)[@rii].
51
55
This allows the inclusion of literature dispersions with a single line of code.
52
-
Additional dispersion relations can be either hard coded, which is more efficient, or parsed from a text-based domain-specific language into a fittable dispersion.
56
+
Additional dispersion relations can be either hard coded, which is more efficient, or parsed from a text-based domain-specific language into a dispersion which can be fitted, e.g., polynomially.
53
57
54
58
**PyElli** supports multiple solving algorithms with different characteristics.
55
59
Currently, two algorithms using different formulations are available: a fast algorithm based on a 2x2 matrix formulation [@byrnes2020multilayer] and a more complex 4x4 matrix formulation [@Berreman72; @berreman4x4_doku; @berreman4x4_software].
@@ -61,7 +65,7 @@ This allows finding solutions to more complex problems such as anisotropic mater
61
65
62
66
**PyElli** ensures fast processing through fully vectorized algorithms for multiple wavelengths and by leveraging numerical algebra libraries like [NumPy](https://numpy.org)[@harris2020array] and [SciPy](https://scipy.org)[@2020SciPy-NMeth].
63
67
Together, these runtime advantages enable the practical use of advanced fitting algorithms such as global optimizers while maintaining reasonable evaluation times.
64
-
As a result, they enable integrated in-situ monitoring and real-time data analysis of overlayer growth.
68
+
As a result, **PyElli** enables integrated in-situ monitoring and real-time data analysis of overlayer growth.
65
69
Furthermore, the use of Python and vectorization libraries also facilitates the development of artificial intelligence-based SE data analysis.
66
70
67
71
# Statement of need
@@ -71,7 +75,7 @@ Many research journals already require authors to add supporting data, and there
71
75
The FAIR principles have recently been extended to apply to research software as well since reproducing data requires not only the data itself but also the software used to create it [@Barker2022].
72
76
Producing FAIR data and using a FAIR and open analysis pipeline is especially important for SE, as the results are tightly related and dependent on the algorithms and models used for evaluation.
73
77
74
-
An open-source toolkit has many inherent benefits over proprietary software.
78
+
An open-source toolkit, **PyElli** has many inherent benefits over proprietary software.
75
79
For SE, optical models vary between manufacturers and translation can be difficult without comprehensive documentation.
76
80
**PyElli's** open-source nature makes optical models extendable, auditable, and fully comprehensive.
77
81
Each version of **PyElli** is associated with a DOI and a Zenodo upload, allowing for reliable referencing and reproducibility of analysis results.
@@ -94,7 +98,7 @@ Other notable Python open-source software for solving transfer-matrices is avail
94
98
95
99
# Example: Building a model for an oxide layer on silicon
96
100
97
-
This example aims to illustrate the straightforward implementation and building of an optical model in **PyElli**.
101
+
This example aims to illustrate the straight-forward implementation and building of an optical model in **PyElli**.
98
102
The chosen model system is a thin SiO$_2$ layer on bulk Si.
99
103
A Cauchy dispersion function describes the SiO$_2$.
100
104
Tabulated literature values for Si are loaded from the refractiveindex.info database.
@@ -134,8 +138,8 @@ SiO2 = elli.Cauchy(
134
138
).get_mat()
135
139
```
136
140
137
-
Next, we request tabulated literature values for silicon.
138
-
Therefor, we instantiate the refractiveindex.info database and query it for the material (`Si`) and author (`Aspnes`).
141
+
Next, tabulated literature values for silicon is read from a database.
142
+
Therefor, the code instantiates the refractiveindex.info database and queries it for the material (`Si`) and author (`Aspnes`).
139
143
It is also possible to search the database to get a list of matching entries.
140
144
See the [documentation](https://pyelli.readthedocs.io/en/stable/database.html) for details.
141
145
@@ -144,15 +148,15 @@ rii_db = elli.db.RII()
144
148
Si = rii_db.get_mat("Si", "Aspnes")
145
149
```
146
150
147
-
All materials are now instantiated and we can build the layered structure.
151
+
All materials are now instantiated and enable the build of the layered structure.
148
152
The `Structure` class takes three arguments:
149
153
150
154
- The incident half-space, which is typically air.
151
155
- The layer stack as a list of `Layer` objects. The `Layer` object is created by adding the material and the layer thickness.
152
156
- The lower half-space, which represents the substrate.
153
157
154
158
The incident and lower half-space are modeled as infinite to terminate the calculation.
155
-
Consequently, backside scattering of the substrate cannot be introduced into the calculation.
159
+
Consequently, the calculation inherently cannot capture backside scattering from the bottom substrate surface.
156
160
157
161
```python
158
162
structure = elli.Structure(
@@ -162,8 +166,8 @@ structure = elli.Structure(
162
166
)
163
167
```
164
168
165
-
Finally, we trigger a calculation by calling the `evaluate(...)` method of the `structure` object.
166
-
We use a `wavelengths` array from $210$ nm to $800$ nm for the calculation range and an angle of incidence of $70°$ degree.
169
+
Finally, calling the `evaluate(...)` method of the `structure` object triggers the calculation.
170
+
The example uses a `wavelengths` array from $210$ nm to $800$ nm for the calculation range and an angle of incidence of $70°$ degree.
167
171
168
172
```python
169
173
wavelengths = linspace(210, 800, 100)
@@ -184,6 +188,7 @@ The [examples](https://pyelli.readthedocs.io/en/stable/auto_examples/index.html)
184
188
# Acknowledgements
185
189
186
190
Financial support is provided by the Deutsche Forschungsgemeinschaft (DFG, German Research Foundation), under grant No. 398143140 (FOR 2824).
191
+
SC also acknowledges the LOEWE Transferprofessur "HIMAT".
187
192
188
193
We thank Olivier Castany and Céline Molinaro for their implementation of the Berreman formalism, Steven J. Byrnes for his 2x2 transfer-matrix-method, and Mikhail Polyanskiy for curating the refractiveindex.info database.
0 commit comments