|
| 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 | +") |
| 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 | + 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 | + 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 | + |
| 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 | +") |
| 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