Photosynthesis

Photosynthesis preview image

1 collaborator

Default-person Michael Novak (Author)

Tags

(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by the author
Model was written in NetLogo 6.0.4 • Viewed 2146 times • Downloaded 36 times • Run 0 times
Download the 'Photosynthesis' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


WHAT IS IT?

The simulation shows the relationship between the inputs and outputs of photosynthesis through a series multistep series of chemical reactions occuring in chloropasts.

The multistep process shown occuring in a chloroplasts in this simulation represents a series of more complex substeps in photosynthesis, including the light reactions and the Calvin cycle. The simulation shows something that looks like electrical energy and white dots within the chloroplasts getting built up when water molecules are converted to oxygen molecules. This an be seein occuring before each new carbon dioxide molecule is disassembled. This represents some of the electrical potential that is built up as hydrogen ions are removed from water in the light reactions and ATP is produced. These light reactions produce oxygen gas before glucose is fully formed. Gradual rearrangement of carbon dioxide molecules is shown occurring before a fully formed glucose molecule is produced. This represents some of the gradual rearrangement of carbon and oxygen atoms from carbon dioxide and hydrogen atoms from water that occurs in the Calvin cycle, though the intermediate arrangements of those carbon atoms are different than those shown in the simulation.

HOW TO USE IT

  1. Adjust the slider parameters (see below), or use the default settings.
  2. Press the SETUP button.
  3. Press the GO/PAUSE button to begin the model run.

THINGS TO TRY

Compare how the outputs(oxygen produced and sugar produced) in investigation B as are affected affected when a single independent variable Llight, carbon dioxide, water, number of chloroplasts)for a given length of imulation run.

CREDITS AND REFERENCES

This version of the model is part of the OpenSciEd Middle School instructional units developed with funding from the Carnegie Corporation of New York.

The orignal model it was developed form, was part of the iHub/nextgenstorylines Hight School Evolution developed with funding through grants from the National Science Foundation, the Gordon and Betty Moore Foundation, Denver Public Schools to Northwestern University and the University of Colorado Boulder.

For more information about this project, see the nextgenstorylines website: http://www.nextgenstorylines.org/how-do-small-changes-make-big-impacts-on-ecosystems-part-2/

HOW TO CITE

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 AND LICENSE

Copyright 2015 Uri Wilensky.

CC BY-NC-SA 3.0

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/3.0/ 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 uri@northwestern.edu.

Comments and Questions

The sugar production stops (Question)

I have noted in this model the sugar productions stops when co2 is depleted. I have adjusted the light intensity to reduce the production of oxygen , but that doe snot appear to have any impact. Is this intended and if so why? If not is it a bug?

Posted almost 3 years ago

Click to Run Model

breed [co2s co2]
breed [o2s o2]
breed [h2os h2o]
breed [sugars sugar]
breed [photons photon]
breed [chloroplasts chloroplast]
breed [atps atp]
breed [panels panelp]
breed [carbon-complexes carbon-complex]
breed [flows flow]
breed [side-panels side-panel]
breed [key-labels key-label]
breed [breaks break]

co2s-own [for-key]
o2s-own [for-key]
h2os-own [bound-to for-key]
photons-own [bound-to for-key]
atps-own [pair my-chloroplast state for-key]
sugars-own [for-key]
key-labels-own [for-key]


panels-own [pair my-chloroplast state age]
carbon-complexes-own [my-chloroplast ]
patches-own [region]


globals [
  #-co2-molecules
  #-o2-molecules
  #-glucose-molecules-produced
]

to start-up
  setup
end 

