NBSINFRA Cologne
Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)
WHAT IS IT?
(a general understanding of what the model is trying to show or explain)
HOW IT WORKS
(what rules the agents use to create the overall behavior of the model)
HOW TO USE IT
(how to use the model, including a description of each of the items in the Interface tab)
THINGS TO NOTICE
(suggested things for the user to notice while running the model)
THINGS TO TRY
(suggested things for the user to try to do (move sliders, switches, etc.) with the model)
EXTENDING THE MODEL
(suggested things to add or change in the Code tab to make the model more complicated, detailed, accurate, etc.)
NETLOGO FEATURES
(interesting or unusual features of NetLogo that the model uses, particularly in the Code tab; or where workarounds were needed for missing features)
RELATED MODELS
(models in the NetLogo Models Library and elsewhere which are of related interest)
CREDITS AND REFERENCES
(a reference to the model's URL on the web if it has one, as well as any other necessary credits, citations, and links)
Comments and Questions
globals [ meander_rec_rate ;variable to regulate the meander footprint and the NBS of meander reconstruction ;; soil water retention variables ;; soil_humidity soil_suction ; related to soil humidity ;; vegetation variables ;; ntree_num ; number of patches with trees of naturally green areas nshrub_num ; number of patches with shrubs of naturally green areas nveg_ratio ; ratio of trees over shrubs of naturally green areas fshrub_num ; number of patches with vegetation of fluvial areas utree_num ; number of patches with trees of urban green areas ushrub_num ; number of patches with shrubs of urban green areas uveg_ratio ; ratio of trees over shrubs of urban green areas flora ; IVI, composite index to monitor the diversity and density of flora species veg_cover ; ratio between vegetation elements (vgts) and total area (patches) ideal_veg ; intial IVI at tick 0, estimated at 79.33 for woody plants in urban green spaces by Muthulingam & Thangavel, 2012 current_regeneration_rate ; the regeneration rate of every tick, as defined by soil humidity and fertility sfi ; soil fertility index calculated as: SFI= organic C% + pH adjusted from Panwar et al. 2011 ideal_sfi ; soil fertility index for min carbon content 5% and max soil acidity 6.0 vegetation ; composite index to monitor the condition of the flora and the soil fertility ;; biodiversity variables ;; flora_diversity ; Shannon's divesity index (H') -Σp*lnp (Morris et al. 2014) at the beginning of the simulation fl_d ; Shannon's divesity index (H') at every tick fauna_diversity ; correlated to flora_diversity and soil quality according to Qian 2007 fn_d ; fauna diversity at every tick ideal_biodiversity ; ideal biodiversity value calculated at the begginging of the run biodiversity ; total biodiversity performance index assessed in every tick ;; economic variables ;; std_socioeconomic ; base case of socio-economic index at the setup of the run socioeconomic ; assessed socioeconomic index in every tick ;; BUTTONS, SWITCHES AND SLIDERS ;; ; meander_reconstruction ; NBS alternative defined by end-user ; menader_rec_type ; [moderate, extensive] chooser (qualitative) to determine the extent of the meander reconstruction ; riparian_revegetation ; NBS alternative defined by end-user ; rip_reveg_rate ; [0,1,2] variable to define the intensity of riparian revegatation (intervention) ; tree_planting ; NBS alternative defined by end-user ; tree_plant_rate ; [10-30%] variable to define the intensity of tree planting (intervention) ; drought? ; switch to start the procedure of drought ; drought_duration ; user-defined varaible for the duration of the drought ; flood? ; switch to start the procedures of flood ; flood_intensity ; 0, 1, 2 and 3 defines the size of flooded area ] breed [nvgts nvgt] breed [fvgts fvgt] breed [uvgts uvgt] breed [anms anm] patches-own [ is-natural? ;whether a patch represents natural surface is-paved? ;whether a patch represents paved surface is-agric? ;whether a patch represents agricultural land atmosphere? ;whether a patch represents atmospheric volume ; related to soil water retention surface ; composite index of surface characterisitcs (LID BMP parameter) ; storage depth/berm height/barrel height, vegetation volume, surface roughness, surface slope soil ; composite index of soil characterisitcs (LID BMP parameter) ; wilting point, humidity soil_water_retention ; index combining both the surfance and soil indices surface_roughness; 0.1 for soil and different vegetation roughness ideal_roughness; 0.1 for RG vegetation_volume ; average size of vegetation agents in radius 3 of the examined patch ideal_vegetation_volume ;5/100 for RG ideal_soil_humidity; 0.32 /32% for normal clay (Minnesota Stormwater Manual, 2022) s_h; soil humidity of patches max_soil_humidity; 0.45 for average normal clay wilting_point; 0.20 minimum amount of water in the soil that the plant requires not to wilt min_wilting_point; 0.15 for normal clay (Minnesota Stormwater Manual, 2022) ideal_soil_suction ; max soil suction for 32% relative humidity in 25oC ; related to vegetation organic_content; percnetage of organic material in soil, necessary for the vegetation ; related to air quality - cooling due to shading and evapotranspiration and reduction of the pollution levels cooling ; percentage of air patches with reduced temperature * mean temperature reduction cool_dif ; absolute mean temperature difference during daytime determined by Kim et al. 2024 ; related to socioeconomic ecosystem s-e_pro ; index for the socioeconomic productivity per land use (agriculture, urban, green spaces) s-e attractiveness ; index for socio-economic attractiveness per land use att ] turtles-own [ ; related to flora health condition plants_condition ; composite index comprising the flora population diversity and regeneration ; density, frequency, abandance and importance value as well as the natural regeneration rate ] to setup clear-all import-pcolors "Background and contours.png" setup-model setup-NBS_conditions setup-vegetation setup-soil-water-retention setup-biodiversity setup-socioeconomic reset-ticks end to go assess-soil-water-retention assess-vegetation assess-biodiversity assess_socioeconomic if drought? [drought] if flood? = true and drought? = false [flood retain_water] regenerate_trees tick if ticks >= 25 [stop] end ;;; SETUP PROCEDURES ;;; SETUP PROCEDURES ;;; SETUP PROCEDURES ;;; to setup-model ;;; setup green areas ;;; ask patches with [pcolor >= 57.0 and pcolor < 58] [set pcolor green set is-natural? true] ask patches with [pcolor = green] [set organic_content 50 set is-paved? false set atmosphere? false] ask patches with [pcolor >= 58 and pcolor <= 69] [set pcolor 57 set is-natural? true] ask patches with [pcolor != 57 or pcolor != cyan] [if count neighbors4 with [pcolor = 57 or pcolor = cyan] >= 3 [set pcolor 57 set is-natural? true]] ask patches with [pcolor = 57] [set is-paved? false set atmosphere? false set organic_content 36] ;;; setup permeable productive land ;;; ask patches with [pcolor >= 39 and pcolor <= 40 and pycor > 10] [set pcolor 37 set is-natural? true] ask patches with [pcolor != 37] [if count neighbors4 with [pcolor = 37] >= 3 [set pcolor 37 set is-natural? true]] ask patches with [pcolor = 37] [set is-paved? false set atmosphere? false set is-agric? true set organic_content 60] ;;; setup fluvial areas ;;; ask patches with [pcolor >= 75.0 and pcolor < 110] [set pcolor cyan set atmosphere? false set is-natural? true] ;;;;;; specific exceptions ;;;;; ask patches with [pxcor >= -44 and pxcor <= -39 and pycor = 30 and pzcor = 0] [set pcolor cyan set atmosphere? false set is-natural? true] ask (patch-set patch -51 24 0 patch -50 25 0 patch -49 26 0 patch -48 27 0 patch -47 28 0 patch -45 30 0 patch -53 22 0 patch -54 21 0 patch -55 20 0 patch -55 19 0 patch -57 17 0 patch -37 31 0 patch -36 32 0 patch -35 33 0 patch -34 32 0 patch -33 32 0 patch -32 31 0 patch -31 31 0) [set pcolor cyan set is-natural? true] ask patches with [pcolor = cyan] [set organic_content 60] ;;; setup built environment ;;; ask patches with [pzcor = 0 and is-natural? != true] [set pcolor 8 set is-paved? true set is-natural? false set atmosphere? false set organic_content 5] ask patches with [pcolor = 8] [if count neighbors4 with [pcolor = green or pcolor = cyan] >= 3 [set pcolor green set is-natural? true set organic_content 50]] ask patches with [pcolor = 0] [set is-natural? true set atmosphere? true] end to setup-vegetation ;;; Natural green ;;; set ntree_num 60 set nshrub_num ntree_num set nveg_ratio 2 let ntrees n-of ntree_num patches with [pcolor = green] ask ntrees [sprout-nvgts 1 [set color green set zcor size set shape "circle" set size (random-normal 0.719 0.10) ]] ;updated standard deviation of forest zone's plants (Louma et al. 2017) ask ntrees [let nshrubs n-of nshrub_num other patches with [pcolor = green] ask nshrubs [sprout-nvgts nveg_ratio [set color green set shape "circle" set size (random-normal 0.24 0.40) set zcor size + 0.3 forward 0.5]]] ;;; Fluvial green ;;; set fshrub_num 3 let fshrubs patches with [pcolor = cyan] ask fshrubs [sprout-fvgts fshrub_num [set color cyan set shape "circle" set size (random-normal 0.24 0.40) ;updated standard deviation of riparian zone's plants (Arif et al. 2021) set zcor size + 0.3 forward random-float 0.5]] ;;; Urban green ;;; set utree_num 50 set ushrub_num utree_num set uveg_ratio 2 let utrees n-of utree_num patches with [pcolor = 57] ask utrees [sprout-uvgts 1 [set color green set zcor size set shape "circle" set size (random-normal 0.719 0.50) ]] ; sd (Luoma et al 2017) ask utrees [let ushrubs n-of ushrub_num other patches with [pcolor = 57] ask ushrubs [sprout-nvgts uveg_ratio [set color green set shape "circle" set size (random-normal 0.24 0.20) set zcor size + 0.3 forward random-float 0.5]]] ;;; Tree Planting set_tree_planting ;;; Agricultural land ;;; end to setup-NBS_conditions ;; Meander Reconstruction if meander_reconstruction = true and meander_rec_type = "moderate" [set meander_rec_rate 2 ask patches with [pcolor = 55 or pcolor = 57 ] [if count neighbors4 with [pcolor = cyan] >= meander_rec_rate [set pcolor cyan set is-natural? true]] ] if meander_reconstruction = true and meander_rec_type = "extensive" [set meander_rec_rate 2 ask patches with [pcolor != 55 or pcolor != cyan ] [if count neighbors4 with [pcolor = cyan] >= meander_rec_rate [set pcolor cyan set is-natural? true]] ] ;;; Riparian Revegetation if riparian_revegetation = false [set fshrub_num 3] if riparian_revegetation = true and rip_reveg_rate = 0 [ask patches with [pcolor = cyan] [sprout-fvgts 1 [forward 0.2]] ] if riparian_revegetation = true and rip_reveg_rate = 1 [ask patches with [pcolor = cyan] [sprout-fvgts 3 [set size (random-normal 0.48 1.05) ;standard deviation for riparian zone (Arif et al. 2021) set zcor size + 0.3 forward (random-normal 0.04 0.06)]]] if riparian_revegetation = true and rip_reveg_rate = 2 [ask patches with [pcolor = cyan] [sprout-fvgts 6 [set size (random-normal 0.48 1.7) ;double standard deviation due to controlled species selection set zcor size + 0.3 forward (random-normal 0.1 0.1)]] ] ask fvgts [set color cyan set shape "circle" set size (random-normal 0.40 0.80) ;standard deviation for riparian zone (Arif et al. 2021) set zcor size + 0.3 forward random-float 0.5] end to set_tree_planting if tree_planting = true [let u_trees count uvgts with [size >= 0.5] ask n-of (u_trees * (tree_plant_rate / 100)) uvgts with [size < 0.7] [set size (random-normal 0.36 1.20)] let n_trees count nvgts with [size >= 0.5] ask n-of (n_trees * (tree_plant_rate / 100)) nvgts with [size < 0.7] [set size (random-normal 0.5 1.20)]] end to setup-soil-water-retention ask patches with [atmosphere? = false] [set ideal_vegetation_volume 0.05 set ideal_roughness 0.1 set ideal_soil_humidity 0.32 set s_h ideal_soil_humidity set soil_humidity mean [s_h] of patches with [pzcor = 0] set max_soil_humidity 0.40 set min_wilting_point 0.15 set ideal_soil_suction -0.00001 * ((8.314 * 298)/ 1 * 18.016) * ln(0.32)] ifelse soil_humidity != 0 [set soil_suction -0.00001 * ((8.314 * soil_temperature)/ 1 * 18.016) * ln(soil_humidity)] [set soil_suction -0.00001 * (8.314 * soil_temperature)/ 1 * 18.016 ] ask patches with [pzcor = 0] [ifelse any? turtles-here [set vegetation_volume mean [size] of turtles in-radius 1] [set vegetation_volume 0]] ask patches [ifelse vegetation_volume > 0.001 [set surface_roughness vegetation_volume ] [set surface_roughness 0.10] ] end to setup-biodiversity ask (turtles) [let diversity_1 (count nvgts with [size <= 0.30] / count nvgts) ; Shannon's divesity index (H') in Morris et al. 2014 let diversity_2 (count nvgts with [size > 0.30] / count nvgts) let diversity_3 (count fvgts / count fvgts) let diversity_4 (count uvgts with [size <= 0.70] / count uvgts) let diversity_5 (count uvgts with [size > 0.70] / count uvgts) set flora_diversity -1 * diversity_1 * ln diversity_1 + -1 * diversity_2 * ln diversity_2 + -1 * diversity_3 * ln diversity_3 + -1 * diversity_4 * ln diversity_4 + -1 * diversity_5 * ln diversity_5] set fauna_diversity (flora_diversity * 0.80) + (2.43 * 0.20) ; 4.43 calculated mean soil fertility at the ideal beginning set ideal_biodiversity flora_diversity + fauna_diversity end to setup-socioeconomic ask patches with [is-agric? = true] [set s-e_pro (soil / 2) + 3 ; 3:equivalent of economic production set attractiveness NBS_attractiveness / 3] ask patches with [pcolor = green] [set s-e_pro (soil + ideal_biodiversity) set attractiveness NBS_attractiveness] ask patches with [pcolor = 57] [set s-e_pro (surface + soil + ideal_biodiversity) + 1 ;1:equivalent of economic production set attractiveness NBS_attractiveness * 2] ask patches with [pcolor = cyan] [set s-e_pro (surface + soil + ideal_biodiversity) set attractiveness NBS_attractiveness * 2] ask patches with [is-paved? = true] [set s-e_pro (surface + ideal_biodiversity) + 2 ;2:equivalent of economic production set attractiveness NBS_attractiveness] set std_socioeconomic mean [s-e_pro + attractiveness] of patches end ;;; ASSESSMENT PROCEDURES ;;; ASSESSMENT PROCEDURES ;;; ASSESSMENT PROCEDURES ;;; to assess-soil-water-retention ask patches with [ideal_vegetation_volume > 0] [set surface (((vegetation_volume - ideal_vegetation_volume)/ ideal_vegetation_volume) / 2 + ((surface_roughness - ideal_roughness) / ideal_roughness) / 2 ) * 100 set soil (((max_soil_humidity - s_h) / ideal_soil_humidity) / 3 + ((s_h - min_wilting_point ) / min_wilting_point) / 3 + ((soil_suction) / ideal_soil_suction) / 3 ) * 100 ] ask patches [set soil_water_retention (surface / 2) + (soil / 2)] end to assess-vegetation ask patches with [atmosphere? = false] [ifelse organic_content > 1 ;and soil_humidity > 0 min_wilting_point and soil_humidity < max_soil_humidity [set sfi (organic_content / 100) + (soil_humidity / min_wilting_point) + (max_soil_humidity / soil_humidity)] ;average soil pH at 6.5 [set sfi 0] set ideal_sfi 21.785 + (60 / 30) + (45 / 30)] ;21.785 :mean [organic_content] of patches of the ground set veg_cover count (turtle-set nvgts fvgts uvgts) / count patches with [pzcor = 0] if ticks = 1 [set ideal_veg count patches with [is-natural? ] * 3 / count patches with [pzcor = 0] ] if ideal_veg > 0 ;; set a standard ideal_veg for this type of city [set flora (veg_cover - ideal_veg) / ideal_veg] ; ;if sfi > 0 and soil_humidity > 0.20 ; [set current_regeneration_rate ((organic_content / 20) * regeneration_rate + regeneration_rate)] let sfi_perf (sfi - ideal_sfi / ideal_sfi) set vegetation flora + sfi_perf end to assess-biodiversity ask (turtles) [let diversity_1 (count nvgts with [size <= 0.20] / count nvgts) ; Shannon's divesity index (H') in Morris et al. 2014 let diversity_2 (count nvgts with [size > 0.20 and size <= 0.30] / count nvgts) let diversity_3 (count nvgts with [size > 0.30 and size <= 0.50] / count nvgts) let diversity_4 (count nvgts with [size > 0.50 and size <= 0.70] / count nvgts) let diversity_5 (count nvgts with [size > 0.70] / count nvgts) let diversity_6 (count fvgts with [size <= 0.30] / count fvgts) let diversity_7 (count fvgts with [size > 0.30] / count fvgts) let diversity_8 (count uvgts with [size <= 0.40] / count uvgts) let diversity_9 (count uvgts with [size > 0.40] / count uvgts) set fl_d -1 * diversity_1 * ln diversity_1 + -1 * diversity_2 * ln diversity_2 + -1 * diversity_3 * ln diversity_3 + -1 * diversity_4 * ln diversity_4 + -1 * diversity_5 * ln diversity_5 + -1 * diversity_6 * ln diversity_6 + -1 * diversity_7 * ln diversity_7 + -1 * diversity_8 * ln diversity_8 + -1 * diversity_9 * ln diversity_9] set fn_d (fl_d * 0.80) + (mean [soil] of patches * 0.20) set biodiversity ((fl_d + fn_d) - ideal_biodiversity ) / ideal_biodiversity end to assess_socioeconomic ask patches with [is-agric? = true] [set s-e (soil / 2) + 3 ; 3:equivalent of economic production set att NBS_attractiveness / 3] ask patches with [pcolor = green] [set s-e (soil / 2 + ideal_biodiversity) set att NBS_attractiveness] ask patches with [pcolor = 57] [set s-e (surface / 2 + soil / 2 + ideal_biodiversity) + 1 ;1:equivalent of economic production set att NBS_attractiveness * 2] ask patches with [pcolor = cyan] [set s-e (surface / 2 + soil / 2 + ideal_biodiversity) set att NBS_attractiveness * 2] ask patches with [is-paved? = true] [set s-e (surface / 2 + ideal_biodiversity) + 2 ;2:equivalent of economic production set att NBS_attractiveness] set socioeconomic (mean [s-e + att] of patches - std_socioeconomic) / std_socioeconomic end ;;; NORMAL PROCEDURES ;;; NORMAL PROCEDURES ;;; NORMAL PROCEDURES ;;; to regenerate_trees ask n-of random 6 nvgts [die] ask n-of random 6 uvgts [die] ask n-of random 6 fvgts [die] ask n-of 10 patches with [pcolor = green and soil_humidity < max_soil_humidity and soil_humidity > min_wilting_point] [sprout-nvgts 1 * ((max_soil_humidity - soil_humidity) / ideal_soil_humidity) [set color green set shape "circle" set size (random-normal 0.24 0.03) set zcor size + 0.3]] ask n-of 10 patches with [pcolor = 57 and soil_humidity < max_soil_humidity and soil_humidity > min_wilting_point] [sprout-uvgts 1 * ((max_soil_humidity - soil_humidity) / ideal_soil_humidity) [set color green set shape "circle" set size (random-normal 0.24 0.03) set zcor size + 0.3]] ask n-of 10 patches with [pcolor = cyan and soil_humidity < max_soil_humidity and soil_humidity > min_wilting_point] [sprout-fvgts 1 * ((max_soil_humidity - soil_humidity) / ideal_soil_humidity) [set color cyan set shape "circle" set size (random-normal 0.24 0.03) set zcor size + 0.3]] end to retain_water if flood? = false [ask patches with [pzcor = 0] [if any? patches with [s_h > ideal_soil_humidity] [ask patches with [is-natural? = true] [set s_h s_h * (1 - soil_suction)] ask patches with [is-paved? = true] [set s_h s_h * (1 - soil_suction / 2)]]] ask patches with [pzcor = 0] [if s_h > ideal_soil_humidity [set pcolor (s_h * 100) + 60]] ] ask patches with [pzcor = 0 and is-natural? = true] [if not any? patches with [s_h > ideal_soil_humidity] [set s_h ideal_soil_humidity]] end ;;; DISRUPTIVE EVENTS ;;; DISRUPTIVE EVENTS ;;; DISRUPTIVE EVENTS ;;; to drought set soil_temperature 303 ask patches with [is-natural? = true and pzcor = 0] [set s_h ideal_soil_humidity * (1 - ticks * 10) ] ask patches with [is-paved? = true] [set s_h s_h * (1 - soil_suction / 2)] if ticks > drought_duration [set drought? false] end to flood if flood_intensity = "0" [ask (patch-set patch -1 8 0 patch -1 9 0 patch 0 8 0 patch 1 8 0 patch 0 9 0 patch 1 9 0 patch 0 10 0 patch 1 10 0 patch 27 -30 0 patch 27 -29 0 patch 28 -30 0 patch 28 -29 0 patch -61 14 0 patch -62 14 0 patch -61 13 0 patch -62 13 0 patch -63 13 0 patch -63 12 0 patch -64 12 0) [set s_h max_soil_humidity] ask (patch-set patch -1 8 1 patch -1 9 1 patch 0 8 1 patch 1 8 1 patch 0 9 1 patch 1 9 1 patch 0 10 1 patch 1 10 1 patch 27 -30 1 patch 27 -29 1 patch 28 -30 1 patch 28 -29 1 patch -61 14 1 patch -62 14 1 patch -61 13 1 patch -62 13 1 patch -63 13 1 patch -63 12 1 patch -64 12 1) with [any? turtles-here] [ask turtles-here [die]] ] if flood_intensity = "1" [ask (patch-set patch 0 8 0 patch 27 -29 0 patch -61 13 0 ) [ask patches with [pzcor = 0] in-radius 3 [set s_h max_soil_humidity ]] ask (patch-set patch 0 8 1 patch 27 -29 1 patch -61 13 1 ) [ask patches with [pzcor = 1 and any? turtles-here] in-radius 3 [ask turtles-here [die]]] ] if flood_intensity = "2" [ask (patch-set patch 0 8 0 patch 27 -29 0 patch -61 13 0 ) [ask patches with [pzcor = 0] in-radius 6 [set s_h max_soil_humidity ]] ask (patch-set patch 0 8 1 patch 27 -29 1 patch -61 13 1 ) [ask patches with [pzcor = 1 and any? turtles-here] in-radius 6 [ask turtles-here [die]]] ] if flood_intensity = "3" [ask (patch-set patch 0 8 0 patch 27 -29 0 patch -61 13 0 ) [ask patches with [pzcor = 0] in-radius 9 [set s_h max_soil_humidity ]] ask (patch-set patch -20 -16 0 ) [ask patches with [pzcor = 0] in-radius 3 [set s_h max_soil_humidity ]] ask (patch-set patch 0 8 1 patch 27 -29 1 patch -61 13 1 ) [ask patches with [pzcor = 1 and any? turtles-here] in-radius 9 [ask turtles-here [die]]] ] ask patches with [pzcor = 0] [if s_h > ideal_soil_humidity [set pcolor (s_h * 100) + 60]] if ticks > drought_duration + 2 [set flood? false] ; if ticks > 2 ; [set flood? false] end
There is only one version of this model, created 17 days ago by Anastasia Tzioutziou.
Attached files
| File | Type | Description | Last updated | |
|---|---|---|---|---|
| NBSINFRA Cologne.png | preview | Preview for 'NBSINFRA Cologne' | 17 days ago, by Anastasia Tzioutziou | Download |
This model does not have any ancestors.
This model does not have any descendants.
Download this model