My first simulation

From MKMCXX
Revision as of 18:18, 10 July 2017 by Ifilot (talk | contribs) (Created page with "== Overview == In this tutorial, we are going to construct a simple microkinetic simulation for the surface catalyzed conversion of A to B. == Input file == We need to constr...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Overview

In this tutorial, we are going to construct a simple microkinetic simulation for the surface catalyzed conversion of A to B.

Input file

We need to construct an input file with A, A*, B*, B, and * as the main components. A can adsorb on the catalytic surface, thereafter A* is converted to B* and finally released as B to the gas phase. The gas phase concentration of A is set to unity, whereas the gas phase of B is set to 0 to model an initial rate experiment. The pressure is set to 1 bar and we perform simulations between 400K and 1200K with 100K intervals. Detailed information on how an input file is constructed can be found here.

The input file is given below:

# Example input for simple simulation
#
# This is an example of a comment. Comments should have a # as the first character on a line.
#
##############################################
# the line below tells the program to start indexing all compounds
&compounds
# the next lines will define your compounds
# format: NAME; isSite? ; starting concentration
# So the first line reads: 	Compound 1 is called A
#							Compound 1 is not a surface site (so it is a non changing gas species)
#							Compound 1 has a starting concentration of 1.0
#							(note that the gas species concentrations are normalized
#							according to the total pressure defined in the settings)
A;  		0;  1.0
B;  		0;  0.0
# Adsorbent names can be anything, as long as you put a 1 as isSite?.
# To avoid confusion it is generally best to use a symbol like * to represent a free surface site
# and use NAME* for NAME adsorbed on the surface.
A*          1;  1.0
B*          1;  1.0
*;  		1;  1.0
#
# Note: If you have set TDRC = 1, then you also need to specify which compounds are going to be evaluated.
#		You do this by adding an extra parameter.
#		CO*; 		1; 	0		<-- No TDRC performed
#		H*; 		1; 	0;	1   <-- TDRC performed
#		C*; 		1; 	0;	0	<-- No TDRC performed
#
#		(although you can do it, it does not make much sense to perform TDRC on gasous species or free sites)
#################################
# the line below tells the program to start indexing all reactions
&reactions
#
# adsorptions / desorptions - Note that adsorptions and desorption can also be done with Arhenius (AR) equations
# it is however recommended to use Hertz-Knudsen (HK)
#										 m^2		amu		K	sigma	sticking	J/mol
HK; {A}	+ 	 {*} 	=>   {A*};		1e-19;		28;	  2.73;		1;	1;			120e3
HK; {B}	+ 	 {*} 	=>   {B*};		1e-19;	 	 2;		88;		2;	1;	 		 80e3
# Surface reactions
#						vf		 vb		Eaf		Eab
AR; {A*} 	=> {B*};	6e11;	4e12;	65e3;	90e3
#################################
# the lines below tell the program which settings we want to use
&settings
TYPE = SEQUENCERUN
PRESSURE = 10
#
#The lines below can be used for some extra functionality:
#
#REAGENTS = {A}
#REAGENTS need to be specified for ORDERS
#
#KEYCOMPONENTS = {A}
#KEYCOMPONENTS need to be specified for ORDERS, EACT, DRC and TDRC
#
#USETIMESTAMP = 0
#The results are placed in a folder called 'run' instead of a time-stamped folder. (Default = 1)
#
#ORDERS = 1
#Calculates the reaction orders in the reagents (Default = 0)
#
#EACT = 1
#Calculates the apparent activation energy (Default = 0)
#
#DEBUG = 1
#Enables debug messages. Also produces some data on relative derivatives (dydt/y) to check for convergence (Default = 0)
#
#################################
# the lines below tell the program which runs we want to perform
&runs
#
# Temp;	Time;	AbsTol;	RelTol
400;	1e8;	1e-12;	1e-12
500;	1e4;	1e-12;	1e-12
600;	1e1;	1e-12;	1e-12
700;	1e1;	1e-12;	1e-12
800;	1e1;	1e-12;	1e-12
900;	1e1;	1e-12;	1e-12
1000;	1e1;	1e-12;	1e-12
1100;	1e1;	1e-12;	1e-12
1200;	1e1;	1e-12;	1e-12
1300;	1e1;	1e-12;	1e-12
1400;	1e1;	1e-12;	1e-12
#
# Note: You can also omit the tolerances. Then the default tolerances will be used. For example:
#		400;	1e1
#			 ^- will execute a run at 400K for 1e10 seconds at AbsTol = 1e-12 and RelTol = 1e-8