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
str
s 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 2Deprecated 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):
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
: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:
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. - armchair_edge_length (float, optional) –