breed [leaves leaf]
breed [dead-leaves dead-leaf]
breed [raindrops raindrop]
breed [suns sun]

leaves-own [
  water-level       ;; množství vody v listu
  sugar-level       ;; množství cukru v listu
  attachedness      ;; jak pevně je list přichycen ke stromu
  chlorophyll       ;; úroveň chemických látek způsobujících zelené zbarvení listu
  carotene          ;; úroveň chemických látek způsobujících žluté zbarvení listu
  anthocyanin       ;; úroveň chemických látek způsobujících červené zbarvení listu
]

raindrops-own [
  location          ;; oblasti s vodou, mohou nabývat hodnoty "falling" (padající), "in root" (v kořenech), "in trunk" (v kmeni), or "in leaves (v listech)"
  amount-of-water
]

globals [
  bottom-line        ;; ovládá výšku země
  evaporation-temp   ;; teplota při které se vypařuje voda
]

;; ---------------------------------------
;; PROCEDURY TLAČÍTKA PŘIPRAV
;; ---------------------------------------

to setup
  clear-all
  set bottom-line min-pycor + 1
  set evaporation-temp 30
  set-default-shape raindrops "circle"
  set-default-shape suns "circle"

  ;; Vytvoří nebe a trávu
  ask patches
    [ set pcolor blue - 2 ]
  ask patches with [pycor < min-pycor + 2]
    [ set pcolor green ]

  ;; Vytvoří listy
  create-leaves pocet-listu [
    set chlorophyll 50 + random 50
    set water-level 75 + random 25
    ;; hladina cukru odpovídá normálnímu rozdělení, určenému následujícími (uživatelem) definovanými vstupy
    set sugar-level random-normal pocatecni-cukr-str-hodnota pocatecni-cukr-smer-odchylka
    set carotene random 100
    change-color
    set attachedness 100 + random 50
    ;; Použití "sqrt" (odmocnina) v násedujícím příkazu způsobí
    ;; rovnoměrné rozložení želv; pokud bychom zadali pouze "fd random-float 10",
    ;; bylo by více želv blíž u středu stromu, což by vypadalo směšně.
    
    fd sqrt random-float 100
  ]

  ;; Vytvoří kmen a větve
  ask patches with [pxcor = 0 and pycor <= 5 or
                    abs pxcor = (pycor + 2) and pycor < 4 or
                    abs pxcor = (pycor + 8) and pycor < 3]
    [ set pcolor brown ]

  ;; Vytvoří slunce
  create-suns 1 [
    setxy max-pxcor - 2
          max-pycor - 3
    ;; upraví vzhled slunce podle jeho intenzity
    show-intensity
  ]

  ;; zanese do grafu počáteční stav
  do-plot
end


;; ---------------------------------------
;; PROCEDURY TLAČÍTKA START
;; ---------------------------------------

to go
  ;; Zastaví model, pokud jsou všechny listy mrtvé
  if not any? leaves [ stop ]

  ;; Následující procedury zajistí foukání větru a padání kapek deště;
  ;; dále pohyb vody na nebi, v zemi i ve stromě;
  ;; nastaví vzhled slunce podle jeho intenzity
  make-wind-blow
  make-rain-fall
  move-water
  ask suns [ show-intensity ]

  ;; Nastaví listům hodnoty dle příslušných parametrů
  ask attached-leaves
  [
    adjust-water
    adjust-chlorophyll
    adjust-sugar
    change-color
    change-shape
  ]

  ;; Pokud listy opadají, budou pokračovat v padání
  ask leaves [ fall-if-necessary ]

  ;; Pokud se opadající listy dotkou země, zemřou
  ask leaves with [ycor <= bottom-line]
    [ set breed dead-leaves ]

  ;; Listy bez vody také zemřou
  ask leaves with [water-level < 1]
    [ set attachedness 0 ]

  ;; Kontroluje, zda jsou příslušné hodnoty v intervalu 0 - 100
  ask leaves [
    if chlorophyll < 0 [ set chlorophyll 0 ]
    if chlorophyll > 100 [ set chlorophyll 100 ]
    if water-level < 0 [ set water-level 0 ]
    if water-level > 100 [ set water-level 100 ]
    if sugar-level < 0 [ set sugar-level 0 ]
    if sugar-level > 100 [ set sugar-level 100 ]
    if carotene < 0 [ set carotene 0 ]
    if carotene > 100 [ set carotene 100 ]
    if anthocyanin < 0 [ set anthocyanin 0 ]
    if anthocyanin > 100 [ set anthocyanin 100 ]
    if attachedness < 0 [ set attachedness 0 ]
    if attachedness > 100 [ set attachedness 100 ]
  ]

  ;; Zvýší čas o jeden krok
  tick

  ;; Vykreslí aktuální dění v modelu do grafů
  do-plot
end


;; ---------------------------------------
;; Procedura foukání větru. Když vítr fouká,
;; listy se lehce pohybují (což má pěkný 
;; vizuální efekt) a redukuje se jejich faktor 
;; přilnavosti podle síly větru. To
;; znamená, že listy budou padat rychleji,
;; pokud bude vítr silnější.
;; ---------------------------------------

to make-wind-blow
  ask leaves [ ifelse random 2 = 1
                 [ rt 10 * sila-vetru ]
                 [ lt 10 * sila-vetru ]
               set attachedness attachedness - sila-vetru
             ]
end


;; ---------------------------------------
;; Procedura padání deště. Déšť má svůj vlastí rod (breed)
;; malých želv, které se pohybují od horního okraje okna modelu. 
;; ---------------------------------------

to make-rain-fall
  ;; Vytvoří nové dešťové kapky na horní hranici okna
  create-raindrops intenzita-deste [
    setxy random-xcor max-pycor
    set heading 180
    fd 0.5 - random-float 1.0
    set size .3
    set color gray
    set location "falling"
    set amount-of-water 10
  ]
  ;; Rozpohybuje všechny kapky, včetně těch,
  ;; které byly právě vytvořeny
  ask raindrops [ fd random-float 2 ]
end


;; --------------------------------------------------------
;; Procedura pohybu vody: Voda se pohybuje kapky -> země,
;; země -> kmen/větve a z kmene/větví do listů.
;; --------------------------------------------------------

to move-water

  ;; Předpokládáme, že kořeny zabírají celou plochu zobrazené travnaté země.
  ;; Dešťová voda se přesunuje ze země do kmene stromu.
  ask raindrops with [location = "falling" and pcolor = green] [
    set location "in roots"
    face patch 0 ycor
  ]

  ;; Voda je vedena z kmene do střední části stromu.
  ask raindrops with [location = "in roots" and pcolor = brown] [
    face patch 0 0
    set location "in trunk"
  ]

  ;; Voda se pohybuje z kmene do listů. Není zde 
  ;; simulován reálný pohyb skrze větve stromu.
  ask raindrops with [location = "in trunk" and patch-here = patch 0 0] [
    set location "in leaves"
    set heading random 360
  ]

  ;; Pokud se dešťová kapka dostane do listu a žádná přebytečná voda nezbyde, pak kapka zmizí.
  ask raindrops with [location = "in leaves" and amount-of-water <= 0.5] [
    die
  ]

  ;; Pokud je kapka v kmeni a už nejsou volné listy,
  ;; kam by mohla téci, pak kapka také zmizí.
  ask raindrops with [
    (location = "in trunk" or location = "in leaves")
     and (ycor > max [ycor] of leaves or
          xcor > max [xcor] of leaves or
          xcor < min [xcor] of leaves) ] [
    die
  ]

end

;;---------------------------------------------------------
;; PROCEDURY ŽELV
;; --------------------------------------------------------

;; --------------------------------------------------------
;; Procedura zobrazení intenzity. Mění zobrazení slunce 
;; podle intenzity jeho svitu.
;; --------------------------------------------------------

to show-intensity  ;; procedura slunce
  set color scale-color yellow intenzita-slunce 0 150
  set size intenzita-slunce / 10
  set label word intenzita-slunce "%"
  ifelse intenzita-slunce < 50
    [ set label-color yellow ]
    [ set label-color black  ]
end

;; --------------------------------------------------------
;; Procedura nastavení vody. 
;; Zvyšuje a snižuje hladinu vody v listech.
;; --------------------------------------------------------

to adjust-water
  ;; Pod jistou hranicí teploty přestanou listy absorbovat vodu.
  ;; Místo ní přeměňují cukr a vodu na anthokyanin.
  if teplota < 10 [ stop  ]

  ;; Pokud je v blízkosti listu kapka s aplespoň trochou vody,
  ;; vstřebá list část této vody.
  let nearby-raindrops raindrops in-radius 2 with [location = "in leaves" and amount-of-water >= 0]

  if any? nearby-raindrops [
    let my-raindrop min-one-of nearby-raindrops [distance myself]
    set water-level water-level + ([amount-of-water] of my-raindrop * 0.20)
    ask my-raindrop [
      set amount-of-water (amount-of-water * 0.80)
    ]
  ]

  ;; Sníží množství vody v závislosti na teplotě
  if teplota > evaporation-temp
    [ set water-level water-level - (0.5 * (teplota - evaporation-temp)) ]

  ;; Pokud je hladina vody v listu příliš nízká, snižuje se jeho přilnavost
  if water-level < 25
    [ set attachedness attachedness - 1 ]

end


;; ---------------------------------------
;; Procedura nastavení chlorofylu. Množství chlorofylu se
;; snižuje, pokud je teplota příliš nízká nebo když je slunce příliš silné.
;; Množství chlorofylu se naopak zvyšuje za normální teploty a přiměřéného  
;; dostatku slunečního světla.
;; ---------------------------------------

to adjust-chlorophyll

  ;; Pokud je teplota příliš nízká, sníží množství chlorofylu
  if teplota < 15
    [ set chlorophyll chlorophyll - (.5 * (15 - teplota)) ]

  ;; Pokud slunce příliš silné, sníží množství chlorofylu
  if intenzita-slunce > 75
    [ set chlorophyll chlorophyll - (.5 * (intenzita-slunce - 75)) ]

  ;; Nový chlorofyl způsobený přiměřeným teplem a světlem.
  if teplota > 15 and intenzita-slunce > 20
    [ set chlorophyll chlorophyll + 1 ]

end


;; ---------------------------------------
;; Procedura nastavení cukru. Voda + sluneční světlo + chlorofyl = cukr.
;; ---------------------------------------

to adjust-sugar
  ;; Pokud je k dispozici dostatek vody a slunečního světla, sníží množství
  ;; chlorfylu a vody a zvýší hladinu cukru.
  if water-level > 1 and intenzita-slunce > 20 and chlorophyll > 1
    [ set water-level water-level - 0.5
      set chlorophyll chlorophyll - 0.5
      set sugar-level sugar-level + 1
      set attachedness attachedness + 5
    ]

  ;; S každým časovým krokem se sníží hladina cukru o 1.
  set sugar-level sugar-level - 0.5
end

;; ---------------------------------------
;; Procedura padání listů. Pokud je list v prostoru mezi 
;; korunou stromu a hranicí země, pak padá.
;; Ve chvíli dopadu na zem umírá.
;; ---------------------------------------

to fall-if-necessary
  if attachedness > 0 [ stop ]
  if ycor > bottom-line
    [
      let target-xcor (xcor + random-float sila-vetru
                            - random-float sila-vetru)
      facexy target-xcor bottom-line
      fd random-float (.7 * max (list sila-vetru .5))
     ]
end


;; ---------------------------------------
;; Procedura změny barev. Jelikož má NetLogo omezenou paletu barev,
;; potřebujeme velmi jednoduchá pravidla. 
;; ---------------------------------------

to change-color
  ;; Pokud je teplota nízká, promění 
  ;; cukr na anthokyanin.
  if teplota < 20 and sugar-level > 0 and water-level > 0
    [ set sugar-level sugar-level - 1
      set water-level water-level - 1
      set anthocyanin anthocyanin + 1 ]

  ;; Pokud je chlorofylu více než 50 procent, pak se list zbarví 
  ;; zeleně a to v takovém odstínu, který odpovídá koncentraci chlorofylu.
  ifelse chlorophyll > 50
       [ set color scale-color green chlorophyll 150 -50 ]

  ;; Pokud je v listu méně než 50 procent chlorofylu, pak se
  ;; zbarví žlutě (podle koncentrace karotenu), červeně (podle koncentrace anthokyaninu) 
  ;; nebo oranžově (pokud jsou obě zmíněné koncentrace stejně vysoké).

       ;; Pokud je zhruba stejné množství karotenu a anthokyaninu
       ;; pak má mít list oranžové odstíny.
       [ if abs (anthocyanin - carotene ) < 10
           [ set color scale-color orange carotene 150 -50 ]

         if anthocyanin > carotene + 10
           [ set color scale-color red anthocyanin 170 -50 ]

         if carotene > anthocyanin + 10
           [ set color scale-color yellow carotene 150 -50 ]
       ]
end

to change-shape
  ifelse zobrazeni-listu = "pevné"
    [ set shape "default" ]
  [ if zobrazeni-listu = "chlorofyl"
      [ set-shape-for-value chlorophyll ]
    if zobrazeni-listu = "voda"
      [ set-shape-for-value water-level ]
    if zobrazeni-listu = "cukr"
      [ set-shape-for-value sugar-level ]
    if zobrazeni-listu = "karoten"
      [ set-shape-for-value carotene ]
    if zobrazeni-listu = "anthokyaniny"
      [ set-shape-for-value anthocyanin ]
    if zobrazeni-listu = "přilnavost"
      [ set-shape-for-value attachedness ]
  ]
end


;; ---------------------------------------
;; PROCEDURY GRAFŮ
;; ---------------------------------------

;; ---------------------------------------
;; Procedury grafů. Vykreslují do grafů 
;; aktuální hodnoty proměnných.
;; ---------------------------------------

to do-plot
    ;; Vykresluje informaci o počtu listů
    set-current-plot "Listy"

    set-current-plot-pen "listy"
    plot count leaves

    set-current-plot-pen "mrtvé listy"
    plot count dead-leaves

    ;; Vykresluje informace o podnebních podmínkách
    set-current-plot "Počasí"

    set-current-plot-pen "teplota"
    plot teplota

    set-current-plot-pen "sluneční svit"
    plot intenzita-slunce

    set-current-plot-pen "déšť"
    plot intenzita-deste

    set-current-plot-pen "vítr"
    plot sila-vetru

    ;; Vykresluje informace o listech
    if any? leaves [

      set-current-plot "Charakteristiky listů (průměry)"

      set-current-plot-pen "voda"
      plot mean [water-level] of leaves

      set-current-plot-pen "chlorofyl"
      plot mean [chlorophyll] of leaves

      set-current-plot-pen "cukr"
      plot mean [sugar-level] of leaves

      set-current-plot-pen "karoten"
      plot mean [carotene] of leaves

      set-current-plot-pen "anthokyaniny"
      plot mean [anthocyanin] of leaves

      set-current-plot-pen "přilnavost"
      plot mean [attachedness] of leaves
   ]
end

;; Vrací všechny listy, které ještě neopadly
to-report attached-leaves
  report leaves with [attachedness > 0]
end

;; Mění zobrazení listu podle toho, zda jsou více či méně plný zvolených chemických látek. 
to set-shape-for-value [value]
  ifelse value > 75 [ set shape "default" ]
  [ ifelse value <= 25 [ set shape "default one-quarter" ]
    [ ifelse value <= 50 [ set shape "default half" ]
                         [ set shape "default three-quarter" ]]]
end


; *** NetLogo 4.0.3 Model Copyright Notice ***
;
; Copyright 2005 by Uri Wilensky.  All rights reserved.
;
; Permission to use, modify or redistribute this model is hereby granted,
; provided that both of the following requirements are followed:
; a) this copyright notice is included.
; b) this model will not be redistributed for profit without permission
;    from Uri Wilensky.
; Contact Uri Wilensky for appropriate licenses for redistribution for
; profit.
;
; To refer to this model in academic publications, please use:
; Wilensky, U. (2005).  NetLogo Autumn model.
; http://ccl.northwestern.edu/netlogo/models/Autumn.
; Center for Connected Learning and Computer-Based Modeling,
; Northwestern University, Evanston, IL.
;
; In other publications, please use:
; Copyright 2005 Uri Wilensky.  All rights reserved.
; See http://ccl.northwestern.edu/netlogo/models/Autumn
; for terms of use.
;
; *** End of NetLogo 4.0.3 Model Copyright Notice ***
@#$#@#$#@
GRAPHICS-WINDOW
350
154
710
535
17
17
10.0
1
12
1
1
1
0
0
0
1
-17
17
-17
17
1
1
1
ticks

SLIDER
12
15
343
48
pocet-listu
pocet-listu
1
2500
278
1
1
NIL
HORIZONTAL

BUTTON
385
16
456
49
Připrav
setup
NIL
1
T
OBSERVER
NIL
NIL
NIL
NIL

SLIDER
500
79
705
112
sila-vetru
sila-vetru
0
10
3
1
1
NIL
HORIZONTAL

BUTTON
386
54
456
87
Start
go
T
1
T
OBSERVER
NIL
NIL
NIL
NIL

SLIDER
500
10
707
43
teplota
teplota
0
40
10
1
1
stupňů Celsia
HORIZONTAL

SLIDER
500
44
706
77
intenzita-deste
intenzita-deste
0
30
19
1
1
NIL
HORIZONTAL

SLIDER
500
115
706
148
intenzita-slunce
intenzita-slunce
0
100
97
1
1
%
HORIZONTAL

PLOT
11
151
342
281
Listy
čas
NIL
0.0
10.0
0.0
100.0
true
true
PENS
"listy" 1.0 0 -10899396 true
"mrtvé listy" 1.0 0 -6459832 true

PLOT
11
282
343
402
Počasí
čas
NIL
0.0
10.0
0.0
10.0
true
true
PENS
"teplota" 1.0 0 -2674135 true
"déšť" 1.0 0 -13345367 true
"vítr" 1.0 0 -16777216 true
"sluneční svit" 1.0 0 -1184463 true

PLOT
11
401
342
532
Charakteristiky listů (průměry)
čas
NIL
0.0
10.0
0.0
10.0
true
true
PENS
"chlorofyl" 1.0 0 -10899396 true
"voda" 1.0 0 -13345367 true
"cukr" 1.0 0 -7500403 true
"karoten" 1.0 0 -1184463 true
"anthokyaniny" 1.0 0 -2674135 true
"přilnavost" 1.0 0 -16777216 true

SLIDER
68
60
276
93
pocatecni-cukr-str-hodnota
pocatecni-cukr-str-hodnota
0
100
50
1
1
NIL
HORIZONTAL

SLIDER
68
101
276
134
pocatecni-cukr-smer-odchylka
pocatecni-cukr-smer-odchylka
0
50
25
1
1
NIL
HORIZONTAL

CHOOSER
351
102
495
147
zobrazeni-listu
zobrazeni-listu
"pevné" "chlorofyl" "voda" "cukr" "karoten" "anthokyaniny" "přilnavost"
0

@#$#@#$#@
CO TO JE?
---------

Pokud žijete v podnebí, kde se střídají horká léta s chladnými zimními obdobími, pak zřejmě znáte překrásný podzimní jev, při kterém listy mění barvy předtím, než uhynou a opadnou ze stromů. Tento model simuluje proces, ve kterém dochází ke změnám barvy a opadávání, čímž umožňuje prozkoumat a pochopit tuto nádhernou každoroční podívanou. 

JAK TO FUNGUJE?
---------------

Důvody, proč a jak listy mění svou barvu a opadají, jsou překvapivě složité a souvisí s kombinací slunečního svitu, tepla a deště. (Listy mohou být také odfouknuty silným větrem, dokonce, i když ještě nezačaly měnit barvu, tudíž vítr také hraje svoji roli.)

Barvy, které lze pozorovat na stonku každého listu, jsou způsobeny přítomností látek, které jsou tvořeny a uloženy v každém listu. Celkem tři látky ovlivňují barvu listů.

Zelenou barvu způsobuje chlorofyl (nebo množina příbuzných látek, známá jako chlorofyly), který přeměňuje sluneční světlo a vodu na cukr. Molekuly chlorofylu jsou ničeny a nejsou obnovovány, pokud jsou vystaveny nadměrnému slunečnímu svitu a nízkým teplotám. Proto studené a slunečné podzimní dny způsobují pokles koncentrace chlorofylu. Celková koncentrace chlorofylu roste s množstvím slunečního světla (dokud ho není příliš mnoho) za přítomnosti dostatku vody.

Žlutá barva je způsobena látkou s názvem karoten. Molekuly karotenu mimo jiné zapříčiňují také typické zbarvení mrkve. Koncentrace karotenu zůstává v průběhu života každého listu konstantní. Přesto je žlutá barva často překryta zelenou barvou chlorofylu. List s vysokou hladinou chlorofylu (typicky v létě) bude zcela zelená, ačkoliv bude obsahovat odstíny žluté, maskované zelenou barvou. Jak postupně chlorofylu ubývá, stává se přítomnost karotenu stále více nápadná, až je nakonec celý list žlutý.

