vSmartMOM.jl
A full end-to-end modular software suite for radiative transfer and related atmospheric analysis.
https://github.com/RemoteSensingTools/vSmartMOM.jl
Category: Atmosphere
Sub Category: Radiative Transfer
Keywords
gpu-acceleration radiative-transfer remote-sensing scattering-physics
Keywords from Contributors
land-surface-model canopy fluorescence sif soil-plant-atmosphere
Last synced: about 3 hours ago
JSON representation
Repository metadata
A full end-to-end modular software suite for radiative transfer and related atmospheric analysis
- Host: GitHub
- URL: https://github.com/RemoteSensingTools/vSmartMOM.jl
- Owner: RemoteSensingTools
- License: apache-2.0
- Created: 2020-07-02T16:53:51.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2026-06-01T15:03:00.000Z (11 days ago)
- Last Synced: 2026-06-07T05:04:04.333Z (5 days ago)
- Topics: gpu-acceleration, radiative-transfer, remote-sensing, scattering-physics
- Language: Julia
- Homepage: https://remotesensingtools.github.io/vSmartMOM.jl/
- Size: 163 MB
- Stars: 56
- Watchers: 5
- Forks: 11
- Open Issues: 5
- Releases: 19
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Citation: CITATION.bib
- Zenodo: .zenodo.json
- Agents: AGENTS.md
README.md
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
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:
- Enables 1D vectorized plane-parallel RT modeling based on the Matrix Operator Method.
- 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.
- 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(params::vSmartMOM_Parameters): Build anRTModelwith all derived optical properties (cross-section profiles, scattering phase functions, etc.) ready for simulation.rt_run(model::RTModel): Perform forward RT simulation, returning reflectance and transmittance.model_from_parameters(LinMode(), params): Build both anRTModeland anRTModelLinfor analytic Jacobian computation.rt_run(model, lin_model, NAer, NGas, NSurf): Linearized RT returning(R, T, dR, dT)with exact Jacobians.
Forward run (minimal)
using vSmartMOM
params = parameters_from_yaml("config/quickstart.yaml") # any YAML config
model = model_from_parameters(params)
R, T = rt_run(model) # reflectance, transmittance
Linearized run (analytic Jacobians)
using vSmartMOM
params = parameters_from_yaml("config/ocean_coxmunk.yaml")
model, lin_model = model_from_parameters(LinMode(), params)
NAer = length(params.scattering_params.rt_aerosols)
NGas = size(lin_model.tau_dot_abs[1], 1)
NSurf = 1
R, T, dR, dT = rt_run(model, lin_model, NAer, NGas, NSurf)
dR and dT carry the exact analytic derivatives of R, T w.r.t.
aerosol, gas, and surface parameters laid out via ParameterLayout.
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.
HITRAN Data Access
vSmartMOM provides two pathways for obtaining HITRAN spectroscopic data:
- Legacy artifacts (default): Pre-packaged HITRAN 2016 data, downloaded automatically on first use. No setup required.
- Direct download from hitran.org: Fetch the latest HITRAN edition (currently HITRAN 2024) with full provenance tracking (SHA-256 hash, download date, source URL).
# Default: HITRAN 2016 via artifacts
path = artifact("CO2")
# Switch to HITRAN 2024 from hitran.org
set_hitran_edition!("HITRAN2024")
path = artifact("CO2") # auto-downloads on first call
# Check provenance
hitran_info("CO2") # returns metadata dict with SHA-256, download date, etc.
See the full HITRAN Data Management documentation for details on edition switching, custom wavenumber ranges, and cache management.
Key functions
artifact(molecule::String): Retrieve the path to a HITRAN.parfile for a molecule. Routes through legacy artifacts or hitran.org depending on the active edition.fetch_hitran(molecule; numin, numax, edition): Download HITRAN data directly from hitran.org with optional wavenumber filtering.read_hitran(filepath::String): Creates a HitranTable struct from a fixed-width HITRAN.parfile.make_hitran_model(hitran::HitranTable, broadening::AbstractBroadeningFunction, ...): Create a HitranModel struct that holds all of the model parameters needed to perform an absorption cross-section calculation (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 at Caltech/JPL and largely based on work by Suniti Sanghavi from NASA/JPL, with initial support from the Schmidt Academy for Software Engineering (SASE) for the first refactor into Julia.
Copyright Notice
Apache 2.0 License; Copyright 2022, by the California Institute of Technology. United States Government Sponsorship acknowledged.
Citation (CITATION.bib)
% vSmartMOM.jl canonical citations.
%
% Primary software citation: Jeyaram, Sanghavi, Frankenberg (2022).
% Method citations: Sanghavi 2013/2014/2015 for matrix-operator RT,
% linearization, and truncation; Sanghavi 2022 and Sanghavi & Frankenberg
% 2023 for Raman optical properties and Raman RT.
@article{Jeyaram2022vSmartMOM,
author = {Jeyaram, Rupesh and Sanghavi, Suniti and Frankenberg, Christian},
title = {{vSmartMOM.jl}: An open-source {Julia} package for atmospheric radiative transfer and remote sensing tools},
journal = {Journal of Open Source Software},
year = {2022},
volume = {7},
number = {80},
pages = {4575},
doi = {10.21105/joss.04575},
url = {https://doi.org/10.21105/joss.04575},
}
@article{Sanghavi2014vSmartMOM,
author = {Sanghavi, Suniti and Davis, Anthony B. and Eldering, Annmarie},
title = {{vSmartMOM}: A vector matrix operator method-based radiative transfer model linearized with respect to aerosol properties},
journal = {Journal of Quantitative Spectroscopy and Radiative Transfer},
year = {2014},
volume = {133},
pages = {412--433},
doi = {10.1016/j.jqsrt.2013.09.004},
}
@article{Sanghavi2013Linearization,
author = {Sanghavi, Suniti and Martonchik, John V. and Davis, Anthony B. and Diner, David J.},
title = {Linearization of a scalar matrix operator method radiative transfer model with respect to aerosol and surface properties},
journal = {Journal of Quantitative Spectroscopy and Radiative Transfer},
year = {2013},
volume = {116},
pages = {1--16},
doi = {10.1016/j.jqsrt.2012.10.021},
}
@article{Sanghavi2015Truncation,
author = {Sanghavi, Suniti and Stephens, Graeme},
title = {Adaptation of the {delta-m} and {$\delta$-fit} truncation methods to vector radiative transfer: Effect of truncation on radiative transfer accuracy},
journal = {Journal of Quantitative Spectroscopy and Radiative Transfer},
year = {2015},
volume = {159},
pages = {53--68},
doi = {10.1016/j.jqsrt.2015.03.007},
}
@article{Sanghavi2022RamanI,
author = {Sanghavi, Suniti},
title = {Raman scattering in the {Earth's} atmosphere, {Part I}: Optical properties},
journal = {Journal of Quantitative Spectroscopy and Radiative Transfer},
year = {2022},
volume = {291},
pages = {108328},
doi = {10.1016/j.jqsrt.2022.108328},
}
@article{SanghaviFrankenberg2023RamanII,
author = {Sanghavi, Suniti and Frankenberg, Christian},
title = {Raman scattering in the {Earth's} atmosphere, {Part II}: Radiative transfer modeling for remote sensing applications},
journal = {Journal of Quantitative Spectroscopy and Radiative Transfer},
year = {2023},
volume = {311},
pages = {108791},
doi = {10.1016/j.jqsrt.2023.108791},
}
Owner metadata
- Name: RemoteSensingTools
- Login: RemoteSensingTools
- Email:
- Kind: organization
- Description:
- Website:
- Location:
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/83097293?v=4
- Repositories: 4
- Last ynced at: 2023-03-08T19:45:39.008Z
- Profile URL: https://github.com/RemoteSensingTools
GitHub Events
Total
- Create event: 25
- Commit comment event: 10
- Release event: 1
- Delete event: 43
- Pull request event: 42
- Fork event: 1
- Issues event: 2
- Watch event: 7
- Issue comment event: 5
- Push event: 93
- Pull request review event: 2
- Pull request review comment event: 3
Last Year
- Delete event: 42
- Pull request event: 6
- Issues event: 1
- Watch event: 3
- Issue comment event: 2
- Push event: 71
- Pull request review event: 2
- Pull request review comment event: 3
- Create event: 13
Committers metadata
Last synced: 3 days ago
Total Commits: 924
Total Committers: 13
Avg Commits per committer: 71.077
Development Distribution Score (DDS): 0.59
Commits in past year: 272
Committers in past year: 2
Avg Commits per committer in past year: 136.0
Development Distribution Score (DDS) in past year: 0.176
| Name | Commits | |
|---|---|---|
| cfranken | f****e@g****m | 379 |
| RupeshJey | r****y@g****m | 334 |
| cfranken | c****n@t****u | 85 |
| sunitisanghavi | s****i@g****m | 69 |
| 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 |
Committer domains:
- dhcp-137-79-228-209.jpl.nasa.gov: 1
- 126.com: 1
- curry.gps.caltech.edu: 1
- fluo.gps.caltech.edu: 1
- julialang.org: 1
- tofu.gps.caltech.edu: 1
Issue and Pull Request metadata
Last synced: 3 days ago
Total issues: 15
Total pull requests: 244
Average time to close issues: 4 months
Average time to close pull requests: 4 months
Total issue authors: 9
Total pull request authors: 10
Average comments per issue: 2.53
Average comments per pull request: 0.27
Merged pull request: 31
Bot issues: 0
Bot pull requests: 217
Past year issues: 1
Past year pull requests: 32
Past year average time to close issues: N/A
Past year average time to close pull requests: 2 months
Past year issue authors: 1
Past year pull request authors: 5
Past year average comments per issue: 0.0
Past year average comments per pull request: 0.75
Past year merged pull request: 2
Past year bot issues: 0
Past year bot pull requests: 27
Top Issue Authors
- RupeshJey (3)
- arjunsavel (3)
- cfranken (2)
- Datseris (2)
- stefanocovino (1)
- Yujie-W (1)
- deszoeke (1)
- nicholasbalasus (1)
- JuliaTagBot (1)
Top Pull Request Authors
- github-actions[bot] (216)
- cfranken (15)
- sunitisanghavi (3)
- Copilot (2)
- Yujie-W (2)
- lucifer1004 (2)
- Datseris (1)
- dependabot[bot] (1)
- costachris (1)
- pdebuyl (1)
Top Issue Labels
- enhancement (1)
Top Pull Request Labels
- javascript (1)
- dependencies (1)
Package metadata
- Total packages: 1
-
Total downloads:
- julia: 23 last-month
- 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
- Homepage:
- Documentation: https://docs.juliahub.com/General/vSmartMOM/stable/
- Licenses: Apache-2.0
- Latest release: 1.1.0 (published over 1 year ago)
- Last Synced: 2026-04-02T20:37:53.506Z (2 months ago)
- Versions: 5
- Dependent Packages: 0
- Dependent Repositories: 0
- Downloads: 23 Last month
-
Rankings:
- Dependent repos count: 9.94%
- Stargazers count: 15.978%
- Forks count: 17.447%
- Average: 20.57%
- Dependent packages count: 38.915%
Dependencies
- actions/checkout v2 composite
- julia-actions/julia-buildpkg latest composite
- julia-actions/julia-runtest latest composite
- julia-actions/setup-julia latest composite
- actions/checkout v2 composite
- julia-actions/julia-buildpkg latest composite
- julia-actions/julia-runtest latest composite
- julia-actions/setup-julia latest composite
- actions/checkout v1 composite
- julia-actions/setup-julia v1 composite
- JuliaRegistries/TagBot v1 composite
Score: 9.811317437563998