Clouds self-organization
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 [old-pen-mode minx maxx miny maxy ] patches-own [ chemical] turtles-own [d_growth] to setup create-turtles population [ setxy random-xcor random-ycor set size random 5 ;set shape "circlephase" set shape "cloud" set d_growth 0 ifelse label-all [set label who] [set label "" if (who = 0) [set label "yohooo"]] if (heading > 0 and heading < 90) [set color red] if (heading > 90 and heading <= 180) [set color green] if (heading > 180 and heading < 360) [set color gray] ] set minx min [xcor] of turtles set maxx max [xcor] of turtles set miny min [ycor] of turtles set maxy max [ycor] of turtles end to update set minx min [xcor] of turtles set maxx max [xcor] of turtles set miny min [ycor] of turtles set maxy max [ycor] of turtles let maxhumidity max[pcolor] of patches ; scale max = 40 ;print maxhumidity ask turtles [ if phase-turn? [ifelse humidity-preserve-cloud [let humidity 40 - [pcolor] of patch-here ; scale 30-40 ; set heading heading + phase-speed * (1 + 10 / (humidity + 0.001)) ] ifelse (heading > 0 and heading < 180) [if (maxhumidity > 0 ) [set heading heading + (phase-speed) * (1 - (humidity / (maxhumidity))) ]] ;this area needs refining with Ilan acording to real theory of humidity and clouds [set heading heading + (phase-speed + 0.001)] ] [set heading heading + phase-speed] let new-size sin(heading) * size-scaler set d_growth new-size - size set size new-size if (size < 0 ) [set size 0 set d_growth 0] if debug? [if who = 0 [print d_growth]] ifelse (d_growth > 0 ) [set color red] [set color green] ] if size > 0 [update-position ] set xcor xcor + random-float 0.1 - 0.05 + wind-speed set ycor ycor + random-float 0.1 - 0.05 if (size > 0) [set chemical chemical + 50] ; change here type of relationship between cloud and humidity of space ; if ( xcor < 2) [set xcor max10] ; if ( ycor < miny + 1 or ycor > maxy - 1) [set ycor 10] ] diffuse chemical (diffusion-rate / 100) if humidity-path-color? [ask patches [ set chemical chemical * (100 - evaporation-rate) / 100 ;; slowly evaporate chemical recolor-patch ] ] penmode tick end to update-position ;turtle procedure let old-heading heading let friends-set turtles in-radius radius set friends-set friends-set with [self != myself] set friends-set friends-set with [size > 0] if debug? [ print "______________________________________________" type "from " type who type " num of friends = " print count(friends-set) ask friends-set [if debug? [type "...frined number = "print who]] ] let myXvector 0 let myYvector 0 ask friends-set [ if debug? [type "self = " print myself type " friend # = " type who type " with d_growth =" print precision [d_growth] of turtle who 3] let inf influence who myself set myXvector myXvector + first inf set myYvector myYvector + last inf if debug? [ type "turtle " type myself type ": myXvector= " type precision myXvector 3 type " myXvector = " print precision myYvector 3] ] if move? [ set xcor xcor + myXvector * slowingfactor set ycor ycor + myYvector * slowingfactor ] end ;to-report cloudsize [cloudnum] ;turtle reporter - receives agent number ; let reporter 0 ; ask turtle cloudnum [set reporter size] ; report reporter ;end to-report influence [source destin] ;reports the influence of "source" on "destin" let destination destin let angle 0 let deltax [xcor] of turtle source - [xcor] of destination let deltay [ycor] of turtle source - [ycor] of destination ifelse (deltay != 0 or deltay != 0) [set angle atan deltay deltax] [set angle 0] set deltax cos angle set deltay sin angle let influence_source [d_growth] of turtle source ; let vectorsize ((deltax ^ 2) + (deltay ^ 2)) ^ 0.5 ; ;if debug? [type "" type "source = " type source type " dest = " type destination type "influence = " print precision influence_source 4 ; type " deltax = " type precision deltax 3 type " deltay = " type precision deltay 3 type " power = "print precision influence_source 3 ; type "d_growth of " type "of turtle " type source type "= " print precision influence_source 3] ; if (influence_source > 0 ) [set deltax precision (- deltax) 5 set deltay precision (- deltay) 5] ; let result list deltax deltay if debug? [type "turtle " type source ifelse (influence_source > 0) [type " REPEL "] [type " ATTRACT " ] type "turtle " type destin type " by" print result] report result end to penmode if (old-pen-mode != pen-down?) [if debug? [print "pen- changemode"] ifelse pen-down? [ask turtles [pen-down]] [ask patches [set pcolor black] ask turtles [pen-up pen-erase ] ] ] set old-pen-mode pen-down? end to recolor-patch ;; patch procedure ;; scale color to show chemical concentration set pcolor scale-color yellow chemical 0.1 5 end to clear clear-all reset-ticks end
There is only one version of this model, created almost 4 years ago by Alon Sela.
This model does not have any ancestors.
This model does not have any descendants.