to setup
  clear-all
  ;import-world "Zoom.csv"
  ; import-drawing "Zoom.png"

  set #-co2-molecules initial-carbon-dioxide
  set #-o2-molecules 0
  set #-glucose-molecules-produced 0


  create-co2s initial-carbon-dioxide [setxy (-10 + random-float 20) random 20  set-shape-size ]


  create-sugars 1      [setxy 14.2 -5.5 set-shape-size set for-key 1]
  create-key-labels 1  [setxy 16 -6.8 set shape "empty" set label "sugar (glucose)"]
  create-breaks 1     [setxy 13.95 -3.8 set shape "break" set color gray + 2 set size 6.7]

  create-key-labels 1  [setxy 15.2 -7.6 set shape "empty" set label "molecule"]
  create-co2s 1        [setxy 14.2 -1.5 set-shape-size set for-key 1]
  create-key-labels 1  [setxy 16.2 -2.4 set shape "empty" set label "carbon dioxide"]
  create-breaks 1     [setxy 13.95 -0.0 set shape "break" set color gray + 2 set size 6.7]


  create-key-labels 1  [setxy 15.2 -3.1 set shape "empty" set label "molecule"]
  create-o2s 1         [setxy 14.2 1.4 set-shape-size set for-key 1]
  create-key-labels 1  [setxy 16.4 0.7 set shape "empty" set label "oxygen molecule"]
  create-breaks 1     [setxy 13.95 2.8 set shape "break" set color gray + 2 set size 6.7]

  create-h2os 1        [setxy 14.3 4.4 set-shape-size set for-key 1]
  create-key-labels 1  [setxy 16.1 3.7 set shape "empty" set label "water molecule"]
  create-breaks 1     [setxy 13.95 5.8 set shape "break" set color gray + 2 set size 6.7]


  create-key-labels 1 [setxy 14.3 7.5 set color yellow + 3 set size 0.6 set heading 135 set shape "ray" set for-key 1.2]
  create-key-labels 1  [setxy 14.5 6.5 set shape "empty" set label "light"]
  create-key-labels 1  [setxy 14.3 9 set shape "empty" set label-color black set label "KEY"]
  if initial-#-of-chloroplasts > 0 [make-initial-chloroplasts]
  make-system-boundary
  make-flows
  reset-ticks
end 

to set-shape-size
  let new-size 2.5
  if breed = sugars [set shape "sugar" set color black set size new-size ]
  if breed = chloroplasts [set color [0 200 0 150] set shape "circle" set size 4 ]
  if breed = h2os [set shape "h20"  set color black set size new-size ]
  if breed = co2s [set shape "co2" set color black set size new-size ]
  if breed = o2s [set shape "o2" set color black set size new-size ]
  if breed = photons [set color yellow + 3 set size 0.6 set heading 135 set shape "ray"]
end 

to make-initial-chloroplasts
  let angle-increment 0
  let off-set random 360
  let divider 360 / initial-#-of-chloroplasts

  repeat initial-#-of-chloroplasts [
  create-chloroplasts 1 [

    set heading (off-set + (angle-increment * (divider)  + random (divider / 3) - random  (divider / 3)))
    fd (3.5 + random-float 3.5)
    set-shape-size
    ]
    set angle-increment angle-increment + 1
  ]

  ask chloroplasts [
    let atp-count 0
    let atp-offset random 60
    let this-chloroplast self
    let this-pair 0
    set heading 0


    repeat 3 [
      repeat 2 [
        hatch 1 [set breed atps set heading (atp-offset + (atp-count * 60)) set my-chloroplast this-chloroplast set hidden? true set pair this-pair set state 0]
        set atp-count atp-count + 1
      ]

      set this-pair this-pair + 1
    ]
  ]
end 

to make-flows
  create-flows 1 [set heading 90 set hidden? true]
end 

to make-system-boundary
    ask patches [
    if ((pxcor < -9 or pxcor > 10) and (pycor = max-pycor or pycor = min-pycor)) or (pycor = max-pycor or pycor = min-pycor) or (pxcor = -10 or pxcor = 10 ) or (pycor = 0 and pxcor < -10 ) or (pxcor = min-pxcor or pxcor = max-pxcor) [
      sprout 1 [set breed side-panels set shape "square" set size 1.2 set color [180 180 180]]
    ]

    if ((pxcor = -9) or ((pxcor >= -9 and pxcor < 10) and pycor = max-pycor)) [set region 3]
    if (pxcor >  -9 and pxcor < 10 and pycor != max-pycor)    [set region 4]

    if ((pxcor = 10) or ((pxcor >= -9 and pxcor < 10) and pycor = min-pycor)) [set region 5]
    if (pxcor > 10)    [set region 6]


    if region = 4 [sprout 1  [set shape "square" set size 1.2 set color sky + 2 stamp die]]
    if region = 6 [sprout 1  [set shape "square" set size 1.0 set color gray stamp die]]
     ]
end 

to do-photon-flow

  if intensity-of-light > random 100 [
  ask n-of 1 patches with [region = 3] [
    sprout 1  [
      set breed photons
        set-shape-size
        set hidden? true
    ]

  ]
  ]
  ask photons [
    if for-key != 1 [fd 0.15 set bound-to 0]
    if for-key != 1 and region = 5 [die]
    if pxcor >= -9.6 [set hidden? false]
  ]
end 

to do-water-flow
  if waterflow-through-leaf > random 100 and random 3 = 0 [
    ask n-of 1 patches with [region = 3 and pycor < max-pycor]  [
      sprout 1 [
        set breed h2os
        set-shape-size
        set hidden? true
        create-link-from one-of flows [ tie set hidden? true ]
      ]
    ]
  ]
  ask h2os [
    if for-key != 1 [fd 0.01 rt random 10 lt random 10]
    if (pxcor >= 10 and for-key != 1 ) [die]
    if for-key = 1 [set hidden? false]
    if pxcor >= -9.6 [set hidden? false]
    if pycor > (max-pycor - .4) [set hidden? true]
    if pycor < (min-pycor + .4) [set hidden? true]
  ]
