My watch list
my.chemeurope.com  
Login  

NanoLanguage



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.


Contents

Introduction

Over the years, several electronic-structure codes based on density functional theory have been developed by different groups of academic researchers; VASP, Abinit, SIESTA, and Gaussian 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. [1] [2] [3]

NanoLanguage was introduced by Atomistix A/S as an interface to Atomistix ToolKit (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 product of Atomistix and can be used as an interface to other density functional theory codes as well as to codes utilizing e.g. tight-binding, k.p, or quantum-chemical methods. [4] [5]

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 loops, if statements, etc), mathematical functions, and data arrays.

In addition, a number of concepts and objects relevant to quantum chemistry and physics are built into NanoLanguage, e.g. a periodic table, a unit system (including both SI units and atomic units like Ångström), constructors of atomic geometries, and different functions for density-functional theory and transport calculations. [6]


Example

This NanoLanguage script uses the Kohn-Sham method 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)


References

  1. ^ http://cms.mpi.univie.ac.at/vasp/vasp/vasp.html
  2. ^ http://www.abinit.org/documentation/
  3. ^ http://www.uam.es/departamentos/ciencias/fismateriac/siesta/
  4. ^ Atomistix unveils open software platform for nanotech modeling, SmallTimes, 2006 [1]
  5. ^ http://www.atomistix.com/manuals/ATK_2.2/html/index.html Introduction to NanoLanguage
  6. ^ http://www.atomistix.com/index.php?id=nanolanguage
 
This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article "NanoLanguage". A list of authors is available in Wikipedia.
Your browser is not current. Microsoft Internet Explorer 6.0 does not support some functions on Chemie.DE