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

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.


armchair_edge_length : float, optional

Length of armchair edge in nanometers

New in version 0.3.10.

zigzag_edge_length : float, optional

Length of zigzag edge in nanometers

New in version 0.3.10.

length : float, optional

Length of armchair edge in nanometers

Deprecated since version 0.3.10: Use armchair_edge_length instead

width : float, optional

Width of graphene sheet in nanometers

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.

element1, element2 : {str, int}, optional

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


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.


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

>>> from sknano.generators import GrapheneGenerator

Now generate a 20 nm AC x 1 nm ZZ graphene nano-ribbon.

>>> ACG = GrapheneGenerator(armchair_edge_length=20, zigzag_edge_length=1)

Save structure data in xyz format:


The rendered structure look like:


Now let’s generate a 20 nm ZZ x 1 nm AC graphene nano-ribbon.

>>> ZZG = GrapheneGenerator(armchair_edge_length=20, zigzag_edge_length=1)

The rendered structure looks like:


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

>>> ACG_5layers = GrapheneGenerator(armchair_edge_length=25,
...                                 zigzag_edge_length=5,
...                                 nlayers=5)

The rendered structure looks like:


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

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

The rendered structure looks like:


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

>>> UEs_graphene = GrapheneGenerator(armchair_edge_length=5,
...                                  zigzag_edge_length=5,
...                                  basis=['U', 'Es'])

The rendered structure looks like:



N Number of graphene unit cells.
Natoms Total number of 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 StructureAtoms.
basis NanoStructureBase basis atoms.
crystal_cell Structure CrystalCell.
element1 Basis element 1
element2 Basis element 2
fmtstr Format string.
lattice Structure Crystal3DLattice.
scaling_matrix CrystalCell.scaling_matrix.
structure Pointer to self.
structure_data Alias for BaseStructureMixin.structure.
unit_cell Structure UnitCell.
vdw_distance van der Waals distance.
vdw_radius van der Waals radius


clear() Clear list of BaseStructureMixin.atoms.
generate() Generate the full structure coordinates.
generate_fname([armchair_edge_length, ...])
make_supercell(scaling_matrix[, wrap_coords]) Make supercell.
read_data(*args, **kwargs)
read_dump(*args, **kwargs)
read_xyz(*args, **kwargs)
rotate(**kwargs) Rotate crystal cell lattice, basis, and unit cell.
save([fname]) Save structure data.
transform_lattice(scaling_matrix[, ...])
translate(t[, fix_anchor_points]) Translate crystal cell basis.