zhangyaqi1989 / Simulation-of-LPBF-using-CUDA

In this project, both dynamic and thermal simulation of laser powder bed fusion are implemented using CUDA.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Simulation of Laser Powder Bed Fusion (L-PBF) using CUDA

A multiphysical modeling approach [1] has been employed to simulate the selected laser sintering (SLS) process (a kind of L-PBF) for a single layer of particles. A discrete element approach [1] was implemented using CUDA to model particle-to-particle and particle-to-wall mechanical and thermal interactions. The modeling approach can be characterized in two parts: (1) dynamic simulation of the deposition of the powder particles; (2) thermal simulation of the temperature evolution of the particles after a single pass of a laser beam. The implementation detail and numerical experiments are described in the report. A shorter presentation is in the slides. This project won the final project competition.

1. Demo

1.1 Dynamic Simulation

Dynamic Simulation [click above figure to play]

1.2 Thermal Simulation

Thermal Simulation [click above figure to play]

2. Dynamic Simulation

2.1 Build Instructions

Successful on Linux platform with gcc 6.4.0 and nvcc 9.0.

On Linux PC

>> cd dynamics/
>> make -f makefile-pc clean
>> make -f makefile-pc

On Euler (a multi-core supercomputer cluster)

>> cd dynamics/
>> make -f makefile-euler clean
>> make -f makefile-euler

2.2 Run Instructions

CPU version

>> ./cpu_dynamic

CUDA version

>>> ./gpu_dynamic

Both CPU and GPU version will

  • output particle radius to radius.txt

  • output particle initial velocity to vxyzs0.txt

  • output particle initial position to xyzs0.txt

  • output particle final velocity to vxyz.txt

  • output particle final position to xyzs.txt

3. Thermal Simulation

3.1 Build Instructions

Successful on Linux platform with gcc 6.4.0 and nvcc 9.0.

On Linux PC

>> cd thermal/
>> make -f makefile-pc clean
>> make -f makefile-pc

On Euler (a multi-core supercomputer cluster)

>> cd thermal/
>> make -f makefile-euler clean
>> make -f makefile-euler

3.2 Run Instructions

CPU version

>> ./cpu_thermal <test_type>

CUDA version

>>> ./gpu_thermal <test_type>

test_type = 1: load xyzs.txt and radius.txt from infiles/

test_type = 2: initialize particle position and radius randomly

CPU version will output temperatures of final time step to outfiles/temperatures.txt

GPU version will output temperatures of final time step to outfiles/temperatures_cuda.txt

When test_type = 2, both CPU and GPU version will also output outfiles/xyzs_after.txt and outfiles/radius_after.txt which are the particle positions and radiuses initialized randomly.

References

[1] Rishi Ganeriwala and Tarek I Zohdi. A coupled discrete element-finite difference model of selective lasersintering. Granular Matter, 18 (2):21, 2016.

About

In this project, both dynamic and thermal simulation of laser powder bed fusion are implemented using CUDA.

License:MIT License


Languages

Language:Cuda 51.6%Language:C++ 42.2%Language:MATLAB 4.8%Language:Python 0.8%Language:Shell 0.5%