<jupyter_start><jupyter_text>**Background Theory**: 1st Brillouin Zone of A Face Centered Cubic and A Body Centered Cubic Go back to the interactive notebook**Source code:** https://github.com/osscar-org/quantum-mechanics/blob/develop/notebook/band-theory/theory/theory_bcc_fcc.ipynb  **Introduction**In solid-state systems, atoms are repeatedly presented in patterns in three-dimensional space. The lattice structure is employed to describe the periodical properties of the solid-state systems and materials. Unit cells are the simplest repeating unit in a crystal. We demonstrate the two most typical unit cells, namely body-centered cubic, and face-centered cubic. X-ray diffraction is an experimental technique to characterize the sample of the material. The intense peaks of scattered radiation can be observed from the x-ray diffraction. The reciprocal lattice is constructed mathematically from the x-ray diffraction. Furthermore, the Wigner-Seitz primitive cell can be constructed from the reciprocal space, which is called the Brillouin zone. The Brillouin zone plays an important role in the solid-state theory.  **BCC and FCC**The unit cell is the simplest repeating unit in the three-dimensional space of the crystal. In metals, atoms commonly arrange themselves into the body-centered cubic (BCC) crystal structure. In the BCC crystal structure, one atom per lattice point is at each corner and the center of the cube as shown in the left figure below. BCC crystal is significantly stable since the nearly close-packed structure, which has a high number of nearest neighbors and next-nearest neighbors.The most common crystal structure is face-centered cubic (FCC), which has a single atom at each lattice point on the cube's corners and faces. FCC crystal structure has the highest packing density, which is one of the most stable crystal structures. The FCC crystal structure is shown in the right figure below.<jupyter_code>import nglview as nv
from ipywidgets import HBox, HTML
from ase.lattice.cubic import BodyCenteredCubic
from ase.lattice.cubic import FaceCenteredCubic
import numpy as np
atoms1 = BodyCenteredCubic(directions=[[1,0,0], [0,1,0], [0,0,1]],
                          size=(2,2,2), symbol='Cu', pbc=(1,1,1),
                          latticeconstant=3.0)

atoms2 = FaceCenteredCubic(directions=[[1,0,0], [0,1,0], [0,0,1]],
                          size=(2,2,2), symbol='Cu', pbc=(1,1,1),
                          latticeconstant=3.0)
list1 = [];

for i, j in enumerate(atoms1):
    if max(j.position) > 3.0:
        list1.append(i)
        
for i in reversed(list1):
    atoms1.pop(i)
    
list2 = [];

for i, j in enumerate(atoms2):
    if max(j.position) > 3.0:
        list2.append(i)
        
for i in reversed(list2):
    atoms2.pop(i)
m1 = nv.NGLWidget(width='400px', height='400px')
m2 = nv.NGLWidget(width='400px', height='400px')

m1.background='white'
m2.background='white'

m1.add_component(nv.ASEStructure(atoms1))
m1.clear()
m1.add_ball_and_stick()

for i in np.arange(len(atoms1)-1):
    for j in np.arange(i+1, len(atoms1)):
        v1 = atoms1[i].position - atoms1[j].position
        if np.linalg.norm(v1) > 3.0:
            continue
        if (np.dot(v1, np.array([1, 0, 0])) == 0.0 
        or np.dot(v1, np.array([0, 1, 0])) == 0.0 
        or np.dot(v1, np.array([0, 0, 1])) == 0.0):
            m1.shape.add_cylinder(atoms1[i].position.tolist(), atoms1[j].position.tolist(), [1, 0, 0], 0.1)
        
m2.add_component(nv.ASEStructure(atoms2))
m2.clear()
m2.add_ball_and_stick()

for i in np.arange(len(atoms2)-1):
    for j in np.arange(i+1, len(atoms2)):
        v2 = atoms2[i].position - atoms2[j].position
        if np.linalg.norm(v2) > 3.0 or np.linalg.norm(v2) < 3.0:
            continue
        if (np.dot(v2, np.array([1, 0, 0])) == 0.0 
        or np.dot(v2, np.array([0, 1, 0])) == 0.0 
        or np.dot(v2, np.array([0, 0, 1])) == 0.0):
            m2.shape.add_cylinder(atoms2[i].position.tolist(), atoms2[j].position.tolist(), [1, 0, 0], 0.1)
        
label1 = HTML(value = f"<div style='width: 400px; text-align:center;'><b><font color='black'><font size=5>Body Centered Cubic</b></div>")
label2 = HTML(value = f"<div style='width: 400px; text-align:center;'><b><font color='black'><font size=5>Face Centered Cubic</b></div>")

display(HBox([label1, label2]), HBox([m1, m2]))<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.12648401826484018, 'fraction_numerical': 0.03744292237442922, 'mean_word_length': 3.655685441020191, 'pattern_counts': {'":': 0, '<': 18, '<?xml version=': 0, '>': 21, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '596704', 'license': 'MIT', 'n_tokens_mistral': 1516, 'n_tokens_neox': 1430, 'n_words': 456, 'path': 'notebook/band-theory/theory/theory_bcc_fcc.ipynb', 'repo_name': 'osscar-org/Quantum-Mechanics', 'size': '4380'}