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
\(\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. - armchair_edge_length (float, optional) –