vSmartMOM.jl

vSmartMOM.jl: an Open-Source Julia Package for Atmospheric Radiative Transfer and Remote Sensing Tools - Published in JOSS (2022)

https://github.com/remotesensingtools/vsmartmom.jl

Science Score: 95.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 4 DOI reference(s) in README and JOSS metadata
  • Academic publication links
    Links to: sciencedirect.com, joss.theoj.org
  • Committers with academic emails
    4 of 13 committers (30.8%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software
Last synced: 6 months ago · JSON representation

Repository

A full end-to-end modular software suite for radiative transfer and related atmospheric analysis

Basic Info
  • Host: GitHub
  • Owner: RemoteSensingTools
  • License: apache-2.0
  • Language: Julia
  • Default Branch: main
  • Size: 151 MB
Statistics
  • Stars: 49
  • Watchers: 5
  • Forks: 11
  • Open Issues: 14
  • Releases: 19
Created over 5 years ago · Last pushed 6 months ago
Metadata Files
Readme License Code of conduct Zenodo

README.md


vSmartMOM
vSmartMOM.jl

An end-to-end modular software suite for vectorized atmospheric radiative transfer calculations, based on the Matrix Operator Method.

Written in Julia.
[![version](https://github.com/RemoteSensingTools/vSmartMOM.jl/actions/workflows/AutomatedTests.yml/badge.svg)](https://github.com/RemoteSensingTools/vSmartMOM.jl/actions/workflows/AutomatedTests.yml/) [![](https://img.shields.io/badge/docs-latest-blue)](https://RemoteSensingTools.github.io/vSmartMOM.jl/dev/) [![](https://img.shields.io/github/license/RemoteSensingTools/vSmartMOM.jl)](https://github.com/RemoteSensingTools/vSmartMOM.jl/blob/master/LICENSE) [![DOI](https://joss.theoj.org/papers/10.21105/joss.04575/status.svg)](https://doi.org/10.21105/joss.04575) [![](https://img.shields.io/github/commit-activity/y/RemoteSensingTools/vSmartMOM.jl)](https://github.com/RemoteSensingTools/vSmartMOM.jl/commits/master)

InstallationModules (vSmartMOM, Absorption, Scattering) • SupportLicense

This project aims to revamp and modernize key atmospheric remote sensing tools. Specifically, it will enable the fast computation of atmospheric optical properties, full-polarized radiative transfer simulations, and commonly-used inversion routines.

The core of the code is based on recent publications:

  • Sanghavi, S., Davis, A. B., & Eldering, A. (2014). vSmartMOM: A vector matrix operator method-based radiative transfer model linearized with respect to aerosol properties. Journal of Quantitative Spectroscopy and Radiative Transfer, 133, 412-433. Download

  • Sanghavi, S. V., Martonchik, J. V., Davis, A. B., & Diner, D. J. (2013). Linearization of a scalar matrix operator method radiative transfer model with respect to aerosol and surface properties. Journal of Quantitative Spectroscopy and Radiative Transfer, 116, 1-16. Download

  • Sanghavi, S., & Natraj, V. (2013). Using analytic derivatives to assess the impact of phase function Fourier decomposition technique on the accuracy of a radiative transfer model. Journal of Quantitative Spectroscopy and Radiative Transfer, 119, 137-149. Download

  • Sanghavi, S. (2014). Revisiting the Fourier expansion of Mie scattering matrices in generalized spherical functions. Journal of Quantitative Spectroscopy and Radiative Transfer, 136, 16-27. Download

By taking advantage of modern software tools, such as GPU acceleration and HPC computing, the software suite significantly accelerates computationally-intensive calculations and models, while keeping the interface easy-to-use for researchers and students.

Installation

vSmartMOM can be installed using the Julia package manager. From the Julia REPL, type ] to enter the Pkg REPL mode and run

julia pkg> add vSmartMOM

Modules

Note: This section provides only a quick overview of the available modules in vSmartMOM.jl.

For in-depth examples, tutorials, and implementation details, please see the complete Documentation.

vSmartMOM

The vSmartMOM module allows end-to-end simulation of radiative transfer (RT) throughout Earth's atmosphere and surface. Specifically, it:

  1. Enables 1D vectorized plane-parallel RT modeling based on the Matrix Operator Method.
  2. Incorporates fast, high fidelity simulations of scattering atmospheres containing haze and clouds – including pressure- and temperature-resolved absorption profiles of gaseous species in the atmosphere.
  3. Enables GPU-accelerated computations of the resulting hyperspectral reflectances/transmittances.

Key functions:

  • parameters_from_yaml(filepath::String): Load a custom set of RT parameters from a YAML file.
  • default_parameters(): Load a default set of RT parameters.
  • model_from_parameters(parameters::vSmartMOM_Parameters): Using the parameters, calculate derived parameters that will be used in the main RT code. The derived parameters include cross-section profiles, scattering phase functions, etc.
  • rt_run(model::vSmartMOM_Model): Use the defined model to perform RT simulation.

vSmartMOM.Absorption

This module enables absorption cross-section calculations of atmospheric gases at different pressures, temperatures, and broadeners (Doppler, Lorentzian, Voigt). It uses the HITRAN energy transition database for calculations. While it enables lineshape calculations from scratch, it also allows users to create and save an interpolator object at specified wavelength, pressure, and temperature grids. It can perform these computations either on CPU or GPU.

Key functions:

  • read_hitran(filepath::String): Creates a HitranTable struct from the fixed-width HITRAN file with transitions.
  • make_hitran_model(hitran::HitranTable, broadening::AbstractBroadeningFunction, ...): Create a HitranModel struct that holds all of the model parameters needed to perform a absorption cross-section (transitions, broadening type, wing_cutoff, etc.)
  • make_interpolation_model(hitran::HitranTable, broadening::AbstractBroadeningFunction, ): Similar to creating a HitranModel, but this will perform the interpolation at the given wavelength, pressure, and temperature grids and store the interpolator in InterpolationModel.
  • absorption_cross_section(model::AbstractCrossSectionModel, grid::AbstractRange{<:Real}, pressure::Real, temperature::Real, ...): Performs an absorption cross-section calculation with the given model (HitranModel or InterpolationModel), at a given wavelength grid, pressure and temperature

vSmartMOM.Scattering

This module enables scattering phase-function calculation of atmospheric aerosols with different size distributions, incident wavelengths, and refractive indices. It can perform the calculation using either the Siewert NAI-2 or Domke PCW methods (Suniti Sanghavi 2014).


Key functions:

  • make_univariate_aerosol(size_distribution::ContinuousUnivariateDistribution, r_max, nquad_radius::Int, nᵣ, nᵢ: Create an aerosol object with size distribution and complex refractive index.
  • make_mie_model(computation_type::AbstractFourierDecompositionType, aerosol::AbstractAerosolType, λ::Real, polarization::AbstractPolarizationType, truncation_type::AbstractTruncationType, ...): Create a MieModel struct that holds all of the model parameters needed to perform a phase function calculation (computation type, aerosol, incident wavelength, etc. )
  • compute_aerosol_optical_properties(model::MieModel): Compute the aerosol optical properties using the specified model parameters

How to Contribute

vSmartMOM.jl is a growing package and thus feedback from users like you are highly appreciated. To report bugs or suggest new features in vSmartMOM.jl, please create GitHub Issues. To contribute to the package, please feel free to create a Pull Request.

If you have any questions about the methods used or would like to chat with us, please feel free to shoot us an email here.

Acknowledgements

This project is being developed in the Christian Frankenberg and Paul Wennberg labs at Caltech and is largely based on papers and ideas by Suniti Sanghavi from NASA/JPL, with support from the Schmidt Academy for Software Engineering (SASE).

Copyright Notice

Apache 2.0 License; Copyright 2022, by the California Institute of Technology. United States Government Sponsorship acknowledged.

Owner

  • Name: RemoteSensingTools
  • Login: RemoteSensingTools
  • Kind: organization

JOSS Publication

vSmartMOM.jl: an Open-Source Julia Package for Atmospheric Radiative Transfer and Remote Sensing Tools
Published
December 06, 2022
Volume 7, Issue 80, Page 4575
Authors
Rupesh Jeyaram ORCID
California Institute of Technology
Suniti Sanghavi ORCID
Jet Propulsion Laboratory
Christian Frankenberg ORCID
California Institute of Technology, Jet Propulsion Laboratory
Editor
Pierre de Buyl ORCID
Tags
radiative transfer atmospheric radiation vSmartMOM

GitHub Events

Total
  • Create event: 12
  • Commit comment event: 10
  • Issues event: 1
  • Release event: 1
  • Watch event: 5
  • Delete event: 1
  • Issue comment event: 3
  • Push event: 22
  • Pull request event: 36
  • Fork event: 1
Last Year
  • Create event: 12
  • Commit comment event: 10
  • Issues event: 1
  • Release event: 1
  • Watch event: 5
  • Delete event: 1
  • Issue comment event: 3
  • Push event: 22
  • Pull request event: 36
  • Fork event: 1

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 652
  • Total Committers: 13
  • Avg Commits per committer: 50.154
  • Development Distribution Score (DDS): 0.488
Past Year
  • Commits: 19
  • Committers: 1
  • Avg Commits per committer: 19.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
RupeshJey r****y@g****m 334
cfranken f****e@g****m 155
cfranken c****n@t****u 85
sunitisanghavi s****i@g****m 21
Suniti Sanghavi s****i@C****l 17
CompatHelper Julia c****y@j****g 13
cfranken c****n@f****u 11
cfranken c****n@c****u 6
Yujie Wang j****r@g****m 3
Suniti V Sanghavi s****i@K****l 3
Gabriel Wu q****4@1****m 2
costachris c****a@g****m 1
Suniti V Sanghavi s****i@d****v 1

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 14
  • Total pull requests: 180
  • Average time to close issues: 3 months
  • Average time to close pull requests: 3 months
  • Total issue authors: 8
  • Total pull request authors: 8
  • Average comments per issue: 2.57
  • Average comments per pull request: 0.21
  • Merged pull requests: 26
  • Bot issues: 0
  • Bot pull requests: 163
Past Year
  • Issues: 2
  • Pull requests: 18
  • Average time to close issues: N/A
  • Average time to close pull requests: 25 days
  • Issue authors: 2
  • Pull request authors: 2
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.06
  • Merged pull requests: 2
  • Bot issues: 0
  • Bot pull requests: 15
Top Authors
Issue Authors
  • RupeshJey (3)
  • arjunsavel (3)
  • cfranken (2)
  • Datseris (2)
  • Yujie-W (1)
  • deszoeke (1)
  • nicholasbalasus (1)
  • JuliaTagBot (1)
Pull Request Authors
  • github-actions[bot] (190)
  • cfranken (13)
  • Yujie-W (2)
  • lucifer1004 (2)
  • sunitisanghavi (2)
  • Datseris (1)
  • costachris (1)
  • pdebuyl (1)
Top Labels
Issue Labels
enhancement (1)
Pull Request Labels

Packages

  • Total packages: 1
  • Total downloads:
    • julia 1 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 5
juliahub.com: vSmartMOM

A full end-to-end modular software suite for radiative transfer and related atmospheric analysis

  • Versions: 5
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 1 Total
Rankings
Dependent repos count: 9.9%
Stargazers count: 16.0%
Forks count: 17.4%
Average: 20.6%
Dependent packages count: 38.9%
Last synced: 6 months ago

Dependencies

.github/workflows/AutomatedGPUTests.yml actions
  • actions/checkout v2 composite
  • julia-actions/julia-buildpkg latest composite
  • julia-actions/julia-runtest latest composite
  • julia-actions/setup-julia latest composite
.github/workflows/AutomatedTests.yml actions
  • actions/checkout v2 composite
  • julia-actions/julia-buildpkg latest composite
  • julia-actions/julia-runtest latest composite
  • julia-actions/setup-julia latest composite
.github/workflows/Documentation.yml actions
  • actions/checkout v1 composite
  • julia-actions/setup-julia v1 composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite
.github/workflows/CompatHelper.yml actions