|
| 1 | +--- |
| 2 | +# YAML header |
| 3 | +render_macros: true |
| 4 | +--- |
| 5 | + |
| 6 | +# Passivation of Silicon (100) Surface. |
| 7 | + |
| 8 | +## Introduction. |
| 9 | + |
| 10 | +This tutorial demonstrates how to passivate a reconstructed silicon (100) 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. Obtain the Silicon (100) 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). |
| 27 | + |
| 28 | + Structure") |
| 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`, select input material as the Si(100) structure, and set the supercell parameters in 1.1.: |
| 37 | + |
| 38 | +```python |
| 39 | +SUPERCELL_MATRIX = [ |
| 40 | + [1, 0, 0], |
| 41 | + [0, 1, 0], |
| 42 | + [0, 0, 1] |
| 43 | +] |
| 44 | + |
| 45 | +# or use the scaling factor. |
| 46 | +SCALING_FACTOR = None # [3, 3, 1]. |
| 47 | +``` |
| 48 | + |
| 49 | +Also add to the "Get input materials" cell the following code to adjust the Si atom position: |
| 50 | + |
| 51 | +```python |
| 52 | +from utils.jupyterlite import get_materials |
| 53 | +materials = get_materials(globals()) |
| 54 | +material = materials[0] |
| 55 | + |
| 56 | +# Find coordinates of the Si atoms, list in descending order, and change the 2nd one from the top |
| 57 | +si_atoms_coordinates = [coordinate for coordinate in slab.basis.coordinates.values] |
| 58 | +si_atoms_sorted = sorted(si_atoms_coordinates, key=lambda x: x[2], reverse=True) |
| 59 | +second_from_top_index = 1 |
| 60 | +second_si_atom_coordinate = si_atoms_sorted[second_from_top_index] |
| 61 | + |
| 62 | +print(f"Coordinates of the second Si atom: {second_si_atom_coordinate}") |
| 63 | +adjusted_coordinate = [ |
| 64 | + coord + delta for coord, delta in zip(second_si_atom_coordinate, [0.025, 0, 0.025]) |
| 65 | +] |
| 66 | +print(f"Adjusted coordinate: {adjusted_coordinate}") |
| 67 | +new_coordinates = si_atoms_coordinates.copy() |
| 68 | +index_to_adjust = slab.basis.coordinates.get_element_id_by_value(second_si_atom_coordinate) |
| 69 | +new_coordinates[index_to_adjust] = adjusted_coordinate |
| 70 | +slab.set_coordinates(new_coordinates) |
| 71 | +``` |
| 72 | + |
| 73 | + |
| 74 | + |
| 75 | +### 1.4. Run Structure Adjustment. |
| 76 | + |
| 77 | +Run the notebook using "Run > Run All Cells". This will: |
| 78 | + |
| 79 | +1. Load the Si(100) structure |
| 80 | +2. Adjust the position of the specified Si atom |
| 81 | +3. Create a supercell if specified in the parameters |
| 82 | +4. Visualize the adjusted structure |
| 83 | + |
| 84 | + Structure") |
| 85 | + |
| 86 | +## 2. Passivate the Surface. |
| 87 | + |
| 88 | +### 2.1. Open `passivate_slab.ipynb` Notebook. |
| 89 | + |
| 90 | +Find and open the `passivate_slab.ipynb` notebook to add hydrogen atoms to the surface. |
| 91 | + |
| 92 | +### 2.2. Set Passivation Parameters. |
| 93 | + |
| 94 | +Configure the following parameters for hydrogen passivation: |
| 95 | + |
| 96 | +```python |
| 97 | +# Passivation parameters. |
| 98 | +PASSIVANT = "H" # Chemical symbol for hydrogen. |
| 99 | +BOND_LENGTH = 1.46 # Si-H bond length in Angstroms. |
| 100 | +SURFACE = "top" # Passivate only the top surface. |
| 101 | + |
| 102 | +# Surface detection parameters. |
| 103 | +SHADOWING_RADIUS = 1.8 # In Angstroms. |
| 104 | +DEPTH = 0.5 # In Angstroms. |
| 105 | + |
| 106 | +# Visualization parameters. |
| 107 | +CELL_REPETITIONS_FOR_VISUALIZATION = [1, 1, 1] |
| 108 | +``` |
| 109 | + |
| 110 | +Key parameters explained: |
| 111 | + |
| 112 | +- `BOND_LENGTH`: Si-H bond length from literature. |
| 113 | +- `SHADOWING_RADIUS`: Controls which atoms are considered surface atoms, set to be below the distance between top Si atoms pair. |
| 114 | +- `SURFACE`: Passivate only the top surface. |
| 115 | +- `DEPTH`: How deep to look for surface atoms, set to include only top Si atoms. |
| 116 | + |
| 117 | + |
| 118 | + |
| 119 | +### 2.3. Run Passivation. |
| 120 | + |
| 121 | +Run all cells in the notebook. The passivation process will: |
| 122 | + |
| 123 | +1. Detect surface Si atoms |
| 124 | +2. Add H atoms at the specified bond length |
| 125 | +3. Generate the passivated structure |
| 126 | + |
| 127 | + Structure") |
| 128 | + |
| 129 | +## 3. Analyze Results. |
| 130 | + |
| 131 | +After running both notebooks, examine the final structure: |
| 132 | + |
| 133 | +Check that: |
| 134 | + |
| 135 | +- The adjusted Si atom position is correct |
| 136 | +- Surface reconstruction is maintained |
| 137 | +- H atoms are properly placed above surface Si atoms |
| 138 | + |
| 139 | +") |
| 140 | + |
| 141 | +## 4. Save the Results. |
| 142 | + |
| 143 | +The final structure will be automatically passed back to Materials Designer where you can: |
| 144 | +1. Save it in your workspace |
| 145 | +2. Export it in various formats |
| 146 | +3. Use it for further calculations |
| 147 | + |
| 148 | +## Interactive JupyterLite Notebook. |
| 149 | + |
| 150 | +The following embedded notebook demonstrates the complete process. Select "Run" > "Run All Cells". |
| 151 | + |
| 152 | +{% with origin_url=config.extra.jupyterlite.origin_url %} |
| 153 | +{% with notebooks_path_root=config.extra.jupyterlite.notebooks_path_root %} |
| 154 | +{% with notebook_name='specific_examples/passivation_surface_silicon_surface.ipynb' %} |
| 155 | +{% include 'jupyterlite_embed.html' %} |
| 156 | +{% endwith %} |
| 157 | +{% endwith %} |
| 158 | +{% endwith %} |
| 159 | + |
| 160 | +## Parameter Fine-tuning. |
| 161 | + |
| 162 | +To adjust the passivation: |
| 163 | + |
| 164 | +1. Surface Detection: |
| 165 | + |
| 166 | + - Increase `SHADOWING_RADIUS` to be more selective about surface atoms |
| 167 | + - Adjust `DEPTH` to control how deep to look for surface atoms |
| 168 | + |
| 169 | +2. Passivation: |
| 170 | + |
| 171 | + - Modify `BOND_LENGTH` for different Si-H distances |
| 172 | + - Change `SURFACE` to passivate different surfaces |
| 173 | + - Change `PASSIVANT` to use different passivating species |
| 174 | + |
| 175 | +## References. |
| 176 | + |
| 177 | +1. Hansen, U., & Vogl, P. (1998). Hydrogen passivation of silicon surfaces: A classical molecular-dynamics study. Physical Review B, 57(20), 13295–13304. |
| 178 | + |
| 179 | +2. Northrup, J. E. (1991). Structure of Si(100)H: Dependence on the H chemical potential. Physical Review B, 44(3), 1419–1422. |
| 180 | + |
| 181 | +3. Boland, J. J. (1990). Structure of the H‐saturated Si(100) surface. Physical Review Letters, 65(26), 3325–3328. |
| 182 | + |
| 183 | +## Tags. |
| 184 | + |
| 185 | +`silicon`, `surface`, `passivation`, `hydrogen`, `Si(100)`, `surface reconstruction`, `Si`, `H` |
0 commit comments