end 

to do-sugar-flow
    ask sugars [
    if for-key != 1 [fd 0.005 rt random 10 lt random 10]
    if (pxcor >= 10 and for-key != 1 )[die]
    if for-key = 1 [set hidden? false]
  ]
end 

to do-gas-flow
  ask co2s with [for-key != 1] [
    fd 0.08 rt random-float 0.005 lt random-float 0.005
    if xcor > 10 [set xcor -9]
    if xcor < -9 [set xcor 10]
  ]
  ask o2s with [for-key != 1]  [fd 0.05]
end 

to go

  ask turtles with [breed = co2s or breed = o2s or breed = h2os or breed = sugars or breed = photons] [
    ifelse region = 4 or for-key = 1 [set hidden? false][set hidden? true]
  ]
  do-photon-flow
  do-water-flow
  do-sugar-flow
  do-gas-flow
  ask flows [fd 0.05]
  ask side-panels [set hidden? false]




  ask atps with [state = 0] [
    let this-pair pair
    let this-chloroplasts my-chloroplast
    let h2os-near-me h2os in-radius 2
    let photons-near-me photons in-radius 2
    let total-atps atps with [pair = this-pair and my-chloroplast = this-chloroplasts  and state = 0]
    let other-charged-atps atps with [pair != this-pair and my-chloroplast = this-chloroplasts  and state = 1]
    if any? photons-near-me and any? h2os-near-me and not any? other-charged-atps  [
      if count h2os-near-me >= 2 and count total-atps = 2 [

        ask one-of h2os-near-me  [die]
        ask one-of other h2os-near-me [die]

        hatch 1 [set breed o2s set shape "o2" set size 2 set heading random 360]
        set hidden? false set state 1
        ask total-atps [set hidden? false set state 1]
    ]
    ]
  ]
  ask atps [ask photons in-radius 2 [die]]

  ask atps with [state = 1] [
    let this-pair pair
    let this-chloroplasts my-chloroplast
    let total-atps atps with [not hidden? and pair = this-pair and my-chloroplast = this-chloroplasts  and state = 1]

     ; show count total-atps
    if count total-atps = 2 [
      let co2s-near-me co2s in-radius 2
     ; show count co2s-near-me
      if count co2s-near-me >= 2 [

      let other-atps one-of other total-atps

      ask one-of co2s-near-me [
        set heading [heading] of myself
        setxy ([xcor] of myself) ([ycor] of myself)
        set breed carbon-complexes
        set my-chloroplast this-chloroplasts
        set shape "carbon-complexes"

        ask one-of other co2s-near-me [
          set heading [heading] of other-atps
          setxy ([xcor] of other-atps) ([ycor] of other-atps)
          set breed carbon-complexes
          set my-chloroplast this-chloroplasts
          set shape "carbon-complexes"
        ]
        hatch 1 [set breed o2s set shape "o2" set size 2 set heading random 360]
      ]
      ask total-atps [set state -1]

    ]

    ]
  ]
  ask atps with [state = 1] [set hidden? false set color (orange + 3 + random-float 1) set shape (word "electric-" random 10)]
  ask atps with [state != 1] [set hidden? true]

  ask chloroplasts [
    let this-chloroplast self
    let my-carbon-complexes carbon-complexes with [my-chloroplast = this-chloroplast]
    if count my-carbon-complexes = 6 [
      ask my-carbon-complexes with [my-chloroplast = this-chloroplast] [die]
      hatch 1 [set breed sugars set shape "sugar" set color black set heading random 360 set size 2 create-link-from one-of flows [ tie set hidden? true ]]
     set #-glucose-molecules-produced #-glucose-molecules-produced + 1
      ask atps with [my-chloroplast = this-chloroplast] [set hidden? true set state 0]
    ]

  ]
 update-counts
; wait delay

  tick
end 

to update-counts
  set #-co2-molecules count co2s with [for-key != 1]
 set #-o2-molecules count o2s  with [for-key != 1]
end 

There are 3 versions of this model.

Uploaded by When Description Download
Michael Novak about 5 years ago new name Download this version
Michael Novak about 5 years ago new name Download this version
Michael Novak over 5 years ago Initial upload Download this version

Attached files

File Type Description Last updated
Photosynthesis.png preview Preview for 'Photosynthesis' over 5 years ago, by Michael Novak Download

This model does not have any ancestors.

This model does not have any descendants.