GrapheneGenerator¶
-
class
sknano.generators.GrapheneGenerator(*args, autogen=True, finalize=True, **kwargs)[source] [edit on github][source]¶ Bases:
sknano.generators.RectangularGrapheneGeneratorN-layer graphene generator class.Changed in version 0.3.11:
GrapheneGeneratoris now a sub-class of theConventionalCellGrapheneGeneratorclass to maintain backwards compatibility and also includes 2 new classmethods:from_primitive_cellandfrom_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_lengthinstead - width (float, optional) –
Width of graphene sheet in Angstroms
Deprecated since version 0.3.10: Use
zigzag_edge_lengthinstead - edge ({'AC', 'armchair', 'ZZ', 'zigzag'}, optional) –
ArmChair or ZigZag edge along the
lengthof 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
Atom1 and 2Deprecated since version 0.3.10: Use
basisinstead - 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
GrapheneGeneratorclass 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 theUnrolledSWNTGeneratorclass.See also
Examples
Start an interactive python or ipython session, then import the
GrapheneGeneratorclass.>>> 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
xyzformat:>>> armchair_nanoribbon.save()
The rendered structure look like:
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:
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:
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:
Attributes
NNumber of graphene unit cells. NatomsN atoms. Natoms_per_layerNumber of atoms per layer. Natoms_per_unit_cellNumber of atoms per unit cell. areaTotal area of graphene supercell. atomsStructure Atoms.basisNanoStructureBasebasis objects.crystal_cellStructure CrystalCell.element1Basis element 1 element2Basis element 2 fmtstrFormat string. latticeStructure Crystal3DLattice.lattice_shiftLattice displacement vector. massTotal mass of atoms. n1Number of unit cells along Crystal3DLattice.a1.n2Number of unit cells along Crystal3DLattice.a2.r1Vector GrapheneMixin.n1\(\times\)Crystal3DLattice.a1.r2Vector GrapheneMixin.n2\(\times\)Crystal3DLattice.a2.scaling_matrixCrystalCell.scaling_matrix.structureAn alias to self.unit_cellStructure UnitCell.vdw_distanceVan der Waals distance. vdw_radiusVan 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 dictof 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
from_primitive_cell(**kwargs)[source] [edit on github][source]¶
- armchair_edge_length (float, optional) –