MCPcopy Index your code
hub / github.com/choo-group/GeoWarp

github.com/choo-group/GeoWarp @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
227 symbols 507 edges 21 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

GeoWarp

High-performance, differentiable, implicit material point method (MPM) for geomechanics, powered by NVIDIA Warp.


Overview

GeoWarp is an open-source simulation framework tailored for geomechanics, featuring: - A fully implicit MPM formulation. - High-performance computing support via NVIDIA Warp. - Reverse-mode automatic differentiation (AD). - Support for both forward simulations and inverse analyses.

Please refer to our work for details.

Getting started

Installation

pip install -r requirements.txt

How to run

Navigate to a problem folder and execute the corresponding Python script:

cd problems/bar_compaction/
python bar_compaction_cpGIMP.py

Code structure

Simulations are organized into four main directories: - problems/ contains individual simulation scripts specifying setups. - solvers/ includes different MPM solvers for 2D/3D, single- and multi-phase problems. - mpm/ includes utility functions for MPM computations. - materials/ contains various plastic constitutive models

We also provide a single, standalone file to help new users quickly understand the structure without needing to cross-reference multiple files. Those files are ended with _everything_in_on_script.py.

GeoWarp/
├── problems/                     
│   ├── material_tests/          
│   │   ├── triaxial_DruckerPrager.py
│   │   └── triaxial_NorSand.py
│   ├── bar_compaction/
│   │   └── bar_compaction_cpGIMP.py
│   ├── cantilever_beam/
│   │   └── cantilever_beam_cpGIMP.py
│   ├── consolidation/
│   │   └── terzaghi_cpGIMP.py
│   └── 3D_indentation/
│       └── 3d_indentation_coupled_cpGIMP.py
├── solvers/
│   ├── quasi_static_solver_2d.py               # 2D quasi-static implicit MPM solver 
│   ├── quasi_static_coupled_solver_2d.py       # 2D coupled quasi-static implicit MPM solver
│   ├── quasi_static_coupled_solver_3d.py       # 3D coupled quasi-static implicit MPM solver
│   └── sparse_differentiation.py               # Utility kernels for sparse differentiation
├── mpm/
│   ├── mpm_utils.py                            # Utility kernels for MPM functions
│   └── gimp.py                                 # Utility kernels for generalized interpolation material point shape function
└── materials/
    └── plasticity.py                           # Plastic constitutive models

Citation

If you find GeoWarp useful, please cite us:

@article{zhao2026,
  author  = {Yidong Zhao and Xuan Li and Chenfanfu Jiang and Jinhyun Choo},
  title   = {{GeoWarp: An automatically differentiable and GPU-accelerated implicit MPM framework for geomechanics based on NVIDIA Warp}},
  journal = {Advances in Engineering Software},
  volume  = {212},
  pages   = {104072},
  year    = {2026},
  doi     = {https://doi.org/10.1016/j.advengsoft.2025.104072}
}

Core symbols most depended-on inside this repo

reset
called by 9
problems/cantilever_beam/cantilever_beam_cpGIMP_sparse_everything_in_one_script.py
get_GIMP_shape_function_and_gradient_2d
called by 6
mpm/gimp.py
advance_one_step
called by 5
solvers/quasi_static_solver_2d.py
pick_grid_nodes_2d
called by 4
solvers/sparse_differentiation.py
get_GIMP_shape_function_and_gradient_3d
called by 3
mpm/gimp.py
get_GIMP_shape_function_and_gradient
called by 3
problems/consolidation/terzaghi_cpGIMP_everything_in_one_script.py
get_GIMP_shape_function_and_gradient
called by 3
problems/consolidation/large_consolidation_cpGIMP_everything_in_one_script.py
get_GIMP_shape_function_and_gradient
called by 3
problems/3D_indentation/3d_indentation_coupled_cpGIMP_everything_in_one_script.py

Shape

Function 193
Method 20
Class 14

Languages

Python100%

Modules by API surface

problems/cantilever_beam/cantilever_beam_cpGIMP_sparse_everything_in_one_script.py24 symbols
problems/consolidation/large_consolidation_cpGIMP_everything_in_one_script.py20 symbols
mpm/mpm_utils.py20 symbols
problems/consolidation/terzaghi_cpGIMP_everything_in_one_script.py19 symbols
problems/3D_indentation/3d_indentation_coupled_cpGIMP_everything_in_one_script.py18 symbols
problems/material_tests/triaxial_NorSand.py17 symbols
problems/cantilever_beam/cantilever_beam_cpGIMP_everything_in_one_script.py16 symbols
problems/material_tests/triaxial_DruckerPrager.py15 symbols
problems/bar_compaction_J2/bar_compaction_cpGIMP_J2_everything_in_one_script.py15 symbols
problems/bar_compaction/bar_compaction_cpGIMP_everything_in_one_script.py14 symbols
solvers/quasi_static_coupled_solver_3d.py10 symbols
solvers/sparse_differentiation.py8 symbols

For agents

$ claude mcp add GeoWarp \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact