Difference between revisions of "Keywords and settings"
(→Settings block) 
(→Graphs block) 

Line 601:  Line 601:  
=== Graphs block ===  === Graphs block ===  
−  +  <img src="https://badgen.imctue.nl/badge/mkmcxx/%3E2.15.3/blue" />  
Inside the graphs block, you can set the colors used in the nonGNUPLOT graphs for specific components. On each line, you place the compound between curly brackets followed by the RGB color code. For example:  Inside the graphs block, you can set the colors used in the nonGNUPLOT graphs for specific components. On each line, you place the compound between curly brackets followed by the RGB color code. For example: 
Revision as of 12:02, 15 April 2020
Contents
Settings block
The list below is an overview of all the keywords that can be placed inside the &settings
block. All keywords have a default value, so if these are not specified within the block, then the default value is used.
Keyword  Explanation  Default value  Possible values 

TYPE  The type of MKMCXX run.

string  SEQUENCERUN, SSITKA, TPD, REACTOR 
PRESSURE  The total pressure in the gas phase.

1 (Take starting pressures)  float > 0 or negative value 
CSTR_RES  Residence time of the gas phase in seconds. Defined as the reactor volume divided by the volumetric flow rate into the reactor. This parameter effectively sets the input flow rate. The actual residence time may differ if the overall reaction includes expansion or contraction of the gas volume.

1 (Fixed gas phase)  float > 0 or negative value 
CSTR_LOAD  Sets the amount of sites (in mole) in the open reactor volume (in m^3).

1e4  float > 0 
USETIMESTAMP  Whether to place the output in a new folder which name is based on the current time stamp.

1  0 or 1 
ORDERS  Whether to calculate the reaction orders.

0  0 or 1 
EACT  Whether to calculate the apparent activation energy.

0  0 or 1 
DRC  Whether to perform a degree of rate control analysis.

0  02 (int) 
TDRC  Whether to perform a thermodynamic degree of rate control analysis.

0  0 or 1 
REAGENTS  List of reagents for which the reaction orders will be calculated.  NULL  {<Cmp1>},{<Cmp2>},... 
KEYCOMPONENTS  List of compounds on which the reaction orders, apparent activation energy, DRC, DSC and/or TDRC analysis should be based.  NULL  x{<Cmp1>},x{<Cmp2>},... 
PDRC  Whether to include DRC results for every selectivitycomponent.

1  0 or 1 
DSC  Whether to include DSC results for every selectivitycomponent.

1  0 or 1 
DCGC  Whether to include DCGC results for every ASF block.

1  0 or 1 
NPAR  Maximum number of CPU threads to use (if available).

0  int >= 0 
TRANSIENT  Define the level of detail at which transient results should be stored.

1  int >= 0 
GRAPHDATA  Include data files that contain all data points that are plotted in the graphs.

0  0 or 1 
GRAPHFILTER  Apply a filter to graph data that omits small values.

1  0 or 1 
Keyword  Explanation  Default value  Possible values 

DEBUG  Output additional debug statements.

0  04 (int) 
CSTR_REPLACE  Replaces starting gasphase compounds by some other component. E.g. "{He};{CO},{H2}" replaces CO and H2 with He. This does not change inflow concentrations.  NULL  {<ReplaceCmp>};{<Cmp1>},{<Cmp2>} 
RERUN_OUTPUT  Define the folder used for rerunning sensitivity analysis and graphs.  run  string 
RERUN_GRAPH  Whether to rerun graphs from the RERUN_OUTPUT folder.

0  0 or 1 
CACHE_WORKPOINT  Reuse the sequencerun results as a workpoint in additional routines like DRC.

1  0 or 1 
NUMDIFF  Resolution of perturbations at each side of the workpoint.  2  int >= 1 
ORDERSDIFF  Step size used in the linear fitting of reaction orders (fractional pressure).

0.01  float > 0 
EACTDIFF  Step size used in the linear fitting of the apparent activation energy (fractional temperature).

0.0001  float > 0 
DRCDIFF  Step size used in the linear fitting for the degree of rate control analysis (fractional k).

0.01  float > 0 
TDRCDIFF  Step size used in the linear fitting for the thermodynamic DRC analysis (absolute dG in J/mol).

1  float > 0 
BOOSTER  Multiplier used to speedup reaction rates; sometimes leads to faster convergence towards the steadystate solution (time is scaled inversely to compensate).  1.0 (regular speed)  float > 0 
SOLVERTYPE  Type of integration method to use for solving the system of ordinary differential equations.

1 (BDF)  1 or 2 (int) 
SOLSTOPTIME  Specificies when the solver should force reevaluation of dydt/jac.

2  02 (int) 
SOLMAXSTEP  Maximum number of internal steps the solver is allowed to take.  5000  int > 0 
SOLTESTFAIL  Maximum number of test failures before the solver gives up.  70  int > 0 
SOLCONVFAIL  Maximum number of convergence failures before the solver gives up.  100  int > 0 
PRECISION  Amount of significant digits to use in output.  10  int > 0 
SEQAL  Use the output concentrations from completed runs as input for new runs.

0  0 or 1 
DRCBIN  Store binary data of sequencerun to allow replotting data.

0  0 or 1 
MAKEPLOTS  Whether to create .png and .pdf files of plots.

1  0 or 1 
HEATMAP  Whether to create heatmap graphs for DRC/DSC results.

1  0 or 1 
COLORBLIND  Change the order of the graphcoloring for (slightly) improved readability.

0  0 or 1 
PRINTLIST  Generate some extra debug lines with the initial and final concentrations.

1  0 or 1 
WERROR  Interpret input warnings as errors.

0  0 or 1 
RELDERIV  Plot relative derivatives.

0  0 or 1 
SELECTIVITY_CAP  Force upper limit for selectivity data to prevent unreadable selectivity graphs.  NULL  float > 0 
MINIMUM_BAR  Set a minimum reaction barrier height based on max(Ef,Eb).  NULL  float > 0 
MAXIMUM_BAR  Set a maximum reaction barrier height based on max(Ef,Eb).  NULL  float > 0 
SIMPLE_LAT_FAC  Scaling factor for lateral interactions.  1.0  float 
SIMPLE_LAT_CLAMP  Upper bound for the change in barrier height (J/mol) from lateral interactions.  250e3  float 
SIMPLE_LAT_DIFF  Convert supplied integral simple_lat to differential_lat.

0  0 or 1 
Keyword  Explanation  Default value  Possible values 

POTAXIS  Sets the xaxis for the SEQUENCERUN range plot.

0  0 or 1 
pH  Sets the pH that is used to determine the RHE potential.  0  float 
DIFF  Whether to generate plots of diffusion layer concentrations.

0  0 or 1 
NdX  Number of discretized layers in diffusion layer

100  float > 0 
dX  Thickness of one discretized diffusion layer

1e8  float > 0 
DIFF_LOAD  Conversion factor for diffusionsurface interface (mol sites / m2)  1e5  float > 0 
DIFF_START_ZERO  Whether to initialize diffusion layers to zero or use bulk.

0 : initialize to zero  0 or 1 
DIFF_POT  Extra potential over diffusion layer that influences diffusion of charged particles

0  float 
DIFF_PHASE  Set the phase of the diffusion layer (influences boundary conditions).

LIQUID  LIQUID, GAS 
Keyword  Explanation  Default value  Possible values 

NETWORK  Allow creation of network graphs.

1  0 or 1 
NETWORK_RATES  Also print forward and backward rates in the network graphs.

0  0 or 1 
NETWORK_STRICT  Merge multiple edges between nodes into one edge.

1  0 or 1 
NETWORK_FLUX  Generate dedicated flux output.

0  0 or 1 
NETWORK_NODAL_PROD  Show connected products in nodalrecall chain.

0  02 (int) 
GIBBS  Calculate gibbs free energy barriers at the start and at the end coverages

0  0 or 1 
Keyword  Explanation  Default value  Possible values 

ABSTOL  Set the absolute tolerance for a TPD run.  1e12  float > 0 
RELTOL  Set the relative tolerance for a TPD run.  1e8  float > 0 
TIME  Set the simulation time for a TPD run.  NULL  float > 0 
TSTART  Starting temperature for a TPD run.  NULL  float > 0 
TEND  Temperature reached at the end of the TPD run.  NULL  float > 0 
TPD_EQ  Try to equilibrate the system before starting the TPD run.

