NanoLanguage
Encyclopedia
NanoLanguage is a scripting interface built on top of the interpreted programming language Python, and is primarily intended for simulation of physical and chemical properties of nanoscale systems.
Nanotechnology
Nanotechnology is the study of manipulating matter on an atomic and molecular scale. Generally, nanotechnology deals with developing materials, devices, or other structures possessing at least one dimension sized from 1 to 100 nanometres...


Introduction

Over the years, several electronic-structure codes based on density functional theory
Density functional theory
Density functional theory is a quantum mechanical modelling method used in physics and chemistry to investigate the electronic structure of many-body systems, in particular atoms, molecules, and the condensed phases. With this theory, the properties of a many-electron system can be determined by...

 have been developed by different groups of academic researchers; VASP
Vienna Ab-initio Simulation Package
The Vienna Ab-initio Simulation Package, better known as VASP, is a package for performing ab initio quantum mechanical molecular dynamics using either Vanderbilt pseudopotentials, or the Projector Augmented Wave Method, and a plane wave basis set...

, Abinit
ABINIT
ABINIT is an open-source suite of programs for materials science, distributed under the GNU General Public License. ABINIT implements density functional theory, using a plane wave basis set and pseudopotentials, to compute the electronic density and derived properties of materials ranging from...

, SIESTA
SIESTA (computer program)
SIESTA is an original method and a software implementation for performing electronic structure calculations and ab initio molecular dynamics simulations of molecules and solids....

, and Gaussian
GAUSSIAN
Gaussian is a computational chemistry software program initially released in 1970 by John Pople and his research group at Carnegie-Mellon University as Gaussian 70. It has been continuously updated since then...

 are just a few examples. The input to these programs is usually a simple text file written in a code-specific format with a set of code-specific keywords.
NanoLanguage was introduced by Atomistix
Atomistix
Atomistix A/S was a software company developing tools for atomic scale modelling. It was headquartered in Copenhagen, Denmark, with a subsidiary for Asia Pacific in Singapore and for the Americas in California...

 A/S as an interface to Atomistix ToolKit
Atomistix ToolKit
Atomistix ToolKit is a commercial software for atomic-scale modeling and simulation of nanosystems. The software was originally developed by Atomistix A/S, and was later acquired by QuantumWise A/S following the Atomistix bankruptcy....

 (version 2.1) in order to provide a more flexible input format. A NanoLanguage script (or input file) is just a Python program and can be anything from a few lines to a script performing complex numerical simulations, communicating with other scripts and files, and communicating with other software (e.g. plotting programs).
NanoLanguage is not a proprietary
Property
Property is any physical or intangible entity that is owned by a person or jointly by a group of people or a legal entity like a corporation...

 product of Atomistix and can be used as an interface to other density functional theory
Density functional theory
Density functional theory is a quantum mechanical modelling method used in physics and chemistry to investigate the electronic structure of many-body systems, in particular atoms, molecules, and the condensed phases. With this theory, the properties of a many-electron system can be determined by...

 codes as well as to codes utilizing e.g. tight-binding, k.p, or quantum-chemical
Quantum chemistry
Quantum chemistry is a branch of chemistry whose primary focus is the application of quantum mechanics in physical models and experiments of chemical systems...

 methods.

Features

Built on top of Python, NanoLanguage includes the same functionality as Python and with the same syntax. Hence, NanoLanguage contains, among other features, common programming elements (for loop
For loop
In computer science a for loop is a programming language statement which allows code to be repeatedly executed. A for loop is classified as an iteration statement....

s, if statements
Conditional statement
In computer science, conditional statements, conditional expressions and conditional constructs are features of a programming language which perform different computations or actions depending on whether a programmer-specified boolean condition evaluates to true or false...

, etc), mathematical functions, and data arrays.

In addition, a number of concepts and objects
Object (computer science)
In computer science, an object is any entity that can be manipulated by the commands of a programming language, such as a value, variable, function, or data structure...

 relevant to quantum chemistry
Quantum chemistry
Quantum chemistry is a branch of chemistry whose primary focus is the application of quantum mechanics in physical models and experiments of chemical systems...

 and physics are built into NanoLanguage, e.g. a periodic table
Periodic table
The periodic table of the chemical elements is a tabular display of the 118 known chemical elements organized by selected properties of their atomic structures. Elements are presented by increasing atomic number, the number of protons in an atom's atomic nucleus...

, a unit system (including both SI units and atomic units like Ångström
Ångström
The angstrom or ångström, is a unit of length equal to 1/10,000,000,000 of a meter . Its symbol is the Swedish letter Å....

), constructor
Constructor (computer science)
In object-oriented programming, a constructor in a class is a special type of subroutine called at the creation of an object. It prepares the new object for use, often accepting parameters which the constructor uses to set any member variables required when the object is first created...

s of atomic geometries, and different functions for density-functional theory and transport calculations.

Example

This NanoLanguage script uses the Kohn-Sham method
Kohn-Sham equations
In quantum chemistry, specifically density functional theory, the Kohn–Sham equation is the Schrödinger equation of a fictitious system of non-interacting particles that generate the same density as any given system of interacting particles...

to calculate the total energy of a water molecule as a function of the bending angle.

  1. Define function for molecule setup

def waterConfiguration(angle,bondLength):
from math import sin,cos

theta = angle.inUnitsOf(radians)
positions = [(0.0, 0.0, 0.0)*Angstrom,
(1.0, 0.0, 0.0)*bondLength,
(cos(theta), sin(theta), 0.0)*bondLength]
elements = [Oxygen] + [Hydrogen]*2

return MoleculeConfiguration(elements,positions)

  1. Choose DFT method with default arguments

method = KohnShamMethod
  1. Scan different bending angles and calculate the total energy

for i in range(30,181,10):
theta = i*degrees
h2o = waterConfiguration(theta, 0.958*Angstrom)
scf = method.apply( h2o )
print 'Angle = ', theta, ' Total Energy = ',calculateTotalEnergy(scf)

External links

  • http://www.atomistix.com/index.php?id=nanolanguage
  • http://www.atomistix.com/manuals/ATK_2.2/html/index.html Introduction to NanoLanguage
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK