titan-aerosols 0.4.0
Titan aerosols models
License: MIT
Requires Python: >=3.8
Keywords: Titan,Aerosols,Scattering models,Mie,Fractal

Titan aerosols models
=====================

[![](https://github.com/seignovert/python-titan-aerosols/workflows/Continuous%20Integration/badge.svg)][Build]
[![](https://img.shields.io/codecov/c/github/seignovert/python-titan-aerosols.svg?label=Codecov&logo=codecov&logoColor=white)][Coverage]
[![](https://img.shields.io/badge/PyPI-aerosols--scattering-blue.svg)][PyPI]
[![](https://img.shields.io/pypi/status/titan-aerosols.svg?label=Status)][Status]
[![](https://img.shields.io/pypi/v/titan-aerosols.svg?label=Version)][Version]
[![](https://img.shields.io/pypi/pyversions/titan-aerosols.svg?label=Python)][Python]
[![](https://img.shields.io/pypi/l/titan-aerosols.svg?label=License)][License]
[![](https://zenodo.org/badge/147735627.svg)][Citation]

[Build]: https://github.com/seignovert/python-titan-aerosols/actions/workflows/actions.yml
[Coverage]: https://codecov.io/gh/seignovert/python-titan-aerosols
[PyPI]: https://pypi.org/project/titan-aerosols/
[Status]: https://pypi.org/project/titan-aerosols/
[Version]: https://pypi.org/project/titan-aerosols/
[Python]: https://pypi.org/project/titan-aerosols/
[License]: https://pypi.org/project/titan-aerosols/
[Citation]: https://zenodo.org/badge/latestdoi/147735627

Python package for Titan's aerosols models


Install
-------
With `pip`:

```bash
$ pip install titan-aerosols
```

If you need to contribute this project you can installed it directly from the `source files`:

```bash
$ git clone https://github.com/seignovert/python-titan-aerosols.git
$ cd python-titan-aerosols
$ python -m pip install -e . -r tests/requirements.txt
```


Python usage
-------------
```python
>>> from aerosols import index_tholins

>>> nr, ni = index_tholins(338e-9)
(1.6489699384541059, 0.2392676321412895)


>>> from aerosols import mie_tholins

>>> wvln = 338e-9  # Wavelength (m)
>>> rm = 50e-9     # Monomer radius (m)

>>> qsct, qext, qabs, gg, theta, P = mie_tholins(wvln, rm)
(2.150748326506086e-15,
6.519732093912762e-15,
4.368983767406676e-15,
0.19301947916187234,
array([0., 0.01745329, ..., 3.14159265]),
array([2.23653193, ..., 0.88785229]))


>>> from aerosols import fractals_tholins

>>> Df = 2.0
>>> N = 266

>>> qsct, qext, qabs, gg, theta, P = fractals_tholins(wvln, rm, Df, N)
(1.5986535423863113e-12,
2.5652821769307767e-12,
9.666286345444654e-13,
None,
array([0, ..., 3.14159265]),
array([135.83547352468324, ..., 0.16033083012643]))

>>> N = 3000

>>> qsct, qext, qabs, gg, theta, P = fractals_tholins(wvln, rm, Df, N)
ValueError: Model tested only for N = 2 - 1024 (received N=3000)

>>> qsct, qext, qabs, gg, theta, P = fractals_tholins(wvln, rm, Df, N, force=True)
(1.877008401099561e-11,
2.829777018602765e-11,
9.527686175032043e-12,
None,
array([0, ..., 3.14159265]),
array([1.20358413e+03, ..., 1.27914327e-01]))

>>> from aerosols import mie

>>> qsct, qext, qabs, gg, theta, P = mie(wvln, nr, ni, rm)
(...)

>>> from aerosols import fractals

>>> qsct, qext, qabs, gg, theta, P = fractals(wvln, nr, ni, rm, Df, N)
(...)
```

A static notebook is also available
[here](https://nbviewer.jupyter.org/github/seignovert/python-titan-aerosols/blob/main/examples/Tholins_examples.ipynb).


CLI usage
----------
```bash
$ fractal_tholins --help
usage: fractal_tholins [-h] [--phase-function] [--nang NANG]
                [--fractal-dimension FRACTAL_DIMENSION] [--force]
                wvln rm N
Fractals cross-sections and phase function for tholin aggregate. Use default
tholins indexes (CVD) and Tomasko et al. 2008.

positional arguments:
wvln                  Wavelength (m)
rm                    Monomer radius (m)
N                     Number of monomers

optional arguments:
-h, --help            show this help message and exit
--phase-function, -p  Display the phase function
--nang NANG           Number of angles for the phase function (0 -> pi/2)
--fractal-dimension FRACTAL_DIMENSION, -df FRACTAL_DIMENSION
                        Fractal dimension
--force, -f           Bypass validity checks


$ fractal_tholins 338e-9 60e-9 266
# Cross sections:
Scattering: 2.715e-12 m^-2
Absorption: 1.558e-12 m^-2
Extinction: 4.273e-12 m^-2


$ fractal_tholins -p 338e-9 60e-9 266
# Phase function
0.0     1.86e+02
1.0     1.78e+02
...
179.0   1.15e-01
180.0   1.15e-01


$ fractal_tholins -p --nang 10 338e-9 60e-9 266
# Phase function
0.0     2.52e+02
10.0    2.37e+01
...
170.0   1.55e-01
180.0   1.56e-01


$ fractal_tholins 338e-9 60e-9 266 -df 2.3
Model tested only for Df = 2 (received Df=2.30)


$ fractal_tholins 338e-9 60e-9 266 -df 2.3 --force
# Cross sections:
Scattering: 2.657e-12 m^-2
Absorption: 1.351e-12 m^-2
Extinction: 4.008e-12 m^-2
```

Note
----
This package is an early attempt to model Titan's aerosols scattering based on Tomasko et al. 2008 paper
(doi:[`10.1016/j.pss.2007.11.019`](https://doi.org/10.1016/j.pss.2007.11.019))