;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MCLOUD-1;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;STOCHASTIC CA ONE-LAYER NETWORK OF;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ARCTIC BROMINE EXPLOSION;;;; __includes[ "status-debug.nls" ] ;; ;; STATUS-DEBUG.nls debugging parametrization globals [ BRO-THRESHOLD-PROPAGATION ;; BRO-THRESHOLD-DIE ;; PLOT-SCALING ;; plot-scaling-clmn ;; IT MAYBE DIFFERENT FOR DIST (90- LAT) BECAUSE OF THE 2D CARTOGRAPHIC DISTORTION OF THE REAL EARTH ;; SIZE40N ;; IMAGINABLE LATITUDE prv-TOTAL-BRO-CLOUD ;; TOTAL-BRO-CLOUD ;; AMOUNT OF THE MODEL MASS BRO ACROSS NETWORK AT EACH ITERATION BR2-EMISSION-SOURCES ;; NUMBER OF INSTANT EMISSION NODES IMMEDIATE-BR2-FLUX ;; INSTANT IMPUT OF THE MASS BRO INTO THE MODEL CLOUD NETWORK BRO-LOSS ;; cnt-newlygainedBrOcell-die TOTAL-BR2 ;; prv-TOTAL-LOSS ;; TOTAL-LOSS ;; ACCUM-TOTAL-BRO ;; SCALING PARAMETER 1E+25 BRO-CELLS ;; INSTANT NUMBER OF THE ACTIVE CELLS BRO-CELLS-PREVIOUS ;; NUMBER OF THE ACTIVE CELLS AT THE START OF ITERATION (BEFORE PROPAGATION AND LOSS) MULTIPLE-CNT-SOURCES ;; OVERALL (OVER ALL ITERATIONS)NUMBER OF THE SOURCE CELLS ;; MULTIPLE-SOURCE CELLS ARE COUNTED ANEW EVERY TIME THEY INPUT THE MASS BrO PEAK-NUMBER-BR2 ;; NOT IN USE YET , MEANS LOGISTIC REGRESSION STARTING POINT around 30-50 day PRERUN? ;; 10 DAYS PRERUN TO BUILD INITIAL CLOUD IF FALSE PRERUN IS FINISHED PRERUN-TIME LIFETIME-PHENOMENA ;; 130 ITERATIONS OR 120 ITERATIONS AFTER PRERUN NUMBER-BR2 ;; INSTANT RANDOM NUMBER OF THE EMERGENT SOURCES / NORMAL DISTRIBUTION BRO-SOURCE ;; STRENGTH OF POLLUTION IS CHANGING WITH TIME INIT-BRO-SOURCE ;; INITIAL STRENGTH OF POLLUTION IS USED DURING PRERUN RANGE-AMOUNT-CELL-BRO ;; x-maxrange-temp for the immediate time step ;coeff-init-bro-source 1E+25 ALL-CELLS-WORLD-COUNT ;; auxiliary- proportional to circle area with RADIUS too-close ALL-CELLS-DIST-COUNT ;; auxiliary- proportional to circle area where new sources can emerge DIST-AREA TOO-CLOSE ;; semi- integer (2D) topology correction ;; CENTRAL POINT FOR FRACTAL AND INTEGER TOPOLOGIES IS THE SAME ;; max RADIUS FROM CENTRAL POINT WHERE ALL RANDOM SOURCES ARE GENERATED DBG-1 ;; DEBUGGING DBG-2 ;; DEBUGGING SCENARIO-AEROSOL ;; AEROSOL_LAT_AREA AEROSOL_LOAD_LOSS DAY-AEROSOLTYPE-SHIFT ;; FROM THE SPRING TO THE SUMMER TYPE OF THE AEROSOL LOADING RING-POLLUTION ;; INTERIOR RADIUS IN SCENARIO WITH RING POLLUTION WIDTH-POLLUTION ;; WIDTH IN SCENARIO WITH RING POLLUTION transl-x ;; x-translation of a center point transl-y ;; y-translation of a center point ;;;THESE GLOBALS ARE DISABLE IN THIS VERSION just model-parametrization ELIGIBLES ;; it could be many variants 1. for cells with [ bro-on?] MAX-AGE ;; maximum age that br2 source is active - lifetome of o3 storm CONDITION_VORTEX_BREAKDOWN? INIT-RAD ;; solar factor light init-rad init-theta INIT-THETA ;;debugging flags tmp-color run-flag is a switch between 2 spirals TMP-COLOR ;; debugging flags tmp-color run-flag is a switch between 2 spirals RUN-FLAG ;;scenario with elliptical ring pollution area AX ;; x-cor of focus 0 (for ellipse) BY ;; y-cor of focus 0 (for ellipse) STATE0? ;; flag to alternate which focus user is moving WR-X ;; random wobbling of ellipse axes last peturbation WR-Y ;; random wobbling of ellipse axes last perturbation ANGLE-ELLIPSE ;; init-r-ellipse + rotation ;; ellipse coefficients cos_angle ;; cos (angle-ellipse) sin_angle ;; sin (angle-ellipse) coeffA ;; (cos_angle / ax) ^ 2 + (sin_angle / by) ^ 2 coeffBxy ;;-2 * cos_angle * sin_angle * ( 1 / ax ^ 2 - 1 / by ^ 2) coeffC ;; ( sin_angle / ax) ^ 2 + (cos_angle / by) ^ 2 ] turtles-own [ hex-neighbors ;; CELLS IN HEXAGONAL NEIGHBORHOOD bro-on? ;; CELL IS ACTIVE, CELL IS A PART OF THE BRO NETWORK sink-off? br2-on? ;; CELL BECOMES A SOURCE CELL/ INPUT OF THE MASS BRO INTO NETWORK amount-cell-bro ; NODAL MASS BRO ACCUMULATED DURING PROPAGATION BRO, ELIMINATED AT SCA-CLOUD-CELL-DIE ; USED FOR SCALE COLOR FOR AMOUNT-CELL-BRO cnt-new-source ;; COUNTS HOW MANY ITERATIONS CELL HAS BECAME A SOURCE cnt-ticks-alive ;; COUNTS HOW MANY ITERATIONS CELL HAS BEEN ALIVE energy radius-cell speed-propagation-map-distortion ;;NOT IN THIS VERSION leader ; NODE HAS A LEADER OF ITS CLUSTER turn-amount ; NOT IMPLEMENTED live-neighbor-count ; NOT IMPLEMENTED eligible? ; NOT IMPLEMENTED target ; NOT IMPLEMENTED ] patches-own [penergy]; it is enrgy ? or entropy associated with vortex energy injection ;BRO CHEMISTRY AND PROPAGATION CELLS ; breed [cells cell]; hexagonal TILING, MANY CELLS per one patch cells-own [ some-cells-property ] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;SETTINGS GLOBALS;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to setup-globals set max-age 1 ;; set number-br2 64 ;; set too-close 32 ;; set init-bro-source 1.6 ;; set bro-source init-bro-source ;; initial (for prerun) stremgh of pollution sources set br2-emission-sources 32 set MULTIPLE-CNT-SOURCES 0 SET BRO-CELLS-PREVIOUS 0 SET BRO-CELLS 0 set bro-loss 0 set cnt-newlygainedBrOcell-die 0 set prv-TOTAL-BRO-CLOUD 0 set TOTAL-BRO-CLOUD 0 ;; set accum-total-bro 0 ;; summation over the time series of total-bro set TOTAL-LOSS 0 ;; total-loss bro with lifetime set prv-TOTAL-LOSS 0 set RANGE-AMOUNT-CELL-BRO INIT-BRO-SOURCE set total-br2 0 ;; production bro during model run set peak-number-br2 200 ;; not implemented yet set prerun-time DEBUG-PRERUN-TIME set lifetime-phenomena DEBUG-LIFETIME-PHENOMENA ;;120 + 10 prerun that we don't show on plot set CONDITION_VORTEX_BREAKDOWN? false set all-cells-dist-count 0 set dist-area 0 set immediate-br2-flux 0 if init-bro-source = 1.6 [ set bro-threshold-propagation DEBUG-bro-threshold-die ;; ONLY FOR POLLUTION& TO CHECK DEPLETION INCREASE set bro-threshold-die DEBUG-bro-threshold-die set plot-scaling 1 set plot-scaling-clmn 10 ] set size40N 0 set AEROSOL_LAT_AREA 70 ;; LAT=90 - dist ( from central point) = 45 example 90-45 = 45 N LAT set AEROSOL_LOAD_LOSS 0.95 set DAY-AEROSOLTYPE-SHIFT 75 + random 10 set wr-x 0 ;;last-wobbling-x set wr-y 0;last-wobbling-y ;; ax 15 and by 25 elliptical eccentricity = c/a = 0.8 set ax 15 ;; x-cor of focus 0 (for ellipse) set by 25 ;; y-cor of focus 0 (for ellipse) set state0? true ;; flag to alternate which focus user is moving set angle-ellipse 0 end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;; SETUP ;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to setup clear-all reset-ticks set prerun? true ask patches[ set pcolor blue] set all-cells-world-count 0; will be calculated in setup-grid show "all-cells-world-count" show all-cells-world-count setup-grid ; IT IS important which routine runs first setup-grid or setupVRTX setup-globals update-GOMEdataplot import-drawing "Polar.grid.png" end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;UPDATE SOURCES LOC;;;;;;;;;;;;;; ;;update-br2-sources-globals;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to update-br2-sources-globals; seed-br2-randomly;; UPDATE VC BrO set MULTIPLE-CNT-SOURCES MULTIPLE-CNT-SOURCES + br2-emission-sources;; STATISTICS let immediate-br2-sources count cells with [br2-on?]; ask cells with [bro-on?] [ set radius-cell distancexy 0 0] ;;latitidunal expansion of the BrO cloud ; let tmp-size40N max [radius-cell] of cells with [bro-on?] ; if size40N < tmp-size40N [ ; set size40N tmp-size40N ; draw-circle blue 0 0 tmp-size40N ];;;latitidunal expansion end ;TIME DEPENDENT SEEDING ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;seed-br2-randomly;;;;;;;;;;;; ;;POSSIBLE MODIFICATIONS MAX NUMBER OF SOURCES DOESN'T DEPEND ON THE AGE OF PHENOMENA ;;STRENGH OF SOURCES DEPEND ON THE AGE OF PHENOMENA ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;IMPORTANT CONDITION OF POLAR VORTEX BREAKDOWN ; ONLY 1,2,4, 4a POllUTION SCENARIOS ARE IMPLEMENTED IN THIS VERSION ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;seed-br2-randomly;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to seed-br2-randomly; let dist 0.5 * too-close * ( 1 + ticks / lifetime-phenomena) set CONDITION_VORTEX_BREAKDOWN? false let count-cells 0 clear-drawing import-drawing "NH_40N.png" ask cells with [br2-on?] [ set hidden? true set br2-on? false] if scenario = "pollution1" [ set br2-emission-sources 64] if scenario != "pollution1" and scenario != "vortex" [ set br2-emission-sources round (DEBUG-number-br2 )] ;; DESCRIBED IN PAPER REFERENCED IN THE PROGRAM'S INFORMATION SECTION if scenario = "pollution1" or scenario = "pollution2" [ set all-cells-dist-count count cells with [distancexy 0 0 < dist ] ;;wr-x wr-y 0 0 set dist-area dist * dist show "all-cells-dist-count" show all-cells-dist-count ;; NOT IMLEMENTED IN THIS VERSION if br2-emission-sources >= all-cells-dist-count [ set CONDITION_VORTEX_BREAKDOWN? true show "VORTEX_BREAKDOWN" stop] ask n-of br2-emission-sources cells with [distancexy 0 0 < dist ] [become-alive-source] ;spured spread out of centre with lifetime-phenomena ] ;; SCENARIO pollution3 NOT AVAILABLE FROM INTERFACE VIEW if scenario = "pollution3" [ ;; set ring-pollution 10 set width-pollution 15 set ring-pollution 5 set width-pollution 25 set all-cells-dist-count count cells with [distancexy 0 0 >= ring-pollution and distancexy 0 0 < ring-pollution + width-pollution];;wr-x wr-y 0 0 ;;IMPORTANT CONDITION OF POLAR VORTEX BREAKDOWN if br2-emission-sources >= all-cells-dist-count [ set CONDITION_VORTEX_BREAKDOWN? true show "VORTEX_BREAKDOWN" stop] ask n-of br2-emission-sources cells with [distancexy 0 0 >= ring-pollution and distancexy 0 0 < ring-pollution + width-pollution ] [ become-alive-source] ;spured spread out of centre with lifetime-phenomena no-display draw-circle red 0 0 ring-pollution + width-pollution display ] ;; DESCRIBED IN PAPER REFERENCED IN THE PROGRAM'S INFORMATION SECTION if scenario = "pollution4" [ set ring-pollution 10 set width-pollution 15 wobble-ring set all-cells-dist-count count cells with [distancexy wr-x wr-y >= ring-pollution and distancexy wr-x wr-y <= ring-pollution + width-pollution] ;;NOT IMPEMENTED IMPORTANT CONDITION OF POLAR VORTEX BREAKDOWN if br2-emission-sources >= all-cells-dist-count [ set CONDITION_VORTEX_BREAKDOWN? true show "VORTEX_BREAKDOWN" stop] ask n-of br2-emission-sources cells with [distancexy wr-x wr-y >= ring-pollution and distancexy wr-x wr-y <= ring-pollution + width-pollution ] [ become-alive-source] ;spured spread out of centre with lifetime-phenomena no-display ;draw-circle [rcolor rx ry dist] draw-circle red wr-x wr-y ring-pollution draw-circle red wr-x wr-y (ring-pollution + width-pollution) display ] ;; WOBBLING AND TRANSLATION TO GREENLAND - ASSYMMETRIC CLOUD if scenario = "pollution4a" [ set transl-x -5 set transl-y -5 set ring-pollution 10 set width-pollution 15 wobble-ring-transl ; visualize centre of vortex set all-cells-dist-count count cells with [distancexy (wr-x + transl-x) ( wr-y + transl-y) >= ring-pollution and distancexy (wr-x + transl-x) (wr-y + transl-y) <= ring-pollution + width-pollution] ;;IMPORTANT CONDITION OF POLAR VORTEX BREAKDOWN if br2-emission-sources >= all-cells-dist-count [ set CONDITION_VORTEX_BREAKDOWN? true show "VORTEX_BREAKDOWN" stop] ask n-of br2-emission-sources cells with [distancexy (wr-x + transl-x) (wr-y + transl-y) >= ring-pollution and distancexy ( wr-x + transl-x) ( wr-y + transl-y) <= ring-pollution + width-pollution ] [ become-alive-source] ;spured spread out of centre with lifetime-phenomena no-display ;draw-circle [rcolor rx ry dist] draw-circle red (wr-x + transl-x) ( wr-y + transl-y) ring-pollution draw-circle red (wr-x + transl-x) ( wr-y + transl-y) (ring-pollution + width-pollution) display ] set immediate-br2-flux br2-emission-sources * bro-source end ;; RENEWAL OF OZONE POLLUTION/ BROMINE EMISSIONS - UPDATE OF STATE VARIABLES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;become-alive-source;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to become-alive-source; set br2-on? true ;accumulated VC BrO - cell may have VC BrO before renewal of ozone/ bromine pollution set amount-cell-bro amount-cell-bro + bro-source ;; cnt-new-source shows how many times cell operates as an active source set cnt-new-source cnt-new-source + 1 ;; we don't show emission sources set color red show-turtle become-alive-cell end ; UPDATE STATE OF A CELL that WILL NOW HAVE BrO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;become-alive-cell;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to become-alive-cell; cell with bro-propagation set bro-on? true set cnt-ticks-alive cnt-ticks-alive + 1 end ;;MAIN ITERATION PROCEDURE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;go-scenario;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to go-scenario clear-drawing import-drawing "NH_40N.png" set bro-source DEBUG-bro-source ;;UPDATE OF STREGTH OZONE-BROMINE POLLUTION SOURCES ifelse (prerun? = false ) [update-plot update-statitics-every-tick ] [setup-plot] ;; FOR MARCH-JUNE PLAYING PERIOD main-update ask cells with [bro-on?] [recolor-cellVCBrO amount-cell-bro] ;update-view-cloud-sources vv tick ;; ONE TIME STEP IS 24 HRS if ticks = PRERUN-TIME [ set prerun? false] ;; CHANGE OF PARAMETRIZATION FOR INPUT AND DEPLETION if ticks = LIFETIME-PHENOMENA + 1 or CONDITION_VORTEX_BREAKDOWN? = true [ show "ticks = LIFETIME-PHENOMENA or CONDITION_VORTEX_BREAKDOWN?" show ticks update-statitics-after-run stop] ;; TERMINATION OF ARCTIC BE NETWORK end ;;UPDATE CA STATE VARIABLES- UPDATE BRO NETWORK AT EVERY ITERTION ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;main-update;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to main-update; update-br2-sources-globals ;; UPDATE MASS BrO and some STATISTICS SET BRO-CELLS-PREVIOUS count cells with [bro-on?] ;; ONLY CELLS THAT HAVE ENOUGH BRO will propagate it set cnt-newlygainedBrOcell-die 0 ask cells with [bro-on? and amount-cell-bro < bro-threshold-die ] [ set cnt-newlygainedBrOcell-die cnt-newlygainedBrOcell-die + 1 SCAcloud-cell-die ;; LOSS OF THE MASS BRO AT LOW THRESHOLD ] set bro-loss cnt-newlygainedBrOcell-die ;; STATISTICS OF LOSS set cnt-newlygainedBrOcell-die 0 ;;UPDATE AEROSOL LOADING set-aerosol-loading ;; RANDOMLY DISTRIBUTED AEROSOL LOADING ask cells with [bro-on?] [ SCApropagate-cloud] ;; PROPAGATION/ REDISTRIBUTION (AND LOSS) OF THE MASS BRO DUE TO AEROSOL LOSS ask cells with [bro-on?] [ recolor-cellVCBrO amount-cell-bro] ;; RECOLOR NETWORK'S PLOT ;;MORE STATITICS set bro-loss bro-loss + cnt-newlygainedBrOcell-die ;; STATISTICS LOSS VC BrO SET BRO-CELLS count cells with [bro-on?] set prv-TOTAL-BRO-CLOUD TOTAL-BRO-CLOUD set TOTAL-BRO-CLOUD sum [amount-cell-bro] of cells with [bro-on?] set immediate-br2-flux br2-emission-sources * bro-source set total-br2 total-br2 + immediate-br2-flux set accum-total-bro accum-total-bro + TOTAL-BRO-CLOUD set prv-TOTAL-LOSS TOTAL-LOSS set TOTAL-LOSS TOTAL-BR2 - TOTAL-BRO-CLOUD update-localBrOclmn ;; NOT IN THIS VERSION for STATISTICS PLOT update-view-cloud-sources vv ;; NOT IN THIS VERSION to chose view - sources only or all active cells end ;;THE INTERMEDIATE LAYER ( ATMOSPHERIC BOUNDARY lAYER) OF THE ARCTIC BE NETWORK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;RANDOM AEROSOL LOADING;;;;;;;;;; ;;;;;set-aerosol-loading;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to set-aerosol-loading ask cells with [distancexy 0 0 < 50] [ set sink-off? true] ;; DEBUG-AEROSOL-LOSS RATIO OF A NUMBER OF NODES WITH SINK OF THE MASS BrO TO A NUMBER OF ALL ACTIVE NODES let cnt-cells round ((count cells with [distancexy 0 0 < 50 and br2-on? = false] ) * DEBUG-AEROSOL-LOSS) if cnt-cells > 0 [ ask n-of cnt-cells cells with [distancexy 0 0 < 50 and br2-on? = false] [ set sink-off? false] ] end ;; CA PROCEDURE REDISTRIBUTION OF THE MASS BRO OVER NETWORK ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;SCApropagate-cloud;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to SCApropagate-cloud let candidates hex-neighbors with [br2-on? = false]; WE WOULD LIKE no source br2 IN NEIGHBOUR let propagated-amount-cell-bro amount-cell-bro * 0.5 / speed-propagation-map-distortion if any? candidates [ set amount-cell-bro amount-cell-bro - propagated-amount-cell-bro ;;WIND SYSTEM IS PURELY RANDOM ask one-of candidates [ become-alive-cell set amount-cell-bro amount-cell-bro + propagated-amount-cell-bro if sink-off? = false [ set cnt-newlygainedBrOcell-die cnt-newlygainedBrOcell-die + 1 SCAcloud-cell-die ] ;; PERMANENT LOSS OF THE MASS BRO ] ] end ;; CA PROCEDURE LOSS OF THE MASS BRO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;SCAcloud-cell-die;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to SCAcloud-cell-die hide-turtle set color blue set bro-on? false set br2-on? false set amount-cell-bro 0 end ;; CA PROCEDURE MARKING - INPUT OF THE MASS BRO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;become-alive;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to become-alive show-turtle ask hex-neighbors [ set live-neighbor-count live-neighbor-count + 1 if live-neighbor-count = 6 []; [ set color red ] ] end ;;TAKEN from Hex Cells Example ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;setup-grid;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to setup-grid set-default-shape turtles "hex" ask patches [ sprout-cells 1 [ hide-turtle set eligible? false if pxcor mod 2 = 0 [ set ycor ycor - 0.5 ] ] ] ask cells [ ifelse pxcor mod 2 = 0 [ set hex-neighbors cells-on patches at-points [[0 1] [ 1 0] [ 1 -1] [0 -1] [-1 -1] [-1 0]] ][ set hex-neighbors cells-on patches at-points [[0 1] [ 1 1] [ 1 0] [0 -1] [-1 0] [-1 1]] ] set eligible? true ] ask cells[ set bro-on? false set sink-off? true; all cells have aerosol loading set br2-on? false set amount-cell-bro 0 set cnt-ticks-alive 0 set cnt-new-source 0 set energy 0 set radius-cell distancexy 0 0 set speed-propagation-map-distortion 1 ;; AS IF IT WAS NO DISTORTION ;;distortion of azimuthal equadistant projection along latitudes ;;http://info.wlu.ca/~wwwgeog/special/geomatics/html/arcprojections.htm#equidaz ] set all-cells-world-count count cells ask patches [ set penergy 0] ;;debugging ask cells with [radius-cell < 30 and radius-cell >= 15] [ set speed-propagation-map-distortion (1 + 3.7 * ( radius-cell - 15) / ( 30 - 15)) ] ask cells with [radius-cell < 45 and radius-cell >= 30] [ set speed-propagation-map-distortion (4.7 + 6.4 * ( radius-cell - 30) / ( 45 - 30)) ] ask cells with [radius-cell < 46 and radius-cell >= 45] [ set speed-propagation-map-distortion (11.1 + 10.8 * ( radius-cell - 45) / ( 60 - 45)) ] end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;PLOTTING PROCEDURES;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to setup-plot set-current-plot "time series BrO" set-current-plot "max-nodal-BRO" ; set-current-plot "active cells" set-current-plot "br2-sources-vortex" ; set-plot-y-range min-pycor max-pycor end to update-plot set-current-plot "max-nodal-BRO" set-current-plot-pen "max-nodal-BRO" plot RANGE-AMOUNT-CELL-BRO set-current-plot "time series BrO" set-current-plot-pen "BrO" plot TOTAL-BRO-CLOUD / plot-scaling set-current-plot-pen "bro-input" plot immediate-br2-flux / plot-scaling set-current-plot-pen "norm-distr-number-br2" plot br2-emission-sources * plot-scaling ;; for better visialization set-current-plot "active cells" set-current-plot-pen "bro-cells" plot BRO-CELLS set-current-plot-pen "bro-loss" plot bro-loss set-current-plot-pen "bro-input" let gradBrOtotalamount BRO-CELLS - BRO-CELLS-PREVIOUS ifelse gradBrOtotalamount < 0 [ set gradBrOtotalamount (-1) * gradBrOtotalamount set-plot-pen-color black ] [set-plot-pen-color red] plot gradBrOtotalamount * 10 set-current-plot "br2-sources-vortex" set-current-plot-pen "vortex-density-sources" plot br2-emission-sources / all-cells-dist-count; set-current-plot-pen "extended-density-sources" plot br2-emission-sources / all-cells-world-count;extended-density-sources set-current-plot "size40Ndbg" set-current-plot-pen "drawN" plot max [radius-cell] of cells with [bro-on?]; set-current-plot-pen "drawNsource" plot max [radius-cell] of cells with [br2-on?]; end ;; read reference GOME BRO data to the plot to update-GOMEdataplot set-current-plot "time series BrO" ; clear-plot ;let line-of-code "" let GOME-BrO 0; let GOME-BrO-1996 0; let GOME-BrO-1997 0 let GOME-BrO-1998 0 let GOME-BrO-1999 0 let GOME-BrO-2000 0 let end-of-code? false file-open "BrOFGOME1996_2000.txt" while [not file-at-end? and not end-of-code?] [ let in1 file-read set GOME-BrO-1996 in1 * 1e-25 let in2 file-read set GOME-BrO-1997 in2 * 1e-25 let in3 file-read set GOME-BrO-1998 in3 * 1e-25 let in4 file-read set GOME-BrO-1999 in4 * 1e-25 let in5 file-read set GOME-BrO-2000 in5 * 1e-25 set-current-plot-pen "GOMEBrO-1996" plot GOME-BrO-1996 set-current-plot-pen "GOMEBrO-1997" plot GOME-BrO-1997 set-current-plot-pen "GOMEBrO-1998" plot GOME-BrO-1998 set-current-plot-pen "GOMEBrO-1999" plot GOME-BrO-1999 set-current-plot-pen "GOMEBrO-2000" plot GOME-BrO-2000 ] set end-of-code? true file-close end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;draw-ellipse;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to draw-circle-scaling [dist] crt 1 [ set shape "arrow" set size 0.05 setxy dist 0.25 set color brown set pen-size 0.01 set heading 1 pen-down ; or show-turtle but this way i don't need no-display repeat 720 [ fd (pi * dist / 360) ; move in circle dist is a radius of pollution area lt 0.5 ] pen-up die] end to draw-circle [rcolor rx ry dist] crt 1 [ set shape "arrow" set size 0.05 setxy rx + dist ry set color rcolor set pen-size 0.01 set heading 1 pen-down ; or show-turtle but this way i don't need no-display repeat 720 [ fd (pi * dist / 360) ; move in circle dist is a radius of pollution area lt 0.5 ] pen-up die] end to update-view-cloud-sources [ m? ] ;; ask cells [ set hidden? true ] in update-view update-cloud-colors ; ifelse m? [ ask cells with [bro-on?] [ set pcolor color set hidden? false] diffuse pcolor 0.5 ; ] [ ; ask cells with [br2-on?] [ set color red set pcolor color set hidden? false] ] ;; ;;SHOW SOURCES only for the current time step ifelse m? [ ask cells with [bro-on?] [ set hidden? false] ] [ ask cells with [br2-on?] [ set color red set hidden? false] ] ;; ;;SHOW SOURCES only for the current time step end ; WOBBLING OF THE CENTRAL POINT OF THE POLLUTION < INPUT BrO> CONFIGURATION ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;; wobble-ring;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to wobble-ring let wobbling-x param-wobble * (random 1.5 + random -1.5) let wobbling-y param-wobble * (random 1.5 + random -1.5) set wr-x wr-x + wobbling-x set wr-y wr-y + wobbling-y ;show "wobbling" show wr-x show wr-y crt 1 [ setxy wr-x wr-y set color blue set hidden? false] end to wobble-ring-transl let wobbling-x param-wobble * (random 1.5 + random -1.5) let wobbling-y param-wobble * (random 1.5 + random -1.5) set wr-x wr-x + wobbling-x set wr-y wr-y + wobbling-y ;show "wobbling" show wr-x show wr-y crt 1 [ setxy wr-x + transl-x wr-y + transl-y set color blue set hidden? false] end ;;view the cloud or view the sources ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;update-view;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to update-view-old ;;vv = on sources already implemented, only need for toggle ;;vv = off cloud ifelse vv [ ask cells with [color = brown] [ set hidden? true]] [ ask cells with [bro-on?] [set color brown set hidden? false] ] end to update-cloud-colors ask cells [ set hidden? true set penergy 0 set pcolor penergy ] let x-maxrange-temp precision max [amount-cell-bro] of cells with [ bro-on?] 3 let x-minrange-temp precision min [amount-cell-bro] of cells with [ bro-on?] 3 SET RANGE-AMOUNT-CELL-BRO x-maxrange-temp ;; for simplicity ask cells with [bro-on?] [ if amount-cell-bro < ( x-maxrange-temp * 0.25) [ set color yellow ] if amount-cell-bro >= (x-maxrange-temp * 0.25) and amount-cell-bro < (x-maxrange-temp * 0.5)[ set color brown ] if amount-cell-bro >= (x-maxrange-temp * 0.5) and amount-cell-bro < (x-maxrange-temp * 0.75)[ set color orange ] if amount-cell-bro >= (x-maxrange-temp * 0.75) and amount-cell-bro <= x-maxrange-temp [ set color red ] set penergy color ] show " tick x-maxrange-temp changing over time needs to be recorded " show ticks show x-maxrange-temp end ;; CA procedure to recolor-cellVCBrO [ DOASscale] let clr-scle 1 ;0.1 set DOASscale DOASscale * clr-scle if DOASscale > 1.05[ set color 14] ;red if DOASscale > 1 and DOASscale <= 1.05 [ set color 15] if DOASscale > 0.95 and DOASscale <= 1 [ set color 16] if DOASscale > 0.9 and DOASscale <= 0.95 [ set color 24] ;orange if DOASscale > 0.85 and DOASscale <= 0.9 [ set color 25] if DOASscale > 0.8 and DOASscale <= 0.85 [ set color 26] if DOASscale > 0.75 and DOASscale <= 0.8 [ set color 34] ;brown if DOASscale > 0.7 and DOASscale <= 0.75 [ set color 35] if DOASscale > 0.65 and DOASscale <= 0.7 [ set color 36] if DOASscale > 0.6 and DOASscale <= 0.65 [ set color 44] ;yellow if DOASscale > 0.55 and DOASscale <= 0.6 [ set color 45] if DOASscale > 0.5 and DOASscale <= 0.55 [ set color 46] if DOASscale > 0.45 and DOASscale <= 0.5 [ set color 54] ;green if DOASscale > 0.4 and DOASscale <= 0.45 [ set color 55] if DOASscale > 0.35 and DOASscale <= 0.4 [ set color 56] if DOASscale > 0.3 and DOASscale <= 0.35 [ set color 64] ;lime if DOASscale > 0.25 and DOASscale <= 0.3 [ set color 65] end ;;;;;;;;SOME STATISTICS PROCEDURES ;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;update-statitics-every-tick;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to update-statitics-every-tick ;; 10 bins ( init-bro-source - bro-thrershold-die ) / 16 let bin-width ( init-bro-source - bro-threshold-die ) / 10 let up init-bro-source let down init-bro-source - bin-width ;check DBG4 let dbg4 count cells with [ bro-on?] let dbg4-check 0 repeat 9 [ let stat-bro-clmn1 count cells with [ amount-cell-bro <= up and amount-cell-bro > down ] set dbg4-check dbg4-check + stat-bro-clmn1 set up down set down down - bin-width ] let stat-bro-clmn1 count cells with [bro-on? and amount-cell-bro <= up] show stat-bro-clmn1 set-current-plot "statistics for input and propagation of BRCNT" set-current-plot-pen "cloud-variability" let x-maxrange-temp precision max [amount-cell-bro] of cells with [ bro-on?] 3 let x-minrange-temp precision min [amount-cell-bro] of cells with [ bro-on?] 3 set-plot-x-range x-minrange-temp x-maxrange-temp set-histogram-num-bars 10 histogram [amount-cell-bro] of cells with [ bro-on?] set-current-plot-pen "L^-3" end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;update-statitics-after-run;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; cnt-new-source cnt-ticks-alive energy to update-statitics-after-run let k 1 let stat-br2 0 while [ k < LIFETIME-PHENOMENA + 1 ] [ set stat-br2 count cells with [ cnt-new-source = k] set k k + 1 ] set k 1;who of self let stat-bro 0 while [ k < lifetime-phenomena + 1 ] [ set stat-bro count cells with [ cnt-ticks-alive = k] set k k + 1 update-statitics-after-run-plot ] end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;update-statitics-after-run-plot;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; to update-statitics-after-run-plot ;; 10 bins ( 120? 130 - 0 ) / 10 let bin-width ( LIFETIME-PHENOMENA - 0 ) / 10 let up LIFETIME-PHENOMENA let down LIFETIME-PHENOMENA - bin-width repeat 9 [ let stat-bro-clmn1 count cells with [ cnt-ticks-alive <= up and cnt-ticks-alive > down ] set up down set down down - bin-width ] let stat-bro-clmn1 count cells with [ cnt-ticks-alive <= up] show stat-bro-clmn1 set-current-plot "statistics for cnt-ticks-alive of BRCNT" set-current-plot-pen "cnt-ticks-alive" set-plot-x-range 0 120 set-histogram-num-bars 10 histogram [cnt-ticks-alive] of cells with [ distancexy 0 0 <= 50] end ;;;;;;;;;;;;;;;;;;;;;;;;;;NOT IN THIS VERSION;;;;;;;;;;;;;;;;;;;;;;;;;; breed [rad1s rad1] breed [inwards inward-point] rad1s-own [ radius speed-rotation]; vortex can ever stop ; This is the core procedure. It moves the turtle to the next point ;; on the circle, the given distance along the curve. to arc-forward-by-dist [dist some-radius] ;; turtle procedure ;; calculate how much of an angle we'll be turning through ;; (essentially converting radians to degrees) let theta dist * 180 / (pi * some-radius) ;; turn to face the next point we're going to rt theta / 2 ;; go there fd dist ;; turn to face tangent to the circle rt theta / 2 end @#$#@#$#@ GRAPHICS-WINDOW 645 10 994 380 50 50 3.36 1 10 1 1 1 0 0 0 1 -50 50 -50 50 1 1 1 ticks BUTTON 17 13 91 46 NIL setup NIL 1 T OBSERVER NIL NIL NIL NIL BUTTON 166 13 226 46 go go-scenario\n T 1 T OBSERVER NIL NIL NIL NIL BUTTON 95 13 161 46 go go-scenario NIL 1 T OBSERVER NIL NIL NIL NIL MONITOR 498 384 557 429 bro-cells count cells with [bro-on?] 17 1 11 PLOT 11 223 490 495 time series BrO time total-bro 0.0 120.0 0.0 500.0 true false PENS "BrO" 1.0 0 -2674135 true "bro-cells" 1.0 0 -8630108 true "loss" 1.0 0 -14835848 true "bro-input" 1.0 0 -13345367 true "cloud-dense" 1.0 0 -5825686 true "GOMEBrO-1996" 1.0 0 -16777216 true "GOMEBrO-1997" 1.0 0 -16777216 true "GOMEBrO-1998" 1.0 0 -16777216 true "GOMEBrO-1999" 1.0 0 -16777216 true "GOMEBrO-2000" 1.0 0 -16777216 true "modelBrO" 1.0 0 -2674135 true "exp1" 1.0 0 -10899396 true "exp2" 1.0 0 -10899396 true "exp3" 1.0 0 -10899396 true "exp4" 1.0 0 -10899396 true "exp5" 1.0 0 -10899396 true "exp6" 1.0 0 -10899396 true "exp7" 1.0 0 -10899396 true "exp8" 1.0 0 -10899396 true "norm-distr-number-br2" 1.0 0 -10899396 true MONITOR 561 283 625 328 loss-cld ;total-loss / ticks\nprecision total-loss 3 17 1 11 SWITCH 11 590 101 623 vv vv 0 1 -1000 MONITOR 497 285 557 330 bro-src br2-emission-sources 17 1 11 MONITOR 122 636 179 681 rads1 count rad1s 17 1 11 PLOT 14 70 212 220 active cells NIL NIL 0.0 120.0 0.0 1.0 true false PENS "default" 1.0 1 -16777216 true "bro-cells" 1.0 0 -16777216 true "bro-loss" 1.0 0 -13345367 true "bro-input" 1.0 0 -2674135 true PLOT 223 70 423 220 br2-sources-vortex NIL NIL 0.0 120.0 0.0 0.1 true false PENS "default" 1.0 0 -16777216 true "vortex-density-sources" 1.0 0 -2674135 true "extended-density-sources" 1.0 0 -16777216 true PLOT 713 550 1000 696 statistics for input and propagation of BRCNT NIL NIL 0.0 120.0 0.0 10.0 true false PENS "default" 1.0 0 -16777216 true "cloud-variability" 1.0 1 -13345367 true "L^-3" 1.0 0 -2674135 true PLOT 433 71 633 221 size40Ndbg NIL NIL 0.0 120.0 0.0 10.0 true false PENS "default" 1.0 0 -16777216 true "drawN" 1.0 0 -16777216 true "drawNsource" 1.0 0 -8630108 true CHOOSER 351 10 443 55 scenario scenario "pollution1" "pollution2" "pollution4" "pollution4a" 1 MONITOR 11 636 61 681 wrld-w world-width 17 1 11 MONITOR 66 636 116 681 wrld-h world-height 17 1 11 SLIDER 10 549 182 582 param-wobble param-wobble 0 1 0.5 0.1 1 NIL HORIZONTAL PLOT 194 534 394 660 max-nodal-BRO NIL NIL 0.0 120.0 0.0 5.0 true false PENS "default" 1.0 0 -16777216 true "max-nodal-BRO" 1.0 0 -16777216 true PLOT 415 550 704 700 statistics for cnt-ticks-alive of BRCNT NIL NIL 0.0 120.0 0.0 10.0 true false PENS "default" 1.0 1 -16777216 true "cnt-ticks-alive" 1.0 1 -13345367 true MONITOR 560 336 625 381 bro-in-cld precision TOTAL-BRO-CLOUD 3 17 1 11 MONITOR 561 236 624 281 input-cld ;;input of pollutants from the beginning of the phenomena\nprecision total-br2 3 17 1 11 MONITOR 562 385 624 430 per-cll ;BrO per active cell\nprecision (TOTAL-BRO-CLOUD / bro-cells) 4 17 1 11 MONITOR 500 337 558 382 pll-src% ;;immediate strengh of pollution\nprecision (bro-source / init-bro-source * 100) 2 17 1 11 MONITOR 497 236 554 281 inp-now ;;immediate input of pollutants\nprecision IMMEDIATE-BR2-FLUX 3 17 1 11 MONITOR 498 443 622 488 srcsovertime MULTIPLE-CNT-SOURCES 17 1 11 TEXTBOX 15 514 183 547 In this version options param-wobble and vv are disable 11 0.0 1 TEXTBOX 638 387 850 527 inp-now instant-input-of-mass BrO\ninput-cld total-input-of-mass BrO\nbro-src instant-number-of-source-cells\nloss-cld total-input-of-mass BrO \npll-src% mean-BrO-population-density\nbro-in-cld instant-mass-BrO\nsrcovertime total-count-of-source-cells 11 0.0 1 TEXTBOX 196 504 346 532 Evolution of the maximal BrO population density 11 0.0 1 TEXTBOX 721 502 981 553 statistics for input and propagation of BRCNT - the variability of the population density ( max and min of the nodal mass BrO)\n 11 0.0 1 TEXTBOX 426 505 687 544 statistics for cnt-ticks-alive of BRCNT - the variability of the network over the lifetime of the phenomena 11 0.0 1 @#$#@#$#@ WHAT IS MCLOUD-1? ----------------- MCLOUD-1 ( Mathematical Cloud one-layer network) is a minimal, one-layer stochastic CA network model of the Arctic bromine explosion (Arctic BE). Sketchily, Arctic BE can be characterized by the time-varying total amount BrO and its lifetime. We construct a flow distribution network with a predefined output pattern of the total amount BrO (the satellite BrO samples). We assume that the predefined output pattern is a distribution made up of the countable number of the mass points < nodes of the abstract network>. From a deeper perspective, the total amount BrO is a distribution over distributions. We build a minimal network which describes relations of the mass BrO distribution and distribution of the adaptive aerosol loading. Even the minimal solution becomes far from trivial because of the uncertainties in aerosol loads and the lack of data concerning decline phase of Arctic BE. HOW IT WORKS ------------ SETUP arranges cells in a hexagonal grid, as in Hex Cells Example. The edges of the grid do not wrap. Each iterataion network's scatter plot is updated: the SCA network is updated (aerosol loading is updated, set of source nodes is updated (input of the mass BrO) and eligible active cells are updated ( redistribution / propagation of teh mass BrO). In a scatter plot, active cells are shown in colors according their accumulated nodal mass BrO. Time series of the total amount BrO and statistics for the network are displayed. HOW TO USE IT ------------- SETUP SCENARIO pollution 1 pollution 2 - circle pollution pollution 4 pollution 4a - ring pollution GO advances the growth, stability and decline phase of the Arctic bromine explosion RELATED MODELS -------------- Diffusion Limited Aggregation Hex Cells Example and some others CREDITS AND REFERENCES ---------------------- The underlying philosophy has been to search for the fundamental principles in atmospehric modeling and ensure that atmospheric research is built on a solid theoretical foundation. The ultimate progress in earth sciences is impossible without identification of the control factors of the Earth's system. The study of the control factors of the Earth's system is inspired by works of many people, just to name Plato, B. Spinoza, F. Leibnitz, W. Goete, J. von Neumann, J. Lovelock, L. Margulis, B. Mandelbrot, S. Wolfram. Offered stochastic network simulates statitical distributions of the physisicochemical atmospehric boundary layer. The atmospehric science research and relevant mathematical conceptualization are not yet combined together, only some annotations exist. The NetLogo computing environment and software of U. Wilensky have well suited needs for the embodiment of the key points and ideas. REFERENCES ----------- Iudin, M., (2011), Study of fundamental physical principles in atmospheric modeling based on identification of atmosphere -climate control factors, part 4: Stochastic Cellular Automata Simulations Of The Arctic Bromine Explosion archiv.org COPYRIGHT NOTICE ---------------- Copyright 2011 M. Iudin. 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 @#$#@#$#@ default true 0 Polygon -7500403 true true 150 5 40 250 150 205 260 250 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 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 hex false 0 Polygon -7500403 true true 0 150 75 30 225 30 300 150 225 270 75 270 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 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 3800 [ go ] @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ default 0.0 -0.2 0 1.0 0.0 0.0 1 1.0 0.0 0.2 0 1.0 0.0 link direction true 0 Line -7500403 true 150 150 90 180 Line -7500403 true 150 150 210 180 @#$#@#$#@ 0 @#$#@#$#@