In [1]:
%matplotlib inline

In [2]:
nodes, edges = [], []

创建一个(111)面


In [3]:
from catplot.grid_components.nodes import Node2D
from catplot.grid_components.edges import Edge2D

top 位


In [4]:
top = Node2D([0.0, 0.0], size=800, color="#2A6A9C")

# 辅助top位
t1 = top.clone([0.0, 1.0])
t2 = top.clone([1.0, 0.0])
t3 = top.clone([1.0, 1.0])

In [5]:
te1 = Edge2D(top, t1, width=5)
te2 = Edge2D(top, t2, width=5)
te3 = Edge2D(t1, t2, width=5)

In [6]:
nodes.append(top)
edges.extend([te1, te2, te3])

bridge位


In [7]:
bridge1 = Node2D([0.0, 0.5], style="s", size=600, color="#5A5A5A", alpha=0.6)
bridge2 = Node2D([0.5, 0.0], style="s", size=600, color="#5A5A5A", alpha=0.6)
bridge3 = Node2D([0.5, 0.5], style="s", size=600, color="#5A5A5A", alpha=0.6)

# 辅助bridge位
b1 = Node2D([0.5, 1.0])
b2 = Node2D([1.0, 0.5])

In [8]:
be1 = Edge2D(bridge1, bridge2)
be2 = Edge2D(bridge1, bridge3)
be3 = Edge2D(bridge2, bridge3)
be4 = Edge2D(bridge3, b2)
be5 = Edge2D(b2, b1)
be6 = Edge2D(bridge3, b1)

In [9]:
nodes.extend([bridge1, bridge2, bridge3])
edges.extend([be1, be2, be3, be4, be5, be6])

hollow 位


In [10]:
hollow1 = Node2D([1/3., 1./3], style="h", size=700, color="#5A5A5A", alpha=0.3)
hollow2 = Node2D([2/3., 2./3], style="h", size=700, color="#5A5A5A", alpha=0.3)

In [11]:
nodes.extend([hollow1, hollow2])

绘制重复单元


In [12]:
from catplot.grid_components.supercell import SuperCell2D
from math import sqrt

In [13]:
supercell = SuperCell2D(nodes, edges, cell_vectors=[[1.0, 0.0],
                                                    [0.5, sqrt(3)/2]])

In [14]:
from catplot.grid_components.grid_canvas import Grid2DCanvas

In [15]:
canvas = Grid2DCanvas()
canvas.add_supercell(supercell)



In [16]:
canvas.draw()
canvas.figure


Out[16]:

扩展


In [17]:
canvas_big = Grid2DCanvas(figsize=(30, 20), dpi=60)



In [18]:
expanded_supercell = supercell.expand(4, 4)

In [19]:
canvas_big.add_supercell(expanded_supercell)

In [20]:
canvas_big.draw()
canvas_big.figure


Out[20]: