Antimatter Suppression

Antimatter Suppression preview image

1 collaborator

Dylan Dylan Coyle (Author)


chemistry and physics 

Tagged by Dylan Coyle 19 days ago

Visible to everyone | Changeable by everyone
Model was written in NetLogo 6.0.1 • Viewed 156 times • Downloaded 3 times • Run 0 times
Download the 'Antimatter Suppression' modelDownload this modelEmbed this model



At the beginning of the universe, antimatter and normal-matter were presumably created in equal amounts. It is an open question why we now have more of one type than the other. Theoretically, the two should have annihilated each other, so it's a mystery why we have any matter at all.

This model demonstrates the relativistic feedback loop that suppresses the creation of antimatter and leads to a normal-matter dominated universe regardless of initial conditions and spatial separation. The bias toward normal-matter is not apparent with small populations or individual particles; the effect is emergent with larger populations.


Particles mark their mass and relativistic bias, turn toward higher mass, and move. Patches test for annihilation, and then new particles are created based on the mass and bias at patches. The model accounts for the relativistic time dilation near mass, so there are less moments in a higher mass area and thus a lower probability for a particle to be randomly created there.

The area in front of particles is blueshifted and the area behind particles is redshifted. Areas with more blueshift will create an antimatter particle when they are chosen, the areas with more redshift will create a normal-matter particle when they are chosen, and areas with no bias or equal bias have a 50/50 chance to create either type of particle. If the relativistic bias is turned off then random particles are created.

Particles tend to cluster together making smaller but more populous blueshifted cores and larger but less populous redshifted fields. The greater number of particles created in the redshifted area then annihilate the particles from the blueshifted area until they dominate the field. We call the particles that inevitably dominate 'normal-matter.'


INITIAL-ANTIMATTER-PERCENT changes the 50% antimatter and 50% normal-matter default setup. While the Big Bang model and total universe may be zero-sum, it is useful to experiment with the possibility that different regions emerged with different antimatter/normal-matter mixes. This slider has no effect after setup.

SETUP creates a collection of randomly distributed normal-matter and antimatter particles. These toy particles are neutral in charge, flavor, and spin. They have equal mass and velocity. The particles are only differentiated by their origins, making them antimatter or normal-matter. Antimatter and normal-matter annihilate each other, while particles of the same type do not.

GO starts the simulation. Antimatter particles are green triangles with black lines. Normal-matter particles are yellow triangles with smaller black tringles.

POPULATION sets the amount of particles at setup and acts as a maximum while running.

RELATIVISTIC-BIAS? allows the redshift and blueshift to influence particle generation. When off the type of particle will be randomly chosen when creating new particles.

RADIUS-CUTOFF affects three parts in the code: How far is mass marked? How far is bias marked? When a particle turns toward the highest mass nearby, how far behind a particle does it look when asking another particle to turn the complimenting amount to conserve angular momentum? Technically, each radius should propagate at a finite speed and have infinite range, so this setting helps offset the idiosyncrasies of the model.

GRAVITY-SEARCH-ANGLE sets the angle of the cone used to find the largest mass in front of the particle. It influences the shape of the clusters.

HIDE-PARTICLES? helps you see the mass and bias distribution without the particles in the way. New particles are hidden only after they are created, so you can also see exactly where new particles are made with this turned on.

PEN? and CLEAR-PEN help track where the particles and clusters are going.

CLEAR-PLOTS resets the graphs.


The evolution of the population follows some basic patterns.

Stage one: Annihilation reduces the population and triggers new particle creation.

Stage two: Antimatter creation is suppressed; normal-matter creation is promoted. A look at stage two in detail:

PLOT 1 shows the distribution of particles. Even if the antimatter count starts or veers higher than the normal-matter count, once the normal-matter domination process starts it rarely stops. This stage only starts if the population, radius-cutoff, and gravity-search-angle are high enough. PLOT 2 shows the count of redshifted patches vs blueshifted patches. The particles turn toward each other, speed up toward a point, and then slow down as they approach the particles with dissimilar headings. So blueshifted areas are concentrated in a smaller area, and redshifted areas take up more space outside clusters. PLOT 3 shows the average mass per patch (particles in the radius-cutoff weighted for distance). Because the particles converge and slow down, the blueshifted areas generally have more mass in them. Patches with more mass have less causal actions per moment.

Less space and less actions in blueshifted areas leads to a natural bias toward matter made in redshifted areas.

Stage three: Normal-matter dominates and complexity increases.

Due to frequent annihilations, the complexity of clusters seems to be limited until one type of matter dominates. Try waiting or skipping to a 95% normal-matter universe and experiment with the cut-off radius and gravity-search-angle. Particles will merge into clusters, but those clusters will spread out depending on their search angle and radius. For example, low radius-cutoff (set to 2) and 90 gravity-search-angle will make the particles form long lines and webs.

