Skip to content

Commit a60a268

Browse files
committed
feat: si (100) passivation tutorial (claude)
1 parent 3e6d990 commit a60a268

File tree

1 file changed

+167
-0
lines changed

1 file changed

+167
-0
lines changed
Lines changed: 167 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,167 @@
1+
---
2+
# YAML header
3+
render_macros: true
4+
---
5+
6+
# Passivation of Silicon (001) Surface
7+
8+
## Introduction
9+
10+
This tutorial demonstrates how to passivate a reconstructed silicon (001) surface with hydrogen atoms, following the methodology described in the literature.
11+
12+
!!!note "Manuscript"
13+
Hansen, U., & Vogl, P.
14+
"Hydrogen passivation of silicon surfaces: A classical molecular-dynamics study."
15+
Physical Review B, 57(20), 13295–13304. (1998)
16+
[DOI: 10.1103/PhysRevB.57.13295](https://doi.org/10.1103/PhysRevB.57.13295){:target='_blank'}.
17+
18+
We will recreate the passivated surface structure shown in Fig. 8:
19+
20+
![Si(100) H-Passivated Surface](/images/tutorials/materials/surfaces/si_100_passivation/0-figure-from-manuscript.webp "H-Passivated Silicon (100)")
21+
22+
## 1. Adjust Silicon Surface Structure
23+
24+
### 1.1. Load Base Material
25+
26+
Navigate to [Materials Designer](../../../materials-designer/overview.md) and import the reconstructed Si(100) surface from [Standata](../../../materials-designer/header-menu/input-output/standata-import.md) using the search term "Silicon.*100.*reconstructed".
27+
28+
![Standata Si Import](/images/tutorials/materials/surfaces/si_100_passivation/standata-import.webp "Import Si(100) from Standata")
29+
30+
### 1.2. Launch JupyterLite Session
31+
32+
Select the "Advanced > [JupyterLite Transformation](../../../materials-designer/header-menu/advanced/jupyterlite-dialog.md)" menu item to launch the JupyterLite environment.
33+
34+
### 1.3. Open Modified `create_supercell.ipynb` Notebook
35+
36+
Open `create_supercell.ipynb` and replace the "Get input materials" cell with the following code to adjust the Si atom position:
37+
38+
```python
39+
from utils.jupyterlite import get_materials
40+
materials = get_materials(globals())
41+
material = materials[0]
42+
43+
# Find and adjust Si atom coordinates
44+
si_atoms_coordinates = [coordinate.value for coordinate in material.basis.coordinates.to_array_of_values_with_ids()]
45+
si_atoms_sorted = sorted(si_atoms_coordinates, key=lambda x: x[2], reverse=True)
46+
second_from_top_index = 1
47+
second_si_atom_coordinate = si_atoms_sorted[second_from_top_index]
48+
49+
print(f"Coordinates of the second Si atom: {second_si_atom_coordinate}")
50+
adjusted_coordinate = [coord + delta for coord, delta in zip(second_si_atom_coordinate, [0.025, 0, 0.025])]
51+
print(f"Adjusted coordinate: {adjusted_coordinate}")
52+
53+
new_coordinates = si_atoms_coordinates.copy()
54+
index_to_adjust = material.basis.coordinates.get_element_id_by_value(second_si_atom_coordinate)
55+
new_coordinates[index_to_adjust] = adjusted_coordinate
56+
material.set_coordinates(new_coordinates)
57+
```
58+
59+
### 1.4. Run Structure Adjustment
60+
61+
Run the notebook using "Run > Run All Cells". This will:
62+
1. Load the Si(100) structure
63+
2. Adjust the position of the specified Si atom
64+
3. Create a supercell if specified in the parameters
65+
4. Visualize the adjusted structure
66+
67+
![Adjusted Structure](/images/tutorials/materials/surfaces/si_100_passivation/adjusted-structure.webp "Adjusted Si(100) Structure")
68+
69+
## 2. Passivate the Surface
70+
71+
### 2.1. Open `passivate_slab.ipynb` Notebook
72+
73+
Find and open the `passivate_slab.ipynb` notebook to add hydrogen atoms to the surface.
74+
75+
### 2.2. Set Passivation Parameters
76+
77+
Configure the following parameters for hydrogen passivation:
78+
79+
```python
80+
# Passivation parameters
81+
PASSIVANT = "H" # Chemical symbol for hydrogen
82+
BOND_LENGTH = 1.46 # Si-H bond length in Angstroms
83+
SURFACE = "top" # Passivate only the top surface
84+
85+
# Surface detection parameters
86+
SHADOWING_RADIUS = 1.8 # In Angstroms
87+
DEPTH = 0.5 # In Angstroms
88+
89+
# Visualization parameters
90+
CELL_REPETITIONS_FOR_VISUALIZATION = [1, 1, 1]
91+
```
92+
93+
Key parameters explained:
94+
- `BOND_LENGTH`: Si-H bond length from literature
95+
- `SHADOWING_RADIUS`: Controls which atoms are considered surface atoms
96+
- `DEPTH`: How deep to look for surface atoms
97+
98+
![Passivation Parameters](/images/tutorials/materials/surfaces/si_100_passivation/passivation-params.webp "Passivation Parameters Visualization")
99+
100+
### 2.3. Run Passivation
101+
102+
Run all cells in the notebook. The passivation process will:
103+
1. Detect surface Si atoms
104+
2. Add H atoms at the specified bond length
105+
3. Generate the passivated structure
106+
107+
## 3. Analyze Results
108+
109+
After running both notebooks, examine the final structure:
110+
111+
### 3.1. Surface Structure
112+
Check that:
113+
- The adjusted Si atom position is correct
114+
- Surface reconstruction is maintained
115+
- H atoms are properly placed above surface Si atoms
116+
117+
### 3.2. Bond Geometry
118+
Verify:
119+
- Si-H bond length is ~1.46 Å
120+
- H atoms are approximately perpendicular to the surface
121+
- No H atoms are added to subsurface Si atoms
122+
123+
![Final Structure](/images/tutorials/materials/surfaces/si_100_passivation/final-structure.webp "Final H-Passivated Si(100)")
124+
125+
## 4. Save Passivated Structure
126+
127+
The final structure will be automatically passed back to Materials Designer where you can:
128+
1. Save it in your workspace
129+
2. Export it in various formats
130+
3. Use it for further calculations
131+
132+
## Interactive JupyterLite Notebook
133+
134+
The following embedded notebook demonstrates the complete process. Select "Run" > "Run All Cells".
135+
136+
{% with origin_url=config.extra.jupyterlite.origin_url %}
137+
{% with notebooks_path_root=config.extra.jupyterlite.notebooks_path_root %}
138+
{% with notebook_name='specific_examples/si_100_passivation.ipynb' %}
139+
{% include 'jupyterlite_embed.html' %}
140+
{% endwith %}
141+
{% endwith %}
142+
{% endwith %}
143+
144+
## Parameter Fine-tuning
145+
146+
To adjust the passivation:
147+
148+
1. Surface Detection:
149+
- Increase `SHADOWING_RADIUS` to be more selective about surface atoms
150+
- Adjust `DEPTH` to control how deep to look for surface atoms
151+
152+
2. Passivation:
153+
- Modify `BOND_LENGTH` for different Si-H distances
154+
- Change `SURFACE` to passivate different surfaces
155+
- Change `PASSIVANT` to use different passivating species
156+
157+
## References
158+
159+
1. Hansen, U., & Vogl, P. (1998). Hydrogen passivation of silicon surfaces: A classical molecular-dynamics study. Physical Review B, 57(20), 13295–13304.
160+
161+
2. Northrup, J. E. (1991). Structure of Si(100)H: Dependence on the H chemical potential. Physical Review B, 44(3), 1419–1422.
162+
163+
3. Boland, J. J. (1990). Structure of the H‐saturated Si(100) surface. Physical Review Letters, 65(26), 3325–3328.
164+
165+
## Tags
166+
167+
`silicon`, `surface`, `passivation`, `hydrogen`, `Si(100)`, `surface reconstruction`, `Si`, `H`

0 commit comments

Comments
 (0)