0  0 or 1 
Keyword  Explanation  Default value  Possible values 

F_MOLE  Inflow of a PFR type reactor.  NULL  float > 0 
A_REAC  Crosssectional area of a PFR type reactor in m^2.  NULL  float > 0 
L_REAC  Length of a PFR type reactor in m.  NULL  float > 0 
RHO_SITES  Site density in mole sites / m^2  NULL  float > 0 
BET  Surface area in m^2 / g  NULL  float > 0 
CATALYST_LOADING  Ratio of active catalyst material on support kg/kg  NULL  float > 0 
CATALYST_DENSITY  Density of the catalyst bed in kg / m^3  NULL  float > 0 
VOID_FRACTION  Void fraction of the reactor  NULL  float > 0 
REACNRSTEPS  Number of discrete slabs in the PFR.  30  int > 0 
Keyword  Explanation 

GNUPLOT  Whether to output GNUPlotstyle graphs. 
CSTR  Whether to use the CSTR module or not.

JACOBIAN  Whether to use the custom MKMCXX JACOBIAN.

DAMPENING  Whether to enable dampening to old implementation of lateral interactions.

DAMPENING  Lower coverage bound for old implementation of lateral interactions.

DEFAULT_LAT  Allows old lateral repulsion parameters A and B to be set for all compounds.

MAXIMUM_RATE  Set a maximum reaction rate. (in s1  e.g. 1e6)

