Skip to content

Si(100) Surface: A Fundamental Slab Calculation

Estimated total CPU time: < 1 min when using 70 CPUs or more

Theoretical Background

Slab Models in Surface Science

Unlike our upcoming example with magnetic cobalt nanoparticles, we begin with a simpler non-magnetic semiconductor system: the Si(100) surface. Slab models represent the most common approach for studying surface properties in periodic DFT calculations. A slab consists of a finite number of atomic layers that extend periodically in two dimensions while being finite in the third dimension.

Slab Model

We will learn how to create a surface structure starting from the corresponding bulk structure using the FHI-aims GUI GIMS and run a simple relaxation for the resulting slab.

Note

This tutorial only introduces the basic concepts for calculating surface systems in FHI-aims. Additional details and functionality (work functions, electrostatic potential output, ...) are described in the tutorials Slab Calculations and Surface Simulations and Introduction of ab initio thermodynamics and REGC.

Creating the Si(100) surface

Let's start by creating a working directory for this tutorial:

mkdir Si_surface
cd Si_surface

First, we'll create a bulk silicon crystal as our starting point:

mkdir Si_bulk
cd Si_bulk

Create a geometry.in file with the conventional unit cell for silicon:

lattice_vector 5.430000 0.000000 0.000000
lattice_vector 0.000000 5.430000 0.000000
lattice_vector 0.000000 0.000000 5.430000

atom_frac 0.000000 0.000000 0.500000 Si
atom_frac 0.750000 0.750000 0.750000 Si
atom_frac 0.000000 0.500000 0.000000 Si
atom_frac 0.750000 0.250000 0.250000 Si
atom_frac 0.500000 0.000000 0.000000 Si
atom_frac 0.250000 0.750000 0.250000 Si
atom_frac 0.500000 0.500000 0.500000 Si
atom_frac 0.250000 0.250000 0.750000 Si

This structure represents the diamond cubic structure of silicon with a lattice constant of 5.43 Å.

Note

The bulk structure has been relaxed with the same settings we will use throughout this part of the tutorial, i.e., light species defaults and the LDA functional.

Now we'll use GIMS (Graphical Interface for Materials Simulations) to create a Si(100) slab from our bulk structure. GIMS is a web-based interface that simplifies the creation of geometries and control files (among several other things) for FHI-aims. Start by opening a new browser window with GIMS at https://gims.ms1p.org/. Then follow the instructions below (you can click on the images for larger viewing) to create a Si(100) slab from the above Si bulk structure.

Creating the Si(100) slab with GIMS

Click on the Structure Builder.

Step 1

Click on the + icon next to the CdSrTa.in field to create a new blank structure.

Step 2

Fill in the lattice vectors and atomic positions with the conventional unit cell of Si from before. As an alternative, you can upload the geometry.in file for the bulk cell we have created previously.

Step 3

Scroll down the page and open the Surface (Slab) Construction tab. Fill in the miller indices 1,0, 0, select 7 atomic layers, and 40 Å of vacuum. Then click the Create Slab button. This will create a 7-layer Si(100) slab in the GIMS window based on the conventional bulk cell.

Step 4

Open the Standardized Cells tab and click on the Primitive Cell button. This will create the primitive cell of the Si(100) slab with 7 atoms per unit cell.

Step 5

Lastly, scroll up again and click the Export button and then the geometry.in (fractional) button. This will download the structure in the FHI-aims geometry format using fractional coordinates.

Step 6

Vacuum thickness for slabs in FHI-aims

In many DFT codes (especially codes implementing plane-wave basis sets), you would need to run several calculations with different vacuum thicknesses to find the smallest value which gives physical results. This is because, for many DFT codes, increasing the size of the computational cell substantially increases the basis set size and thus the runtime of a calculation, even if no additional atoms are added to the system. However, in codes implementing localized basis functions (such as FHI-aims), there is negligible computational cost in adding additional vacuum to the system, so you may easily use a relatively large vacuum thickness of 40 Å or more from the onset without a noticeable performance impact.

You should now have a geometry.in file for a 7-layer Si(100) slab with 40 Å of vacuum. The file should look like this:

