-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #309 from Exabyte-io/feature/SOF-7511
feature/SOF-7511 perturbation ripples graphene tutorial
- Loading branch information
Showing
8 changed files
with
205 additions
and
0 deletions.
There are no files selected for viewing
3 changes: 3 additions & 0 deletions
3
...es/tutorials/materials/defects/perturbation_ripple_graphene/0-figure-from-manuscript.webp
Git LFS file not shown
3 changes: 3 additions & 0 deletions
3
...es/tutorials/materials/defects/perturbation_ripple_graphene/2-jl-setup-nb-nanoribbon.webp
Git LFS file not shown
3 changes: 3 additions & 0 deletions
3
...es/tutorials/materials/defects/perturbation_ripple_graphene/3-wave-result-nanoribbon.webp
Git LFS file not shown
3 changes: 3 additions & 0 deletions
3
images/tutorials/materials/defects/perturbation_ripple_graphene/4-jl-setup-nb-final.webp
Git LFS file not shown
3 changes: 3 additions & 0 deletions
3
images/tutorials/materials/defects/perturbation_ripple_graphene/5-wave-result-final.webp
Git LFS file not shown
3 changes: 3 additions & 0 deletions
3
images/tutorials/materials/defects/perturbation_ripple_graphene/6-wave-result-final-2.webp
Git LFS file not shown
186 changes: 186 additions & 0 deletions
186
lang/en/docs/tutorials/materials/specific/perturbation-ripples-graphene.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,186 @@ | ||
--- | ||
# YAML header | ||
render_macros: true | ||
--- | ||
|
||
# Ripple perturbation of a Graphene sheet. | ||
|
||
## Introduction | ||
|
||
This tutorial demonstrates the process of creating edge induced ripples in graphene nanosheet based on the work presented in the following manuscript, where the mechanical properties of graphene edges were studied. | ||
|
||
!!!note "Manuscript" | ||
Thompson-Flagg, R. C., Moura, M. J. B., & Marder, M. | ||
"Rippling of graphene" | ||
EPL (Europhysics Letters), 85(4), 46002 (2009) | ||
[DOI: 10.1209/0295-5075/85/46002](https://doi.org/10.1209/0295-5075/85/46002){:target='_blank'}. | ||
|
||
We will focus on creating graphene with edge-induced ripples that match the patterns observed in experimental studies, as shown in FIG. 1. | ||
|
||
 | ||
|
||
## 1. Create Graphene Nanoribbon | ||
|
||
### 1.1. Load Graphene Material | ||
|
||
Navigate to [Materials Designer](../../../materials-designer/overview.md) and import the graphene material from the [Standata](../../../materials-designer/header-menu/input-output/standata-import.md). | ||
|
||
 | ||
|
||
### 1.2. Launch JupyterLite Session | ||
|
||
Select the "Advanced > [JupyterLite Transformation](../../../materials-designer/header-menu/advanced/jupyterlite-dialog.md)" menu item to launch the JupyterLite environment. | ||
|
||
 | ||
|
||
### 1.3. Open `create_nanoribbon.ipynb` notebook | ||
|
||
Find `create_nanoribbon.ipynb` in the list of notebooks and click/double-click to open it. | ||
|
||
### 1.4. Set up nanoribbon parameters | ||
|
||
Edit notebook to set the nanoribbon parameters: | ||
|
||
```python | ||
# Widths and lengths are in number of unit cells | ||
WIDTH = 40 | ||
VACUUM_WIDTH = 10 | ||
LENGTH = 40 | ||
VACUUM_LENGTH = 10 | ||
EDGE_TYPE = "zigzag" # "zigzag" or "armchair" | ||
``` | ||
|
||
 | ||
|
||
### 1.5. Run the notebook | ||
|
||
After setting the parameters, run the notebook by selecting "Run > Run All Cells" from the menu. This will create a graphene nanoribbon with the specified dimensions. | ||
|
||
 | ||
|
||
## 2. Create Ripples in the Nanoribbon | ||
|
||
### 2.1. Open `create_perturbation_custom.ipynb` notebook | ||
|
||
Find `create_perturbation_custom.ipynb` in the list of notebooks and click/double-click to open it. | ||
|
||
### 2.2. Set up perturbation parameters | ||
|
||
Next, we need to set up the parameters for creating rippled graphene. | ||
|
||
Edit notebook in 1.2. to set generic perturbation parameters: | ||
|
||
```python | ||
# Set whether to preserve geodesic distance and scale the cell accordingly to match PBC | ||
PRESERVE_GEODESIC_DISTANCE = False | ||
|
||
# Set whether to use Cartesian coordinates for the perturbation function | ||
USE_CARTESIAN_COORDINATES = False | ||
MATERIAL_NAME = "Graphene" | ||
``` | ||
|
||
Then modify section 1.3 to define the custom perturbation function: | ||
|
||
```python | ||
import sympy as sp | ||
|
||
# Variables for the perturbation function (for SymPy) | ||
variable_names = ["x", "y", "z"] | ||
x, y, z = sp.symbols(variable_names) | ||
|
||
# Set the parameters for the perturbation function | ||
AMPLITUDE = 0.09 # Ripple amplitude | ||
WAVELENGTH = 0.2 # Wavelength of ripples | ||
EDGE_WIDTH = 0.25 # Width of edge effect | ||
PHASE_X = 0.0 # Phase shift for x direction | ||
PHASE_Y = sp.pi/2 # Phase shift for y direction | ||
|
||
# Create edge masks for both x and y using polynomial functions | ||
left_edge_x = sp.Max(0, (EDGE_WIDTH - x) / EDGE_WIDTH) | ||
right_edge_x = sp.Max(0, (x - (1 - EDGE_WIDTH)) / EDGE_WIDTH) | ||
left_edge_y = sp.Max(0, (EDGE_WIDTH - y) / EDGE_WIDTH) | ||
right_edge_y = sp.Max(0, (y - (1 - EDGE_WIDTH)) / EDGE_WIDTH) | ||
|
||
# Combine edge masks | ||
edge_mask_x = left_edge_x + right_edge_x | ||
edge_mask_y = left_edge_y + right_edge_y | ||
edge_mask = edge_mask_x + edge_mask_y | ||
|
||
# Wave pattern | ||
wave_pattern = ( | ||
sp.sin(2 * sp.pi * x / WAVELENGTH + PHASE_X) * | ||
sp.sin(2 * sp.pi * y / WAVELENGTH + PHASE_Y) | ||
) | ||
|
||
# Combine waves with edge mask | ||
custom_sympy_function = AMPLITUDE * wave_pattern * edge_mask | ||
``` | ||
|
||
 | ||
|
||
Key parameters explained: | ||
|
||
- `AMPLITUDE` Controls the height of the ripples (0.09 Å) | ||
- `WAVELENGTH` Controls the spacing between ripples (0.2 in crystal coordinates) | ||
- `EDGE_WIDTH` Controls how far the ripples extend from the edges (0.25 in crystal coordinates) | ||
- `PHASE_X`/`PHASE_Y` Controls the phase shift of the ripple pattern | ||
|
||
### 2.3. Run the notebook | ||
|
||
After setting the parameters, run the notebook by selecting "Run > Run All Cells" from the menu. | ||
|
||
 | ||
|
||
## 3. Pass the Material to Materials Designer | ||
|
||
The rippled graphene structure will be automatically passed back to the current Materials Designer environment where user can save it. | ||
|
||
Graphene with edge-induced ripples with amplitude of 0.09 crystal units. | ||
|
||
 | ||
|
||
Graphene with edge-induced ripples with amplitude of 0.27 crystal units. | ||
|
||
 | ||
|
||
Or user can [save or download](../../../materials-designer/header-menu/input-output.md) the material in Material JSON format or POSCAR format. | ||
|
||
## Interactive JupyterLite Notebook | ||
|
||
The following JupyterLite notebook demonstrates the process of creating rippled graphene. Select "Run" > "Run All Cells". | ||
|
||
{% with origin_url=config.extra.jupyterlite.origin_url %} | ||
{% with notebooks_path_root=config.extra.jupyterlite.notebooks_path_root %} | ||
{% with notebook_name='specific_examples/perturbation_ripple_graphene.ipynb' %} | ||
{% include 'jupyterlite_embed.html' %} | ||
{% endwith %} | ||
{% endwith %} | ||
{% endwith %} | ||
|
||
## Parameters Fine-tuning | ||
|
||
If user need to adjust the ripple pattern, user can modify these key parameters: | ||
|
||
1. To change ripple height: | ||
- Adjust AMPLITUDE (higher value = taller ripples) | ||
|
||
2. To change ripple spacing: | ||
- Adjust WAVELENGTH (higher value = more spread out ripples) | ||
|
||
3. To change how far ripples extend from edges: | ||
- Adjust EDGE_WIDTH (higher value = ripples extend further from edges) | ||
|
||
4. To change the ripple pattern: | ||
- Adjust PHASE_X and PHASE_Y to modify the wave interference pattern | ||
|
||
## References | ||
|
||
1. Thompson-Flagg, R. C., Moura, M. J. B., & Marder, M. (2009). Rippling of graphene. EPL (Europhysics Letters), 85(4), 46002. [DOI: 10.1209/0295-5075/85/46002](https://doi.org/10.1209/0295-5075/85/46002) | ||
|
||
2. A. Fasolino, J. H. Los and M. I. Katsnelson, "Intrinsic ripples in graphene," Nature Materials, 6, 858-861 (2007). [DOI: 10.1038/nmat2011](https://doi.org/10.1038/nmat2011) | ||
|
||
3. L. A. Openov & A. I. Podlivaev, "Interaction of the Stone-Wales defects in graphene", Physics of the Solid State, 52, 1, 2010. [DOI: 10.1134/S1063783415070240](https://doi.org/10.1134/S1063783415070240) | ||
|
||
## Tags | ||
|
||
`graphene`, `ripples`, `perturbation`, `2D materials`, `edge effects`, `C` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters