simulateIRAS


NamesimulateIRAS JSON
Version 0.0.0 PyPI version JSON
download
home_pagehttps://github.com/coconnor24/simulateIRAS
SummaryA python package for simulating Infrared Reflection Absorption Spectroscopy(IRAS) measurements
upload_time2023-05-03 17:31:17
maintainer
docs_urlNone
authorcoconnor24
requires_python
licenseGPLv3
keywords iras surface science ftir doi:
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # simulateIRAS
## Description
A python package for simulating spectra and determining extinction coefficients for polarization- and azimuth-resolved infrared reflection absorption spectroscopy (IRAS) measurements for non-magnetic substrates. The simulations current utilize a three-layer (vacuum-adsorbate-substrate) model derived according to [1] and implemented in [2].
<br> <br> <br>
<img src='./images/IRAS_Model_3_Layer.png' width='50%'>
<br> <br>
The three-layer (vacuum-adsorbate-substrate) model for light incident along the xz plane of a substrate in the xy plane gives:
<br>
$${\frac{\Delta R}{R}} \vert_{(s-pol)} = 8 \ \pi \ \tilde{\nu} \ d \ \sqrt{\epsilon^{s}\_{y}} \ cos(\phi) \ Im(\frac{\epsilon^{s}\_{y} \ - \ \tilde{\epsilon}^{a}\_{y}}{\epsilon^{s}\_{y} \ - \ \epsilon^{v}})$$
<br>
$${\frac{\Delta R}{R}} \vert_{(p-pol)} = 8 \ \pi \ \tilde{\nu} \ d \ \sqrt{\epsilon^{s}\_{y}} \ cos(\phi) \ Im(\frac{\alpha}{\beta})$$
$$\alpha = (\epsilon^{s}\_{x} \ - \ \tilde{\epsilon}^{a}\_{x}) - (\frac{\epsilon^{s}\_{x}}{\tilde{\epsilon}^{a}\_{z}} \  - \ \frac{\tilde{\epsilon}^{a}\_{x}}{\epsilon^{s}\_{z}}) \ {\epsilon^{v}} \ sin^{2}(\phi)$$
$$\beta = (\epsilon^{s}\_{x} \ - \ \epsilon^{v}) - (\frac{\epsilon^{s}\_{x}}{\tilde{\epsilon}^{v}} \  - \ \frac{\epsilon^{v}}{\epsilon^{s}\_{z}}) \ {\epsilon^{v}} \ sin^{2}(\phi)$$
<br>
Where: <br>
$\tilde{\nu} =$ wavenumber <br>
$d =$ adsorbate film thickness (approximate for coverage) <br>
$\phi =$ angle of light incidence with respect to the surface normal direction <br>
$\epsilon^{s}\_{x} =$ dielectric constant of the substrate layer along the x-axis (in substrate plane along incident light) <br>
$\epsilon^{s}\_{y} =$ dielectric constant of the substrate layer along the y-axis (in substrate plane orthogonal to incident light) <br>
$\epsilon^{s}\_{z} =$ dielectric constant of the substrate layer along the z-axis (normal to substrate plane) <br>
$\epsilon^{a}\_{x} =$ dielectric constant of the adsorbate film along the x-axis (in substrate plane along incident light) <br>
$\epsilon^{a}\_{y} =$ dielectric constant of the adsorbate film  along the y-axis (in substrate plane orthogonal to incident light) <br>
$\epsilon^{a}\_{z} =$ dielectric constant of the adsorbate film  along the z-axis (normal to substrate plane) <br>
$\epsilon^{v} =$ dielectric constant of the vacuum which is isotropic <br>
<br>

## Installation
The python package can be installed via PyPI (pip):
<br><br>
`pip install simulateIRAS` 
<br><br>
We recommend importing in python as iras. 
<br><br>
`import simulateIRAS as iras`
<br>

## Examples
### Example 1: Simulating polarization- and azimuth-resolved IRAS spectra
This example simulates the 4 polarization- and azimuth-resolved IRAS spectra with given k parameters k(x), k(y), k(z) for an adsorbate film on an isotropic, dielectric substrate. The python code, input files and output files are provided in "simulateIRAS/examples/simpleSimulation". The simulation requires the following inputs: 
1) incident angle of light relative to the surface normal
2) complex index of refraction of the subtrate layer which here is wavelength independent for an isotropic substrate modelling anatase TiO<sub>2</sub>(101) as $n = 2.3 + 0.0i$
3) k parameters of the adsorbate layer (imaginary part of the complex index of refraction) which here is for a water film
4) real index of refraction of the adsorbate layer in the infinite wavenumber simulation limit which here is taken as $Real(n) = 1.37$ for a water film
5) adsorbate film thickness
<br>
The Kramers–Kronig relations are used on the adsorbate k parameters (imaginary part of the complex index of refraction) to get the real part of the complex index of refraction for the adsorbate layer. The simulation then applies the three-layer (substrate-adsorbate-vacuum) model to simulate the 4 polarization- and azimuth-resolved IRAS spectra.
<br>
The input adsorbate k parameters and 4 polarization- and azimuth-resolved simulated IRAS spectra are plotted below:
<br>
<br>
<p align="center">
<img src='./examples/simpleSimulation/Solutions/Figure0.png' width='40%'><img src='./examples/simpleSimulation/Solutions/Figure1.png' width='40%'>
</p>

