from ase.atoms import Atoms
from ase.collections import g2
[docs]
def molecule(name, vacuum=None, **kwargs):
"""Create an atomic structure from a database.
This is a helper function to easily create molecules from the g2 and
extra databases.
Parameters
----------
name : str
Name of the molecule to build.
vacuum : float, optional
Amount of vacuum to pad the molecule with on all sides.
Additional keyword arguments (kwargs) can be supplied, which are passed
to ase.Atoms.
Returns
-------
ase.atoms.Atoms
An ASE Atoms object corresponding to the specified molecule.
Notes
-----
To see a list of allowed names, try:
>>> from ase.collections import g2
>>> print(g2.names) #doctest:+NORMALIZE_WHITESPACE
['PH3', 'P2', 'CH3CHO', 'H2COH', 'CS', 'OCHCHO', 'C3H9C', 'CH3COF',
'CH3CH2OCH3', 'HCOOH', 'HCCl3', 'HOCl', 'H2', 'SH2', 'C2H2',
'C4H4NH', 'CH3SCH3', 'SiH2_s3B1d', 'CH3SH', 'CH3CO', 'CO', 'ClF3',
'SiH4', 'C2H6CHOH', 'CH2NHCH2', 'isobutene', 'HCO', 'bicyclobutane',
'LiF', 'Si', 'C2H6', 'CN', 'ClNO', 'S', 'SiF4', 'H3CNH2',
'methylenecyclopropane', 'CH3CH2OH', 'F', 'NaCl', 'CH3Cl',
'CH3SiH3', 'AlF3', 'C2H3', 'ClF', 'PF3', 'PH2', 'CH3CN',
'cyclobutene', 'CH3ONO', 'SiH3', 'C3H6_D3h', 'CO2', 'NO',
'trans-butane', 'H2CCHCl', 'LiH', 'NH2', 'CH', 'CH2OCH2',
'C6H6', 'CH3CONH2', 'cyclobutane', 'H2CCHCN', 'butadiene', 'C',
'H2CO', 'CH3COOH', 'HCF3', 'CH3S', 'CS2', 'SiH2_s1A1d', 'C4H4S',
'N2H4', 'OH', 'CH3OCH3', 'C5H5N', 'H2O', 'HCl', 'CH2_s1A1d',
'CH3CH2SH', 'CH3NO2', 'Cl', 'Be', 'BCl3', 'C4H4O', 'Al', 'CH3O',
'CH3OH', 'C3H7Cl', 'isobutane', 'Na', 'CCl4', 'CH3CH2O', 'H2CCHF',
'C3H7', 'CH3', 'O3', 'P', 'C2H4', 'NCCN', 'S2', 'AlCl3', 'SiCl4',
'SiO', 'C3H4_D2d', 'H', 'COF2', '2-butyne', 'C2H5', 'BF3', 'N2O',
'F2O', 'SO2', 'H2CCl2', 'CF3CN', 'HCN', 'C2H6NH', 'OCS', 'B', 'ClO',
'C3H8', 'HF', 'O2', 'SO', 'NH', 'C2F4', 'NF3', 'CH2_s3B1d',
'CH3CH2Cl', 'CH3COCl', 'NH3', 'C3H9N', 'CF4', 'C3H6_Cs', 'Si2H6',
'HCOOCH3', 'O', 'CCH', 'N', 'Si2', 'C2H6SO', 'C5H8', 'H2CF2', 'Li2',
'CH2SCH2', 'C2Cl4', 'C3H4_C3v', 'CH3COCH3', 'F2', 'CH4', 'SH',
'H2CCO', 'CH3CH2NH2', 'Li', 'N2', 'Cl2', 'H2O2', 'Na2', 'BeH',
'C3H4_C2v', 'NO2']
>>> from ase.build.molecule import extra
>>> print(extra.keys()) #doctest:+NORMALIZE_WHITESPACE
dict_keys(['Be2', 'C7NH5', 'BDA', 'biphenyl', 'C60'])
Examples
--------
>>> from ase.build import molecule
>>> atoms = molecule('H2O')
"""
if name in extra:
kwargs.update(extra[name])
mol = Atoms(**kwargs)
else:
mol = g2[name]
if kwargs:
mol = Atoms(mol, **kwargs)
if vacuum is not None:
mol.center(vacuum=vacuum)
return mol
extra = {
'Be2': {
'symbols': 'BeBe',
'positions': [[0, 0, 1.0106],
[0, 0, -1.0106]]},
'C7NH5': {
'symbols': 'C7NH5',
'positions': [[-1.593581, -1.142601, 0.],
[-2.235542, 0.095555, 0.],
[-0.204885, -1.210726, 0.],
[0.549645, -0.025355, 0.],
[1.976332, -0.085321, 0.],
[-0.099258, 1.220706, 0.],
[-1.488628, 1.273345, 0.],
[3.136871, -0.128138, 0.],
[-2.177996, -2.060896, 0.],
[-3.323594, 0.141242, 0.],
[0.301694, -2.173705, 0.],
[0.488716, 2.136782, 0.],
[-1.987765, 2.240495, 0.]]},
'BDA': {
# 1,4-Benzodiamine
# aka p-Aminoaniline; p-Benzenediamine; p-Diaminobenzene;
# p-Phenylenediamine; Paraphenylen-diamine
# PBE-gpaw relaxed
'symbols': 'C6H4N2H4',
'positions': [[0.004212, 1.406347, 0.061073],
[1.193490, 0.687096, 0.029481],
[1.190824, -0.690400, -0.028344],
[0.000295, -1.406191, -0.059503],
[-1.186974, -0.685668, -0.045413],
[-1.185376, 0.690203, 0.009452],
[2.147124, 1.219997, 0.064477],
[2.141593, -1.227477, -0.054266],
[-2.138408, -1.222814, -0.095050],
[-2.137740, 1.226930, 0.023036],
[-0.006314, 2.776024, 0.186278],
[-0.007340, -2.777839, -0.159936],
[0.844710, -3.256543, 0.110098],
[-0.854965, -3.253324, 0.130125],
[0.845826, 3.267270, -0.055549],
[-0.854666, 3.254654, -0.092676]]},
'biphenyl': {
# PBE-gpaw relaxed
'symbols': 'C6H5C6H5',
'positions': [[-0.74081, -0.00000, -0.00003],
[-1.46261, -1.20370, -0.00993],
[-2.85531, -1.20350, -0.00663],
[-3.55761, -0.00000, -0.00003],
[-2.85531, 1.20350, 0.00667],
[-1.46261, 1.20370, 0.00997],
[-0.92071, -2.14850, 0.00967],
[-3.38981, -2.15110, -0.00083],
[-4.64571, -0.00000, -0.00003],
[-3.38981, 2.15110, 0.00077],
[-0.92071, 2.14850, -0.00963],
[3.55849, -0.00000, -0.00003],
[2.85509, -0.86640, -0.83553],
[1.46289, -0.87000, -0.83153],
[0.73969, -0.00000, -0.00003],
[1.46289, 0.87000, 0.83157],
[2.85509, 0.86640, 0.83547],
[4.64659, -0.00000, -0.00003],
[3.39189, -1.53770, -1.50253],
[0.91869, -1.53310, -1.50263],
[0.91869, 1.53310, 1.50267],
[3.39189, 1.53770, 1.50257]]},
'C60': {
# Buckminsterfullerene, I*h symm.
# The Buckyball has two degrees of freedom, the C-C bond, and the
# C=C bond. This is an LDA-gpaw relaxed structure with bond lengths
# 1.437 and 1.385.
# Experimentally, the two bond lengths are 1.45 and 1.40 Angstrom.
'symbols': 'C60',
'positions': [[2.2101953, 0.5866631, 2.6669504],
[3.1076393, 0.1577008, 1.6300286],
[1.3284430, -0.3158939, 3.2363232],
[3.0908709, -1.1585005, 1.2014240],
[3.1879245, -1.4574599, -0.1997005],
[3.2214623, 1.2230966, 0.6739440],
[3.3161210, 0.9351586, -0.6765151],
[3.2984981, -0.4301142, -1.1204138],
[-0.4480842, 1.3591484, 3.2081020],
[0.4672056, 2.2949830, 2.6175264],
[-0.0256575, 0.0764219, 3.5086259],
[1.7727917, 1.9176584, 2.3529691],
[2.3954623, 2.3095689, 1.1189539],
[-0.2610195, 3.0820935, 1.6623117],
[0.3407726, 3.4592388, 0.4745968],
[1.6951171, 3.0692446, 0.1976623],
[-2.1258394, -0.8458853, 2.6700963],
[-2.5620990, 0.4855202, 2.3531715],
[-0.8781521, -1.0461985, 3.2367302],
[-1.7415096, 1.5679963, 2.6197333],
[-1.6262468, 2.6357030, 1.6641811],
[-3.2984810, 0.4301871, 1.1204208],
[-3.1879469, 1.4573895, 0.1996030],
[-2.3360261, 2.5813627, 0.4760912],
[-0.5005210, -2.9797771, 1.7940308],
[-1.7944338, -2.7729087, 1.2047891],
[-0.0514245, -2.1328841, 2.7938830],
[-2.5891471, -1.7225828, 1.6329715],
[-3.3160705, -0.9350636, 0.6765268],
[-1.6951919, -3.0692581, -0.1976564],
[-2.3954901, -2.3096853, -1.1189862],
[-3.2214182, -1.2231835, -0.6739581],
[2.1758234, -2.0946263, 1.7922529],
[1.7118619, -2.9749681, 0.7557198],
[1.3130656, -1.6829416, 2.7943892],
[0.3959024, -3.4051395, 0.7557638],
[-0.3408219, -3.4591883, -0.4745610],
[2.3360057, -2.5814499, -0.4761050],
[1.6263757, -2.6357349, -1.6642309],
[0.2611352, -3.0821271, -1.6622618],
[-2.2100844, -0.5868636, -2.6670300],
[-1.7726970, -1.9178969, -2.3530466],
[-0.4670723, -2.2950509, -2.6175105],
[-1.3283500, 0.3157683, -3.2362375],
[-2.1759882, 2.0945383, -1.7923294],
[-3.0909663, 1.1583472, -1.2015749],
[-3.1076090, -0.1578453, -1.6301627],
[-1.3131365, 1.6828292, -2.7943639],
[0.5003224, 2.9799637, -1.7940203],
[-0.3961148, 3.4052817, -0.7557272],
[-1.7120629, 2.9749122, -0.7557988],
[0.0512824, 2.1329478, -2.7937450],
[2.1258630, 0.8460809, -2.6700534],
[2.5891853, 1.7227742, -1.6329562],
[1.7943010, 2.7730684, -1.2048262],
[0.8781323, 1.0463514, -3.2365313],
[0.4482452, -1.3591061, -3.2080510],
[1.7416948, -1.5679557, -2.6197714],
[2.5621724, -0.4853529, -2.3532026],
[0.0257904, -0.0763567, -3.5084446]]}}