sknano.generators.GrapheneGenerator

class sknano.generators.GrapheneGenerator(autogen=True, **kwargs)[source][source]

N-layer graphene generator class.

Parameters:

length : float

Length of graphene sheet in nanometers

width : float

Width of graphene sheet in nanometers

edge : {‘AC’, ‘armchair’, ‘ZZ’, ‘zigzag’}, optional

ArmChair or ZigZag edge along the length of the sheet.

element1, element2 : {str, int}, optional

Element symbol or atomic number of basis Atom 1 and 2

bond : float, optional

bond length between nearest-neighbor atoms in Angstroms.

nlayers : int, optional

Number of graphene layers.

layer_spacing : float, optional

Distance between layers in Angstroms.

stacking_order : {‘AA’, ‘AB’}, optional

Stacking order of graphene layers

autogen : bool, optional

automatically generate unit cell and full structure

verbose : bool, optional

verbose output

Notes

The GrapheneGenerator class and its subclasses generate graphene with either an armchair or zigzag edge using a 4-atom conventional unit cell. If you want to generate graphene as an unrolled nanotube, see the UnrolledSWNTGenerator class.

Examples

Start an interactive python or ipython session, then import the GrapheneGenerator class.

>>> from sknano.generators import GrapheneGenerator

Now generate a 20 nm x 1 nm armchair edge graphene nano-ribbon.

>>> ACG = GrapheneGenerator(length=20, width=1, edge='AC')

Save structure data in xyz format:

>>> ACG.save_data()

The rendered structure look like:

../_images/20nmx1nm_AC_edge.png

Now let’s generate a 20 nm x 1 nm zigzag edge graphene nano-ribbon.

>>> ZZG = GrapheneGenerator(length=20, width=1, edge='ZZ')
>>> ZZG.save_data()

The rendered structure looks like:

../_images/20nmx1nm_ZZ_edge.png

Now generate 25 nm x 5 nm, armchair edge, 5 layer, AB-stacked graphene.

>>> ACG_5layers = GrapheneGenerator(length=25, width=5, edge='AC',
...                                 nlayers=5)
>>> ACG_5layers.save_data()

The rendered structure looks like:

../_images/25nmx5nm_5layer_AC_graphene.png

Now generate single layer, 10 nm x 10 nm sheet of BN Graphene.

>>> BN_graphene = GrapheneGenerator(length=10, width=10, edge='AC',
...                                 element1='B', element2='N')
>>> BN_graphene.save_data()

The rendered structure looks like:

../_images/10nmx10nm_single_layer_BN_graphene.png

Now, just because we can, generate a 5 nm x 5 nm sheet of Uranium-Einsteinium Graphene.

>>> UEs_graphene = GrapheneGenerator(width=5, length=5, edge='zigzag',
...                                  element1='U', element2='Es')
>>> UEs_graphene.save_data()

The rendered structure looks like:

../_images/5nmx5nm_single_layer_UEs_graphene.png

Attributes

atoms Return structure Atoms.
bond Bond length in .
element1 Element symbol of Atom 1.
element2 Element symbol of Atom 2.
structure Alias to structure_data.
structure_data Return StructureData instance.

Methods

generate_structure_data() Generate the full structure coordinates.
generate_unit_cell() Generate the graphene unit cell.
save_data([fname, outpath, ...]) Save structure data.