Does Chrono have an MPM algorithm?

117 views
Skip to first unread message

Zero

unread,
May 7, 2026, 8:14:19 AMMay 7
to ProjectChrono

Hello everyone!

I would like to ask whether the particle simulation algorithms in the Chrono library include any implementation related to MPM (Material Point Method).

Dan Negrut

unread,
May 7, 2026, 1:01:57 PMMay 7
to Zero, ProjectChrono

No, there’s no MPM implementation in Chrono.

There is a mature SPH implementation though. Used for CDF and terramechanics (in Chrono, CRM terramechanics draws on SPH).

Dan

------------------------------------------------

Bernard A. and Frances M. Weideman Professor

NVIDIA CUDA Fellow

Department of Mechanical & Aerospace Engineering

Department of Computer Science

University of Wisconsin - Madison

4150ME, 1513 University Avenue

Madison, WI 53706-1572

608 772 0914

http://sbel.wisc.edu/

http://projectchrono.org/

------------------------------------------------

--
You received this message because you are subscribed to the Google Groups "ProjectChrono" group.
To unsubscribe from this group and stop receiving emails from it, send an email to projectchron...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/projectchrono/982c5f92-21ad-4405-864d-dbe9f04fbc8an%40googlegroups.com.

Alessandro Tasora

unread,
May 7, 2026, 1:11:57 PMMay 7
to Zero, ProjectChrono
Hi

There are similar alternatives, depending on what you want to simulate. 
- there is the recent PERIDYNAMICS module (enable it in CMake) 
- there is SPH 
etc. 
Note that peridynamics runs on cpu, not yet on GPU.

As usual, look at the .cpp   demos to understand how to use the features. 

Alessandro 

On Thu, May 7, 2026, 14:14 Zero <nono...@gmail.com> wrote:

Hello everyone!

I would like to ask whether the particle simulation algorithms in the Chrono library include any implementation related to MPM (Material Point Method).

--

Radu Serban

unread,
May 20, 2026, 3:52:23 PM (8 days ago) May 20
to ProjectChrono

We had an MPM implementation in the Chrono::Multicore module, but we obsoleted it because it didn’t see any use or interest.

If you are interested in reviving it for your own use and assuming the SPH solver in the Chrono::FSI-SPH module cannot be used for your case, I can provide you information where we archived that capability.

 

--Radu

 

From: projec...@googlegroups.com <projec...@googlegroups.com> On Behalf Of Zero
Sent: Thursday, May 7, 2026 2:14 PM
To: ProjectChrono <projec...@googlegroups.com>
Subject: [chrono] Does Chrono have an MPM algorithm?

 

Hello everyone!

I would like to ask whether the particle simulation algorithms in the Chrono library include any implementation related to MPM (Material Point Method).

--

Zero

unread,
May 21, 2026, 4:51:30 AM (8 days ago) May 21
to ProjectChrono

Dear,all

When compiling the FSI-SPH module in version 10.0, I have consistently encountered the error: no instance of overloaded function "atomicAdd" matches the argument list, and my CUDA version is 12.9.

Bocheng Zou

unread,
May 21, 2026, 11:16:49 PM (7 days ago) May 21
to projec...@googlegroups.com

Hi Zero,

Could you please try on the latest main branch, and if it doesn't work, paste the full compiler error (including the specific file and line that the error occurs) to help use troubleshoot. 

Best,

Bocheng Zou

Zero

unread,
May 25, 2026, 10:29:57 AM (3 days ago) May 25
to ProjectChrono
Hi bochen

Hello, have you found this error?


