Buildcell Parameters Reference#
Complete reference for buildcell generation parameters accessible through airsspy.
Overview#
Buildcell parameters control how random structures are generated. In airsspy, these are set through:
Global parameters:
seed.gentags(applies to entire structure)Per-atom parameters:
seed[i](applies to specific atoms)
Per-Atom Parameters#
Access via seed[index].parameter_name.
Basic Properties#
Parameter |
Type |
Description |
|---|---|---|
|
str |
Custom tag name for this atom |
|
int or tuple |
Number of this atom type |
|
float |
Magnetic spin moment |
|
float |
Occupation factor |
|
float |
Atomic radius |
|
float |
Atomic volume |
|
int |
Multiplicity |
Example:
atom = seed[0]
atom.tagname = 'Fe_center'
atom.num = (2, 4) # 2-4 atoms of this type
atom.spin = 2.5 # Magnetic moment
Position Control#
Parameter |
Type |
Description |
|---|---|---|
|
float or tuple |
Position amplitude |
|
float or tuple |
Minimum amplitude |
|
float or tuple |
Z-direction amplitude |
|
float or tuple |
X-direction amplitude |
|
float or tuple |
Y-direction amplitude |
|
float or tuple |
Angular amplitude |
Example:
atom = seed[0]
atom.posamp = 2.0 # General position variation
atom.xamp = 1.0 # X: ±1 Å
atom.yamp = 1.0 # Y: ±1 Å
atom.zamp = 0.5 # Z: ±0.5 Å
Constraints#
Parameter |
Type |
Description |
|---|---|---|
|
bool |
Fix position completely |
|
bool |
Fix during generation only |
|
bool |
Randomly permute species |
|
bool |
Add after supercell creation |
|
bool |
Place at hole position |
Example:
atom = seed[0]
atom.fix = True # Fix this atom
atom.nomove = False # Allow movement
atom.perm = False # Don't permute
Coordination#
Parameter |
Type |
Description |
|---|---|---|
|
int or tuple |
Target coordination number |
Example:
atom = seed[0]
atom.coord = (3, 4) # 3-4 coordinated
Usage Examples#
Basic Structure Search#
from airsspy import SeedAtoms
seed = SeedAtoms('Si4', cell=[4, 4, 4], pbc=True)
seed[0].num = 4
# Global constraints
seed.gentags.minsep = 2.0
seed.gentags.varvol = 20
seed.gentags.symmops = (2, 4)
Multi-Element System#
seed = SeedAtoms('SiO2', cell=[5, 5, 5], pbc=True)
# Per-atom control
si = seed[0]
si.num = 2
si.coord = (4, 6)
o = seed[1]
o.num = 4
o.coord = (2, 3)
# Species-specific separations
seed.gentags.minsep = (1.5, {'Si-O': 1.6, 'O-O': 2.0})
High-Symmetry Search#
seed = SeedAtoms('C8', cell=[3, 3, 3], pbc=True)
seed[0].num = 8
seed.gentags.system = 'cubic'
seed.gentags.symmops = (8, 12)
seed.gentags.compact = True
Surface Slab#
seed = SeedAtoms('Pt8', cell=[5, 5, 15], pbc=True)
seed[0].num = 8
seed.gentags.slab = True
seed.gentags.vacuum = 10.0
seed.gentags.minsep = 2.5
Parameter Ranges#
Many parameters accept ranges as tuples:
# Single value
seed.gentags.symmops = 4
# Range (randomly selected)
seed.gentags.symmops = (2, 4)
# Per-atom
atom.num = (4, 8)
atom.coord = (3, 4)
Tips#
Start simple: Use basic constraints first (minsep, varvol)
Test constraints: Generate structures to verify they work
Adjust iteratively: Tighten constraints based on results
Use chemistry: Set realistic separations based on expected bonds
Consider symmetry: More symmetry = faster DFT but less diversity
See Also#
Creating Seeds - Practical examples
Seed Concept - Understanding seeds
Quickstart Tutorial - Complete workflow