When I heard of this internship with Coupi, Inc., I was excited to learn more about utilizing the Discrete Element Method to generate physical simulations. As I prepare for graduate school, I’ve been looking at what type of research I plan on pursuing, so my time with Coupi, Inc. has given me a valuable perspective on DEM modeling applications. It has even given me new ideas for possible careers to pursue in the future, and how I can work towards them in the coming years. Ultimately, the chance to apply what I have learned during my undergraduate experience in a workplace setting has been a great way to exercise my problem solving skills.
Of course, it took some time before I could fully delve into the software and the workings of the DEM. Part of our job as interns has been to write a user manual that would guide customers through the details necessary to properly use the Coupi software. As we were new to the experience ourselves, the first few weeks of the internship were spent simply learning how to operate the software ourselves. While I was already familiar with the Lua programming language through my undergraduate studies, determining the correct formatting for scripts — as well as how changes to the script were translated through the Coupi solver — took some time.
Using Coupi’s DEM Capabilities
After the initial steps, the quickest way to learn of course was through our own projects and designs. One of the first projects I worked on was a simulation of a vortex through fictitious forces. While I knew it wouldn’t be physically accurate, my goal at the time was to grow more familiar with processing through the solver and to determine what the overall capabilities of the software were. The end result was the swirl of particles in the image below:
While this was a fairly straightforward simulation, the insight it gave me as to how to simulate physical forces, and the limits associated with such forces, was more than worthwhile. It also showed the worth of these projects in relation to other tasks, such as searching for bugs in the software, as it allowed me to find a performance oddity the developers hadn’t noticed.
How does snow behave?
A more recent project investigated how snowfall can smooth rough surfaces over time. Gathering empirical data for such research can be challenging due to the conditions required. The project researchers were curious as to whether the Coupi software could accurately simulate snowfall and the snow’s overall behavior.
To that end, I replicated their experimental setup within the software, and over a period of weeks I ran various simulations with a variety of parameters. Here are a couple of images from one of those iterations:
While this was a fairly straightforward simulation, the insight I gained in how to simulate physical forces, and the limits associated with such forces, was more than worthwhile. It also showed the worth of these projects in relation to other tasks, such as searching for bugs in the software, as it allowed me to find a performance oddity the developers hadn’t noticed.
Simulation vs. empirical data
There are numerous material parameters that can be adjusted within the Coupi software, ranging from material density to the surface energy of the particle, so my goal has been to empirically experiment with these parameters to find a physically plausible representation of snow particles. That will be the end result at least; the work thus far has been largely figuring out how to properly scale the experiment so each iteration of the simulation can run in a reasonable time frame. Due to the calculations necessary for simulating microscale interactions, utilizing the actual size of snow particles would require an impractical amount of time for an empirical study.
The long view
Finding that balance — between experiment scale and simulation runtime — as well as determining what challenges similar users may face in the future, is part of our roles as interns, so that we can help the software grow. Between encountering and documenting bugs, while adding our thoughts and findings on efficient use of the software into the user manual, our efforts have all been concentrated towards a single goal: to make Coupi into as great of a software as it can be. The software is, of course, continually developing, with inspiring ideas for future capabilities. This means that our efforts towards testing and writing are not final by any means; instead they will serve as a foundation to build upon for other interns or workers in the future.
I’m grateful for the many opportunities and chances to grow that this internship has provided. Working on a team to accomplish unified or separate tasks is an invaluable skill for a programmer. The ability to see what the software development process is like outside the classroom has also been a great experience. Even some of the smaller details, such as looking at how an intuitive user interface feeds into a smoother user experience, will strengthen my capabilities in future projects. Overall this internship has provided ample opportunity for me to learn, and I look forward to seeing how Coupi, Inc. grows in the future.