Skip to content

Commit ecd3cf9

Browse files
authored
Merge pull request #297 from Exabyte-io/feature/SOF-7508
feat: add tutorial on passivated nanowire
2 parents 8f819b4 + b7c75f8 commit ecd3cf9

File tree

7 files changed

+225
-0
lines changed

7 files changed

+225
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:fc71f50c8a4130751d15a5c82f3eca99e34027f0c891aa6b6d0a0dea45a2afa6
3+
size 22788
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:5faa2805cb6a6161b7130d433c2439d327f39cb1a25af8eca1364b625cff2e0e
3+
size 36922
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:896671c6141a885e637e06940a5ab1ec6e384dfab81a7c269e169d687d36e2fa
3+
size 110158
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:aeb1694474d4d1209111ee1639511502068dc708d3d9dbd93724f8a74f8af784
3+
size 53022
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:89c7a597adff433a831c6ea12a2a080ceecf8de4d455f312be11d193dc3399f2
3+
size 32174
Lines changed: 209 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,209 @@
1+
---
2+
# YAML header
3+
render_macros: true
4+
---
5+
6+
# Passivation of Silicon Nanowire
7+
8+
## Introduction
9+
10+
This tutorial demonstrates the process of creating passivated silicon nanowires based on the work presented in the following manuscript, where the chemical gap tuning in silicon nanowires is studied.
11+
12+
13+
!!!note "Manuscript"
14+
B. Aradi, L. E. Ramos, P. Deák, Th. Köhler, F. Bechstedt, R. Q. Zhang, and Th. Frauenheim,
15+
"Theoretical study of the chemical gap tuning in silicon nanowires"
16+
Phys. Rev. B 76, 035305 (2007)
17+
DOI: [10.1103/PhysRevB.76.035305](https://doi.org/10.1103/PhysRevB.76.035305)
18+
19+
20+
We will focus on creating silicon nanowires with hydrogen passivation from FIG. 1.
21+
22+
Specifically, the material from FIG. 1. of the publication:
23+
24+
![Passivated Silicon nanowire](/images/tutorials/materials/passivation/passivation_edge_silicon_nanowire/0-figure-from-manuscript.webp "Passivated Silicon nanowire, FIG. 1.")
25+
26+
27+
## 1. Create Silicon Nanowire
28+
29+
### 1.1. Load Silicon Material
30+
31+
Since we're using Silicon, it can be already loaded as the default material and we can skip this step.
32+
33+
Otherwise, we navigate to [Materials Designer](../../../materials-designer/overview.md) and import the silicon material from the [Standata](../../../materials-designer/header-menu/input-output/standata-import.md).
34+
35+
### 1.2. Launch JupyterLite Session
36+
37+
Select the "Advanced > [JupyterLite Transformation](../../../materials-designer/header-menu/advanced/jupyterlite-dialog.md)" menu item to launch the JupyterLite environment.
38+
39+
![JupyterLite Dialog](/images/jupyterlite/md-advanced-jl.webp "JupyterLite Dialog")
40+
41+
### 1.3. Open `create_nanowire_custom_shapeipynb` notebook
42+
43+
Find `create_nanowire_custom_shape.ipynb` in the list of notebooks and click/double-click open it.
44+
45+
### 1.4. Open and modify the notebook
46+
47+
Next, we need to create a nanowire wit ha custom shape.
48+
49+
We'll specify the orientation of the nanowire with Miller indices of `(1,1,0)` as described in the manuscript.
50+
51+
Then we'll define a supercell matrix to add enough of material to cut the nanowire from:
52+
53+
`[[3, 0, 0], [0, 2, 0], [0, 0, 2]]`.
54+
55+
Finally, we'll define a custom coordinate condition to create a rhombus-shaped nanowire with coordinates of the vertices corresponding to the corners of the rhombus.
56+
57+
The vertices of the rhombus are defined as follows:
58+
59+
Bottom:`[0.5, 0.2, 0]`,
60+
61+
Left:`[0, 0.5, 0]`,
62+
63+
Top:`[0.5, 1, 0]`,
64+
65+
Right:`[1, 0.5, 0]`
66+
67+
68+
For that, edit `create_nanowire_custom_shape.ipynb` notebook to modify the parameters by adding the following content to the "1.1. Set up nanowire parameters" cell:
69+
70+
```python
71+
from typing import List
72+
import numpy as np
73+
from mat3ra.made.tools.utils.coordinate import CoordinateCondition
74+
# Flag to use Cartesian coordinates for the center and radii
75+
USE_CARTESIAN_COORDINATES = False
76+
77+
# Miller indices of the nanowire direction
78+
MILLER_INDICES= (1,1,0)
79+
# Supercell matrix to cut the cylinder from
80+
SUPERCELL_MATRIX = [[3, 0, 0], [0, 2, 0], [0, 0, 2]]
81+
# Vacuum thickness on the sides in Angstroms
82+
VACUUM = 10.0
83+
ALIGN_ALONG_X = False
84+
85+
# Custom Coordinate Condition for
86+
class CustomCoordinateCondition(CoordinateCondition):
87+
vertices: List[List[float]]
88+
89+
def condition(self, coordinate: List[float]) -> bool:
90+
coord = np.array(coordinate)
91+
v0, v1, v2, v3 = np.array(self.vertices)
92+
vec0 = v1 - v0
93+
vec1 = v2 - v1
94+
vec2 = v3 - v2
95+
vec3 = v0 - v3
96+
97+
# Calculate cross products
98+
cross0 = np.cross(vec0, coord[:2] - v0[:2])
99+
cross1 = np.cross(vec1, coord[:2] - v1[:2])
100+
cross2 = np.cross(vec2, coord[:2] - v2[:2])
101+
cross3 = np.cross(vec3, coord[:2] - v3[:2])
102+
103+
# Check if point is inside the rhombus
104+
return (np.all(cross0 >= 0) and np.all(cross1 >= 0) and \
105+
np.all(cross2 >= 0) and np.all(cross3 >= 0)) or \
106+
(np.all(cross0 <= 0) and np.all(cross1 <= 0) and \
107+
np.all(cross2 <= 0) and np.all(cross3 <= 0))
108+
109+
# Define the vertices of the rhombus
110+
vertices = [
111+
[0.5, 0.2, 0],
112+
[0, 0.5, 0],
113+
[0.5, 1, 0],
114+
[1, 0.5, 0]
115+
]
116+
117+
condition = CustomCoordinateCondition(vertices=vertices).condition
118+
```
119+
120+
## 1.5. Run the Notebook and use the Material
121+
122+
Run the notebook by clicking `Run` > `Run All` in the top menu to run cells and wait for the results to appear.
123+
124+
![Run All](/images/jupyterlite/run-all.webp "Run All")
125+
126+
After running the notebook and submitting the material, the user will be able to visualize the structure of Silicon Nanowire.
127+
128+
![Silicon Nanowire](/images/tutorials/materials/passivation/passivation_edge_silicon_nanowire/3-silicon-nanowire.webp "Silicon Nanowire")
129+
130+
## 2. Passivate with Hydrogen
131+
132+
### 2.1. Setup the Passivation
133+
134+
Open JupyterLite Session again and select Silicon Nanowire material for Input Materials.
135+
136+
Next, we need to passivate the silicon nanowire with hydrogen atoms.
137+
138+
Open the `passivate_edge.ipynb` notebook and set:
139+
140+
`BOND_LENGTH = 1.46` -- Si-H bond length in Angstroms,
141+
142+
`COORDINATION_THRESHOLD = 3` -- Silicon that has less than 4 neighbors is undercoordinated in the silicon lattice, so all with 3 or less neighbors will be passivated,
143+
144+
`COORDINATION_SEARCH_RADIUS = 2.5` -- Search radius for neighbors for every atom, in Angstroms,
145+
146+
`MAX_BONDS_TO_PASSIVATE = 2` -- Maximum number of bonds to saturate for undercoordinated atoms.
147+
148+
149+
Copy the below content and edit the "1.1. Set up defect parameters" cell in the notebook as follows:
150+
151+
```python
152+
# Enable interactive selection of coordination threshold
153+
IS_COORDINATION_SELECTION_INTERACTIVE = False
154+
155+
MATERIAL_INDEX = 0
156+
157+
BOND_LENGTH = 1.46 # in Angstroms
158+
PASSIVANT = "H" # Chemical symbol of the passivant
159+
COORDINATION_SEARCH_RADIUS = 2.5 # in Angstroms (sphere in which to search for neighbors)
160+
COORDINATION_THRESHOLD = 3 # Coordination number below which to passivate
161+
MAX_BONDS_TO_SATURATE = 2 # Maximum number of bonds to saturate
162+
163+
SYMMETRY_TOLERANCE = 0.1
164+
165+
SHOW_INTERMEDIATE_STEPS = True
166+
CELL_REPETITIONS_FOR_VISUALIZATION = [1, 1, 1]
167+
```
168+
169+
Here's the visual of the updated content:
170+
171+
![Notebook setup](/images/tutorials/materials/passivation/passivation_edge_silicon_nanowire/5-jl-setup.webp "Notebook setup")
172+
173+
### 2.2. Run the notebook and analyze the results
174+
175+
After running the notebook, the user will be able to visualize the structure of Silicon Nanowire with substitution defects.
176+
177+
![Review the Results](/images/tutorials/materials/passivation/passivation_edge_silicon_nanowire/6-jl-result-preview.webp "Review the Results")
178+
179+
## 3. Pass the Material to Materials Designer
180+
181+
The user can pass the material with substitution defects in the current Materials Designer environment and save it.
182+
183+
![Final Material](/images/tutorials/materials/passivation/passivation_edge_silicon_nanowire/7-wave-result.webp "H-Passivated Silicon Nanowire")
184+
185+
Or the user can [save or download](../../../materials-designer/header-menu/input-output.md) the material in Material JSON format or POSCAR format.
186+
187+
188+
## Interactive JupyterLite Notebook
189+
190+
The following JupyterLite notebook demonstrates the process of creating materials with hydrogen passivation of silicon nanowire. Select "Run" > "Run All Cells".
191+
192+
{% with origin_url=config.extra.jupyterlite.origin_url %}
193+
{% with notebooks_path_root=config.extra.jupyterlite.notebooks_path_root %}
194+
{% with notebook_name='specific_examples/passivation_edge_silicon_nanowire.ipynb' %}
195+
{% include 'jupyterlite_embed.html' %}
196+
{% endwith %}
197+
{% endwith %}
198+
{% endwith %}
199+
200+
## References
201+
202+
1. B. Aradi, L. E. Ramos, P. Deák, Th. Köhler, F. Bechstedt, R. Q. Zhang, and Th. Frauenheim,
203+
Theoretical study of the chemical gap tuning in silicon nanowires
204+
Phys. Rev. B 76, 035305 (2007)
205+
DOI: [10.1103/PhysRevB.76.035305](https://doi.org/10.1103/PhysRevB.76.035305)
206+
207+
## Tags
208+
209+
`silicon`, `hydrogen`, `passivation`, `nanowire`

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ nav:
226226
- Twisted Bilayer h-BN nanoribbons: tutorials/materials/specific/interface-bilayer-twisted-nanoribbons-boron-nitride.md
227227
- Twisted Bilayer MoS2 commensurate lattices: tutorials/materials/specific/interface-bilayer-twisted-commensurate-lattices-molybdenum-disulfide.md
228228
- Adatom Surface Defects on Graphene: tutorials/materials/specific/defect-surface-adatom-graphene.md
229+
- H-Passivated Silicon Nanowire: tutorials/materials/specific/passivation-edge-silicon-nanowire.md
229230

230231
# COMMON UI COMPONENTS
231232
- Interface Components:

0 commit comments

Comments
 (0)