Skip to content

Commit 0c6fa54

Browse files
committed
Small improvements and bib fixes
1 parent df0d402 commit 0c6fa54

File tree

2 files changed

+24
-14
lines changed

2 files changed

+24
-14
lines changed

paper/paper.bib

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,21 @@ @article{rii
123123
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.},
124124
}
125125

126-
@online{castany,
126+
@software{berreman4x4_software,
127127
author = {Olivier Castany and Céline Molinaro},
128128
title = {Berreman4x4},
129129
url = {https://github.com/Berreman4x4/Berreman4x4},
130-
urldate = {2024-07-02}
130+
urldate = {2024-07-02},
131+
year = {2021}
132+
}
133+
134+
@manual{berreman4x4_doku,
135+
author = {Olivier Castany},
136+
title = {Berreman4x4},
137+
url = {https://sourceforge.net/projects/berreman4x4/files/documentation.pdf},
138+
year = {2021},
139+
month = oct,
140+
day = {31},
131141
}
132142

133143
@Article{ harris2020array,

paper/paper.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ In addition, limitations of the bundled software may stimulate scientists to use
4242

4343
**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).
4444
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].
4747

4848
**PyElli** aims to provide a straight-forward database of predefined dispersion models for analyzing materials.
4949
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.
5252
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.
5353

5454
**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].
5656
The 2x2 matrix algorithm divides the light into two perpendicular linearly polarized beams, which are solved separately.
5757
One of its limitations is eliminating the possibility to include birefringent materials.
5858
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
6161

6262
**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].
6363
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.
6666

6767
# Statement of need
6868

@@ -89,8 +89,8 @@ Other notable Python open-source software for solving transfer-matrices is avail
8989
- [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).
9090
- [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).
9191
- [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.
9494

9595
# Example: Building a model for an oxide layer on silicon
9696

@@ -123,10 +123,9 @@ params.add("SiO2_thickness", value=20)
123123
```
124124

125125
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.
129127
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).
130129

131130
```python
132131
SiO2 = elli.Cauchy(
@@ -164,11 +163,12 @@ structure = elli.Structure(
164163
```
165164

166165
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.
168167

169168
```python
170169
wavelengths = linspace(210, 800, 100)
171-
result = structure.evaluate(wavelengths, 70)
170+
angle = 70
171+
result = structure.evaluate(wavelengths, angle)
172172
```
173173

174174
The calculation is stored in the `result` variable, which is a [`Result` object](https://pyelli.readthedocs.io/en/stable/result.html).

0 commit comments

Comments
 (0)