Graphs block
Inside the graphs block, you can set the colors used in the nonGNUPLOT graphs for specific components. On each line, you place the compound between curly brackets followed by the RGB color code. For example:
&graphs # fix colors for particular compounds {A*} E74C3D {B*} F29C1F {C*} 287FB9 {*} 15A086
Selectivity block
Inside the selectivity block, you can specify mole balances on which basis you calculate selectivity and degree of selectivity control graphs. You need to specify a name, a key component and one or more products (typically more than one, else the concept of selectivity is rather trivial). The name will be used in the generation of the corresponding graph file, so please use a safe name (i.e. no spaces and no special characters!)
&selectivity species_balance; {A}; {E},{F}
In the above example, the name of the mole balance block is "species_balance", the key component is A and the products of interest are E and F. A detailed example on how to use this block is explained here.
Stoichiometry
Often, the stoichiometry of the key component and the products is not simply a 1:1 ratio. To account for this difference, you need to put the stoichiometric coefficient in front the compound. The stoichiometric coefficient is simply the number of key components which need to be consumed to produce one product. To illustrate this, below an example for CO hydrogenation towards C1C3 hydrocarbons is provided.
&selectivity carbon_balance; {CO}; {CH4}, 2{CH2CH2}, 2{CH3CH3}, 3{CH2CHCH3}, 3{CH3CH2CH3}
For complex systems like the FischerTropsch synthesis reaction the number of products can be quite large. To help prevent very long lines in the input file we allow the selectivity definition to be separated over multiple lines. These lines are additive, meaning that the example above can also be written as follows:
&selectivity carbon_balance; {CO}; {CH4} carbon_balance; {CO}; 2{CH2CH2}, 2{CH3CH3} carbon_balance; {CO}; 3{CH2CHCH3}, 3{CH3CH2CH3}
Or:
&selectivity carbon_balance; {CO}; {CH4} carbon_balance; {CO}; 2{CH2CH2} carbon_balance; {CO}; 2{CH3CH3} carbon_balance; {CO}; 3{CH2CHCH3} carbon_balance; {CO}; 3{CH3CH2CH3}
Multiple selectivity balances may be defined in the same selectivity group, e.g.:
&selectivity carbon_balance; {CO}; {CH4} carbon_balance; {CO}; 2{CH2CH2}, 2{CH3CH3} carbon_balance; {CO}; 3{CH2CHCH3}, 3{CH3CH2CH3} ethylene_vs_ethane; {CO}; 2{CH2CH2}, 2{CH3CH3} propylene_vs_propene; {CO}; 3{CH2CHCH3}, 3{CH3CH2CH3}
ASF block
The ASF block allows the MKMCXX to generate Anderson–Schulz–Flory distribution plots of the (Fischer–Tropsch) reaction products. Defining an ASF group is similar to defining a selectivity group. Every line starts with the name of the ASF group, and ends with the products. For example, here is the definition for a ASF plot of carbon numbers 1 to 10.
&asf asf_plot; 5; {CH4} asf_plot; 5; 2{CH2CH2},2{CH3CH3} asf_plot; 5; 3{CH2CHC1},3{CH3CH2C1} asf_plot; 5; 4{CH2CHC2},4{CH3CH2C2} asf_plot; 5; 5{CH2CHC3},5{CH3CH2C3} asf_plot; 5; 6{CH2CHC4},6{CH3CH2C4} asf_plot; 5; 7{CH2CHC5},7{CH3CH2C5} asf_plot; 5; 8{CH2CHC6},8{CH3CH2C6} asf_plot; 5; 9{CH2CHC7},9{CH3CH2C7} asf_plot; 5; 10{CH2CHC8},10{CH3CH2C8}
Instead of the key component there is now the number 5. This number is used as a starting point for determining the slope of the ASF distribution. In this example the corresponding chaingrowth probability is calculated for the carbonnumber range of 510. The 'stoichiometry'coefficients, e.g. 7{CH2CHC5}, are used to identify the number of carbon atoms in the product.
Networkplot block
To quickly visualize the flux from reactants to products the MKMCXX code includes automated network plot creation. For moderately large systems this plot can quickly get very complex. The networkplot block can be used to guide MKMCXX in creating a readable graph.
&networkplot ROOT_NODE = {CO} EXCLUDE_NODES = {*s},{H*s} EXCLUDE_NODES = {*t},{H*t} EXCLUDE_REGEX = ^.*C3.*$ EXCLUDE_REGEX = ^.*C4.*$ EXCLUDE_LIMIT = 1e4
In the example above the ROOT_NODE tag sets the compound to which all fluxes should be normalized. In this case the consumption of CO will be set to unity. The EXCLUDE tags make sure that irrelevant nodes are not included in the plot. Specific nodes can be excluded by the (additive) EXCLUDE_NODES tags. The (also additive) EXCLUDE_REGEX tag finds nodes matching the supplied regular expression. The EXCLUDE_LIMIT tag controls which links between nodes are visible. In this case, all links with a normalized flux less than 1e4 are removed. Nodes without any links are also removed from the plot.
Nodal Recall
MKMCXX now includes a new (experimental) way of generating network plots. This 'Nodal Recall' method uses a shortest paths algorithm comparable to Dijkstra's algorithm and the BellmanFord algorithm.
Relevant keywords and example values are:
NODAL_START = {CO},{H2},{*t},{*s} NODAL_EXCLUDE = {*s},{*t} NODAL_END = {H2O},{CH4},{CH2CH2},{CH3CH3} NODAL_END = {CH2CHC1},{CH3CH2C1} NODAL_END = {CH2CHC2},{CH3CH2C2}
The algorithm will try to generate the paths with the highest flux from the NODAL_START nodes to the NODAL_END nodes. NODAL_EXCLUDE nodes will not be used in these paths.
The NETWORK_NODAL_PROD setting (in the &settings block) determines whether byproducts should be traced. For NETWORK_NODAL_PROD = 2 the user should define NODAL_ROOT like:
NODAL_ROOT = {H2O}
In the example above the algorithm will try to trace the flux chain from a product like CH4 back to the reactants CO and H2. Somewhere in this chain the adsorbed CO* will dissociate into C* and O*. This C* is the node that ultimately leads to CH4.
 With NETWORK_NODAL_PROD = 0 the O* will not be printed as a branch in the chain.
 With NETWORK_NODAL_PROD = 1 the O* will be printed, but the byproduct chain will not be evaluated.
 With NETWORK_NODAL_PROD = 2 the O* will be printed, and the byproduct chain will be evaluated to reach the NODAL_ROOT, which in this case is H2O.