public class CatalysisKmc extends AbstractGrowthKmc
Modifier and Type | Field and Description |
---|---|
private ActivationEnergy |
activationEnergy |
private java.util.ArrayList<CatalysisData> |
adsorptionData |
private double |
adsorptionRateCOPerSite |
private double |
adsorptionRateOPerSite |
private boolean |
automaticCollections |
private long[] |
co2 |
private int |
co2max |
private long |
co2prv
Previous instant co2sum.
|
private long |
co2sum |
(package private) AtomsCollection |
col
Stores all collections of atoms; either in a tree or an array.
|
private int |
counterSitesWith4OccupiedNeighbours |
(package private) double[] |
desorptionRateCOPerSite |
private double[] |
desorptionRateOPerSite |
(package private) double[] |
diffusionRateCO |
(package private) double[] |
diffusionRateO |
private boolean |
doAdsorption |
(package private) boolean |
doDesorption |
(package private) boolean |
doDiffusion |
private boolean |
doO2Dissociation |
(package private) boolean |
doPrintAllIterations |
(package private) boolean |
doReaction |
private double |
goMultiplier |
private float |
maxCoverage
This attribute defines which is the maximum coverage for a multi-flake simulation.
|
private long |
maxSteps |
private int |
numGaps |
private boolean |
outputAe
Activation energy output during the execution
|
private boolean |
outputAeTotal |
private boolean |
outputData |
private int |
outputEvery |
(package private) double[] |
reactionRateCoO |
private Restart |
restart |
private long |
simulatedSteps |
private IAtomsCollection[] |
sites |
private java.lang.String |
start |
private boolean |
stationary |
private long |
stationaryStep |
private long[] |
steps |
private double[] |
totalRate |
Constructor and Description |
---|
CatalysisKmc(Parser parser,
java.lang.String restartFolder) |
Modifier and Type | Method and Description |
---|---|
private void |
changeCollection(byte process,
boolean toTree)
Changes current collection from array/tree to tree/array.
|
private void |
checkSizes()
If a process is stored in a array and it is too big, change to be a tree.
|
private boolean |
depositAtom(CatalysisAtom atom) |
private CatalysisAtom |
depositNewAtom() |
void |
depositSeed() |
private void |
desorpAtom() |
private void |
diffuseAtom()
Moves an atom.
|
float |
getCoverage()
Returns the coverage of the simulation.
|
float |
getCoverage(byte type) |
float[] |
getCoverages() |
private double |
getDesorptionProbability(CatalysisAtom atom,
CatalysisAtom neighbour)
Computes desorption probability.
|
(package private) double |
getDesorptionRate(CatalysisAtom atom)
Computes desorption probability.
|
(package private) double |
getDiffusionRate(CatalysisAtom atom,
CatalysisAtom neighbour) |
float |
getGapCoverage() |
float[][] |
getHexagonalPeriodicSurface(int binX,
int binY) |
double[][] |
getOutputAdsorptionData() |
(package private) double |
getReactionRate(CatalysisAtom atom,
CatalysisAtom neighbour)
One atom is O and the other CO, for sure.
|
float[][] |
getSampledSurface(int binX,
int binY)
Returns a sampled topological measurement of the KMC surface
|
private void |
initAdsorptionProbability()
Iterates over all lattice sites and initialises adsorption probabilities.
|
private void |
initCovered()
Start with fully covered surface.
|
protected boolean |
performSimulationStep()
Performs a simulation step.
|
void |
printIteration() |
void |
printRates()
Method to print rates.
|
private void |
reactAtom() |
private void |
recomputeAdsorptionProbability(CatalysisAtom atom) |
private void |
recomputeCollection(byte process,
CatalysisAtom atom,
double oldRate) |
private void |
recomputeDesorptionProbability(CatalysisAtom atom) |
private void |
recomputeDiffusionProbability(CatalysisAtom atom) |
private void |
recomputeReactionProbability(CatalysisAtom atom) |
void |
reset()
Resets the lattice and the list of atoms.
|
void |
setRates(CatalysisRates rates) |
int |
simulate()
Does the actual simulation.
|
private void |
updateRateFromList(byte process) |
private void |
updateRates(CatalysisAtom atom)
Updates total adsorption, desorption, reaction and diffusion probabilities.
|
getAccelerator, getCurrentRadius, getLattice, getModifiedBuffer, getPerimeter, initialiseRates, isJustCentralFlake, setAccelerator, setArea, setDepositionRate, setLattice, setPerimeter, setTerraceToTerraceProbability
getIterations, getList, getTime, setIterations, setLattice, simulate, simulate
private final boolean outputData
private long simulatedSteps
private long[] steps
private long[] co2
private long co2sum
private long co2prv
private final int co2max
private final long maxSteps
private int outputEvery
private java.util.ArrayList<CatalysisData> adsorptionData
private double adsorptionRateCOPerSite
private double adsorptionRateOPerSite
double[] desorptionRateCOPerSite
private double[] desorptionRateOPerSite
double[] reactionRateCoO
double[] diffusionRateCO
double[] diffusionRateO
private double[] totalRate
private final IAtomsCollection[] sites
private final float maxCoverage
private final boolean doAdsorption
final boolean doDesorption
final boolean doReaction
final boolean doDiffusion
final boolean doPrintAllIterations
private final boolean doO2Dissociation
private final java.lang.String start
private final Restart restart
private final ActivationEnergy activationEnergy
private final boolean outputAe
private final boolean outputAeTotal
private int numGaps
private int counterSitesWith4OccupiedNeighbours
private boolean stationary
private long stationaryStep
AtomsCollection col
private final boolean automaticCollections
private final double goMultiplier
public CatalysisKmc(Parser parser, java.lang.String restartFolder)
public float[][] getHexagonalPeriodicSurface(int binX, int binY)
getHexagonalPeriodicSurface
in interface IKmc
getHexagonalPeriodicSurface
in class AbstractGrowthKmc
public float[][] getSampledSurface(int binX, int binY)
IKmc
getSampledSurface
in interface IKmc
getSampledSurface
in class AbstractGrowthKmc
public void setRates(CatalysisRates rates)
public double[][] getOutputAdsorptionData()
public float getCoverage(byte type)
public float getCoverage()
AbstractGrowthKmc
getCoverage
in class AbstractGrowthKmc
public float[] getCoverages()
public float getGapCoverage()
protected boolean performSimulationStep()
performSimulationStep
in class AbstractGrowthKmc
public int simulate()
AbstractKmc
simulate
in interface IKmc
simulate
in class AbstractGrowthKmc
public void depositSeed()
depositSeed
in interface IKmc
depositSeed
in class AbstractGrowthKmc
public void reset()
AbstractKmc
reset
in interface IKmc
reset
in class AbstractGrowthKmc
private boolean depositAtom(CatalysisAtom atom)
private CatalysisAtom depositNewAtom()
private void desorpAtom()
private void reactAtom()
private void diffuseAtom()
private void initAdsorptionProbability()
private void initCovered()
randomTypes
- if true, CO and O types randomly chosen. If false, only oxygen.private void updateRates(CatalysisAtom atom)
atom
- private void recomputeAdsorptionProbability(CatalysisAtom atom)
private void recomputeDesorptionProbability(CatalysisAtom atom)
private void recomputeReactionProbability(CatalysisAtom atom)
private void recomputeDiffusionProbability(CatalysisAtom atom)
private void recomputeCollection(byte process, CatalysisAtom atom, double oldRate)
double getDesorptionRate(CatalysisAtom atom)
atom
- CO molecule.private double getDesorptionProbability(CatalysisAtom atom, CatalysisAtom neighbour)
atom
- O atom.neighbour
- O atom.double getReactionRate(CatalysisAtom atom, CatalysisAtom neighbour)
atom
- neighbour
- double getDiffusionRate(CatalysisAtom atom, CatalysisAtom neighbour)
private void updateRateFromList(byte process)
private void checkSizes()
private void changeCollection(byte process, boolean toTree)
process
- ADSORPTION, DESORPTION, REACTION, DIFFUSION.toTree
- if true from array to tree, otherwise from tree to array.public void printRates()
public void printIteration()