public class AgAtom extends AbstractGrowthAtom
| Modifier and Type | Field and Description |
|---|---|
static byte |
CORNER |
static byte |
EDGE |
static byte |
EDGE_A |
static byte |
EDGE_B |
static byte |
ISLAND |
static byte |
KINK |
static byte |
KINK_A |
static byte |
KINK_B |
private AgAtom[] |
neighbours |
private int |
nImmobile
Number of immobile neighbours.
|
private int |
nMobile
Number of mobile neighbours.
|
private int |
pos
Position within unit cell.
|
static byte |
TERRACE |
private static AgTypesTable |
typesTable |
ARMCHAIR_EDGE, BULK, SICK, ZIGZAG_EDGE, ZIGZAG_WITH_EXTRA| Constructor and Description |
|---|
AgAtom(int id,
int pos)
Constructor for unit cell.
|
AgAtom(int id,
short iHexa,
short jHexa) |
| Modifier and Type | Method and Description |
|---|---|
void |
addNImmobile(int quantity)
Adds the given number to the number of immobile neighbours.
|
void |
addNMobile(int quantity)
Adds the given number to the number of mobile neighbours.
|
private AgAtom |
ahead2CornersAtom(int cornerPosition)
This should be called when a edge jumps to a corner (instead of
expected edge).
|
private AgAtom |
aheadCornerAtom(int cornerPosition)
When the current atom's destination is a corner, it jumps over it to the different type edge.
|
boolean |
areTwoTerracesTogether()
This method tells if two terraces are going to form a dimer.
|
private int |
calculateEdgeType(int code)
This atom is an edge (it has two neighbours).
|
private int |
calculateKinkType(int code)
This atom is a kink (it has three neighbours).
|
AbstractGrowthAtom |
chooseRandomHop()
It chooses one neighbour atom randomly.
|
void |
clear()
Resets current atom; TERRACE type, no neighbours, no occupied, no outside and no probability.
|
java.util.List |
getAllNeighbours() |
AgAtom |
getNeighbour(int pos) |
byte |
getNewType(int addToImmobile,
int addToMobile)
Calculates the new atom type when adding or removing a neighbour.
|
int |
getNImmobile() |
int |
getNMobile() |
int |
getOrientation()
Computes the orientation with respect to the surface, for edges and kinks.
|
int |
getOrientation(AgAtom atom)
See
getOrientation(). |
Point3D |
getPos()
Returns the position within the unit cell.
|
byte |
getRealType()
Returns the real type of the current atom.
|
byte |
getTypeWithoutNeighbour(int position)
Returns the type of the neighbour atom if current one would not exist.
|
boolean |
isEligible() |
boolean |
isPartOfImmobilSubstrate() |
void |
obtainRateFromNeighbours() |
double |
probJumpToNeighbour(int ignored,
int position) |
void |
setNeighbour(AbstractGrowthAtom a,
int pos) |
void |
setNImmobile(int nImmobile) |
void |
setNMobile(int nMobile) |
double |
updateOneBound(int pos) |
addOccupiedNeighbour, addProbability, addRate, addToSumRate, areTwoTerracesTogetherInPerimeter, compareTo, equalRate, equals, getAngle, getAttributes, getBondsProbability, getBondsProbability, getCartesianPosition, getCartesianSuperCell, getDepositionPosition, getDepositionTime, getEdgeRate, getHops, getId, getiHexa, getIslandNumber, getjHexa, getMultiAtomNumber, getMultiplier, getOccupiedNeighbours, getProbability, getProbability, getProbability, getRate, getSumRate, getType, hashCode, initialiseRates, isInnerPerimeter, isIsolated, isOnList, isOuterPerimeter, isOutside, isVisited, remove, removeMultiAtomNumber, removeMultiAtoms, resetPerimeter, resetProbability, setAngle, setAttributes, setBondsProbability, setBondsProbability, setCartesianPosition, setCartesianSuperCell, setDepositionPosition, setDepositionTime, setHops, setInnerPerimeter, setIslandNumber, setMultiAtomNumber, setMultiplier, setOnList, setOuterPerimeter, setOutside, setProcceses, setRate, setSumRate, setType, setVisited, swapAttributes, toString, updateRategetNumberOfNeighbours, getProbabilities, isOccupied, isOnList, isRemoved, setList, setNeighbour, setNumberOfNeighbours, setOccupied, setProbabilities, setRemoved, unRemovepublic static final byte TERRACE
public static final byte CORNER
public static final byte EDGE_A
public static final byte KINK_A
public static final byte ISLAND
public static final byte EDGE_B
public static final byte KINK_B
public static final byte EDGE
public static final byte KINK
private static AgTypesTable typesTable
private final AgAtom[] neighbours
private int nImmobile
private int nMobile
private final int pos
public AgAtom(int id,
short iHexa,
short jHexa)
public AgAtom(int id,
int pos)
id - atom identifier.pos - position within the unit cellpublic Point3D getPos()
getPos in interface IAtomgetPos in class AbstractAtompublic void setNeighbour(AbstractGrowthAtom a, int pos)
setNeighbour in class AbstractGrowthAtompublic AgAtom getNeighbour(int pos)
getNeighbour in class AbstractGrowthAtompublic java.util.List getAllNeighbours()
getAllNeighbours in class AbstractGrowthAtompublic boolean isEligible()
public boolean isPartOfImmobilSubstrate()
isPartOfImmobilSubstrate in class AbstractGrowthAtompublic int getNImmobile()
public int getNMobile()
public void setNImmobile(int nImmobile)
public void setNMobile(int nMobile)
public void addNMobile(int quantity)
quantity - public void addNImmobile(int quantity)
quantity - public byte getNewType(int addToImmobile,
int addToMobile)
addToImmobile - variation of the number of immobile neighbours. Must be -1, 0 or 1addToMobile - variation of the number of mobile neighbours. Must be -1, 0 or 1public void clear()
clear in interface IElementclear in class AbstractGrowthAtompublic int getOrientation()
A type: _
\ /
B type:
/_\
(central area would be island)
getOrientation in class AbstractGrowthAtompublic int getOrientation(AgAtom atom)
getOrientation().atom - atom to be excluded to compute the orientation. If null, none is excluded.public AbstractGrowthAtom chooseRandomHop()
chooseRandomHop in class AbstractGrowthAtompublic boolean areTwoTerracesTogether()
areTwoTerracesTogether in class AbstractGrowthAtompublic void obtainRateFromNeighbours()
obtainRateFromNeighbours in class AbstractGrowthAtompublic double updateOneBound(int pos)
updateOneBound in class AbstractGrowthAtompos - position of the neighbour.public byte getRealType()
getRealType in interface IAtomgetRealType in class AbstractAtompublic double probJumpToNeighbour(int ignored,
int position)
probJumpToNeighbour in class AbstractGrowthAtompublic byte getTypeWithoutNeighbour(int position)
getTypeWithoutNeighbour in class AbstractGrowthAtomposition - this position is the original one; has to be inverted.private int calculateEdgeType(int code)
0 1
5 [] 2
4 3
A proper image of the positions is documented here:
https://bitbucket.org/Nesferjo/ekmc-project/wiki/Relationship%20between%20Cartesian%20and%20hexagonal%20representationscode - binary code with the occupied neighbours.private int calculateKinkType(int code)
0 1
5 [] 2
4 3
A proper image of the positions is documented here:
https://bitbucket.org/Nesferjo/ekmc-project/wiki/Relationship%20between%20Cartesian%20and%20hexagonal%20representationscode - binary code with the occupied neighbours.private AgAtom aheadCornerAtom(int cornerPosition)
cornerPosition - position of the neighbour, from current atomprivate AgAtom ahead2CornersAtom(int cornerPosition)
cornerPosition - position of the neighbour, from current atom