Sometimes clusters become more complex than a cluster with a blueshifted core: the cluster will have a half-blueshifted and half-redshifted semicircles. These clusters can be stable and move across the field. In an open universe, these clusters could seek other systems to integrated into. Sometimes antimatter systems will linger like this for a while until quantum fluctuations help introduce enough normal-matter to start the feedback cycle. Notice that the semicircles can appear to spin around and show the rotation of the cluster.

Finally consider the observation that the universe is expanding because of the redshifted photons we see. In this model, this makes sense because the blueshifted photons are hidden in clusters that are getting more condensed and complex. The universe is functionally expanding, but the operational size is stable.


Adjust the initial-antimatter-percent.

Notice that normal-matter domination is inevitable. The relativistic effects create a feedback loop so even if a model starts with 95% or more antimatter, normal-matter will dominate eventually. This is in sharp contrast to the conception that the initial conditions of the universe must have had slightly more normal-matter than antimatter to arrive at our current universe, and that the universe must have been compact to allow for similar conditions to prevail throughout space.


Standard model: Try adding and differentiating particles.

Gravity: The model uses different routines to turn and slow the particles. Other methods to code gravity work as well. To be more realistic, try making one that is not instantaneous and spreads through the entire field.

Resilient model: The current model has particles created anywhere in the field. Another step could be to only make particles in far-from-equilibrium conditions, such as where blueshifted areas meet other blueshifted areas and redshifted areas meet other redshifted areas. This should help regulate big crunch and big tears in operational space.


Weighted Patches: The RND extension allows for weighted randomness, but it does not work for patches. To pick a weighted patch, we pick one at random, ask if random mass + 1 = 1, make a particle if it is true, and pick a different patch if it is not true. Thie code continues to look for a patch but stops making more particles if it loops too often (like in huge populations with a high radius-cutoff).

Another workaround is using redshifted and blueshifted patches instead of using individual particles to influence the new particles. Particles work, but using patches saved us time and memory.


The model assumes particles have a quantum roll. Fermions have integer quantum rolls, so their signal does not diminish over space or time, but they have half-integer quantum spins causing their path to be curved in an electromagnetic field (which is not included in this toy model). Second, bosons have integer quantum spins so their path is not curved in an electromagnetic field, but this model proposes that bosons have a half-integer quantum roll which contributes to the diminished signal of bosons over space and time.

What is quantum roll? Another way to look at it uses Turing machine/M-theory duality perspective. Vector-machines/strings in the bulk are normally too slow to move alone and too small to make a signal out from the noise of the bulk. But quantized arrays of similar vector-machines/strings can roll through the bulk faster and make a noticeable signal. The process is like a rolling paceline of bicycles (Belgian tourniquet), so the leader moves back to be replaced by a new leader, ensuring distributed work. So fermions, particles with integer rolls, have equal amounts of vector-machines coming in and out of the bulk. Bosons, particles with half-integer rolls, have an asymmetric amount of vector-machines/strings going into or out of the bulk. This model of antimatter suppression presents one prediction of quantum roll.


Gravity in this model is similar to dropping and turning toward a higher amount of chemicals in the Ants and Slime models. The process of moving was inspired by the Flocking models.


  • Coyle, Dylan. (2017). NetLogo Antimatter Suppression model.

Created with NetLogo 6.0.1 :

Comments and Questions


Click to Run Model

globals [ maxmass minmass nofreeze BIAS<0 BIAS>0 ]
patches-own [ mass bias ]
breed [ antimatter antiparticle ]
breed [ normal-matter normal-particle ]

to setup
  ask patches [ set mass 1 set bias 0 ]
  create-antimatter population / (100 / initial-antimatter-percent) [
    set color green set shape "triangle" ]
  create-normal-matter population / (100 / (100 - initial-antimatter-percent)) [
    set color yellow set shape "triangle 2" ]
  ask turtles [ setxy random-xcor random-ycor ]

to go   reset-timer
  mark-mass  ; Increase the mass in a radius around particles.
  mark-bias  ; Blueshifted area in front and redshifted area behind particles.
  mark-color ; Patches show shifting and mass at the same time.
  ask turtles [
    turnit ; Wiggle particles a little and then turn toward higher mass areas.
    moveit ; Move particles slower when others move in dissimilar directions.
  adjust-population ; Annihilation, quantum fluctuation, and particle creation.
  tick show timer

; Marking routines

To display-options
  ; Simple display options.
  ifelse pen? [ ask turtles [ pendown ]][ ask turtles [ penup ]]
  ifelse hide-particles? [ ask turtles [ hide-turtle ]][ ask turtles [ show-turtle ]]

to mark-mass
  ; Drop mass onto patch.
  ask patches [ set mass 1 ] ; Reset.
  ask turtles [
    ask patches in-radius radius-cutoff [
      set mass (mass + (1 / ((distance self ^ 2) + 1)))

to mark-bias
  ; Make redshift and blueshift areas.
  if any? turtles [
    ifelse relativistic-bias? [
      ask patches [ set bias 0 ]
      ask turtles [
        ; Blueshift area ahead of particle.
        ask patches in-cone radius-cutoff 180 [ set bias bias + 1 ] rt 180
        ; Redshift area behind particle.
        ask patches in-cone radius-cutoff 180 [ set bias bias - 1 ] rt 180
      set BIAS<0 (mean [ mass ] of patches with [ bias < 0 ])
      set BIAS>0 (mean [ mass ] of patches with [ bias > 0 ])
      ][ ; If no bias, patches are shaded violet.
      ask patches [set bias 0]
      set BIAS<0 0
      set BIAS>0 0

to mark-color
  ; Color is limited to a small set.
  if any? turtles [
    set maxmass max [ mass ] of patches
    set minmass min [ mass ] of patches - population / 2000 ; Make it brighter.
  ask patches [
    If bias > 0     [ set pcolor scale-color blue   mass (minmass) (maxmass) ]
    Ifelse bias < 0 [ set pcolor scale-color red    mass (minmass) (maxmass) ]
                    [ set pcolor scale-color violet mass (minmass) (maxmass) ]

; Turing and moving routines

to turnit  ; turtle procedure
  ; Wiggle it.
  rt random-float (7 - random-float 7)
  ; Turn it.
  let greatest-mass max-one-of patches in-cone 2 gravity-search-angle [ mass ]
  if greatest-mass != nobody [
    let oldheading heading ; Where were we going?
    face greatest-mass ; Head towards the greatest mass.
    let shift subtract-headings heading oldheading ; How much change was that?
    rt shift + 180 ; Turn around.
    let shifted one-of turtles in-cone (radius-cutoff * 2) 180 ; Picks a turtle.
    ifelse shifted != nobody
      [ ask shifted [ rt shift ]]        ; Conserve angular momentum
      [ ask one-of turtles [ rt shift ]] ; somewhere,
    lt 180 + shift                       ; and turn back.

to moveit ; turtle procedure
  ; Move particles less around particles with dissimilar headings.
  let similar 1 let all 1
  let vectors other turtles in-radius 3
  if vectors != nobody [
    if count vectors > 3 [ set vectors (n-of 3 vectors) ]
    ask vectors [ ; Only looking at up to three nearby particles.
      let distancenow  (1 / (1 + distance myself)) ; Smaller effect further away.
      let angle subtract-headings heading [ heading ] of myself
      ; Scale to speed between ~0 and 1.
      set similar (similar + ((((90 - (abs angle)) / -180) + 0.5)) * distancenow)
      set all (all + distancenow)
  fd (similar / all)

; Adjusting the population routines

to adjust-population
  set nofreeze population
  ask patches [ annihilate ]
  QF ; Comment this out if you don't want 5% random fluctuation.
  more less

to annihilate ; patch procedure
  ; Ask each patch if they have antimatter and normal-matter.
  let A one-of antimatter in-radius 2
  let C one-of normal-matter in-radius 2
  if A != nobody [
    if C != nobody [
      ask A [
        ask C [
        ; Ask if headings cancel each other out.
          if abs subtract-headings heading [ heading ] of myself > 150 [
            ; Then annihilate both.
            ask A [die] ask C [die]
            annihilate ; And repeat.

to QF
  ; 'Quantum fluctuation' to make a random particle.
  ; Useful to try to not get stuck at 100% antimatter or normal-matter.
  if any? turtles [
    if random 100 = 5 [
      ask one-of turtles [ die ]

to more
  ; Create a new particle when the population is below the initial population.
  if count turtles < population [
    set nofreeze nofreeze - 1
    if nofreeze > 0 [ ; Protects the program from looping too much.
      ask one-of patches [
        ; Puts more weight on spots with less mass.
        if random (mass + 1) = 1 [ make-particle ]
    more ; Repeat until the population is stable or nofreeze =< 0.

to make-particle  ; patch procedure
  ; Creates a new particle depending on the bias at the location.
  If bias > 0 [
    ; Antimatter bias in blueshifted areas.
    sprout-antimatter 1 [ set color green  set shape "triangle" ]]
  Ifelse bias < 0 [
    ; Normal-matter bias in redshifted areas.
    sprout-normal-matter 1 [ set color yellow set shape "triangle 2" ]]
    ; No bias if no shift or balanced shifts.
    [ make-random-particle ]
  set nofreeze population
  more ; Repeat.

to make-random-particle ; patch procedure
  ; 50% chance of creating either antimatter or normal-matter.
  ifelse random 2 = 1
    [ sprout-antimatter 1    [ set color green  set shape "triangle"   ]]

to less
  ; Destroy a random particle if the population slider is lowered.
  if count turtles > population [
    ask one-of turtles [ die ] less ; Repeat until the population is stable.

There are 2 versions of this model.

Uploaded by When Description Download
Dylan Coyle 18 days ago removed control flow extension so web version will work. Download this version
Dylan Coyle 19 days ago Initial upload Download this version

Attached files

File Type Description Last updated
Antimatter Suppression.png preview Preview for 'Antimatter Suppression' 19 days ago, by Dylan Coyle Download

This model does not have any ancestors.

This model does not have any descendants.