Skip to main content

SMART-G (Speed-up Monte Carlo Advanced Radiative Transfer Code using GPU) is a radiative transfer code using a Monte-Carlo technique to simulate the propagation of the polarized light in the atmosphere and/or ocean, and using GPU acceleration.

Project description

SMART-G

image image image image

SMART-G (Speed-up Monte Carlo Advanced Radiative Transfer Code using GPU) is a radiative transfer code using a Monte-Carlo technique to simulate the propagation of the polarized light in the atmosphere and/or ocean, and using GPU acceleration.

Didier Ramon
Mustapha Moulana
François Steinmetz
Dominique Jolivet
Mathieu Compiègne
HYGEOS


1. Installation

1.1 PyPI

To install SMART-G from PyPI:

pip install smartg

To include extra dependencies use instead:

pip install smartg[extra]

1.2 conda-forge

Use the command:

conda install -c conda-forge smartg

If you need extra dependencies (jax with cuda) we recommend the installation with pip instead.

1.3 github clone (for development)

Click here

First clone the repository:

git clone https://github.com/hygeos/smartg.git

You can now choose between Pixi or Conda for your development environment.

1.3.1 Pixi (recommended)

Pixi is recommended for its fast dependency resolution and robust environment management. Unlike Conda, which only considers Conda packages during conflict resolution, Pixi consider both Conda and pip package versions when solving dependencies.

To create and activate the environment, use the following command:

pixi shell

To consider all extra dependencies (e.g. jax), use instead:

pixi shell --environment extra

1.3.2 Anaconda/Miniconda (alternative)

With Anaconda/Miniconda, use the following command:

conda create -n smartg-env -f environment.yml
conda activate smartg-env

For a full installation (extra dependencies), replace environment.yml by environment-extra.yml.

2. Nvidia driver and CUDA

An installation guide is available in the nvidia website: installation-guide.

You can also install CUDA using conda:

conda install nvidia::cuda

3. Auxiliary data

The auxiliary data can be downloaded as follow:

>>> # Example to download all the data. See the docstring for more details.
>>> from smartg.auxdata import download
>>> from pathlib import Path
>>> download(Path('dir/path/where/to/save/data/'), data_type='all')

The environment variable SMARTG_DIR_AUXDATA have to be defined.

For example, in the .bashrc / .zshrc file the following can be added:

export SMARTG_DIR_AUXDATA="dir/path/where/to/save/data/"

or (not recommended) in a .env file in the SMART-G root directory:

SMARTG_DIR_AUXDATA =dir/path/where/to/save/data/

4. Examples

Examples are provided in the sample notebooks.

jupyter notebook has nice possibilities for interactive development and visualization, in particular if you are using a remote cuda computer. Sample notebooks are provided in the folder notebooks.

5. Tests

To check that SMART-G is running correctly, run the following command at the root of the project:

pytest smartg/tests/test_cuda.py smartg/tests/test_profile.py smartg/tests/test_smartg.py -s -v

A full testing is recommended in dev:

pytest smartg/tests/ -s -v

To avoid repeating some pytest arguments, a pytest.ini file can be created (in the root directory). The following is an example of the contents of such a file:

[pytest]
addopts= --html=test_reportv1.html --self-contained-html -s -v

The arguments "--html=test_reportv1.html --self-contained-html" are used to generate an html report containing the results of the tests (sometime with more details e.g. plots), named "test_reportv1.html".

6. Hardware tested

GeForce GTX 1070, GeForce TITAN V, GeForce RTX 2080 Ti, Geforce RTX 3070, Geforce RTX 3090, Geforce RTX 4090, A100, Geforce RTX 5070 ti, A6000 blackwell

The use of GPUs before 10xx series (Pascal) is depracated as of SMART-G 1.0.0

7. Licensing information

This software is available under the SMART-G license v1.0, available in the LICENSE.TXT file.

8. Referencing

When acknowledging the use of SMART-G for scientific papers, reports etc please cite the following reference(s):

  • Ramon, D., Steinmetz, F., Jolivet, D., Compiègne, M., & Frouin, R. (2019). Modeling polarized radiative transfer in the ocean-atmosphere system with the GPU-accelerated SMART-G Monte Carlo code. Journal of Quantitative Spectroscopy and Radiative Transfer, 222, 89-107. https://doi.org/10.1016/j.jqsrt.2018.10.017

  • Moulana, M., Cornet, C., Elias, T., Ramon, D., Caliot, C., & Compiègne, M. (2024). Concentrated solar flux modeling in solar power towers with a 3D objects-atmosphere hybrid system to consider atmospheric and environmental gains. Solar Energy, 277, 112675. https://doi.org/10.1016/j.solener.2024.112675

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

smartg-1.1.5.tar.gz (378.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smartg-1.1.5-py3-none-any.whl (427.6 kB view details)

Uploaded Python 3

File details

Details for the file smartg-1.1.5.tar.gz.

File metadata

  • Download URL: smartg-1.1.5.tar.gz
  • Upload date:
  • Size: 378.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for smartg-1.1.5.tar.gz
Algorithm Hash digest
SHA256 72bcf2fa32d4a5d97b98e082ecc7c562e0baf8d4f01329fae2fcd38c179ca27d
MD5 f8c91675dfde1aac68144347af6c5c92
BLAKE2b-256 c9a72912d9ea51f839241bbacfa2fb9d70ca4b39fef6b612348c3a04088a58fc

See more details on using hashes here.

File details

Details for the file smartg-1.1.5-py3-none-any.whl.

File metadata

  • Download URL: smartg-1.1.5-py3-none-any.whl
  • Upload date:
  • Size: 427.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for smartg-1.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 2fcb64a6a81c05bb7fd9da4e4cd4c943df37162b20d9f9dc0c7fda158ac1b7fa
MD5 664b2f3d0b1e0182c56193bcd134631a
BLAKE2b-256 82ae2971d0693fe3d8ebdf4f1450bd0f9d973d0a8a8525f51ee1f3d1ad010806

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page