Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

...

Each class described in the Code Structure section will require some specialized parameters. Some of these parameters are common to all variants of these classes, while others are specific to certain implementations. The possible inputs for the currently implemented variants of each class are listed below. Required attributes are underlined.

  • ReactionModel:
    • Wiki Markup+rxn_expressions+ \ - These expressions determine the elementary reaction, and are the most important part of the model. They must be defined unless the elementary_rxns, adsorbate_names, transition_state_names, and gas_names are all explicitly defined since the rxn_expressions are parsed into these 3 attributes. It is much easier to just define rxn_expressions, although it is important to note the syntax. There must be spaces between all elements of each expression (i.e. C*+O\* is not okay, but C\* + O\* is), and species ending with \ _g are gasses by default. Adsorbed species may end with * or \ _x where * designates adsorption at the "s" site (by default), while \ _x designates adsorption at the "x" site (note that "x" may be any letter except "g", and that X* and X_s are equivalent). Transition-states should include a \ -, and reactions with a transition-state are specified by 'IS <-> TS \ -> FS' while reactions without a transition-state are defined as 'IS \ -> FS' (where IS,TS,FS are expressions for the Initial/Transition/Final State). When the model initializes it checks the expressions for mass/site balances, and if it finds that they are not balanced it will raise an exception. \ [list of strings\]. Instead of specifying rxn_expressions the following attributes may instead be defined:
        unmigrated-wiki-markup
      • elementary_rxns - list version of rxn_expressions. These will be automatically populated if rxn_expressions are defined. \ [list of lists of lists\]unmigrated-wiki-markup
      • adsorbate_names - list of adsorbate names included in the analysis. Automatically populated if rxn_expressions are defined.\[list of strings\]unmigrated-wiki-markup
      • transition_state_names\ - list of transition-state names included in the analysis. Automatically populated if rxn_expressions are defined. \ [list of strings\]
      • Wiki Markupgas_names \ - list of gas names included in the analysis. \ [list of strings\]
      unmigrated-wiki-markup
    • +surface_names+ \- - list of surface names to be included in the analysis. \ [list of strings\]
    • species_definitions - This is a dictionary where all species-specific information is stored. The required information will vary depending on the scaler/thermo corrections/solver/mapper used, and the "parser" generally fills in most information. However, there are a few things which generally need to be supplied explicitly:
        unmigrated-wiki-markup
      • +species_definitions\[\{site\}\]\['site_names'\]+ (where \ {site\} is each site name in the model) - A list of "site names" which correspond to \ {site\}. If the TableParser (default) is being used then the "site names" must also match the designations in the "site_name" column. For example, if you want the "s" site to correspond to the energetics of an adsorbate at a (211) site, and (211) sites are designated by '211' in the site_name column of the input_file, then this would be specified by: species_definitions\['s'\] = \ {'site_names':\['211'\]\}. Similarly, if you wanted the 't' site to correspond to 'fcc' or 'bridge' sites then you could specify: species_definitions\['t'\] = \ {'site_names':\['fcc','bridge'\]\}.unmigrated-wiki-markup
      • +species_definitions\[\{site\}\]\['total'\]+ (where \ {site\} is each site name in the model) - A number to which the total coverage of \ {site\} must sum. For example, if you wanted to have a total coverage of 1 with 10\% 10% 's' sites and 90\% 90% 't' sites (with the same site definitions as above) you would specify: species_definitions\['s'\] = \ {'site_names':\['211'\],'total':0.1\} and species_definitions\['t'\] = \ {'site_names':\['fcc','bridge'\],'total:0.9\}.
      • Wiki Markup+species_definitions\[\{gas\}\]\['pressure'\]+ (where \{{gas\} is each gas name in the model) - The pressure of each gas species in bar. For example, if you wanted a carbon monoxide pressure of 10 bar and hydrogen pressure of 20 bar you would specify: species_definitions\['CO_g'\]\['pressure'\] = 10 and species_definitions\['H2_g'\]\['pressure'\] = 20. Note that for some situations you may instead need to specify a 'concentration','approach_to_equilibrium', or some other key, but in almost every situation some method for obtaining the gas pressures must be specified for each gas in the model.
      unmigrated-wiki-markup
    • +temperature+ \ - temperature used for the analysis. May not be defined if ThermodynamicScaler is being used with temperature as a descriptor. \ [number in Kelvin\]
    • Wiki Markup
      +descriptor_names+ \- names of variables to be used as descriptors. \[list of strings\]
    • unmigrated-wiki-markupdescriptor_names - names of variables to be used as descriptors. [list of strings]
    • descriptor_ranges \ - Used for mapping through descriptors space. Specify the limits of the descriptor values. Should be a list equal in length to the number of descriptors where each entry is a list of 2 floats (min and max for that descriptor). \ [list of lists of floats\].unmigrated-wiki-markup
    • resolution \ - Used for mapping through descriptor space. Resolution used when discretizing over descriptor_range. \ [int\]
    • Wiki Markupparser - name of class to use for solver. Defaults to TableParser. \ [string\]unmigrated-wiki-markup
    • mapper - name of class to use as a mapper. Defaults to MinResidMapper. \ [string\] Wiki Markup
    • scaler - name of class to use for scaler. Defaults to GeneralizedLinearScaler. \ [string\] Wiki Markup
    • solver - name of class to use for solver. Defaults to SteadyStateSolver. \ [string\]unmigrated-wiki-markup
    • thermodynamics - name of class to use for thermodynamic corrections. Defaults to ThermoCorrections. \ [string\]unmigrated-wiki-markup
    • data_file - file where large outputs will be saved as binary pickle files. Defaults to 'data.pkl' \ [filepath string\]
    • Wiki Markupnumerical_representation - determines how to store numbers as binary. Can be 'mpmath' for multiple precision or 'numpy' for normal floats. Note that 'numpy' rarely works. Defaults to 'mpmath'. \ [string\]
  • Parser:
    • input_file - file where input data is stored. File must be in the correct format for the parser used.
      See 1 - Generating an Input File for more information.
  • Scaler:
    • Wiki Markupgas_thermo_mode - Approximation used for obtaining gas-phase free energy corrections. Defaults to ideal_gas. Other possibilities are: shomate_gas (use Shomate equation), zero_point_gas (zero-point corrections only), fixed_entropy_gas (include zero-point and assume entropy is 0.002 eV/K) , frozen_gas (no corrections), frozen_zero_point_gas (no zero-point and entropy is 0.002 eV/K). \ [string\]unmigrated-wiki-markup
    • adsorbate_thermo_mode - Approximation used for obtaining adsorbate free energy corrections. Defaults to harmonic_adsorbate (use statistical mechanics+vibrational frequencies). Other possibilities are: zero_point_adsorbate (zero-point corrections only), frozen_gas (no corrections). \ [string\]
    • transition_state_scaling_parameters - Used if transition-state scaling is used. Many published values are hard-coded, and parameters can often be input directly so it is usually not necessary. Read scalers/_init_.py for syntax.
  • Solver:
  • SteadyStateSolver:
      unmigrated-wiki-markup
    • decimal_precision - number of decimals to explicitly store. Calculation will be slightly slower with larger numbers, but will become completely unstable below some threshhold. Defaults to 50. \ [integer\]unmigrated-wiki-markup
    • tolerance - all rates must be below this number before the system is considered to be at "steady state". Defaults to 1e-50. \ [number\]unmigrated-wiki-markup
    • max_rootfinding_iterations - maximum number of times to iterate the rootfinding algorithm (multi-dimensional Newtons method). Defaults to 50. \ [integer\]unmigrated-wiki-markup
    • internally_constrain_coverages - ensure that coverages are greater than 0 and sum to less than the site total within the rootfinding algorithm. Slightly slower, but more stable. Defaults to True. \ [boolean\]unmigrated-wiki-markup
    • residual_threshold - the residual must decrease by this proportion in order for the calculation to be considered "converging". Must be less than 1. Defaults to 0.5. \ [number\]
  • Mapper:
  • MinResidMapper:
      unmigrated-wiki-markup
    • search_directions - list of "directions" to search for existing solutions. Defaults to \ [\[0,0\],\[0,1\],\[1,0\],\[0,-1\],\[-1,0\],\[-1,1\],\[1,1\],\[1,-1\],\[-1,-1\]\] which are the nearest points on the orthogonals and diagonals plus the current point. More directions increase the chances of findinga good solution, but slow the mapper down considerably. Note that the current point corresponds to an initial guess coverage provided by the solver (i.e. Boltzmann coverages) and should always be included unless some solutions are already known. \ [list of lists of integers\]unmigrated-wiki-markupof integers]
    • max_bisections - maximum number of time to bisect descriptor space when moving from one point to the next. Note that this is actuall the number of iterations per bisection so that a total of 2{^}max_bisections^ bisections points could be sampled between two points in descriptor space. Defaults to 3. \ [integer\]unmigrated-wiki-markup
    • descriptor_decimal_precision - number of decimals to include when comparing two points in descriptor space. Defaults to 2. \ [integer\]
  • ThermoCorrections:
      unmigrated-wiki-markup
    • thermodynamic_corrections - corrections to apply. Defaults to \ ['gas','adsorbate'\]. \ [list of strings\]
    • Wiki Markupthermodynamic_variables - variables/attributes upon which thermo corrections depend. If these variables do not change the corrections will not be updated. Defaults to \ ['temperatures','gas_pressures'\]. \ [list of strings\]
    • Wiki Markupfrequency_dict - used for specifying vibrational frequencies of gasses/adsorbates. Usually populated by the parser. Defaults to {}. \ [dictionary of string:list of numbers in eV\]
    • Wiki Markupideal_gas_params - parameters used for ase.thermochemistry.IdealGasThermo. Defaults to mkm.data.ideal_gas_params. \ [dictionary of string:string/int\]unmigrated-wiki-markup
    • fixed_entropy_dict - entropies to use in the static entropy approximation. Defaults to mkm.data.fixed_entropy_dict. \ [dictionary of string:float\]
    • Wiki Markupatoms_dict - dictionary of ASE atoms objects to use for ase.thermochemistry.IdealGasThermo. Defaults to ase.structure.molecule(gas_name). \ [dictionary of string:ase.atoms.Atoms\]
    • Wiki Markupforce_recalculation - re-calculate thermodynamic corrections even if thermodynamic_variables do not change. Slows the code down considerably, but is useful for sensitivity analyses where thermodynamic variables might be perturbed by very small amounts. Defaults to False. \ [boolean\]
  • Analysis:
  • MechanismAnalysis:
    • Wiki Markuprxn_mechanisms - dictionary of lists of integers. Each integer corresponds to an elementary step. Elementary steps are indexed in the order that they are input with 1 being the first index. Negative integers are used to designate reverse reactions. \ [dictionary of string:list of integers\]