BilayerGrapheneGenerator

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

Bases: sknano.generators.GrapheneGenerator, sknano.core.structures.BilayerGraphene

Bilayer graphene structure generator class.

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.
  • 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 100 Å wide by 10 Å long AB stacked bilayer-graphene:

>>> bilayer_graphene = BilayerGrapheneGenerator(armchair_edge_length=100,
...                                             zigzag_edge_length=10)

Save structure data in xyz format:

>>> bilayer_graphene.save()

Here’s the rendered structure (after rotating 90 degrees so that it better fits the page):

../_images/100.0Åx10.0Å_2layer_graphene-1.png

The next command generates bilayer-graphene with its second layer rotated 45 degrees.

>>> rotated_bilayer =     ...     BilayerGrapheneGenerator(armchair_edge_length=50,
...                              zigzag_edge_length=50,
...                              layer_rotation_angles=[0, 45],
...                              degrees=True)
>>> rotated_bilayer.save(fname='rotated_bilayer.xyz')

A rendering of rotated_bilayer:

../_images/rotated_bilayer-1.png

The next example is identical to the one above, except the atomic basis is Boron and Nitrogen.

>>> rotated_BN_bilayer =     ...     BilayerGrapheneGenerator(armchair_edge_length=50,
...                              zigzag_edge_length=50,
...                              basis=['B', 'N'],
...                              layer_rotation_angles=[0, 45],
...                              degrees=True)
>>> rotated_BN_bilayer.save(fname='rotated_bilayer_B-N_basis.xyz')

The rendered structure looks like:

../_images/rotated_bilayer_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 × Crystal3DLattice.a1.
r2 Vector GrapheneMixin.n2 × 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.