GrapheneGenerator

class sknano.generators.GrapheneGenerator(*args, autogen=True, finalize=True, **kwargs)[source] [edit on github][source]

Bases: sknano.generators.RectangularGrapheneGenerator

N-layer graphene generator class.

Changed in version 0.3.11: GrapheneGenerator is now a sub-class of the ConventionalCellGrapheneGenerator class to maintain backwards compatibility and also includes 2 new classmethods: from_primitive_cell and from_conventional_cell.

Parameters:
  • armchair_edge_length (float, optional) –

    Length of armchair edge in Angstroms

    New in version 0.3.10.

  • zigzag_edge_length (float, optional) –

    Length of zigzag edge in Angstroms

    New in version 0.3.10.

  • length (float, optional) –

    Length of armchair edge in Angstroms

    Deprecated since version 0.3.10: Use armchair_edge_length instead

  • width (float, optional) –

    Width of graphene sheet in Angstroms

    Deprecated since version 0.3.10: Use zigzag_edge_length instead

  • edge ({'AC', 'armchair', 'ZZ', 'zigzag'}, optional) –

    ArmChair or ZigZag edge along the length of the sheet.

    Deprecated since version 0.3.10: No longer used!

  • basis ({list}, optional) –

    List of strs of element symbols or atomic number of the two atom basis (default: [‘C’, ‘C’])

    New in version 0.3.10.

  • element2 (element1,) –

    Element symbol or atomic number of basis Atom 1 and 2

    Deprecated since version 0.3.10: Use basis instead

  • 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 100 Å AC x 10 Å ZZ graphene nano-ribbon.

>>> armchair_nanoribbon = GrapheneGenerator(armchair_edge_length=100,
...                                         zigzag_edge_length=10)

Save structure data in default xyz format:

>>> armchair_nanoribbon.save()

The rendered structure look like:

../_images/100.0Åx10.0Å_1layer_graphene.png

Now let’s generate a 10 Å ZZ x 100 Å AC graphene nano-ribbon.

>>> zigzag_nanoribbon = GrapheneGenerator(armchair_edge_length=10,
...                                       zigzag_edge_length=100)
>>> zigzag_nanoribbon.save()

The rendered structure looks like:

../_images/10.0Åx100.0Å_1layer_graphene.png

Now generate 100 Å AC x 25 Å ZZ, 5 layer, AB-stacked graphene.

>>> five_layer_graphene = GrapheneGenerator(armchair_edge_length=100,
...                                         zigzag_edge_length=25,
...                                         nlayers=5)
>>> five_layer_graphene.save()

The rendered structure looks like:

../_images/100.0Åx25.0Å_5layer_graphene-1.png

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

>>> BN_graphene = GrapheneGenerator(armchair_edge_length=10,
...                                 zigzag_edge_length=10,
...                                 basis=['B', 'N'])
>>> BN_graphene.save()

The rendered structure looks like:

../_images/10.0Åx10.0Å_1layer_graphene_B-N_basis-1.png

Attributes

N Number of graphene unit cells.
Natoms N atoms.
Natoms_per_layer Number of atoms per layer.
Natoms_per_unit_cell Number of atoms per unit cell.
area Total area of graphene supercell.
atoms Structure Atoms.
basis NanoStructureBase basis objects.
crystal_cell Structure CrystalCell.
element1 Basis element 1
element2 Basis element 2
fmtstr Format string.
lattice Structure Crystal3DLattice.
lattice_shift Lattice displacement vector.
mass Total mass of atoms.
n1 Number of unit cells along Crystal3DLattice.a1.
n2 Number of unit cells along Crystal3DLattice.a2.
r1 Vector GrapheneMixin.n1 \(\times\) Crystal3DLattice.a1.
r2 Vector GrapheneMixin.n2 \(\times\) Crystal3DLattice.a2.
scaling_matrix CrystalCell.scaling_matrix.
structure An alias to self.
unit_cell Structure UnitCell.
vdw_distance Van der Waals distance.
vdw_radius Van der Waals radius

Methods

clear() Clear list of StructureMixin.atoms.
finalize() Finalize structure data by assigning unique ids and types to structure atoms.
from_conventional_cell(**kwargs) classmethod
from_primitive_cell(**kwargs) classmethod
generate([finalize]) Generate the full structure coordinates.
generate_fname([armchair_edge_length, ...]) Generate a filename string.
make_supercell(scaling_matrix[, wrap_coords]) Make supercell.
rotate(**kwargs) Rotate crystal cell lattice, basis, and unit cell.
save([fname]) Save structure data.
todict() Return dict of constructor parameters.
transform_lattice(scaling_matrix[, ...]) Transform structure lattice.
translate(t[, fix_anchor_points]) Translate crystal cell lattice, basis, and unit cell.
write(*args, **kwargs) Write structure data to file.
write_data(**kwargs) Write LAMMPS data file.
write_dump(**kwargs) Write LAMMPS dump file.
write_pdb(**kwargs) Write pdb file.
write_xyz(**kwargs) Write xyz file.

Methods Summary

from_conventional_cell(**kwargs) classmethod
from_primitive_cell(**kwargs) classmethod

Methods Documentation

classmethod from_conventional_cell(**kwargs)[source] [edit on github][source]

classmethod to call ConventionalCellGrapheneGenerator.

classmethod from_primitive_cell(**kwargs)[source] [edit on github][source]

classmethod to call PrimitiveCellGrapheneGenerator.