Skip to main content

Versatile Modeling Of Deformation

DOI Open In Colab

Authors: Mario Angarita, Ronni Grapenthin, Scott Henderson, Michael Christoffersen and Kyle Anderson

What is VMOD?

VMOD is a python-based object oriented framework. Its main purpose is to model multiple types of geodetic data including:

  • GNSS
  • InSAR
  • Level
  • EDM
  • Tilt

These observations can be interpreted with one or more analytical models that represent pressurized sources such as:

  • Pressurized sphere in elastic medium
  • Pressurized sphere in viscoelastic medium
  • Pressurized sphere in a viscoelastic shell in elastic medium
  • Pressurized prolate spheroid in elastic medium
  • Dislocation (Fault/Sill) in elastic medium
  • Penny shaped crack in elastic medium
  • Point source in elastic medium
  • Wellsite in porelastic medium
  • Ring fault in elastic medium
  • Regularized fault/sill in elastic medium
  • Open conduit in elastic medium

The framework offers two different inversion techniques to solve for the source parameters:

  • Non-linear least squares
  • Bayesian approach

The inversions can include one or multiple data types in the inversion and the model can be composed by multiple sources. The user can customize or inherit current models to create complexer geometries.

class_diag_v2

Standard Installation

We recommend using Anaconda or Miniconda to create an environment in which to install VMOD to prevent dependency conflicts.

conda env create --file=environment.yml
conda activate vmod
python -m jupyterlab

Then run one of the notebooks.

Run an inversion:

In this repository we included several notebooks to show the steps necessary to run an inversion using GNSS, InSAR, and joint datasets. We also included an example for an InSAR dataset on Unimak Island.

Stress calculations:

VMOD allows to calculate Coulomb stress changes for forward models in the notebook Coulomb stress changes and the magnitude and orientation of principal stresses

Add new datatype:

Users wishing to include a new datatype should clone the source repository and create a new file in the data folder. This file should contain a new class that inherit from the 'Data' class and that has the functions to initialize the attributes, adding the components belonging to the datatype and a function to derive the components from 3d displacements. For example, in the Insar class we defined the following functions:

class Insar(Data):
    def __init__():
        ...
    def add_los(self, los):
        ...
    def from_model3d(self, func):
        ...

Add new model:

Users wishing to include a new model should clone the source repository and create a new file in the source folder. This file should contain a new class that inherit from the 'Source' class and that has a function returning the names of the parameters in your model and a function that gives the implementation of your model and return the 3d displacement. If you want to use this model with data that has a temporal dependency you should include the function 'model_t' that implements a time-dependant model. As an option you can include additional functions that return tilt displacements with the function 'model_tilt' or if it has a temporal dependency 'model_tilt_t'. For example, here we show the required functions in our Mogi model:

class Mogi(Source):
    def set_parnames(self):
        ...
    def model(self, params):
        ...

Publications:

A list of publications where VMOD has been used:

  • Grapenthin, R., Cheng, Y., Angarita, M., Tan, D., Meyer, F. J., Fee, D., & Wech, A. (2022). Return from Dormancy: Rapid inflation and seismic unrest driven by transcrustal magma transfer at Mt. Edgecumbe (L’úx Shaa) Volcano, Alaska. Geophysical Research Letters, 49(20), e2022GL099464. https://doi.org/10.1029/2022GL099464
  • Grapenthin, R., Kyle, P., Aster, R. C., Angarita, M., Wilson, T., & Chaput, J. (2022). Deformation at the open-vent Erebus volcano, Antarctica, from more than 20 years of GNSS observations. Journal of Volcanology and Geothermal Research, 432, 107703. https://doi.org/10.1016/j.jvolgeores.2022.107703
  • Graves, E. J., et al. "InSAR-observed surface deformation in New Mexico’s Permian Basin shows threats and opportunities presented by leaky injection wells." Scientific Reports 13.1 (2023): 17308. https://doi.org/10.1038/s41598-023-42696-9

Metadata

Release files for vmod-geodesy 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vmod-geodesy 2.0.0
File Size Uploaded
vmod_geodesy-2.0.0.tar.gz 59.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vmod-geodesy 2.0.0
File Interpreter ABI Platform
vmod_geodesy-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 131.3 kB

Release files / vmod_geodesy-2.0.0.tar.gz

Download URL vmod_geodesy-2.0.0.tar.gz
Size 59.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e988962371673de31524898769c24b9bc242bde50600f79683ed223908da98d3
BLAKE2b-256 checksum
How to use checksums
c3dda770f2795b6baf79d0754531d1afa2a8fffa1e115f0acb1dc13284479428
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 13, 2025.

Transparency log

Release files / vmod_geodesy-2.0.0-py3-none-any.whl

Download URL vmod_geodesy-2.0.0-py3-none-any.whl
Size 71.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c68b7a5d41c73f212920f22e70538eadfd3103b1aa207abc85caf91433b9c5f2
BLAKE2b-256 checksum
How to use checksums
4acd67dfe20cc12af3b33bcdaf12001130520ffef625f1472cfbe98e626563fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 13, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page