Introduction to Complex Systems

Prof. Dirk Brockmann, Winter Term 2021

Practical Problem 8: Pinwheels

Spatial Oscillators

Now we will look at a system of spatially arrange oscillators. Each patch in the netlogo world is an oscillator with a phase variable phase. Each patch interacts with neighboring patches.

Part 1

Initiale a system in which every patch has a random phase in the range 0,360. Color the patches accordingly e.g. with the command

ask patches [
    set pcolor hsb phase 100 100

Now we would like to write a go function that, at each tick, sets the phase of a patch to the average of the phases of the neighboring patches. How do we compute the average of phases, because they are defined on a circle? Well, we can use cartesian coordinates has a helper. Say $\theta_n$ are the phases of the neighbors we can compute

[ a = \sum_n \cos (\theta _n)\quad b = \sum_n \sin (\theta _n) ]

and then compute the angle via

[ \theta = \tan^{-1} (a,b) ]

Check the netlogo manual for how the trig functions work. Here's a little tip how this can be accomplished:

ask patches [
  let p phase
    let x 0 let y 0   
    ask neighbors [
        set x x + sin phase
        set y y + cos phase
    set phase atan x y

Part 2

Now make the phase a dynamic quantity such that the phase in each step is replaced by the average of the phases of the neighbors

[ \theta_n \rightarrow \left<\theta\right> ]