lattice_vector 3.839590 0.000000 0.000000
lattice_vector 0.000000 3.839590 0.000000
lattice_vector 0.000000 0.000000 48.145000

atom_frac 0.500000 0.000000 0.415412 Si
atom_frac 0.000000 0.000000 0.443608 Si
atom_frac 0.000000 0.500000 0.471804 Si
atom_frac 0.500000 0.500000 0.500000 Si
atom_frac 0.500000 0.000000 0.528196 Si
atom_frac 0.000000 0.000000 0.556392 Si
atom_frac 0.000000 0.500000 0.584588 Si

Si(100) slab

Setting Up the Si(100) Calculation

Create a new working folder for the Si(100) slab calculation:

cd ..
mkdir Si100
cd Si100

Create your geometry.in file with the structure for the Si(100) slab from the previous section. Then create a control.in with the following settings:

xc                pw-lda
spin              none
relativistic      atomic_zora scalar

k_grid            17 17 1

relax_geometry  bfgs 5e-3

These settings should look familiar to you. We want to highlight one part:

  • k_grid 17 17 1: The k-grid is specifically chosen for this slab system. There should be no interaction between different periodic images of the slab in z direction. Therefore, only one k-point is needed on that axis. If you did need more than one k-point along that axis to yield converged results, this would imply that periodic images in that direction were interacting. The k-points along the \(k_x\) and \(k_y\) direction still have to be converged as usual.

Add the light species defaults by inputting this clims command:

clims-prepare-run --species=light

Submit the calculation to your compute system. During the webinar hands-on session, you may use the provided fhiaims_job.sh script:

cp ~/fhiaims_job.sh .
sbatch fhiaims_job.sh

Submission script on provided AWS resources

You can submit a job to the computing queue with:

sbatch fhiaims_job.sh

Make sure to submit the job from the folder where the FHI-aims input files are located.

The submission script looks like the following:

fhiaims_job.sh
#!/bin/bash -l
# Standard output and error:
#SBATCH -o ./slurm.stdout
#SBATCH -e ./slurm.stderr
# Initial working directory:
#SBATCH -D ./
# Job Name:
#SBATCH -J FHI-aims
# Number of nodes and MPI tasks per node:
#SBATCH --nodes=1
# HPC7g
#SBATCH --tasks-per-node=64
#
# Wall clock limit:
#SBATCH --time=00:15:00

ulimit -s unlimited

module purge
module load fhi-aims aims-tools

date
mpirun aims.x > aims.out

The calculation should take less than 1 minute on the provided resources.

Once the calculation is finished, you can inspect the output in aims.out:

  Slab Identifier: This is Z-oriented slab and maximum thickness of the vacuum is: 40.000 Angstrom.

The code was able to correctly identify the input as a z-oriented slab with 40 Å of vacuum. As mentioned earlier, it is important to choose an appropriate k-grid for slab calculations. FHI-aims performs simple runtime checks on the specified k-grids to avoid unintended user errors, i.e., whether more than 1 k-point is specified in vacuum directions or a strongly inhomogeneous k-grid is specified. You can find the following in your aims.out file:

   Checking k-grid inconsistencies now:
   | No of k-points * lattice vector length for lattice vector 1 is   65.27 Angstroms
   | No of k-points * lattice vector length for lattice vector 2 is   65.27 Angstroms
   | No of k-points * lattice vector length for vacuum lattice vector 3 is   48.15 Angstroms

   | Ratio for k-points * lattice vector length for lattice vectors 1 vs 2 is    1.00

   * The specified k_grid leads to a nearly homogenous k-grid density in non-vacuum directions,
   * and seems sensible.

Try uploading the aims.out to the GIMS Output Analyzer to visualize and inspect the relaxation. You will see that the relaxation leads to a slight elongation of the slab but to no surface reconstruction.

Tip

With GIMS you can also easily create supercells of your bulk/surface structures. The Si(100) surface is actually known to reconstruct to an asymmetric dimer structure, but this requires at least a 2x1 supercell. More details, including how to obtain this reconstruction, are described in this tutorial.