PowerPoint-Pr - PowerPoint PPT Presentation

About This Presentation
Title:

PowerPoint-Pr

Description:

Modelling above- and below-ground competition together Winfried Kurth University of G ttingen Chair for Computer Graphics and Ecological Informatics – PowerPoint PPT presentation

Number of Views:45
Avg rating:3.0/5.0
Slides: 19
Provided by: Winfr89
Category:

less

Transcript and Presenter's Notes

Title: PowerPoint-Pr


1
Modelling above- and below-ground competition
together Winfried Kurth University of
Göttingen Chair for Computer Graphics and
Ecological Informatics wkltatgtinformatik.uni-goett
ingen.de
Summer School Modelling and Simulation with
GroIMP, Göttingen, 27 Sept.- 1st Oct. 2010
2
Problem observation from ecology (A. Polle,
oral communication) under optimal conditions
(plenty of resources) mono-species stand gives
higher yield than mixed stand under stress (lack
of resources) mixed stand outperforms
mono-species stand
mono-species
biomass
multi-species
stress
How to model this in a simple way in GroIMP ?
3
  • assume 2 species, competing at two levels (e.g.,
    above-/below-ground)
  • at 1st level allelopathic interaction
  • i.e. species A inhibits growth of species B in
    its neighbourhood,
  • competition between A and B is stronger than
    between A and A or
  • between B and B
  • at 2nd level complementarity between species A
    and B,
  • e.g. both compete for the same soil resource
    but at different depths
  • ? intraspecific competition is stronger than
    that between A and B
  • Now if we decrease the availability of the soil
    resource (i.e., induce stress), the competition
    at 2nd level will gradually dominate that at 1st
    level hence the advantage of the monospecies
    composition will vanish.

