diff --git a/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/0-figure-from-manuscript.webp b/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/0-figure-from-manuscript.webp new file mode 100644 index 00000000..f686df97 --- /dev/null +++ b/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/0-figure-from-manuscript.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7ab2e954ed4bc4420c9a65d52809ae009de3376d7999461db34ee33ef0bb706 +size 52118 diff --git a/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/2-jl-setup-nb-interface.webp b/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/2-jl-setup-nb-interface.webp new file mode 100644 index 00000000..4c29318b --- /dev/null +++ b/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/2-jl-setup-nb-interface.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8146275fc1e37e5cf86510a9ecb69eb2f140948606ded498d9f97d20eefe55cc +size 70882 diff --git a/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/3-jl-setup-nb-final.webp b/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/3-jl-setup-nb-final.webp new file mode 100644 index 00000000..9f3e2f74 --- /dev/null +++ b/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/3-jl-setup-nb-final.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5da6646fa85dbd1e2de17afe31e6029af290548ee0928f83eb0a500683195fe +size 64404 diff --git a/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/4-energy-landscape.webp b/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/4-energy-landscape.webp new file mode 100644 index 00000000..e0c2fd8f --- /dev/null +++ b/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/4-energy-landscape.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edd18fae610c7102fa6a74cbb85b2e363e94b62a21dd60cc34fa6a3c1b94badc +size 17786 diff --git a/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/5-energy-heatmap.webp b/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/5-energy-heatmap.webp new file mode 100644 index 00000000..ab2d25cb --- /dev/null +++ b/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/5-energy-heatmap.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c80cda4775a9aa548c4f90bd95c6c30f9179d501d4164b272630186dd773d43f +size 10156 diff --git a/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/6-jl-result-preview-compare.webp b/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/6-jl-result-preview-compare.webp new file mode 100644 index 00000000..04157672 --- /dev/null +++ b/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/6-jl-result-preview-compare.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3e278a8c1b7c7d13e36171e44d245ea1eefe388decbe9ae7a48d612f1ed33bf +size 32240 diff --git a/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/7-wave-result-final.webp b/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/7-wave-result-final.webp new file mode 100644 index 00000000..81c48c27 --- /dev/null +++ b/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/7-wave-result-final.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14cd4b3630bf03a18fe6f959ebb5cdffd55792eeaf07ef9246055ee10e9c2ade +size 8858 diff --git a/lang/en/docs/tutorials/materials/specific/optimize-film-position-graphene-nickel-interface.md b/lang/en/docs/tutorials/materials/specific/optimize-film-position-graphene-nickel-interface.md new file mode 100644 index 00000000..7b7e4666 --- /dev/null +++ b/lang/en/docs/tutorials/materials/specific/optimize-film-position-graphene-nickel-interface.md @@ -0,0 +1,160 @@ +--- +# YAML header +render_macros: true +--- + +# Graphene/Ni(111) Interface Optimization + +## Introduction + +This tutorial demonstrates how to create and optimize a Graphene/Ni(111) interface structure following the experimental observations presented in the literature. We will focus on finding the most energetically favorable position of graphene on the Ni(111) surface. + +!!!note "Manuscript" + Arjun Dahal, Matthias Batzill + "Graphene–nickel interfaces: a review" + Nanoscale, 6(5), 2548. (2014) + [DOI: 10.1039/c3nr05279f](https://doi.org/10.1039/c3nr05279f){:target='_blank'}. + +We will recreate the interface structure and optimize the film position to match the experimental findings shown in the figure below: + +![Gr/Ni Interface](/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/0-figure-from-manuscript.webp "Optimal position of graphene on Ni(111)") + +## 1. Create Interface Structure + +### 1.1. Load Base Materials + +Navigate to [Materials Designer](../../../materials-designer/overview.md) and import both graphene and nickel materials from the [Standata](../../../materials-designer/header-menu/input-output/standata-import.md). + +![Import Graphene and Ni](/images/materials-designer/import/import_from_standata.webp "Import Gr and Ni from Standata") + +### 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_interface_with_min_strain_zsl.ipynb` notebook + +Find and open the `create_interface_with_min_strain_zsl.ipynb` notebook. This notebook will help us create the initial interface structure. + +### 1.4. Set up interface parameters + +Edit the notebook parameters to create the Gr/Ni(111) interface: + +```python +# Material selection +SUBSTRATE_NAME = "Nickel" +FILM_NAME = "Graphene" + +# Slab parameters +SUBSTRATE_MILLER_INDICES = (1, 1, 1) +SUBSTRATE_THICKNESS = 4 # in atomic layers +FILM_THICKNESS = 1 # in atomic layers + +# Interface parameters +MAX_AREA = 50 # in Angstrom^2 +INTERFACE_DISTANCE = 2.58 # in Angstrom from literature +INTERFACE_VACUUM = 20.0 # in Angstrom +``` + +![Interface Parameters](/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/2-jl-setup-nb-interface.webp "Interface parameters for Gr/Ni(111)") + +### 1.5. Run interface creation + +Run the notebook using "Run > Run All Cells". This will: + +1. Create slabs from both materials +2. Find the optimal lattice matching using the ZSL algorithm +3. Generate the initial interface structure + +## 2. Optimize Film Position + +### 2.1. Open `optimize_film_position.ipynb` notebook + +Find and open the `optimize_film_position.ipynb` notebook which will help us find the optimal position of the graphene layer. + +### 2.2. Set optimization parameters + +Configure the optimization parameters: + +```python +# Grid parameters +GRID_SIZE = (20, 20) # Resolution of the x-y grid +GRID_RANGE_X = (-0.5, 0.5) # Range in crystal coordinates +GRID_RANGE_Y = (-0.5, 0.5) +USE_CARTESIAN = False # Use crystal coordinates + +# Visualization parameters +STRUCTURE_REPETITIONS = [3, 3, 1] +``` + +Key parameters explained: +- `GRID_SIZE`: Controls the resolution of position sampling +- `GRID_RANGE`: Search range in crystal coordinates +- `USE_CARTESIAN`: Set to False for hexagonal systems + +![Optimization Parameters](/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/3-jl-setup-nb-final.webp "Optimization parameters for Gr/Ni(111)") + +### 2.3. Run optimization + +Run all cells in the notebook. The optimization will: + +1. Calculate energy landscape across different positions +2. Find the global minimum energy position +3. Generate visualizations of the results + +![Energy Landscape](/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/4-energy-landscape.webp "Energy landscape of film positions") + +![Energy Heatmap](/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/5-energy-heatmap.webp "Energy heatmap of film positions") + +## 3. Analyze Results + +Compare the original and optimized interface structures to see the difference in the graphene position. + +![Initial and optimized interface](/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/6-jl-result-preview-compare.webp "Initial and optimized interface structures") + +![Final Interface](/images/tutorials/materials/optimization/optimize_film_position_graphene_nickel_interface/7-wave-result-final.webp "Optimized Gr/Ni Interface") + + +## 4. Save Optimized Structure + +The optimized interface structure will be automatically passed back to Materials Designer where you can: +1. Save it in the workspace +2. Export it in various formats (JSON, POSCAR, etc.) +3. Use it for further calculations + +## Interactive JupyterLite Notebook + +The following JupyterLite notebook demonstrates the complete process. 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/optimize_film_position_graphene_nickel_interface.ipynb' %} +{% include 'jupyterlite_embed.html' %} +{% endwith %} +{% endwith %} +{% endwith %} + +## Parameter Fine-tuning + +To adjust the interface optimization: + +1. Interface Creation: + - Adjust `SUBSTRATE_THICKNESS` for more Ni layers + - Modify `MAX_AREA` to control supercell size + - Change `INTERFACE_DISTANCE` if needed + +2. Position Optimization: + - Increase `GRID_SIZE` for finer sampling + - Adjust `GRID_RANGE` to search different areas + - Enable 3D visualization with `SHOW_3D_LANDSCAPE = True` + +## References + +1. Dahal, A., & Batzill, M. (2014). Graphene–nickel interfaces: a review. Nanoscale, 6(5), 2548-2562. [DOI: 10.1039/c3nr05279f](https://doi.org/10.1039/c3nr05279f) + +2. Gamo, Y., Nagashima, A., Wakabayashi, M., Terai, M., & Oshima, C. (1997). Atomic structure of monolayer graphite formed on Ni(111). Surface Science, 374(1-3), 61-64. [DOI: 10.1016/S0039-6028(96)01307-3](https://www.sciencedirect.com/science/article/abs/pii/S0039602896007856) + +3. Bertoni, G., Calmels, L., Altibelli, A., & Serin, V. (2004). First-principles calculation of the electronic structure and EELS spectra at the graphene/Ni(111) interface. Physical Review B, 71(7). [DOI: 10.1103/PhysRevB.71.075402](https://journals.aps.org/prb/abstract/10.1103/PhysRevB.71.075402) + +## Tags + +`graphene`, `nickel`, `interface`, `optimization`, `2D materials`, `surface science`, `Gr/Ni(111)`, `C`, `Ni` diff --git a/mkdocs.yml b/mkdocs.yml index 03c15053..4a31e3b0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -238,6 +238,7 @@ nav: - Ripple perturbation of a Graphene sheet: tutorials/materials/specific/perturbation-ripples-graphene.md - Grain Boundary in FCC Metals (Copper): tutorials/materials/specific/grain-boundary-3d-fcc-metals-copper.md - Grain Boundary (2D) in h-BN: tutorials/materials/specific/grain-boundary-2d-boron-nitride.md + - Gr/Ni(111) Interface Optimization: tutorials/materials/specific/optimize-film-position-graphene-nickel-interface.md # COMMON UI COMPONENTS - Interface Components: