Source code for sknano.generators._bilayer_graphene_generator
# -*- coding: utf-8 -*-
"""
===============================================================================
BLG structure generator (:mod:`sknano.generators._bilayer_graphene_generator`)
===============================================================================
.. currentmodule:: sknano.generators._bilayer_graphene_generator
"""
from __future__ import absolute_import, division, print_function
from __future__ import unicode_literals
__docformat__ = 'restructuredtext en'
from sknano.structures import BilayerGraphene
from ._graphene_generator import GrapheneGenerator
__all__ = ['BilayerGrapheneGenerator']
[docs]class BilayerGrapheneGenerator(BilayerGraphene, GrapheneGenerator):
"""Bilayer graphene structure generator class.
Parameters
----------
armchair_edge_length : float, optional
Length of armchair edge in **nanometers**
.. versionadded:: 0.3.10
zigzag_edge_length : float, optional
Length of zigzag edge in **nanometers**
.. versionadded:: 0.3.10
length : float, optional
Length of armchair edge in **nanometers**
.. deprecated:: 0.3.10
Use `armchair_edge_length` instead
width : float, optional
Width of graphene sheet in **nanometers**
.. deprecated:: 0.3.10
Use `zigzag_edge_length` instead
edge : {'AC', 'armchair', 'ZZ', 'zigzag'}, optional
**A**\ rm\ **C**\ hair or **Z**\ ig\ **Z**\ ag edge along
the `length` of the sheet.
.. deprecated:: 0.3.10
No longer used!
basis : {:class:`python:list`}, optional
List of :class:`python:str`\ s of element symbols or atomic number
of the two atom basis (default: ['C', 'C'])
.. versionadded:: 0.3.10
element1, element2 : {str, int}, optional
Element symbol or atomic number of basis
:class:`~sknano.core.Atom` 1 and 2
.. deprecated:: 0.3.10
Use `basis` instead
bond : float, optional
bond length between nearest-neighbor atoms in **Angstroms**.
layer_spacing : float, optional
Distance between layers in **Angstroms**.
stacking_order : {'AA', 'AB'}, optional
Stacking order of graphene layers
layer_rotation_angle : {None, float}, optional
Rotation angle of second layer specified in degrees.
If specified in degrees, then you must set `degrees=True`
degrees : bool, optional
The `layer_rotation_angle` is specified in degrees and needs to be
converted to radians.
autogen : bool, optional
if `True`, automatically generate unit cell and full structure
verbose : bool, optional
verbose output
Examples
--------
Import the BilayerGrapheneGenerator class
>>> from sknano.generators import BilayerGrapheneGenerator
Generate **10 nm** wide by **1 nm** long `AB` stacked
bilayer-graphene:
>>> blg = BilayerGrapheneGenerator(armchair_edge_length=10,
... zigzag_edge_length=1)
Save structure data in `xyz` format:
>>> blg.save()
The rendered structure looks like (after rotating 90 degrees so that
it better fits the page):
.. image:: /images/10nmx1nm_bilayer.png
Now generate bilayer-graphene with top layer rotated by 45 degrees.
>>> rotated_bilayer = BilayerGrapheneGenerator(armchair_edge_length=10,
... zigzag_edge_length=10,
... layer_rotation_angle=45,
... degrees=True)
>>> rotated_bilayer.save(fname='rotated_bilayer.xyz')
The rendered structure looks like:
.. image:: /images/rotated_bilayer.png
Now generate BN bilayer-graphene with top layer rotated 45 degrees.
>>> rotated_BN_bilayer = BilayerGrapheneGenerator(armchair_edge_length=10,
... zigzag_edge_length=10,
... basis=['B', 'N'],
... layer_rotation_angle=45,
... degrees=True)
>>> rotated_BN_bilayer.save(fname='BN_bilayer_rotated_45deg.xyz')
The rendered structure looks like:
.. image:: /images/BN_bilayer_rotated_45deg.png
"""
pass