4
Objects of the model
module Stand module Seedling(int
species) module Tree(float size, int age, int
species) / size radius / double nutr
satNut gt if (species 1)
( cCone.(setLength(3size),
setRadius(size)) c.setColor(0x007700)
) else ( Translate(0, 0,
2size) Scale(1.0, 1.0, 2.0)
sSphere.(setRadius(size))
s.setColor(0x22ee00) ) module
Soil module SoilPatch(int k) extends Box(3.0,
3.0, 3.0).(setColor(0xffaa88)) float
nutrAvail startNutr float nutrDemand,
nutrTransf int nbPlants
5
Competition at level 1 (allelopathy)
boolean notOutcompeted(Tree a) return
empty( ( tTree, ((t!a) (( tspecies
aspecies distance(a, t) lt
inhib1 tsize ) ( tspecies !
aspecies distance(a, t) lt
inhib2 tsize )) (tsize gt asize)
) ) )
t
a
const double inhib1 1. / inhibition
zone competitors of same species / const
double inhib2 2. / inhibition zone
competitors of other species /
6
Competition at level 2 (complementarity) each
plant takes nutrients from all soil patches
within its depletion radius species 1 from layer
1, species 2 from layer 2
7
Renewal of nutrients in a soil patch (from
influx, mineralization etc.)
protected void updateNutr() pSoilPatch
gt pnutrAvail renewRate
pnutrAvail Math.min(pnutrAvail,
patchCapacity) pnbPlants 0
pnutrTransf 0. pnutrDemand 0.
colorize(p)
8
Checking the total demand exerted on a single
soil patch
protected void checkDemand() tTree,
pSoilPatch, (inDepletionZone(p, t)) gt
pnutrDemand maxConsumption
pnbPlants
number of plants taking nutrients from this soil
patch p
9
How to check if p is in the depletion zone of
t
boolean inDepletionZone(SoilPatch p, Tree a)
return (pk aspecies projDistance(p, a)
lt depletionRadius) double
projDistance(SoilPatch p, Tree a) / distance
in xy plane / double dx pLocation.X
- aLocation.X double dy pLocation.Y -
aLocation.Y return Math.sqrt(dxdx
dydy)
10
The amount of nutrient which one plant can really
obtain from this soil patch is calculated and
written to the soil patch attribute nutrTransf
protected void writeDemand() pSoilPatch
gt if (pnbPlants gt 0)
pnutrTransf Math.min(pnutrAvail,
pnutrDemand)
/ (double) pnbPlants
11
Nutrient transfer from soil to plants takes place
protected void transferNutr() tTree,
pSoilPatch, (inDepletionZone(p, t)) gt
tnutr pnutrTransf pnutrAvail
- pnutrTransf
12
Growth of a plant depends on its size, age, and
accumulated nutrients during the last time
step. All nutrients are consumed during the
growth step
protected void grow() aTree(size, age,
k) gt if (notOutcompeted(a) anutr gt
minNeed) ( tTree(growthf(size, age,
anutr), age1, k) tnutr 0. )
public float growthf(double x, int age,
double nutr) double incr if (nutr lt
minNeed) incr 0. else
if (nutr lt satNut) incr
((nutr-minNeed)/(satNut-minNeed))maxIncr
else incr maxIncr if (age
lt max_age) return (float) (xincr)
else return (float) x
incr
maxIncr
nutr
minNeed
satNut
13
Initialization of the whole scene
protected void init() step 1
masstable.clear().setColumnKey(0, "biomass")
chart(masstable, XY_PLOT) int nbPx (int)
Math.floor((x_extens depletionRadius) /
patchDist) int nbPy (int)
Math.floor((y_extens depletionRadius) /
patchDist) for ( apply(3) )
/ 3 steps of rule application are carried out
/ Axiom gt
Translate(x_extens/2, y_extens/2, -1) / soil
surface / Box(0.2, x_extens,
y_extens).(setColor(0xffffcc)) Stand
Soil Stand gt for ((1n1))
( Translate(random(0, x_extens),
random(0, y_extens), 0) Seedling(1) )
for ((1n2)) ( Translate(random(0,
x_extens), random(0, y_extens), 0) Seedling(2)
) Soil gt for (int i (1nbPx))
( for (int j
(1nbPy)) (
for (int k (12)) / two layers of patches
/ (
Translate(-0.5depletionRadius
ipatchDist,
-0.5depletionRadius jpatchDist,
-klayerDist)
pSoilPatch(k) colorize(p)
) )
) sSeedling(k) gt if
(sLocation.X gt 0 sLocation.Y gt 0
sLocation.X lt x_extens
sLocation.Y lt y_extens) (
Tree(random(1.0, 5.0), 1, k) ) / size
random, age 1, species k /
14
Colorizing the patches for visualization of
nutrient content
void colorize(SoilPatch p) double a
pnutrAvail if (a gt 0.875patchCapacity)
p.setColor(0xff4444) else if (a gt
0.75patchCapacity) p.setColor(0xff7744)
else if (a gt 0.625patchCapacity)
p.setColor(0xffaa44) else if (a gt
0.5patchCapacity) p.setColor(0xffdd44)
else if (a gt 0.375patchCapacity)
p.setColor(0xffff55) else if (a
gt 0.25patchCapacity) p.setColor(0xffff88)
else if (a gt 0.125patchCapacity)
p.setColor(0xffffbb) else
p.setColor(0xffffff)
(red ? yellow ? white)
15
Main rule block which controls the order of rule
applications and adds a biomass entry after each
growth step for a chart
public void run() updateNutr()
checkDemand() writeDemand()
transferNutr() grow() masstable.addRow().s
et(0, sum( biomass( ( tTree ) )))
println(step) step
public float biomass(Tree a) / assumed as
proportional to basal area / return
(float) (Math.PI asize asize)
16
for completeness parameters of the model and
variable declarations
const int n1 200 / nb. of trees of
species 1 / const int n2 200 /
nb. of trees of species 2 / const int max_age
40 / number of growth steps / const
double x_extens 500. const double y_extens
300. const double inhib1 1. /
inhibition zone competitors of same species
/ const double inhib2 2. / inhibition
zone competitors of other species / const
double renewRate 20.0 / let this vary!
/ const double patchCapacity 50.0 const
double startNutr 50.0 const double
maxConsumption 0.4 / max. consumption of a
tree from
a single soil patch 0.4 / const double
patchDist 15. const double depletionRadius
40. const double layerDist 5. const double
minNeed 4. / necessary min. amount of
nutrients for survival / const double satNut
10. / saturation point of nutrient response
function / const double maxIncr 0.7 /
max. tree growth rate / int step
/ step counter / const DatasetRef
masstable new DatasetRef("stand biomass") /
table for chart /
example file div_compet2b.rgg
17
(No Transcript)
18
Resulting stand biomass under different
parameterizations (unstressed plenty of
nutrients by high renewal rate in the
soil stressed competition for nutrients is
severely limiting)
Write a Comment
User Comments (0)
About PowerShow.com