2>F:\GitHub\chrono\src\chrono_fsi\sph\physics\SphBceManager.cu(520): error : no instance of overloaded function "atomicAdd" matches the argument list
2>            argument types are: (chrono::fsi::sph::Real *, chrono::fsi::sph::Real)
2>          atomicAdd(&flex2D_FSIforces_D[nodeIndex].z, force.z);
2>          ^
2>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cuda_bf16.hpp(3802): note #3326-D: function "atomicAdd(__nv_bfloat162 *, __nv_bfloat162)" does not match because argument #1 does not match parameter
2>  static __declspec(__device__) __inline __nv_bfloat162 atomicAdd(__nv_bfloat162 *const address, const __nv_bfloat162 val)
2>                                                        ^
2>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\cuda_fp16.hpp(3426): note #3326-D: function "atomicAdd(__half2 *, __half2)" does not match because argument #1 does not match parameter
2>  static __declspec(__device__) __inline  __half2 atomicAdd(__half2 *const address, const __half2 val) {
2>                                                  ^
2>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\sm_20_atomic_functions.hpp(82): note #3326-D: function "atomicAdd(float *, float)" does not match because argument #1 does not match parameter
2>  static __inline __declspec(__device__) float atomicAdd(float *address, float val)
2>                                               ^
2>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\device_atomic_functions.hpp(224): note #3326-D: function "atomicAdd(unsigned long long *, unsigned long long)" does not match because argument #1 does not match parameter
2>  static __inline __declspec(__device__) unsigned long long int atomicAdd(unsigned long long int *address, unsigned long long int val)
2>                                                                ^
2>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\device_atomic_functions.hpp(110): note #3326-D: function "atomicAdd(unsigned int *, unsigned int)" does not match because argument #1 does not match parameter
2>  static __inline __declspec(__device__) unsigned int atomicAdd(unsigned int *address, unsigned int val)
2>                                                      ^
2>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include\device_atomic_functions.hpp(105): note #3326-D: function "atomicAdd(int *, int)" does not match because argument #1 does not match parameter
2>  static __inline __declspec(__device__) int atomicAdd(int *address, int val)
2>                                             ^
2>
2>12 errors detected in the compilation of "F:/GitHub/chrono/src/chrono_fsi/sph/physics/SphBceManager.cu".
2>SphBceManager.cu
2>D:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\BuildCustomizations\CUDA 12.9.targets(801,9): error MSB3721: Command“"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\bin\nvcc.exe"  --use-local-env -ccbin "D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\bin\HostX64\x64" -x cu   -IF:\GitHub\chrono\src -IE:\Workspace\Chrono\build -IF:\GitHub\chrono\src\chrono\collision\bullet -IF:\GitHub\chrono\src\chrono\collision\gimpact -IF:\GitHub\chrono\src\chrono_thirdparty\HACD -IF:\GitHub\chrono\src\chrono_thirdparty\HACDv2 -I"E:\Workspace\Library\eigen-5.0.0" -I"E:\Workspace\Library\hdf5-2.0.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include"     --keep-dir x64\Debug  -maxrregcount=0    --machine 64 --compile -cudart static -std=c++17 -arch=all-major -Wno-deprecated-gpu-targets -Xcompiler="/EHsc -Zi -Ob0 /wd4324 /Zc:__cplusplus /wd4996" -g  -D_WINDOWS -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_CUDA -DTHRUST_HOST_SYSTEM=THRUST_HOST_SYSTEM_CPP -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DH5_BUILT_AS_DYNAMIC_LIB -D"CMAKE_INTDIR=\"Debug\"" -DChrono_fsisph_EXPORTS -D_WINDLL -D_MBCS -DWIN32 -D_WINDOWS -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_CUDA -DTHRUST_HOST_SYSTEM=THRUST_HOST_SYSTEM_CPP -DCH_API_COMPILE_FSI -D_CRT_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_DEPRECATE -DNOMINMAX -DDEBUG -D_DEBUG -DCH_IGNORE_DEPRECATED -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DH5_BUILT_AS_DYNAMIC_LIB -D"CMAKE_INTDIR=\"Debug\"" -DChrono_fsisph_EXPORTS -Xcompiler "/EHsc /W4 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -Xcompiler "/FdChrono_fsisph.dir\Debug\vc143.pdb" -o Chrono_fsisph.dir\Debug\SphBceManager.obj "F:\GitHub\chrono\src\chrono_fsi\sph\physics\SphBceManager.cu"”exited, with code 1。

Radu Serban

unread,
May 25, 2026, 11:21:58 AM (3 days ago) May 25
to ProjectChrono
What GPU do you have? What is its architecture (computer capability)? Check the NVIDIA documentation. I think atomicAdd for float was only added in 8.0 or around that time. Is your GPU that old? 

--Radu


From: projec...@googlegroups.com <projec...@googlegroups.com> on behalf of Zero <nono...@gmail.com>
Sent: Monday, May 25, 2026 4:29:56 PM
To: ProjectChrono <projec...@googlegroups.com>
Subject: Re: [chrono] Does Chrono have an MPM algorithm?
 

Zero

unread,
May 25, 2026, 1:25:28 PM (3 days ago) May 25
to ProjectChrono
Hi,Serban

My GPU is indeed a bit old; it is a GTX 980, Maxwell 5.3.

What is the minimum GPU configuration required now?

Zero

unread,
May 25, 2026, 2:25:57 PM (3 days ago) May 25
to ProjectChrono
Dear,All

There is another error. When I compile Chrono::SENSOR, with CH_USE_SENSOR_NVDB set to Enable, the following error occurs:

2>F:\GitHub\chrono\src\chrono_sensor\cuda\cuda_utils.cu(26): fatal error C1083: Unable to open the included file: “nanovdb/util/GridHandle.h”: No such file or directory
2>cuda_utils.cu
2>D:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\BuildCustomizations\CUDA 12.9.targets(801,9): error MSB3721: Command“"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\bin\nvcc.exe"  --use-local-env -ccbin "D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\bin\HostX64\x64" -x cu   -I"C:\ProgramData\NVIDIA Corporation\OptiX SDK 9.1.0\include" -IF:\GitHub\chrono\src -IE:\Workspace\Chrono\build -IF:\GitHub\chrono\src\chrono\collision\bullet -IF:\GitHub\chrono\src\chrono\collision\gimpact -IF:\GitHub\chrono\src\chrono_thirdparty\HACD -IF:\GitHub\chrono\src\chrono_thirdparty\HACDv2 -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include" -I"D:\Vcpkg\vcpkg\installed\x64-windows\include" -I"D:\Vcpkg\vcpkg\installed\x64-windows\include\Imath" -I"C:\Program Files (x86)\Intel\oneAPI\tbb\2023.0\include" -I"D:\Vcpkg\vcpkg\installed\x64-windows\include\nanovdb" -I"E:\Workspace\Library\eigen-5.0.0" -I"E:\Workspace\Library\hdf5-2.0.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.9\include"     --keep-dir x64\Debug -use_fast_math -maxrregcount=0    --machine 64 --compile -cudart static -std=c++17 -arch=all-major --extended-lambda -Wno-deprecated-gpu-targets -Xcompiler="/EHsc -Zi -Ob0 /Zc:__cplusplus /wd4324 /wd4996" -g  -D_WINDOWS -DUSE_SENSOR_NVDB -DOPENVDB_DLL -D_WIN32 -DNOMINMAX -DOPENVDB_ABI_VERSION_NUMBER=12 -DOPENVDB_USE_DELAYED_LOADING -DBOOST_IOSTREAMS_NO_LIB -DBOOST_IOSTREAMS_DYN_LINK -DBOOST_RANDOM_NO_LIB -DBOOST_RANDOM_DYN_LINK -DIMATH_DLL -D__TBB_NO_IMPLICIT_LINKAGE=1 -DGLFW_DLL -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DH5_BUILT_AS_DYNAMIC_LIB -D"CMAKE_INTDIR=\"Debug\"" -DChrono_sensor_EXPORTS -D_WINDLL -D_MBCS -DWIN32 -D_WINDOWS -DNOMINMAX -DUSE_CUDA_NVRTC -DUSE_SENSOR_GLFW -DUSE_SENSOR_NVDB -DCH_API_COMPILE_SENSOR -DOPENVDB_DLL -D_WIN32 -DOPENVDB_ABI_VERSION_NUMBER=12 -DOPENVDB_USE_DELAYED_LOADING -DBOOST_IOSTREAMS_NO_LIB -DBOOST_IOSTREAMS_DYN_LINK -DBOOST_RANDOM_NO_LIB -DBOOST_RANDOM_DYN_LINK -DIMATH_DLL -D__TBB_NO_IMPLICIT_LINKAGE=1 -DGLFW_DLL -D_CRT_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_DEPRECATE -DDEBUG -D_DEBUG -DCH_IGNORE_DEPRECATED -D_ENABLE_EXTENDED_ALIGNED_STORAGE -DH5_BUILT_AS_DYNAMIC_LIB -D"CMAKE_INTDIR=\"Debug\"" -DChrono_sensor_EXPORTS -Xcompiler "/EHsc /W4 /nologo /Od /FS /Zi /RTC1 /MDd /GR" -Xcompiler "/FdChrono_sensor.dir\Debug\vc143.pdb" -o Chrono_sensor.dir\Debug\cuda_utils.obj "F:\GitHub\chrono\src\chrono_sensor\cuda\cuda_utils.cu"”Exited, return code is 2.

My version of OpenVDB/NanoVDB is OpenVDB 12. It seems that not only is there inconsistency between the NanoVDB header file/API and the current code of Chrono, but there is also an issue of API incompatibility.

namespace "nanovdb" has no member "CudaPointsToGrid"

Dan Negrut

unread,
May 25, 2026, 6:38:44 PM (3 days ago) May 25
to Zero, ProjectChrono

Before this is chased, please use a 3000 series GPU, or more recent. Something like 3070, 3090 and above.

A Maxwell is very, very old – if this is what you use.

 

Dan

------------------------------------------------

Bernard A. and Frances M. Weideman Professor

NVIDIA CUDA Fellow

Department of Mechanical & Aerospace Engineering

Department of Computer Science

University of Wisconsin - Madison

4150ME, 1513 University Avenue

Madison, WI 53706-1572

608 772 0914

http://sbel.wisc.edu/

http://projectchrono.org/

------------------------------------------------

 

Zero

unread,
9:21 AM (10 hours ago) 9:21 AM
to ProjectChrono
Hi,Dear

The error I encountered after enabling CH_USE_SENSOR_NVDB previously seems to be a version compatibility issue between OpenVDB and NanoVDB. Regarding the versions of OpenVDB and NanoVDB, I would like to ask which OpenVDB version the Chrono library uses.

Reply all
Reply to author
Forward
0 new messages