### Example 2: Determining extinction coefficients from polarization- and azimuth-resolved IRAS spectra
This example regresses the adsorbate k parameters k(x), k(y), k(y) by comparing the 4 polarization- and azimuth-resolved simulated and experimental IRAS spectra for an adsorbate film on isotropic, dielectric substrate. The python code, input files and output files are provided in "simulateIRAS/examples/dataRegression". The simulation requires the following inputs: 
1) 4 polarization- and azimuth-resolved IRAS spectra
2) incident angle of light relative to the surface normal
3) complex index of refraction of the subtrate layer which here is wavelength independent for an isotropic substrate modelling anatase TiO<sub>2</sub>(101) as $n = 2.3 + 0.0i$
5) real index of refraction of the adsorbate layer in the infinite wavenumber simulation limit which here is taken as $Real(n) = 1.37$ for a water film
6) adsorbate film thickness
<br>
The Kramers–Kronig relations are used on the regressed adsorbate k parameters (imaginary part of the complex index of refraction) to get the real part of the complex index of refraction for the adsorbate layer. The simulation then applies the three-layer (substrate-adsorbate-vacuum) model to simulate the 4 polarization- and azimuth-resolved IRAS spectra. First, the simulation regresses the adsorbate k(y) and k(x) parameters to the s(y) and s(x) experimental IRAS spectra. Second, the simulation regresses the adsorbate k(z) parameters to the p(xz) and p(yz) experimental IRAS spectra. Finally, the simulation regresses the adsorbate k(x), k(y) and k(z) parameters to the s(y), p(xz), s(x), p(yz) experimental IRAS spectra.
<br>
The regressed adsorbate k parameters and 4 polarization- and azimuth-resolved (solid) simulated and (dots) experimental IRAS spectra are plotted below:
<br>
<br>

<p align="center">
<img src='./examples/dataRegression/Solutions/Figure0.png' width='40%'><img src='./examples/dataRegression/Solutions/Figure1.png' width='40%'>
</p>

