SkillAgentSearch skills...

Intermat

Interface materials design toolkit

Install / Use

/learn @atomgptlab/Intermat
About this skill

Quality Score

0/100

Category

Design

Supported Platforms

Universal

README

alt text

InterMat Schematic

Table of Contents

<a name="intro"></a>

Introduction

Interfaces are critical for a variety of technological applications including semiconductor transistors and diodes, solid-state lighting devices, solar-cells, data-storage and battery applications. While interfaces are ubiquitous, predicting even basic interface properties from bulk data or chemical models remains challenging. Furthermore, the continued scaling of devices towards the atomic limit makes interface properties even more important. There have been numerous scientific efforts to model interfaces with a variety of techniques including density functional theory (DFT), force-field (FF), tight-binding, TCAD and machine learning (ML) techniques. However, to the best of our knowledge, there is no systematic investigation of interfaces for a large class of structural variety and chemical compositions. Most of the previous efforts focus on a limited number of interfaces, and hence there is a need for a dedicated infrastructure for data-driven interface materials design.

The Interface materials design (InterMat) package (https://arxiv.org/abs/2401.02021) introduces a multi-scale and data-driven approach for material interface/heterostructure design. This package allows:

  1. Generation of an atomistic interface geometry given two similar or different materials,
  2. Performing calculations using multi-scale methods such as DFT, MD/FF, ML, TB, QMC, TCAD etc.,
  3. analyzing properties such as equilibrium geometries, energetics, work functions, ionization potentials, electron affinities, band offsets, carrier effective masses, mobilities, and thermal conductivities, classification of heterojunctions, benchmarking calculated properties with experiments,
  4. training machine learning models especially to accelerate interface design.

<a name="google"></a>

Google colab notebooks

| Notebooks | Google Colab | Descriptions | | ---------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Getting started | Open in Google Colab | Installation of InterMat and generation of atomistic interface geometries given two similar or different materials and other examples. | | Generating interfaces | Open in Google Colab | Si(110)/GaAs(110) interface and Ewald calculations. | | Band offset with quantum espresso | Open in Google Colab | Installing Quantum espresso DFT package and calculations for valence band offset. |

<a name="install"></a>

Installation

  • We recommend installing miniconda environment from https://conda.io/miniconda.html :

    bash Miniconda3-latest-Linux-x86_64.sh (for linux)
    bash Miniconda3-latest-MacOSX-x86_64.sh (for Mac)
    Download 32/64 bit python 3.9 miniconda exe and install (for windows)
    Now, let's make a conda environment just for JARVIS::
    conda create --name my_intermat python=3.9
    source activate my_intermat
    
    
    git clone https://github.com/usnistgov/intermat.git
    cd inermat
    python setup.py develop
    

<a name="generation"></a>

Generation

<a name="bulk"></a>

Bulk structures from scratch

An atomic structure can consist of atomic element types, corresponding xyz coordinates in space (either in real or reciprocal space) and lattice matrix used in setting periodic boundary conditions.

An example of constructing an atomic structure class using jarvis.core.Atoms is given below. After creating the Atoms class, we can simply print it and visualize the POSCAR format file in a software such as VESTA. While the examples below use Silicon elemental crystal creation and analysis, it can be used for multi-component systems as well.

from jarvis.core.atoms import Atoms
box = [[2.715, 2.715, 0], [0, 2.715, 2.715], [2.715, 0, 2.715]]
coords = [[0, 0, 0], [0.25, 0.25, 0.25]]
elements = ["Si", "Si"]
Si = Atoms(lattice_mat=box, coords=coords, elements=elements, cartesian=False)
print (Si) # To visualize 
Si.write_poscar('POSCAR.vasp')
Si.write_cif('POSCAR.vasp')

The <span class="title-ref">Atoms</span> class here is created from the raw data, but it can also be read from different file formats such as: <span class="title-ref">'.cif', 'POSCAR', '.xyz', '.pdb', '.sdf', '.mol2'</span> etc. The Atoms class can also be written to files in formats such as POSCAR/.cif etc.

Note that for molecular systems, we use a large vaccum padding (say 50 Angstrom in each direction) and set lattice_mat accordingly, e.g. lattice_mat = [[50,0,0],[0,50,0],[0,0,50]]. Similarly, for free surfaces we set high vaccum in one of the crystallographic directions (say z) by giving a large z-comonent in the lattice matrix while keeping the x, y comonents intact.

my_atoms = Atoms.from_poscar('POSCAR')
my_atoms.write_poscar('MyPOSCAR')

Once this Atoms class is created, several imprtant information can be obtained such as:

print ('volume',Si.volume)
print ('density in g/cm3', Si.density)
print ('composition as dictionary', Si.composition)
print ('Chemical formula', Si.composition.reduced_formula)
print ('Spacegroup info', Si.spacegroup())
print ('lattice-parameters', Si.lattice.abc, Si.lattice.angles)
print ('packing fraction',Si.packing_fraction)
print ('number of atoms',Si.num_atoms)
print ('Center of mass', Si.get_center_of_mass())
print ('Atomic number list', Si.atomic_numbers)

For creating/accessing dataset(s), we use Atoms.from_dict() and Atoms.to_dict() methods:

d = Si.to_dict()
new_atoms = Atoms.from_di
View on GitHub
GitHub Stars4
CategoryDesign
Updated6mo ago
Forks0

Languages

Python

Security Score

67/100

Audited on Sep 14, 2025

No findings