Passivation of Silicon (100) Surface.¶
Introduction.¶
This tutorial demonstrates how to passivate a reconstructed silicon (100) surface with hydrogen atoms, following the methodology described in the literature.
Manuscript
Hansen, U., & Vogl, P. "Hydrogen passivation of silicon surfaces: A classical molecular-dynamics study." Physical Review B, 57(20), 13295–13304. (1998) DOI: 10.1103/PhysRevB.57.13295. 123
We will recreate the passivated surface structure shown in Fig. 8:
1. Obtain the Silicon (100) Surface Structure.¶
1.1. Load Base Material.¶
Navigate to Materials Designer and import the reconstructed Si(100) surface from Standata.
1.2. Launch JupyterLite Session.¶
Select the "Advanced > JupyterLite Transformation" menu item to launch the JupyterLite environment.
1.3. Open Modified create_supercell.ipynb
Notebook.¶
Open create_supercell.ipynb
, select input material as the Si(100) structure, and set the supercell parameters in 1.1.:
SUPERCELL_MATRIX = [
[1, 0, 0],
[0, 1, 0],
[0, 0, 1]
]
# or use the scaling factor.
SCALING_FACTOR = None # [3, 3, 1].
Also add to the "Get input materials" cell the following code to adjust the Si atom position:
from utils.jupyterlite import get_materials
materials = get_materials(globals())
material = materials[0]
# Find coordinates of the Si atoms, list in descending order, and change the 2nd one from the top
si_atoms_coordinates = [coordinate for coordinate in slab.basis.coordinates.values]
si_atoms_sorted = sorted(si_atoms_coordinates, key=lambda x: x[2], reverse=True)
second_from_top_index = 1
second_si_atom_coordinate = si_atoms_sorted[second_from_top_index]
print(f"Coordinates of the second Si atom: {second_si_atom_coordinate}")
adjusted_coordinate = [
coord + delta for coord, delta in zip(second_si_atom_coordinate, [0.025, 0, 0.025])
]
print(f"Adjusted coordinate: {adjusted_coordinate}")
new_coordinates = si_atoms_coordinates.copy()
index_to_adjust = slab.basis.coordinates.get_element_id_by_value(second_si_atom_coordinate)
new_coordinates[index_to_adjust] = adjusted_coordinate
slab.set_coordinates(new_coordinates)
1.4. Run Structure Adjustment.¶
Run the notebook using "Run > Run All Cells". This will:
- Load the Si(100) structure
- Adjust the position of the specified Si atom
- Create a supercell if specified in the parameters
- Visualize the adjusted structure
2. Passivate the Surface.¶
2.1. Open passivate_slab.ipynb
Notebook.¶
Find and open the passivate_slab.ipynb
notebook to add hydrogen atoms to the surface.
2.2. Set Passivation Parameters.¶
Configure the following parameters for hydrogen passivation:
# Passivation parameters.
PASSIVANT = "H" # Chemical symbol for hydrogen.
BOND_LENGTH = 1.46 # Si-H bond length in Angstroms.
SURFACE = "top" # Passivate only the top surface.
# Surface detection parameters.
SHADOWING_RADIUS = 1.8 # In Angstroms.
DEPTH = 0.5 # In Angstroms.
# Visualization parameters.
CELL_REPETITIONS_FOR_VISUALIZATION = [1, 1, 1]
Key parameters explained:
BOND_LENGTH
: Si-H bond length from literature.SHADOWING_RADIUS
: Controls which atoms are considered surface atoms, set to be below the distance between top Si atoms pair.SURFACE
: Passivate only the top surface.DEPTH
: How deep to look for surface atoms, set to include only top Si atoms.
2.3. Run Passivation.¶
Run all cells in the notebook. The passivation process will:
- Detect surface Si atoms
- Add H atoms at the specified bond length
- Generate the passivated structure
3. Analyze Results.¶
After running both notebooks, examine the final structure:
Check that:
- The adjusted Si atom position is correct
- Surface reconstruction is maintained
- H atoms are properly placed above surface Si atoms
4. Save the Results.¶
The final structure will be automatically passed back to Materials Designer where you can: 1. Save it in your workspace 2. Export it in various formats 3. Use it for further calculations
Interactive JupyterLite Notebook.¶
The following embedded notebook demonstrates the complete process. Select "Run" > "Run All Cells".
Parameter Fine-tuning.¶
To adjust the passivation:
-
Surface Detection:
-
Increase
SHADOWING_RADIUS
to be more selective about surface atoms -
Adjust
DEPTH
to control how deep to look for surface atoms -
Passivation:
-
Modify
BOND_LENGTH
for different Si-H distances - Change
SURFACE
to passivate different surfaces - Change
PASSIVANT
to use different passivating species
References.¶
-
U. Hansen and P. Vogl. Hydrogen passivation of silicon surfaces: a classical molecular-dynamics study. Physical Review B, 57(20):13295–13304, 1998. URL: https://doi.org/10.1103/physrevb.57.13295. ↩
-
J. E. Northrup. Structure of si(100)h: dependence on the h chemical potential. Physical Review B, 44(3):1419–1422, 1991. URL: https://doi.org/10.1103/physrevb.44.1419. ↩
-
J. J. Boland. Structure of the h‐saturated si(100) surface. Physical Review Letters, 65(26):3325–3328, 1990. URL: https://doi.org/10.1103/physrevlett.65.3325. ↩