Červenou barvu způsobuje látka nazvaná anthokyanin. Molekuly anthokyaninu jsou vytvářeny za přítomnosti vysoké koncentrace cukru a vody v listech. (Čím vyšší je koncentrace cukru, tím více je vytvořeno anthokyaninu.) Koncentrace cukru se zvyšuje, když studené počasí způsobí uzavření oběhu vody do zbytku stromu; voda a cukr jsou pak zachyceny v listu a přeměněny v anthokyaniny.

V každém časovém kroku modelu probíhají dva procesy: 1) počasí (déšť, vítr, slunce) působí na listy, čímž pozitivně či negativně ovlivňuje hladiny cukru, vody a chlorofylu; 2) listy reagují na své vnější prostředí, vytvářejí dle aktuální situace anthokyaniny a mění barvu.

Voda se nedostává do listů přímo, ale je absorbována kořeny stromu, ze kterých putuje kmenem do větví a dále do listů. V tomto modelu se předpokládá, že je celá zobrazená země protkána kořeny a veškeré kapky deště jsou vstřebány do kmene stromu, jakmile dopadnou na zem. Stejným způsobem putují veškeré kapky vody kmenem do větvení stromu (které v modelu není znázorněno) a následně do listů. Listy v sobě zadržují vodu z dešťových kapek. Kapky zmizí ve chvíli, kdy již neobsahují žádnou vodu.

Listy v modelu mají vlastnost „přilnavost“, která určuje, jak silně je list přichycen ke stromu. Přilnavost se zvyšuje s množstvím vody a je snížena během deště a větru. (Za velmi větrného dne mohou být listy odfouknuty, i když jsou ještě úplně zelené.)

Protože paleta barev NetLoga neobsahuje všechny potřebné odstíny barev, využívá tento model algoritmus pro výpočet prahových hodnot, při kterých dojde ke změnám barvy (jako odhad namísto skutečných barev). Pokud je hladina chlorofylu více než 50%, list je zelený. Pod touto hranicí získává list žluté, červené a oranžové barevné odstíny v závislosti na koncentraci karotenu a anthokyaninů.

Všimněte si, že se sytost každé barvy mění podle hladiny chlorofylu, karotenu a/nebo anthokyaninů. Proto chlorofylem nasycené stromy mají tmavě zelené listy, zatímco ty s nižší koncentrací mají listy se světlými odstíny zelené barvy. 

JAK MODEL OVLÁDAT
-----------------

Před spuštěním modelu stiskněte tlačítko PŘIPRAV. Tím vytvoříte v modelu kmen s větvemi a zároveň tím dojde k vytvoření listů, které jsou hlavními agenty v tomto modelu. Tlačítkem START uvedete model do pohybu.

Teď přichází ta zajímavá část, kterou je nastavování posuvníků v uživatelském rozhranní. Tím vytvoříte potřebné podmínky, které chcete zkoumat. Pokud listy vypadají, že ztrácí chlorofyl v důsledku nedostatku vody (jejíž úroveň můžete sledovat v grafu „Charakteristiky listů (průměry)“, můžete ovlivnit její množství pomocí posuvníku INTENZITA-DESTE. Posuvníkem SILA-VETRU zase můžete zapojit do modelu vliv větru.

Sílu slunce (ve smyslu intenzity slunečního světla) lze nastavit pomocí posuvníku INTENZITA-SLUNCE. Jak bylo zmíněno výše, listy potřebují sluneční svit k vytváření chlorofylu a cukru -- avšak příliš mnoho slunečního svitu může naopak způsobit zničení těchto chemických látek.

Nakonec změňte hodnotu posuvníku TEPLOTA. Pokud je teplota příliš nízká, dojde k rozpadu molekul chlorofylu na úkor tvorby anthokyaninů.

Poté, co si osvojíte základní ovládání modelu, můžete se věnovat nastavení dvou posuvníků v levém horním rohu - POCATECNI-CUKR-STR-HODNOTA a POCATECNI-CUKR-SMER-ODCHYLKA, které mají vliv na střední hodnotu a rozptyl počáteční distribuce cukru mezi jednotlivé listy. Kupříkladu javorové listy mají sklon začínat s vyšší koncentrací cukru, která způsobuje červenější zbarvení než u ostatních listů při jinak stejných podmínkách.

Pomocí ZOBRAZENI-LISTU lze změnit způsoby zobrazení listů. Normálně má každý list pevnou barvu podle standardních agentů (želv) v NetLogu. V tomto případě je ZOBRAZENI-LISTU nastaveno na „pevné“. Ostatní hodnoty tohoto nastavení zobrazují listy v prázdném, poloprázdném a plném tvaru v závislosti na proměnné, kterou mají zobrazovat. Pokud tedy například ZOBRAZENI-LISTU nastavíte na „voda“, bude každý z listů zobrazen jako prázdný (pokud má málo vody), poloprázdný (pokud má o trochu více vody), nebo plný (pokud je relativně plný vody). 

VŠIMNĚTE SI
-----------

Listy absorbují vodu, když na ně dopadají dešťové kapky -- to znamená, že mírný déšť a vysoký počet listů způsobí, že dešťová voda nepronikne k „vnitřním“ listům koruny.

Čím silnější vítr, tím více se každý list třese (a tím má také větší šanci opadnout).

Můžete simulovat dopad menšího hurikánu pomocí nastavení síly větru a deště na jejich maximální hodnoty. Sledujte, jak všechny listy naráz opadnou! 

VYZKOUŠEJTE SI
--------------

Dokážete zařídit, aby všechny listy zčervenaly předtím, než opadnou? Dokážete to samé s oranžovou barvou? A co se žlutou? Nyní zkuste vše zkombinovat tak, aby ten samý strom měl listy více různých barev. (Nápověda: Budete pravděpodobně muset několikrát upravit hodnoty posuvníků určujících vliv slunce, deště a teploty, abyste dosáhli správné kombinace.)

Pokuste se změnit barvu listů na žlutou a poté opět na zelenou.

V některých podnebných pásech stromy vůbec neztrácejí své listy. Dokážete přizpůsobit počasí tak, aby na stromě zůstaly alespoň některé z jeho listů? 

ROZŠÍŘENÍ MODELU
----------------

Ve skutečném životě listy vystavené přímému slunci mají sklon k tomu, aby byly více žluté než ty, které přímému slunci vystavené nejsou. Upravte model tak, aby bylo možné vybrat (a měnit) pozici slunce. Přidejte navíc podmínku, určující, že listy vystavené přímému slunci jsou více citlivé na jeho světlo než ty, které přímému světlu vystavené nejsou.

Model je velmi zjednodušený, co se týče pojetí vody a cukru - a to konkrétně tak, že veškerá voda pochází z deště, kapky deště mohou působit na více listů a mizí po dopadu na zem. Realističtější model by měl umožňovat zmizení kapky po její dopadu na list, ale zároveň by měl dovolit vodě proudit ze země skrz kmen a větve. Více realistický model by měl také obsahovat proces přenášení cukrů mezi listy a ukládání přebytečného cukru v kořenech stromu.

Přidejte do modelu pučení a růst nových listů, které budou nahrazovat mrtvé a odpadlé listy.

Upravte model zavedením cyklického střídání dne a noci, při kterém vždy na několik časových kroků klesne teplota a zapadne slunce. Ve tmě by pak strom spotřebovával cukry a vytvářel vodu pomocí respirace. 

PROGRAMOVACÍ ZAJÍMAVOSTI NETLOGA
--------------------------------

Jelikož je paleta barev NetLoga neúplná, potřebovali jsme mírně zamaskovat zbarvení listů. Všimněte si, že používáme k nastavení barev prahové hodnoty. To znamená, že v modelu může docházet k náhlým a výrazným změnám barev, pokud je počasí tak trochu extrémní.

Všimněte si také, že paleta barev NetLoga a primitivum SCALE-COLOR vytváří barvy v rozsahu od bílé do černé. Jelikož v tomto modelu chceme získat rozdílné barevné odstíny bez toho, abychom se příliš přiblížili černé nebo bílé barvě, používáme primitivum scale-color v intervalu od -50 d 150 namísto běžného rozsahu od 0 do 100.

Pokud list „zemře“, jeho rod (breed) se změní na „dead leaves“ (mrtvé listy). Proto je sice stále přítomen v modelu, avšak veškeré příkazy už ovlivňují pouze živé listy.

Všimněte si, jak se mění barva slunce při změně hodnoty INENZITA-SLUNCE. Co se stane s popiskem slunce (udávající číselně jeho intenzitu), když slunce ztmavne a zmenší se? 

SOUVISEJÍCÍ MODELY
------------------

Model Plant Growth (Pěstování rostliny) popisuje v jistých směrech opačný proces - konkrétně to, jak listy rostou (namísto toho, jak listy umírají).


PODĚKOVÁNÍ A ODKAZY
----------------------
http://scifun.chem.wisc.edu/chemweek/fallcolr/fallcolr.html
http://www.the-scientist.com/article/display/12772/

Poděkování patří Reuvenu Lernerovi za práci na tomto modelu.

Při citování tohoto modelu ve vědeckých publikacích použijte prosím následující odkaz:  Wilensky, U. (2005).  NetLogo Autumn model.  http://ccl.northwestern.edu/netlogo/models/Autumn.  Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.

V jiných publikacích uveďte prosím tyto informace:  Copyright 2005 Uri Wilensky.  All rights reserved.  See http://ccl.northwestern.edu/netlogo/models/Autumn for terms of use.
@#$#@#$#@
default
true
0
Polygon -7500403 true true 150 5 40 250 150 205 260 250

1
true
0
Polygon -7500403 true true 150 7 150 204 203 130
Line -7500403 true 150 7 42 248
Line -7500403 true 41 250 149 204
Line -7500403 true 149 204 259 248
Line -7500403 true 150 8 260 249
Polygon -7500403 true true 150 8 150 205 42 252

airplane
true
0
Polygon -7500403 true true 150 0 135 15 120 60 120 105 15 165 15 195 120 180 135 240 105 270 120 285 150 270 180 285 210 270 165 240 180 180 285 195 285 165 180 105 180 60 165 15

arrow
true
0
Polygon -7500403 true true 150 0 0 150 105 150 105 293 195 293 195 150 300 150

box
false
0
Polygon -7500403 true true 150 285 285 225 285 75 150 135
Polygon -7500403 true true 150 135 15 75 150 15 285 75
Polygon -7500403 true true 15 75 15 225 150 285 150 135
Line -16777216 false 150 285 150 135
Line -16777216 false 150 135 15 75
Line -16777216 false 150 135 285 75

bug
true
0
Circle -7500403 true true 96 182 108
Circle -7500403 true true 110 127 80
Circle -7500403 true true 110 75 80
Line -7500403 true 150 100 80 30
Line -7500403 true 150 100 220 30

butterfly
true
0
Polygon -7500403 true true 150 165 209 199 225 225 225 255 195 270 165 255 150 240
Polygon -7500403 true true 150 165 89 198 75 225 75 255 105 270 135 255 150 240
Polygon -7500403 true true 139 148 100 105 55 90 25 90 10 105 10 135 25 180 40 195 85 194 139 163
Polygon -7500403 true true 162 150 200 105 245 90 275 90 290 105 290 135 275 180 260 195 215 195 162 165
Polygon -16777216 true false 150 255 135 225 120 150 135 120 150 105 165 120 180 150 165 225
Circle -16777216 true false 135 90 30
Line -16777216 false 150 105 195 60
Line -16777216 false 150 105 105 60

car
false
0
Polygon -7500403 true true 300 180 279 164 261 144 240 135 226 132 213 106 203 84 185 63 159 50 135 50 75 60 0 150 0 165 0 225 300 225 300 180
Circle -16777216 true false 180 180 90
Circle -16777216 true false 30 180 90
Polygon -16777216 true false 162 80 132 78 134 135 209 135 194 105 189 96 180 89
Circle -7500403 true true 47 195 58
Circle -7500403 true true 195 195 58

circle
false
0
Circle -7500403 true true 0 0 300

circle 2
false
0
Circle -7500403 true true 0 0 300
Circle -16777216 true false 30 30 240

cow
false
0
Polygon -7500403 true true 200 193 197 249 179 249 177 196 166 187 140 189 93 191 78 179 72 211 49 209 48 181 37 149 25 120 25 89 45 72 103 84 179 75 198 76 252 64 272 81 293 103 285 121 255 121 242 118 224 167
Polygon -7500403 true true 73 210 86 251 62 249 48 208
Polygon -7500403 true true 25 114 16 195 9 204 23 213 25 200 39 123

cylinder
false
0
Circle -7500403 true true 0 0 300

default empty
true
0
Line -7500403 true 150 7 42 248
Line -7500403 true 41 250 149 204
Line -7500403 true 149 204 259 248
Line -7500403 true 150 8 260 249

default half
true
0
Line -7500403 true 150 7 42 248
Line -7500403 true 41 250 149 204
Line -7500403 true 149 204 259 248
Line -7500403 true 150 8 260 249
Polygon -7500403 true true 150 7 150 204 42 251

default one-quarter
true
0
Line -7500403 true 150 7 42 248
Line -7500403 true 41 250 149 204
Line -7500403 true 149 204 259 248
Line -7500403 true 150 8 260 249
Polygon -7500403 true true 91 133 151 203 42 252

default three-quarter
true
0
Line -7500403 true 150 7 42 248
Line -7500403 true 41 250 149 204
Line -7500403 true 149 204 259 248
Line -7500403 true 150 8 260 249
Polygon -7500403 true true 150 7 150 204 211 140
Polygon -7500403 true true 150 7 150 204 42 251

dot
false
0
Circle -7500403 true true 90 90 120

face happy
false
0
Circle -7500403 true true 8 8 285
Circle -16777216 true false 60 75 60
Circle -16777216 true false 180 75 60
Polygon -16777216 true false 150 255 90 239 62 213 47 191 67 179 90 203 109 218 150 225 192 218 210 203 227 181 251 194 236 217 212 240

face neutral
false
0
Circle -7500403 true true 8 7 285
Circle -16777216 true false 60 75 60
Circle -16777216 true false 180 75 60
Rectangle -16777216 true false 60 195 240 225

face sad
false
0
Circle -7500403 true true 8 8 285
Circle -16777216 true false 60 75 60
Circle -16777216 true false 180 75 60
Polygon -16777216 true false 150 168 90 184 62 210 47 232 67 244 90 220 109 205 150 198 192 205 210 220 227 242 251 229 236 206 212 183

fish
false
0
Polygon -1 true false 44 131 21 87 15 86 0 120 15 150 0 180 13 214 20 212 45 166
Polygon -1 true false 135 195 119 235 95 218 76 210 46 204 60 165
Polygon -1 true false 75 45 83 77 71 103 86 114 166 78 135 60
Polygon -7500403 true true 30 136 151 77 226 81 280 119 292 146 292 160 287 170 270 195 195 210 151 212 30 166
Circle -16777216 true false 215 106 30

flag
false
0
Rectangle -7500403 true true 60 15 75 300
Polygon -7500403 true true 90 150 270 90 90 30
Line -7500403 true 75 135 90 135
Line -7500403 true 75 45 90 45

flower
false
0
Polygon -10899396 true false 135 120 165 165 180 210 180 240 150 300 165 300 195 240 195 195 165 135
Circle -7500403 true true 85 132 38
Circle -7500403 true true 130 147 38
Circle -7500403 true true 192 85 38
Circle -7500403 true true 85 40 38
Circle -7500403 true true 177 40 38
Circle -7500403 true true 177 132 38
Circle -7500403 true true 70 85 38
Circle -7500403 true true 130 25 38
Circle -7500403 true true 96 51 108
Circle -16777216 true false 113 68 74
Polygon -10899396 true false 189 233 219 188 249 173 279 188 234 218
Polygon -10899396 true false 180 255 150 210 105 210 75 240 135 240

house
false
0
Rectangle -7500403 true true 45 120 255 285
Rectangle -16777216 true false 120 210 180 285
Polygon -7500403 true true 15 120 150 15 285 120
Line -16777216 false 30 120 270 120

leaf
false
0
Polygon -7500403 true true 150 210 135 195 120 210 60 210 30 195 60 180 60 165 15 135 30 120 15 105 40 104 45 90 60 90 90 105 105 120 120 120 105 60 120 60 135 30 150 15 165 30 180 60 195 60 180 120 195 120 210 105 240 90 255 90 263 104 285 105 270 120 285 135 240 165 240 180 270 195 240 210 180 210 165 195
Polygon -7500403 true true 135 195 135 240 120 255 105 255 105 285 135 285 165 240 165 195

line
true
0
Line -7500403 true 150 0 150 300

line half
true
0
Line -7500403 true 150 0 150 150

pentagon
false
0
Polygon -7500403 true true 150 15 15 120 60 285 240 285 285 120

person
false
0
Circle -7500403 true true 110 5 80
Polygon -7500403 true true 105 90 120 195 90 285 105 300 135 300 150 225 165 300 195 300 210 285 180 195 195 90
Rectangle -7500403 true true 127 79 172 94
Polygon -7500403 true true 195 90 240 150 225 180 165 105
Polygon -7500403 true true 105 90 60 150 75 180 135 105

plant
false
0
Rectangle -7500403 true true 135 90 165 300
Polygon -7500403 true true 135 255 90 210 45 195 75 255 135 285
Polygon -7500403 true true 165 255 210 210 255 195 225 255 165 285
Polygon -7500403 true true 135 180 90 135 45 120 75 180 135 210
Polygon -7500403 true true 165 180 165 210 225 180 255 120 210 135
Polygon -7500403 true true 135 105 90 60 45 45 75 105 135 135
Polygon -7500403 true true 165 105 165 135 225 105 255 45 210 60
Polygon -7500403 true true 135 90 120 45 150 15 180 45 165 90

square
false
0
Rectangle -7500403 true true 30 30 270 270

square 2
false
0
Rectangle -7500403 true true 30 30 270 270
Rectangle -16777216 true false 60 60 240 240

star
false
0
Polygon -7500403 true true 151 1 185 108 298 108 207 175 242 282 151 216 59 282 94 175 3 108 116 108

target
false
0
Circle -7500403 true true 0 0 300
Circle -16777216 true false 30 30 240
Circle -7500403 true true 60 60 180
Circle -16777216 true false 90 90 120
Circle -7500403 true true 120 120 60

tree
false
0
Circle -7500403 true true 118 3 94
Rectangle -6459832 true false 120 195 180 300
Circle -7500403 true true 65 21 108
Circle -7500403 true true 116 41 127
Circle -7500403 true true 45 90 120
Circle -7500403 true true 104 74 152

triangle
false
0
Polygon -7500403 true true 150 30 15 255 285 255

triangle 2
false
0
Polygon -7500403 true true 150 30 15 255 285 255
Polygon -16777216 true false 151 99 225 223 75 224

truck
false
0
Rectangle -7500403 true true 4 45 195 187
Polygon -7500403 true true 296 193 296 150 259 134 244 104 208 104 207 194
Rectangle -1 true false 195 60 195 105
Polygon -16777216 true false 238 112 252 141 219 141 218 112
Circle -16777216 true false 234 174 42
Rectangle -7500403 true true 181 185 214 194
Circle -16777216 true false 144 174 42
Circle -16777216 true false 24 174 42
Circle -7500403 false true 24 174 42
Circle -7500403 false true 144 174 42
Circle -7500403 false true 234 174 42

turtle
true
0
Polygon -10899396 true false 215 204 240 233 246 254 228 266 215 252 193 210
Polygon -10899396 true false 195 90 225 75 245 75 260 89 269 108 261 124 240 105 225 105 210 105
Polygon -10899396 true false 105 90 75 75 55 75 40 89 31 108 39 124 60 105 75 105 90 105
Polygon -10899396 true false 132 85 134 64 107 51 108 17 150 2 192 18 192 52 169 65 172 87
Polygon -10899396 true false 85 204 60 233 54 254 72 266 85 252 107 210
Polygon -7500403 true true 119 75 179 75 209 101 224 135 220 225 175 261 128 261 81 224 74 135 88 99

wheel
false
0
Circle -7500403 true true 3 3 294
Circle -16777216 true false 30 30 240
Line -7500403 true 150 285 150 15
Line -7500403 true 15 150 285 150
Circle -7500403 true true 120 120 60
Line -7500403 true 216 40 79 269
Line -7500403 true 40 84 269 221
Line -7500403 true 40 216 269 79
Line -7500403 true 84 40 221 269

x
false
0
Polygon -7500403 true true 270 75 225 30 30 225 75 270
Polygon -7500403 true true 30 75 75 30 270 225 225 270

@#$#@#$#@
NetLogo 4.1
@#$#@#$#@
setup
repeat 30 [ go ]
@#$#@#$#@
@#$#@#$#@
@#$#@#$#@
@#$#@#$#@
default
0.0
-0.2 0 0.0 1.0
0.0 1 1.0 0.0
0.2 0 0.0 1.0
link direction
true
0
Line -7500403 true 150 150 90 180
Line -7500403 true 150 150 210 180

@#$#@#$#@
0
@#$#@#$#@
