Skip to content

Commit 34a24e5

Browse files
authored
Merge pull request #43 from ZenanH/main
🎉 Release new version v0.5.0
2 parents 7f91626 + ee0402d commit 34a24e5

119 files changed

Lines changed: 1354 additions & 13267 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,5 @@ docs/site/
2424
Manifest.toml
2525
.vscode
2626
.ipynb_checkpoints
27-
.DS_Store
27+
.DS_Store
28+
.CondaPkg

Project.toml

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "MaterialPointSolver"
22
uuid = "dc4aa359-7d89-437d-91bb-f4b330c522c1"
33
authors = ["Zenan Huo <zenan.huo@outlook.com>"]
4-
version = "0.4.7"
4+
version = "0.5.0"
55

66
[deps]
77
Adapt = "79e6a3ab-5dfb-504d-930d-738a2a938a0e"
@@ -11,50 +11,48 @@ Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
1111
DelimitedFiles = "8bb1440f-4735-579b-a4ab-409b98df4dab"
1212
HDF5 = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f"
1313
KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c"
14+
Logging = "56ddb016-857b-54e1-b83d-db4d58db5568"
15+
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
16+
PrecompileTools = "aea7be01-6a6a-4083-8856-8a6e6704d82a"
17+
PrettyTables = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d"
1418
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"
15-
ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca"
1619
Serialization = "9e88b42a-f829-5b0c-bbe9-9e923198166b"
17-
StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
18-
Suppressor = "fd094767-a336-5f1f-9728-57cf17d0bbfb"
1920
SysInfo = "90a7ee08-a23f-48b9-9006-0e0e2a9e4608"
2021

2122
[compat]
22-
Adapt = "4.0"
23-
BenchmarkTools = "1.5"
23+
Adapt = "4.3"
24+
BenchmarkTools = "1.6"
2425
CodecZlib = "0.7"
2526
DelimitedFiles = "1.9"
2627
HDF5 = "0.17"
2728
KernelAbstractions = "0.9"
28-
ProgressMeter = "1.10"
29-
StatsBase = "0.34"
30-
Suppressor = "0.2"
29+
PrecompileTools = "1.2"
30+
PrettyTables = "2.4"
3131
SysInfo = "0.3"
3232
julia = "1.11"
3333

3434
[weakdeps]
3535
AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e"
3636
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
3737
Metal = "dde4c033-4e86-420c-a63e-0dd931031962"
38-
oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b"
3938
WGLMakie = "276b4fcb-3e11-5398-bf8b-a0c2d153d008"
39+
oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b"
4040

4141
[extensions]
4242
MaterialPointSolverAMDGPUExt = "AMDGPU"
4343
MaterialPointSolverCUDAExt = "CUDA"
4444
MaterialPointSolverMetalExt = "Metal"
4545
MaterialPointSolveroneAPIExt = "oneAPI"
46-
MaterialPointSolverDebugExt = "WGLMakie"
4746

4847
[extras]
4948
AMDGPU = "21141c5a-9bdb-4563-92ae-f87d6854732e"
49+
BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
5050
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
51+
DelimitedFiles = "8bb1440f-4735-579b-a4ab-409b98df4dab"
5152
Metal = "dde4c033-4e86-420c-a63e-0dd931031962"
52-
oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b"
5353
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
54-
DelimitedFiles = "8bb1440f-4735-579b-a4ab-409b98df4dab"
55-
BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
56-
StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
5754
WGLMakie = "276b4fcb-3e11-5398-bf8b-a0c2d153d008"
55+
oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b"
5856

5957
[targets]
6058
test = ["Test", "BenchmarkTools", "DelimitedFiles"]

README.md

Lines changed: 17 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
[![CI](https://github.com/LandslideSIM/MaterialPointSolver.jl/actions/workflows/ci.yml/badge.svg)](https://github.com/LandslideSIM/MaterialPointSolver.jl/actions/workflows/ci.yml)
44
[![Stable](https://img.shields.io/badge/docs-stable-blue.svg?logo=quicklook)](https://landslidesim.github.io/MaterialPointSolver.jl/stable/)
55
[![Dev](https://img.shields.io/badge/docs-dev-red.svg?logo=quicklook)](https://landslidesim.github.io/MaterialPointSolver.jl/dev/)
6-
[![Version](https://img.shields.io/badge/version-v0.4.7-pink)]()
6+
[![Version](https://img.shields.io/badge/version-v0.5.0-pink)]()
77

88
[![](https://img.shields.io/badge/NVIDIA-CUDA-green.svg?logo=nvidia)](https://developer.nvidia.com/cuda-toolkit)
99
[![](https://img.shields.io/badge/AMD-ROCm-red.svg?logo=amd)](https://www.amd.com/en/products/software/rocm.html)
@@ -14,8 +14,6 @@
1414
This package provides a high-performance, backend-agnostic implementation of the Material Point Method (MPM) using the <a href="https://julialang.org" target="_blank"><img src="https://raw.githubusercontent.com/JuliaLang/julia-logo-graphics/master/images/julia.ico" width="16em"> Julia Language</a>. It is lightweight and user-friendly, allowing efficient execution on various hardware accelerators with a single codebase. Please check here for the <a href="https://landslidesim.github.io/MaterialPointSolver.jl/stable/" target="_blank">documentation</a>.
1515
</p>
1616

17-
> If you have a GPU from Intel® and want to try on it, please [contact me 📧](mailto:zenan.huo@outlook.com).
18-
1917
<img src="https://cdn.jsdelivr.net/gh/LandslideSIM/MaterialPointSolver.jl@main/docs/assets/readme.gif" width="100%" align="center">
2018

2119
## Installation ⚙️
@@ -27,73 +25,34 @@ julia> ]
2725
(@1.11) Pkg> add MaterialPointSolver
2826
```
2927

30-
## Features 💪
31-
32-
*These features can be combined in any way, but MLS-MPM can only use quadratic b-spline for the speed*
33-
34-
- Basis function:
35-
36-
- ✅ standard MPM
37-
- ✅ uGIMP (uniformed Generalized interpolation MPM)
38-
- ✅ quadratic B-spline
39-
- ✅ cubic B-spline (boundary modified)
40-
41-
- Stress update scheme:
42-
43-
- ✅ USL (update stress last)
44-
- ✅ USF (update stress first)
45-
- ✅ MUSL (modified USL)
46-
47-
- MPM formulation:
4828

49-
- ✅ one-phase single-point
50-
- 🚧 two-phase single-point (saturated/unsaturated)
29+
## Design Philosophy 🧠
5130

52-
- Constitutive model:
53-
54-
- ✅ linear elastic
55-
- ✅ hyper elastic (Neo-Hookean)
56-
- ✅ Drucker-Prager (with softening/harding)
57-
- 🚧 Mohr-Coulomb
58-
- ✅ Bingham
59-
60-
61-
62-
- Others:
63-
64-
- ✅ Affine/MLS-MPM
65-
- ✅ $\bar{F}$-based volumetric locking elimination
66-
- ✅ Gaussian random field
67-
- ✅ one-click switch between `FP64` and `FP32`
68-
- ✅ user-defined algorithms/extensions at any level
69-
70-
There is a `debug` model can be used to make sure the simulation is working as expect. It's also can be used for in-situ visualization in VSCode.
71-
72-
<img src="https://cdn.jsdelivr.net/gh/LandslideSIM/MaterialPointSolver.jl@main/docs/assets/debug.gif" width="100%" align="center">
31+
- [x] A high-performance MPM solver for flexible scientific prototyping
32+
- [x] Supports user-defined fields and custom logic (e.g. acoustics, heat)
33+
- [x] Can be used in production environments with care to avoid performance regressions
34+
- [x] All MPM algorithms are modularized as plugins for easy modification and sharing
7335

7436
## Citation 🔥
7537

7638
If you find `MaterialPointSolver.jl` useful or have used it in your research, please cite it as follows:
7739

7840
```bib
7941
@article{HUO2025107189,
80-
title = {A high-performance backend-agnostic Material Point Method solver in Julia},
81-
journal = {Computers and Geotechnics},
82-
volume = {183},
83-
pages = {107189},
84-
year = {2025},
85-
issn = {0266-352X},
86-
doi = {https://doi.org/10.1016/j.compgeo.2025.107189},
87-
url = {https://www.sciencedirect.com/science/article/pii/S0266352X25001387},
88-
author = {Zenan Huo and Yury Alkhimenkov and Michel Jaboyedoff and Yury Podladchikov and Ludovic Räss and Emmanuel Wyser and Gang Mei},
89-
keywords = {MPM, Julia language, Heterogeneous computing, Effective memory throughput}
42+
title = {A high-performance backend-agnostic Material Point Method solver in Julia},
43+
journal = {Computers and Geotechnics},
44+
volume = {183},
45+
pages = {107189},
46+
year = {2025},
47+
issn = {0266-352X},
48+
doi = {https://doi.org/10.1016/j.compgeo.2025.107189},
49+
url = {https://www.sciencedirect.com/science/article/pii/S0266352X25001387},
50+
author = {Zenan Huo and Yury Alkhimenkov and Michel Jaboyedoff and Yury Podladchikov and Ludovic Räss and Emmanuel Wyser and Gang Mei},
51+
keywords = {MPM, Julia language, Heterogeneous computing, Effective memory throughput}
9052
}
9153
```
9254
> [!CAUTION]
93-
> This is the latest version of `MaterialPointSover.jl`, if you want to see the examples in the paper, please move to [https://github.com/LandslideSIM/Archive_MaterialPointSolver.jl_paper](https://github.com/LandslideSIM/Archive_MaterialPointSolver.jl_paper).
94-
95-
> [!TIP]
96-
> After the article was published, we released many new features and achieved significant performance improvements. We are currently actively working on completing the documentation. If possible, you can directly review the source code.
55+
> This repo is the LATEST version of `MaterialPointSover.jl`. After the article was published, we released many new features and achieved significant performance improvements. Please move to [https://github.com/LandslideSIM/Archive_MaterialPointSolver.jl_paper](https://github.com/LandslideSIM/Archive_MaterialPointSolver.jl_paper) for the code used in the paper.
9756
9857
## Acknowledgement 👍
9958

docs/make.jl

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,30 +15,18 @@ makedocs(
1515
"introduction/getstarted.md",
1616
"introduction/why.md",
1717
"introduction/ecosystem.md",
18-
"introduction/tips.md",
1918
],
20-
"Interface" => Any[
21-
"interface/structs.md",
22-
"interface/backendagnostic.md",
23-
"interface/kernelfunctions.md",
24-
"interface/mpmprocess.md",
25-
"interface/workflow.md",
26-
"interface/imexport.md",
27-
],
28-
"Tutorials" => Any[
29-
"tutorials/example1.md",
30-
"tutorials/example2.md",
31-
"tutorials/example3.md"
19+
"DataType System" => Any[
20+
"datatype/backgroundgrid.md",
3221
],
3322
"Advanced Topics" => Any[
34-
"advancedtopics/customkernel.md",
35-
"advancedtopics/customconstitutive.md",
36-
"advancedtopics/custommpmprocess.md",
37-
"advancedtopics/customextension.md",
38-
"advancedtopics/customfriction.md"
23+
"advancedtopics/plugin.md",
24+
],
25+
"Examples" => Any[
26+
"examples/example1.md",
3927
],
40-
"Useful Tools" => Any[
41-
"utils/debug.md",
28+
"Others" => Any[
29+
"others/gpu.md",
4230
]
4331
],
4432
warnonly = [:missing_docs, :cross_references],

docs/src/advancedtopics/customconstitutive.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/src/advancedtopics/customextension.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/src/advancedtopics/customfriction.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/src/advancedtopics/customkernel.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/src/advancedtopics/custommpmprocess.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

docs/src/advancedtopics/plugin.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Plugin System
2+
3+
... todo

0 commit comments

Comments
 (0)