Brillouin zones: 100 first

October 29, 2013 at 07:50 - by eelvex   |   no comments (Leave a comment)

Share on RedditShare on FacebookShare on Google+Tweet about this on TwitterShare on StumbleUponPrint this page

Inspired by a blog post detailing the 27 first brillouin zones I revisited my code for plotting brillouin zones. Here are the first Brillouin zones for 30, 50, 500 and a zillion.

I also plotted a gazillion zones but there is no visible difference from the zillion zones.

Maybe I'll do the hexagonal next.


[TOC]

~30 zones

30brillouin_hue30brillouin_border

~50 zones

50brillouin_tile50brillouin_hue50brillouin_border

maybe 500 zones

500brillouin_hue500brillouin_border

a zillion zones

zillion_brillouin_huezillion_brillouin_border

J code for the plots

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
N =: 400  NB. plot points NxN(x4 - symmetries)
K =: >:2*N
r =: 40  NB. density. Better be a divisor of N
p =: >.2*(%:2)*N%r NB. lattice points that affect the plot
span =: (0 0) -.~ >,{;/(2,>:2*p) $ r*i:p  NB. (a,b)/(0,0)

fx =: 3 : 0  NB. y=0 point and gradient
  'a b' =. y
  p =. ((b%a)*(-:b)) + -:a
  p, p - ((b%a)*(1-~-:b)) + -:a
)

minz =: 3 :'(a>0) ~: 1 #~ ,.j./"1 (,.(K-])) <.0.5+ ,. |. 0 >. K <. N + (13 :''x + y*i:N'')/fx ''a b'' =. y'
mi0 =: 3 :'(K,K) $!.1 (K*N+>.-:|b=.{:y) # 0'
mi =: minz :: (mi0`(|.@mi0) @. (0>{:))

]M =: +/ mi"1 span

viewmat M NB. or save/whatever.
No tips yet.
Be the first to tip!
Like this post? Tip me with bitcoin!

1JdTFRNAV74xu3cMqBPiGzJqhY5EvdRYoa

Share on RedditShare on FacebookShare on Google+Tweet about this on TwitterShare on StumbleUponPrint this page
{ Tags: , , }

no comments

RSS / trackback

respond

Real Time Analytics