Skip to content

Commit 5801b51

Browse files
committed
Add latest changes from Sangam
1 parent 1c8f1b1 commit 5801b51

File tree

1 file changed

+28
-23
lines changed

1 file changed

+28
-23
lines changed

paper/paper.md

Lines changed: 28 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,12 @@ authors:
1010
- name: Marius J. Müller
1111
orcid: 0009-0005-2187-0122
1212
affiliation: 1
13-
- name: Florian Dobener
14-
orcid: 0000-0003-1987-6224
1513
- name: Sangam Chatterjee
1614
orcid: 0000-0002-0237-5880
1715
affiliation: 1
16+
- name: Florian Dobener
17+
orcid: 0000-0003-1987-6224
18+
affiliation: 1
1819
affiliations:
1920
- 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
2021
index: 1
@@ -25,20 +26,23 @@ bibliography: paper.bib
2526
# Summary
2627

2728
**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.
2931

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.
34+
Typical approaches apply transfer-matrix methods (TMM) [@tompkins2005; @WVASEguide].
3335
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.
3537

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.
4246

4347
**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).
4448
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
4953
All optical models adhere closely to the literature [@Hilfiker2018].
5054
The software easily includes the popular public-domain database for optical constants [refractiveindex.info](https://refractiveindex.info) [@rii].
5155
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.
5357

5458
**PyElli** supports multiple solving algorithms with different characteristics.
5559
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
6165

6266
**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].
6367
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.
6569
Furthermore, the use of Python and vectorization libraries also facilitates the development of artificial intelligence-based SE data analysis.
6670

6771
# Statement of need
@@ -71,7 +75,7 @@ Many research journals already require authors to add supporting data, and there
7175
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].
7276
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.
7377

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.
7579
For SE, optical models vary between manufacturers and translation can be difficult without comprehensive documentation.
7680
**PyElli's** open-source nature makes optical models extendable, auditable, and fully comprehensive.
7781
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
9498

9599
# Example: Building a model for an oxide layer on silicon
96100

97-
This example aims to illustrate the straight forward 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**.
98102
The chosen model system is a thin SiO$_2$ layer on bulk Si.
99103
A Cauchy dispersion function describes the SiO$_2$.
100104
Tabulated literature values for Si are loaded from the refractiveindex.info database.
@@ -134,8 +138,8 @@ SiO2 = elli.Cauchy(
134138
).get_mat()
135139
```
136140

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`).
139143
It is also possible to search the database to get a list of matching entries.
140144
See the [documentation](https://pyelli.readthedocs.io/en/stable/database.html) for details.
141145

@@ -144,15 +148,15 @@ rii_db = elli.db.RII()
144148
Si = rii_db.get_mat("Si", "Aspnes")
145149
```
146150

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.
148152
The `Structure` class takes three arguments:
149153

150154
- The incident half-space, which is typically air.
151155
- The layer stack as a list of `Layer` objects. The `Layer` object is created by adding the material and the layer thickness.
152156
- The lower half-space, which represents the substrate.
153157

154158
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.
156160

157161
```python
158162
structure = elli.Structure(
@@ -162,8 +166,8 @@ structure = elli.Structure(
162166
)
163167
```
164168

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.
167171

168172
```python
169173
wavelengths = linspace(210, 800, 100)
@@ -184,6 +188,7 @@ The [examples](https://pyelli.readthedocs.io/en/stable/auto_examples/index.html)
184188
# Acknowledgements
185189

186190
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".
187192

188193
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.
189194

0 commit comments

Comments
 (0)