Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tutorial Gr/hBN #301

Merged
merged 8 commits into from
Dec 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Git LFS file not shown
Git LFS file not shown
Git LFS file not shown
Git LFS file not shown
Git LFS file not shown
Git LFS file not shown
Git LFS file not shown
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
---
# YAML header
render_macros: true
---

# Interfaces between 2D Materials: hBN and Graphene

## Introduction

This tutorial demonstrates the process of creating interfaces with different stacking configurations between 2D materials, specifically hexagonal boron nitride (hBN) and graphene, based on the work presented in the following manuscript, where the electronic properties of hBN-graphene interfaces are studied.

!!!note "Manuscript"
**Jeil Jung, Ashley M. DaSilva, Allan H. MacDonald & Shaffique Adam**
**Origin of the band gap in graphene on hexagonal boron nitride**
Nature Communications volume 6, Article number: 6308 (2015)
[DOI: 10.1038/ncomms7308](https://doi.org/10.1038/ncomms7308)


We use the [Materials Designer](../../../materials-designer/overview.md) to create interfaces and shift the layers along the y-axis to achieve different stacking configurations.

The Figure 7 shows the different stacking configurations of graphene on hBN.

![Graphene on Hexagonal Boron Nitride](/images/tutorials/materials/interfaces/interface_2d_2d_graphene_boron_nitride/0-figure-from-manuscript.webp "Graphene on Hexagonal Boron Nitride, FIG. 7")

## 1. Load and preview materials

First, we navigate to [Materials Designer](../../../materials-designer/overview.md) and import the Graphene and Hexagonal BN materials from the [Standata](../../../materials-designer/header-menu/input-output/standata-import.md).


![Standata Graphene and hBN Import](/images/tutorials/materials/interfaces/interface_2d_2d_graphene_boron_nitride/1-standata-import-gr-hbn.webp "Standata Graphene and hBN Import")

Then we will use the [JupyterLite](../../../jupyterlite/overview.md) environment to create the target structures.


## 2. Create interface between hBN and Graphene

### 2.1 Launch JupyterLite Session

Select the "Advanced > [JupyterLite Transformation](../../../materials-designer/header-menu/advanced/jupyterlite-dialog.md)" menu item to launch the JupyterLite environment.


![JupyterLite Dialog](/images/jupyterlite/md-advanced-jl.webp "JupyterLite Dialog")

### 2.2. Open and modify the notebook

Select the input materials with first one being the substrate (hBN) and the second one being the film (Graphene).

Next, open `create_interface_with_min_strain_zsl.ipynb` notebook to modify the parameters by changing:

Miller indices of both materials to `(0,0,1)`,

Thickness of both materials to `1`,

Distance between materials to `3.4` angstroms -- mentioned in the publication.

Default value for `MAX_AREA = 50` should be enough since materials have similar lattice constants.


Adjust the "1.1. Set up slab parameters" cell in the notebook according to:

```python
# Enable interactive selection of terminations via UI prompt
IS_TERMINATIONS_SELECTION_INTERACTIVE = False

FILM_INDEX = 1 # Index in the list of materials, to access as materials[FILM_INDEX]
FILM_MILLER_INDICES = (0, 0, 1)
FILM_THICKNESS = 1 # in atomic layers
FILM_VACUUM = 0.0 # in angstroms
FILM_XY_SUPERCELL_MATRIX = [[1, 0], [0, 1]]
FILM_USE_ORTHOGONAL_Z = True

SUBSTRATE_INDEX = 0
SUBSTRATE_MILLER_INDICES = (0, 0, 1)
SUBSTRATE_THICKNESS = 1 # in atomic layers
SUBSTRATE_VACUUM = 0.0 # in angstroms
SUBSTRATE_XY_SUPERCELL_MATRIX = [[1, 0], [0, 1]]
SUBSTRATE_USE_ORTHOGONAL_Z = True

# Maximum area for the superlattice search algorithm
MAX_AREA = 50 # in Angstrom^2
# Set the termination pair indices
TERMINATION_PAIR_INDEX = 0 # Will be overridden in interactive selection is used
INTERFACE_DISTANCE = 3.4 # in Angstrom
INTERFACE_VACUUM = 20.0 # in Angstrom
```

![Notebook setup](/images/tutorials/materials/interfaces/interface_2d_2d_graphene_boron_nitride/2-jl-setup-notebook.webp "Notebook setup")


### 2.3. Run the Notebook

After setting the parameters, run the notebook to create the interface between hBN and Graphene.

![Run All](/images/jupyterlite/run-all.webp "Run All")

### 2.4. View Results and shift the layers

The generation might take some time.
After that, the user can pass the material to the Materials Designer for further analysis.

Interface between hBN and Graphene with the specified parameters is shown below.

![Gr/hBN Interface ](/images/tutorials/materials/interfaces/interface_2d_2d_graphene_boron_nitride/3-jl-result-preview.webp "Gr/hBN Interface")

To shift graphene layer along the y-axis, the user can modify the last cell in the notebook to achieve different stacking configurations.

As mentioned in the publication, the vector to slide the layers between AA, AB and BB configurations is `a/sqrt(3)`.

One can achieve any multiples of shift vector by changing the value of `n` in the following code snippet using the `interface_displace_part()` function from the `mat3ra.made.tools.modify` module.

```python
import numpy as np
from mat3ra.made.tools.modify import interface_displace_part

n = 1
a = selected_interface.lattice.a
shifted_interface = interface_displace_part(
interface=selected_interface,
displacement=[0, n * a / np.sqrt(3), 0],
use_cartesian_coordinates=True)

```

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's add visuals

![Shift Interface](/images/tutorials/materials/interfaces/interface_2d_2d_graphene_boron_nitride/4-jl-setup-shift.webp "Shift Interface")

Preview of interfaces with different stacking configurations is shown below.

![Shifted Interfaces](/images/tutorials/materials/interfaces/interface_2d_2d_graphene_boron_nitride/5-jl-result-preview.webp "Shifted Interfaces")

## 3. Pass the Material to Materials Designer

The user can pass the material with the interface in the current Materials Designer environment and save it.

![Final Material](/images/tutorials/materials/interfaces/interface_2d_2d_graphene_boron_nitride/6-wave-result.webp "Graphene on Hexagonal Boron Nitride Interface")

Or the 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 interactive JupyterLite notebook for creating Gr/hBN interface can be accessed below. To run the notebook, click on the "Run All" button.


{% with origin_url=config.extra.jupyterlite.origin_url %}
{% with notebooks_path_root=config.extra.jupyterlite.notebooks_path_root %}
{% with notebook_name='specific_examples/interface_2d_2d_boron_nitride_graphene.ipynb' %}
{% include 'jupyterlite_embed.html' %}
{% endwith %}
{% endwith %}
{% endwith %}

## References

1. **Jeil Jung, Ashley M. DaSilva, Allan H. MacDonald & Shaffique Adam**

"Origin of the band gap in graphene on hexagonal boron nitride"
Nature Communications volume 6, Article number: 6308 (2015)
[DOI: 10.1038/ncomms7308](https://doi.org/10.1038/ncomms7308)

2. **K. S. Novoselov, A. Mishchenko, A. Carvalho, A. H. Castro Neto**

"2D materials and van der Waals heterostructures"
Science 353, 6298 (2016)
[DOI: 10.1126/science.aac9439](https://doi.org/10.1126/science.aac9439)

3. **Neelam Gupta, Saurav Sachin, Puja Kumari, Shivani Rania and Soumya Jyoti Ray**

"Twistronics in two-dimensional transition metal dichalcogenide (TMD)-based van der Waals interface"
RSC Adv., 2024, 4, 1-10
[DOI: 10.1039/D3RA06559F](https://doi.org/10.1039/D3RA06559F)

## Tags

`2D`, `Graphene`, `Hexagonal Boron Nitride`, `interface`, `stacking`
1 change: 1 addition & 0 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,7 @@ nav:
- H-Passivated Silicon Nanowire: tutorials/materials/specific/passivation-edge-silicon-nanowire.md
- Gold Nanoclusters: tutorials/materials/specific/nanocluster-gold.md
- SrTiO3 Slab: tutorials/materials/specific/slab-strontium-titanate.md
- Interface between Graphene and hBN: tutorials/materials/specific/interface-2d-2d-graphene-boron-nitride.md

# COMMON UI COMPONENTS
- Interface Components:
Expand Down