- 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.
#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) #Choose DFT method with default arguments method = KohnShamMethod() #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
See also
- List of software for nanostructures modeling
References
- ^ vasp
- ^ Abinit Faq Page
- ^ SIESTA (Spanish Initiative for Electronic Simulations with Thousands of Atoms)
- ^ Atomistix unveils open software platform for nanotech modeling, SmallTimes, 2006 [1]
- ^ Introduction to NanoLanguage
- ^ atomistix | NanoLanguage
This nanotechnology-related article is a stub. You can help Wikipedia by expanding it. This scientific software article is a stub. You can help Wikipedia by expanding it.