Create A Crystal Structure#
The Crystal
class is the fundamental building block for representing crystal structures in jrystal. It contains essential attributes and derived properties that fully describe a crystal system.
Core Attributes#
charges
: Atomic numbers of each atompositions
: Cartesian coordinates of atomscell_vectors
: Unit cell vectorsspin
: Number of unpaired electronssymbol
: Chemical symbols of atoms
Derived Properties#
scaled_positions
: Fractional coordinates of atomsvol
: Unit cell volumenum_atom
: Total number of atomsnum_electron
: Total number of electronsreciprocal_vectors
: Reciprocal lattice vectorsA
: Alias forcell_vectors
B
: Alias forreciprocal_vectors
Note
All quantities in jrystal use atomic units:
Length: 1 Bohr = 0.529177 Å
Energy: 1 Hartree = 27.211 eV
Creating Crystal Structures#
There are three ways to create a crystal structure:
1. Direct Construction#
Create a crystal by directly specifying its attributes:
from jrystal import Crystal
crystal = Crystal(
charges=[6, 6], # Two carbon atoms
positions=[[0, 0, 0], [1.5, 1.5, 1.5]], # Positions in Bohr
cell_vectors=[[3, 0, 0], [0, 3, 0], [0, 0, 3]], # Cubic cell in Bohr
spin=0 # No unpaired electrons
)
print(crystal)
2. From Structure Files#
Load a structure from common chemistry file formats:
crystal = Crystal.create_from_file("structure.xyz")
Note
File loading uses ASE
’s IO capabilities. See supported formats in the
ASE documentation.
3. From Chemical Symbols#
Create a crystal using chemical symbols and coordinates:
crystal = Crystal.create_from_symbols(
symbols="C C", # Two carbon atoms
positions=[[0, 0, 0], [1.5, 1.5, 1.5]], # In Bohr
cell_vectors=[[3, 0, 0], [0, 3, 0], [0, 0, 3]] # In Bohr
)
Note
jrysta.Crystal.create_from_symbols
uses ASE
’s Atoms
class internally and assumes periodic boundary conditions in all directions. Specifying periodic boundary conditions in a single direction is not supported.