Building Polymers with Neural Network Potentials
When discovering new polymers, scientists sometimes ask for a simulation to predict the properties of this new material.
But simulating polymers is difficult because there are thousands of atoms and quantum-mechanical effects are relevant. These factors make high-quality simulations expensive.
However, recent ml advancements significantly bring down the cost of these calculations (since they run in O(nlogn) rather than O(n^3), where n is the number of atoms).
These models are often used to predict the properties of a material directly. However, we can use these models to do more. To create realistic-looking polymers in a computer:
(yes. this is interactive!)
Here, I am growing a polymer similar to how polymers are created in real life. Each repeating segment is attached one by one.
Here's the algorithm:
- Create the base of each chain
- Place each mer unit on the end of a chain
- Use the model to perform a few relaxations so the bond angle (and distance) looks like those seen in real-life
- Relaxing means: "moving the atoms to the lowest energy state" (where they naturally want to go!)
- Keep on adding mer units until we're satisfied with the length of the chain
- Perform more relaxations so the polymer settles into a suitable configuration
Now that we have our polymer, we can stretch the system and calculate the forces (using the same ml model!) to calculate tensile strength:
Note: I know this isn't how a polymer behaves when stretched. this is just an example of what we can do with our polymer.

This is amazing. We don't have to worry about conformer math or accidentally placing the atoms too close. The model handles all the inter-atomic forces and makes sure it looks realistic.
TLDR: It's hard to write buggy code using this algorithm.
Future directions we can take with this tech:
- We can compare how two different polymers have different properties by comparing their "Sum of absolute z forces" graphs. The precise value of each point on the graph doesn't matter. The main idea is to compare the graphs between two different polymers and see which one performs better.
- If some properties are hard to get an exact measurement value for, we can train a disciminator model that compares two polymers and guesses which one will perform better. We can then use elo or a round-robin ranking scheme to find the best polyer with the best properties.
- We can create a "rag doll" simulation of polymers, so if we add inter-chain bonds (cross-links), we can see move atoms around and ensure that the chain ends up at a good rest position.
- We can display real-time predictions of desired properties. So when ppl add atoms to the chain / move it around, they can see how their changes affect the predicted properties.
- Once polymer predictions are super fast, we can teach a model to use reinforcement learning to design polymers for us! This is exciting because there are so many possible polymers that it's infeasible for humans to go through the search space one by one manually.
Note: there are problems with the current approach:
- The training data for the neural network uses traditional DFT calculations - which can't adequately capture long-range interactions or van-der-wall forces (important for polymers)
- The neural network was trained for atoms at absolute zero.
Anyway, that's about it! If you're interested in playing around, check out the code here!
- Curtis