NetLogo banner

NetLogo Publications
Contact Us

Modeling Commons

Beginners Interactive NetLogo Dictionary (BIND)
NetLogo Dictionary

User Manuals:
Farsi / Persian


NetLogo Models Library:
Sample Models/Chemistry & Physics/Materials Science

(back to the library)

Radical Polymerization with Chains

[screen shot]

If you download the NetLogo application, this model is included. You can also Try running it in NetLogo Web


This is a model of free-radical polymerization which is a method of polymer formation. A polymer is a long molecule made up of many repeating units known as "mers". A monomer is a single one of these unbonded units by itself. When multiple monomers bond together, they create a polymer (many mers).

Radical polymerization is initiated by free radicals, which are molecules with an unpaired valence electron, making them very reactive. These free radicals themselves have to be created by some sort of reaction that cleaves initiator molecules into two parts, at least one of which is a free radical. The free radical then bonds with a monomer and its unpaired valence electron is transferred to the mer which is then able to repeat this process with another monomer. This process continues until either a termination reaction occurs or there are no other mers present.


The radical polymerization is modeled involving only local interactions on a lattice. Any global interactions are used only for monitoring purposes.

Radical agents (radical mers or radical initators) are the only agents that initiate interaction with other agents. During the go procedure, radicals are asked to interact, then all turtles are asked to move.

During interact, the radical agent randomly chooses, if available, one monomer, radical-mer, or radical-initiator from its adjacent neighbors. It then asks this agent to bond and change its breed to reflect its new status. Then, the initiating agent changes its own breed to longer be radical.

When the neighbor is asked to bond and change its breed, there are number of possibilities based on its breed:

  • if it is a monomer, it bonds with the initiating agent and changes to a radical-mer.
  • if it is a radical initiator, it bonds with the initiating agent and changes to an initiator
  • if is a radical-mer, there are a three different possibilities:
    • if the initiating agent is a radical-initiator, it bonds with the initiating agent and changes to a saturated-mer
    • if the initiating agent is a radical-mer, the outcome depends on DISPROPORTIONATION-PROB:
      • if disproportionation occurs, the neighbor does not bond (only case where the neighbor does not bond) and changes to a unsaturated-mer (only case where an unsaturated-mer is not a monomer).
      • if disproportionation does not occur, then combination occurs. The neighbor bonds wtih the initiating agent and changes to a saturated-mer.

When the initiating agent changes its own breed, if it is a radical-initiator, it changes to an initiator, and if it is a radical-mer, it changes to a saturated-mer.

During move, each turtle chooses one of its neighboring eight patches, and if that patch is unoccupied and moving there would not break its bonds, it moves there.


Before clicking the SETUP button, you first need to determine the number of initial monomers you want created using the NUM-MONOMERS slider and the number of radical initiators using the NUM-RADICAL-INITIATORS slider.

To run the model, first press the SETUP button, then press the GO button. To advance only one tick, you can press the GO ONCE button.

Once the model is running, you can add additional agents using the NUM-ADD slider to determine how many agents to add, and the ADD-MONOMERS button to add monomers, or the ADD-RADICAL-INITIATORS button to add radical initiators.

Additionally, regardless of whether the model is running or not, you can change the probability of disproportionation termination occurring (the alternative being combination termination) when two radical-mers interact using the DISPROPORTIONATION-PROB slider.


Many different patterns can be noticed in different aspects of the model based on different ratios between monomers and radical initiators. Such as:

  • the final number of monomers in each polymer after termination

  • the distribution of the molecular weight of polymers (seen through the polydispersity index & the distribution on the molecular weight plot)

  • how fast the monomers are being added to polymer (seen through the shape of the curve in the number of monomers plot)

It is also important to note that along with the ratio between monomers and radical initiators, the concentration of agents within the world must also be considered. Even with the same ratio of each agent, different patterns can be observed based on how packed the agents are in the world.

Also notice what types of agents are at the two ends of polymers and how this can change when DISPROPORTIONATION-PROB is high.


Slow down the model to see each interaction occurring

Try adding a steady flow of either monomers or radical initiators, or both using the add buttons

Try increasing the dimensions of the world. Does the behavior change at all?


Interface additions:

  • Add sliders that control the probability for each interaction so that the interactions do not occur every time

  • Alternatively, a temperature slider could be added that correlates to the probability of interaction (higher temperature, more likely for agents to interact)

  • Instead of the agents moving by themselves, change the code so that the user drags agents to make them interact (polymers are tied together so they move together)

  • Add a switch that lets the user decide whether to add the initial monomers all at once when the model starts, or to add them in continuously at a predetermined rate

Changes to the move code:

  • Have each polymer as a whole randomly move or rotate, modeling a flow in the model

  • Alter the breaking-chain? code to be looser, so that a link-neighbor can be further away than 1 patch without breaking the chain

Changes to the main ideas of the model:

  • Change the model to be a step growth model instead, so the mers are all active and bond with neighbors on two sides

  • Change the initiation reaction so that the propagation starts on the side where the radical initiator comes in, resulting in the chain to be able to propagate on both sides

  • Make a hexagonal grid instead of the current square grid to be more accurate to packing (see the MaterialSim Grain Growth model in the Models Library for a way to make a hexagonal lattice)


Radical mers and radical initiators are the only agents that initiate in the interact code, so those two breeds are called. In order to avoid checking the breeds every time the interact code is called, a turtle-set made of radical-mers and radical-initiators was uitilized and called instead.

Auto scaling does not affect a histogram's horizontal range, so when using a histogram for the molecular weight distribution plot, an update command was implemented that adjusts the x-range periodically. This, however, was in conflict with the "set-histogram-num-bars" pen setup command that determined the number of bars, because this would not automatically update when the x-range changed. To account for this, a pen update command was added that ran "set-histogram-num-bars" in the same period as when the x-range updated.

The Shape and Color Key uses unicode characters for circles and squares to display those shapes as text.


Polymer Dynamics Radical Polymerization


If you mention this model or the NetLogo software in a publication, we ask that you include the citations below.

For the model itself:

Please cite the NetLogo software as:


Copyright 2023 Uri Wilensky.


This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Commercial licenses are also available. To inquire about commercial licenses, please contact Uri Wilensky at

(back to the NetLogo Models Library)