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.bib
+12-2Lines changed: 12 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -123,11 +123,21 @@ @article{rii
123
123
abstract = {We introduce the refractiveindex.info database, a comprehensive open-source repository containing optical constants for a wide array of materials, and describe in detail the underlying dataset. This collection, derived from a meticulous compilation of data sourced from peer-reviewed publications, manufacturers’ datasheets, and authoritative texts, aims to advance research in optics and photonics. The data is stored using a YAML-based format, ensuring integrity, consistency, and ease of access. Each record is accompanied by detailed metadata, facilitating a comprehensive understanding and efficient utilization of the data. In this descriptor, we outline the data curation protocols and the file format used for data records, and briefly demonstrate how the data can be organized in a user-friendly fashion akin to the books in a traditional library.},
Copy file name to clipboardExpand all lines: paper/paper.md
+12-12Lines changed: 12 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -42,8 +42,8 @@ In addition, limitations of the bundled software may stimulate scientists to use
42
42
43
43
**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
44
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.
45
-
Typical examples for advanced use-cases are implementations of custom experimental geometries not covered by other software [@eberheim2022], imaging ellipsometry, or as a full FAIR data [@Wilkinson2016]automated analysis pipeline for SE measurements.
46
-
**PyElli** also supports recent advances in the standardization of ellipsometry data and models, addressing the need for FAIR data.
45
+
Typical examples for advanced use-cases are implementations of custom experimental geometries not covered by other software [@eberheim2022], imaging ellipsometry, or as a full FAIR data automated analysis pipeline for SE measurements.
46
+
**PyElli** also supports recent advances in the standardization of ellipsometry data and models, addressing the need for FAIR data[@Wilkinson2016].
47
47
48
48
**PyElli** aims to provide a straight-forward database of predefined dispersion models for analyzing materials.
49
49
All optical models adhere closely to the literature [@Hilfiker2018].
@@ -52,7 +52,7 @@ This allows the inclusion of literature dispersions with a single line of code.
52
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.
53
53
54
54
**PyElli** supports multiple solving algorithms with different characteristics.
55
-
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; @castany].
55
+
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].
56
56
The 2x2 matrix algorithm divides the light into two perpendicular linearly polarized beams, which are solved separately.
57
57
One of its limitations is eliminating the possibility to include birefringent materials.
58
58
The 4x4 matrix approach fully solves Maxwell's equations.
@@ -61,8 +61,8 @@ This allows finding solutions to more complex problems such as anisotropic mater
61
61
62
62
**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
63
Together, these runtime advantages enable the practical use of advanced fitting algorithms such as global optimizers while maintaining reasonable evaluation times.
64
-
Such advantages enable embedded in-situ monitoring and real-time data analysis of overlayer growth.
65
-
Thus, the use of Python and vectorization libraries also facilitates the adoption of artificial intelligence-based analysis of SE data.
64
+
As a result, they enable integrated in-situ monitoring and real-time data analysis of overlayer growth.
65
+
Furthermore, the use of Python and vectorization libraries also facilitates the development of artificial intelligence-based SE data analysis.
66
66
67
67
# Statement of need
68
68
@@ -89,8 +89,8 @@ Other notable Python open-source software for solving transfer-matrices is avail
89
89
-[PyLlama](https://pyllama.readthedocs.io)[@Bay2022] focuses on the simulation of liquid crystals and uses non-vectorized TMM and a scattering matrix algorithm (rigorous coupled-wave analysis, RCWA).
90
90
-[RayFlare](https://rayflare.readthedocs.io)[@Pearce2021] is a complete toolkit to simulate the physical and electrical properties of solar cells. It provides the same 2x2 algorithm[@byrnes2020multilayer] and a scattering matrix approach (S4).
91
91
-[tmm_fast](https://github.com/MLResearchAtOSRAM/tmm_fast)[@Luce22] is a vectorized variant of Byrnes' algorithm for artificial intelligence-based analysis of multilayer stacks.
92
-
-[tmmax](https://github.com/bahremsd/tmmax)[tmmax] is a JIT-compilable version of the 2x2 matrix method, leveraging the _JAX_ toolkit.
93
-
-[PyMoosh](https://github.com/AnMoreau/PyMoosh)[Langevin:24] is a comprehensive toolkit for computing the optical properties of multilayered structures, with a plethora of available scattering and transfer matrix algorithms.
92
+
-[tmmax](https://github.com/bahremsd/tmmax)[@tmmax] is a JIT-compilable version of the 2x2 matrix method, leveraging the _JAX_ toolkit.
93
+
-[PyMoosh](https://github.com/AnMoreau/PyMoosh)[@Langevin:24] is a comprehensive toolkit for computing the optical properties of multilayered structures, with a plethora of available scattering and transfer matrix algorithms.
94
94
95
95
# Example: Building a model for an oxide layer on silicon
Next, the Cauchy model is created using the `Cauchy` class and the defined parameters.
126
-
All Cauchy coefficients are kept at their default value of zero in this particular case.
127
-
Each dispersion has its own class.
128
-
A list of different dispersions is given in the [documentation](https://pyelli.readthedocs.io/en/stable/dispersions.html).
126
+
All undefined Cauchy coefficients are kept at their default value of zero in this particular case.
129
127
Subsequently, the `.get_mat()` method is called on the created object to automatically convert the dispersion into an isotropic material.
128
+
A list of different dispersion classes and their usage is given in the [documentation](https://pyelli.readthedocs.io/en/stable/dispersions.html).
130
129
131
130
```python
132
131
SiO2 = elli.Cauchy(
@@ -164,11 +163,12 @@ structure = elli.Structure(
164
163
```
165
164
166
165
Finally, we trigger a calculation by calling the `evaluate(...)` method of the `structure` object.
167
-
We use a `wavelengths` array from $210$ nm to $800$ nm for the calculation range and an angle of incidence of $70°$ degree (second parameter of evaluate).
166
+
We use a `wavelengths` array from $210$ nm to $800$ nm for the calculation range and an angle of incidence of $70°$ degree.
168
167
169
168
```python
170
169
wavelengths = linspace(210, 800, 100)
171
-
result = structure.evaluate(wavelengths, 70)
170
+
angle =70
171
+
result = structure.evaluate(wavelengths, angle)
172
172
```
173
173
174
174
The calculation is stored in the `result` variable, which is a [`Result` object](https://pyelli.readthedocs.io/en/stable/result.html).
0 commit comments