Illustrated on the example of a heat transfer problem (Additive manufcaturing process simulation) where individual voxels are actived over time, we review the porting from MATLAB Code to Julia. Furthermore, we investigate the resulting increase of performance, emerging challenges, GPU usage and newly created opportunities.
In selective laser melting, a powder material is locally melted by a laser and forms a coherent solid structure after cooling. As a major advantage this process allows the fabrication of complex geometries and is suitable for various materials. On the downside, the process is associated with extreme cooling rates and therefore large temperature gradients, which lead to anisotropic material properties and, in worst case, to inferior component properties. Hence process parameters such as laser power, scanning speed and layer height must be determined optimally and individually for each component. Due to vast range and variety of influencing factors and parameters, simulations provide an ideal environment for test and development purpose. In order to consider process effects and interactions in a uniform manner to take the effects and interactions of the process into account in a uniform manner, simulations from micro to macro level with associated time scales are necessary. As a consequence, computational heavy and tedious models need to be solved. Current implementations are mostly available in MATLAB, which leads to performance bottlenecks at several points. Due to its performance, syntax and free availability by MIT license, Julia provides an excellent opportunity to completely detach previous implementations from MATLAB and to use Julia as a holistic framework in the future. Particularly the possibility of fully integrating the graphics processing unit (GPU) into computation while still programming in Julia, promises a well readable and still very performant code for the high performance computing (HPC) application.