## References
[1] Chabal YJ (1987) Vibrational Properties at Semiconductor Surfaces and Interfaces. In: Le Lay G, Derrien J, Boccara N (eds) Semiconductor Interfaces: Formation and Properties. Springer Berlin Heidelberg, Berlin, Heidelberg
<br>
[2] O'Connor et al. In preparation.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/coconnor24/simulateIRAS",
    "name": "simulateIRAS",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "",
    "maintainer_email": "",
    "keywords": "IRAS,Surface Science,FTIR,doi:",
    "author": "coconnor24",
    "author_email": "coconnor@g.harvard.edu",
    "download_url": "https://files.pythonhosted.org/packages/da/31/5b9aff459022d597c66831f1d7027de5adb0ec15cf41365e71983a991cd5/simulateIRAS-0.0.0.tar.gz",
    "platform": null,
    "description": "# simulateIRAS\r\n## Description\r\nA python package for simulating spectra and determining extinction coefficients for polarization- and azimuth-resolved infrared reflection absorption spectroscopy (IRAS) measurements for non-magnetic substrates. The simulations current utilize a three-layer (vacuum-adsorbate-substrate) model derived according to [1] and implemented in [2].\r\n<br> <br> <br>\r\n<img src='./images/IRAS_Model_3_Layer.png' width='50%'>\r\n<br> <br>\r\nThe three-layer (vacuum-adsorbate-substrate) model for light incident along the xz plane of a substrate in the xy plane gives:\r\n<br>\r\n$${\\frac{\\Delta R}{R}} \\vert_{(s-pol)} = 8 \\ \\pi \\ \\tilde{\\nu} \\ d \\ \\sqrt{\\epsilon^{s}\\_{y}} \\ cos(\\phi) \\ Im(\\frac{\\epsilon^{s}\\_{y} \\ - \\ \\tilde{\\epsilon}^{a}\\_{y}}{\\epsilon^{s}\\_{y} \\ - \\ \\epsilon^{v}})$$\r\n<br>\r\n$${\\frac{\\Delta R}{R}} \\vert_{(p-pol)} = 8 \\ \\pi \\ \\tilde{\\nu} \\ d \\ \\sqrt{\\epsilon^{s}\\_{y}} \\ cos(\\phi) \\ Im(\\frac{\\alpha}{\\beta})$$\r\n$$\\alpha = (\\epsilon^{s}\\_{x} \\ - \\ \\tilde{\\epsilon}^{a}\\_{x}) - (\\frac{\\epsilon^{s}\\_{x}}{\\tilde{\\epsilon}^{a}\\_{z}} \\  - \\ \\frac{\\tilde{\\epsilon}^{a}\\_{x}}{\\epsilon^{s}\\_{z}}) \\ {\\epsilon^{v}} \\ sin^{2}(\\phi)$$\r\n$$\\beta = (\\epsilon^{s}\\_{x} \\ - \\ \\epsilon^{v}) - (\\frac{\\epsilon^{s}\\_{x}}{\\tilde{\\epsilon}^{v}} \\  - \\ \\frac{\\epsilon^{v}}{\\epsilon^{s}\\_{z}}) \\ {\\epsilon^{v}} \\ sin^{2}(\\phi)$$\r\n<br>\r\nWhere: <br>\r\n$\\tilde{\\nu} =$ wavenumber <br>\r\n$d =$ adsorbate film thickness (approximate for coverage) <br>\r\n$\\phi =$ angle of light incidence with respect to the surface normal direction <br>\r\n$\\epsilon^{s}\\_{x} =$ dielectric constant of the substrate layer along the x-axis (in substrate plane along incident light) <br>\r\n$\\epsilon^{s}\\_{y} =$ dielectric constant of the substrate layer along the y-axis (in substrate plane orthogonal to incident light) <br>\r\n$\\epsilon^{s}\\_{z} =$ dielectric constant of the substrate layer along the z-axis (normal to substrate plane) <br>\r\n$\\epsilon^{a}\\_{x} =$ dielectric constant of the adsorbate film along the x-axis (in substrate plane along incident light) <br>\r\n$\\epsilon^{a}\\_{y} =$ dielectric constant of the adsorbate film  along the y-axis (in substrate plane orthogonal to incident light) <br>\r\n$\\epsilon^{a}\\_{z} =$ dielectric constant of the adsorbate film  along the z-axis (normal to substrate plane) <br>\r\n$\\epsilon^{v} =$ dielectric constant of the vacuum which is isotropic <br>\r\n<br>\r\n\r\n## Installation\r\nThe python package can be installed via PyPI (pip):\r\n<br><br>\r\n`pip install simulateIRAS` \r\n<br><br>\r\nWe recommend importing in python as iras. \r\n<br><br>\r\n`import simulateIRAS as iras`\r\n<br>\r\n\r\n## Examples\r\n### Example 1: Simulating polarization- and azimuth-resolved IRAS spectra\r\nThis example simulates the 4 polarization- and azimuth-resolved IRAS spectra with given k parameters k(x), k(y), k(z) for an adsorbate film on an isotropic, dielectric substrate. The python code, input files and output files are provided in \"simulateIRAS/examples/simpleSimulation\". The simulation requires the following inputs: \r\n1) incident angle of light relative to the surface normal\r\n2) complex index of refraction of the subtrate layer which here is wavelength independent for an isotropic substrate modelling anatase TiO<sub>2</sub>(101) as $n = 2.3 + 0.0i$\r\n3) k parameters of the adsorbate layer (imaginary part of the complex index of refraction) which here is for a water film\r\n4) real index of refraction of the adsorbate layer in the infinite wavenumber simulation limit which here is taken as $Real(n) = 1.37$ for a water film\r\n5) adsorbate film thickness\r\n<br>\r\nThe Kramers\u00e2\u20ac\u201cKronig relations are used on the adsorbate k parameters (imaginary part of the complex index of refraction) to get the real part of the complex index of refraction for the adsorbate layer. The simulation then applies the three-layer (substrate-adsorbate-vacuum) model to simulate the 4 polarization- and azimuth-resolved IRAS spectra.\r\n<br>\r\nThe input adsorbate k parameters and 4 polarization- and azimuth-resolved simulated IRAS spectra are plotted below:\r\n<br>\r\n<br>\r\n<p align=\"center\">\r\n<img src='./examples/simpleSimulation/Solutions/Figure0.png' width='40%'><img src='./examples/simpleSimulation/Solutions/Figure1.png' width='40%'>\r\n</p>\r\n\r\n### Example 2: Determining extinction coefficients from polarization- and azimuth-resolved IRAS spectra\r\nThis example regresses the adsorbate k parameters k(x), k(y), k(y) by comparing the 4 polarization- and azimuth-resolved simulated and experimental IRAS spectra for an adsorbate film on isotropic, dielectric substrate. The python code, input files and output files are provided in \"simulateIRAS/examples/dataRegression\". The simulation requires the following inputs: \r\n1) 4 polarization- and azimuth-resolved IRAS spectra\r\n2) incident angle of light relative to the surface normal\r\n3) complex index of refraction of the subtrate layer which here is wavelength independent for an isotropic substrate modelling anatase TiO<sub>2</sub>(101) as $n = 2.3 + 0.0i$\r\n5) real index of refraction of the adsorbate layer in the infinite wavenumber simulation limit which here is taken as $Real(n) = 1.37$ for a water film\r\n6) adsorbate film thickness\r\n<br>\r\nThe Kramers\u00e2\u20ac\u201cKronig relations are used on the regressed adsorbate k parameters (imaginary part of the complex index of refraction) to get the real part of the complex index of refraction for the adsorbate layer. The simulation then applies the three-layer (substrate-adsorbate-vacuum) model to simulate the 4 polarization- and azimuth-resolved IRAS spectra. First, the simulation regresses the adsorbate k(y) and k(x) parameters to the s(y) and s(x) experimental IRAS spectra. Second, the simulation regresses the adsorbate k(z) parameters to the p(xz) and p(yz) experimental IRAS spectra. Finally, the simulation regresses the adsorbate k(x), k(y) and k(z) parameters to the s(y), p(xz), s(x), p(yz) experimental IRAS spectra.\r\n<br>\r\nThe regressed adsorbate k parameters and 4 polarization- and azimuth-resolved (solid) simulated and (dots) experimental IRAS spectra are plotted below:\r\n<br>\r\n<br>\r\n\r\n<p align=\"center\">\r\n<img src='./examples/dataRegression/Solutions/Figure0.png' width='40%'><img src='./examples/dataRegression/Solutions/Figure1.png' width='40%'>\r\n</p>\r\n\r\n## References\r\n[1] Chabal YJ (1987) Vibrational Properties at Semiconductor Surfaces and Interfaces. In: Le Lay G, Derrien J, Boccara N (eds) Semiconductor Interfaces: Formation and Properties. Springer Berlin Heidelberg, Berlin, Heidelberg\r\n<br>\r\n[2] O'Connor et al. In preparation.\r\n",
    "bugtrack_url": null,
    "license": "GPLv3",
    "summary": "A python package for simulating Infrared Reflection Absorption Spectroscopy(IRAS) measurements",
    "version": "0.0.0",
    "project_urls": {
        "Homepage": "https://github.com/coconnor24/simulateIRAS"
    },
    "split_keywords": [
        "iras",
        "surface science",
        "ftir",
        "doi:"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "bd0794997b7f198460a96bbeb2711392bfadcc39e9e86bc9ae731441f74e9019",
                "md5": "39dec3bffbfc37574464724df2b504a5",
                "sha256": "270a073168417d5cdfdc1bf8dbba9dfbd204974fb52cf57aeec55c4d1488db0e"
            },
            "downloads": -1,
            "filename": "simulateIRAS-0.0.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "39dec3bffbfc37574464724df2b504a5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 18139,
            "upload_time": "2023-05-03T17:31:15",
            "upload_time_iso_8601": "2023-05-03T17:31:15.034781Z",
            "url": "https://files.pythonhosted.org/packages/bd/07/94997b7f198460a96bbeb2711392bfadcc39e9e86bc9ae731441f74e9019/simulateIRAS-0.0.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "da315b9aff459022d597c66831f1d7027de5adb0ec15cf41365e71983a991cd5",
                "md5": "700e2e2b658cfa1c7dcbdbfd2b6eacdc",
                "sha256": "2d5365df63e0ef7fffb7002a718a78017a86d08023ce7e8c40aeebae65603021"
            },
            "downloads": -1,
            "filename": "simulateIRAS-0.0.0.tar.gz",
            "has_sig": false,
            "md5_digest": "700e2e2b658cfa1c7dcbdbfd2b6eacdc",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 263392,
            "upload_time": "2023-05-03T17:31:17",
            "upload_time_iso_8601": "2023-05-03T17:31:17.216304Z",
            "url": "https://files.pythonhosted.org/packages/da/31/5b9aff459022d597c66831f1d7027de5adb0ec15cf41365e71983a991cd5/simulateIRAS-0.0.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-05-03 17:31:17",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "coconnor24",
    "github_project": "simulateIRAS",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [],
    "lcname": "simulateiras"
}
        
Elapsed time: 1.55175s