Skip to content

2D. Events definition

PabloMartin91 edited this page Feb 1, 2021 · 27 revisions

--(**) If system exportation from a previous simulation is done, all the commands listed here are compulsary as they were in the original definition. Only the change of the ED, EP, FFD, FFP, and DG* values is possible.


The dissolution reactions (or events as commonly known in KMC algorithm) have a rate to happen that follows an Arrhenius equation:

Where the pre-exponential factor ff is named fundamental frequency (s-1), and EB (kJ mol-1) is the energy barrier for the transition, kB the Boltzman constant (1.380×10−23 J K-1) and T the temperature (K).

It is neccesary to take also into account the precipitation events to study the dissolution at close to equilibrium conditions, when the dissolution is unlikely to happen and the Gibbs free energy ΔG* has values closer to 0. Therefore, the previous equation is splitted in the two following ones:

Here the fundamental frequency has splitted in fD and fP, and the energy barrier in ED and EP. The Gibbs free energy ΔG* is related to the macroscopical ΔG but such relation is dependent with the chosen model. For a deeper explanation, refer to the article. If we make a proper description of the events and know these model parameters, which can be calculated by ab initio simulations or obtained in the bibliography, we can manage an acurrate time evolution of a dissolving mineral.

Tip: we can ensure very far form equilibrium conditions by considering a very low value of ΔG* when the precipitation term is neglected.

The command that starts with the event definition is DEFINE_DISSOLUTION_EVENT. We will usually use this command once for each type of atom (or particle) in our system.

From the experiments we know that the energy barriers of the reactions changes with the neighbourhood of an atom. We have designed KIMERA in the same way. The definition of the dissolution events is done by indicating the Arrhenius equation parameters, which change with the local neighbourhood. The energy barrier EB for an atom or particle to be removed from the system changes with the number of 'contributors' or neighbours around it.

where Edi and Epi are the dissolution and precipitation energy barrier contribution to the total ED and EP respectively and n is the total number of them.

As KIMERA uses an on-lattice description, we can identify each set of contributors according to their distance to the particle which is dissolving. As we will see in the 2G. Other parameters section, we can set the threshold of this distance to give us more versatility in grouping the contributors. Since there may be two different types of contributors at the same distance to the target dissolving atom, we also need to indicate the contributor atom type.

KIMERA search for the contributors in same cell of the target atom, and in the 26 sourrounding cells (up, down, sides, and diagonals). If we need to recognise a contributor out of this range, we will need to redefine the unit cell as a supercell containing a bigger piece of mineral.

The energy barrier of dissolution and precipitation can be determined by more than one different sets of contributors. Every time we use a NEIGHBOUR command, like NEIGHBOUR, NEIGHBOUR_LINKED, NEIGHBOUR_LINKED_DISSOLVED, NEIGHBOUR_DIRECT_LIST, NEIGHBOUR_LINKED_DIRECT_LIST or NEIGHBOUR_LINKED_DISSOLVED_DIRECT_LIST, we are refering to a different set and so we need to specify the distance to them and their type. The DEFINE_DISSOLUTION_EVENT command needs at least one of the previous to indicate the rate of the dissolution. There is no limit in the number of contributors.

Typically in the bibliography, the energy barrier has been considerered to change linearly with the contributors. The commands that offer a simpler lineal description are NEIGHBOUR, NEIGHBOUR_LINKED and NEIGHBOUR_LINKED_DISSOLVED. Nevertheless, KIMERA also allows to set a specific contribution for each contributor. The commands that allow specific description have the DIRECT_LIST surname; NEIGHBOUR_DIRECT_LIST, NEIGHBOUR_LINKED_DIRECT_LIST and NEIGHBOUR_LINKED_DISSOLVED_DIRECT_LIST.

The LINKED feature specify that the contribution is only consedered if other atoms are still on the system. To difine the 'linked' atoms, two distances are given; one to the contributor atom, and other to the target dissolving atom (or origin atom) in which we are defining the event. There is not limit in the number of 'linked' atoms.

Same as before, but if the contribution is only considered when other atoms are not longer in the system, we have the commands with LINKED_DISSOLVED surname.

Finally, we can specify one special kind of atoms, named AFFECTED, which automatically leave the mineral when the 'father' atoms do. The number of 'affected' atoms has no limit.

To recapitulate, the events defintion command list is the following:

DEFINE_DISSOLUTION_EVENT            (text)target_atom_type
                                             
    (optional line) NEIGHBOUR                    (text)target_neighbour_type   (double)distance_to_neighbour       (double)ED_in_KT_units       (double)EP_in_KT_units        (int)neighbours_to_bulk          

    (optional line) NEIGHBOUR_LINKED             (text)target_neighbour_type   (double)distance_to_neighbour       LINK  (text)target_linked_type    (double)distance_from_origin_to_linked    (double)distance_from_neighbour_to_linked
                                                                                                                                                            LINK  (text)target_linked_type    (double)distance_from_origin_to_linked    (double)distance_from_neighbour_to_linked
                                                                                                                                                            LINK  ........................    ......................................    .........................................    (double)ED_in_KT_units       (double)EP_in_KT_units      (int)neighbours_to_bulk
                                                                                                                                                            
    (optional line) NEIGHBOUR_LINKED_DISSOLVED   (text)target_neighbour_type   (double)distance_to_neighbour       LINK  (text)target_linked_type    (double)distance_from_origin_to_linked    (double)distance_from_neighbour_to_linked
                                                                                                                                                            LINK  (text)target_linked_type    (double)distance_from_origin_to_linked    (double)distance_from_neighbour_to_linked
                                                                                                                                                            LINK  ........................    ......................................    .........................................    (double)ED_in_KT_units       (double)EP_in_KT_units      (int)neighbours_to_bulk        
                                                                                                                                                                                                                                                                                                                                          
    (optional line) NEIGHBOUR_DIRECT_LIST         (text)target_neighbour_type   (double)distance_to_neighbour      LIST_LENGTH   (int)list_length       (double)ED1  (double)EP1    (double)ED2  (double)EP2   .........    .........    (int)neighbours_to_bulk
                                                  
    (optional line) NEIGHBOUR_LINKED_DIRECT_LIST  (text)target_neighbour_type   (double)distance_to_neighbour      LINK  (text)target_linked_type    (double)distance_from_origin_to_linked    (double)distance_from_neighbour_to_linked
                                                                                                                                                            LINK  (text)target_linked_type    (double)distance_from_origin_to_linked    (double)distance_from_neighbour_to_linked
                                                                                                                                                            LINK  ........................    ......................................    .........................................                                                                   
                                                                                                                                                            LIST_LENGTH   (int)list_length       (double)ED1  (double)EP1    (double)ED2  (double)EP2   .........    .........    (int)neighbours_to_bulk 
                                             
    (optional line) NEIGHBOUR_LINKED_DISSOLVED_DIRECT_LIST   (text)target_neighbour_type   (double)distance_to_neighbour       LINK  (text)target_linked_type    (double)distance_from_origin_to_linked    (double)distance_from_neighbour_to_linked
                                                                                                                                                                        LINK  (text)target_linked_type    (double)distance_from_origin_to_linked    (double)distance_from_neighbour_to_linked
                                                                                                                                                                        LINK  ........................    ......................................    .........................................                                                                   
                                                                                                                                                                        LIST_LENGTH   (int)list_length       (double)ED1  (double)EP1    (double)ED2  (double)EP2   .........    .........    (int)neighbours_to_bulk
    (optional line) AFFECTED                     (text)target_affected_type    (double)distance_to_affected
                                                             .........                    ...........................   ............................
    (optional line) FFD                          (double)dissolution_fundamental_frequency
    (optional line) FFP                          (double)precipitation_fundamental_frequency
    (optional line) DG*                          (double)event_delta_G

where DG* is ΔG*, FFD is fD and FFP is fP.

Next following points are important to be noted:

  • We have to define one event (or more) for each atom type in our system, or consider them as 'affected'. Otherwise they will never dissolve.

  • Related with the previous, if we have defined 'B' atoms as neighbours of 'A' atoms, we must also indicate that 'A' atoms are neighbours of 'B' atoms to tell KIMERA they are interconnected.

Tip: We must define events for 'B' atoms respect to the number of 'A' atoms, but if the existence of atoms A has not any influence on the dissolution of the first, we can just consider a very high value of energy barriers ED and EP.

  • The DIRECT_LIST commands needs the specification of n, the number of contributors of that type, in the list_length parameter.

  • In the neighbours_to_bulk parameter we specify if a type of neighbour makes the target atom a bulk atom. A bulk atom does not suffer dissolution until the quantity of that neighbour type is lower than the number we have specified. This represents the accessibility of the atom to react with the solvent after the dissolution of one of its neighbours. If a '0' value is considered, that type of neighbour has not effect in the bulk definition.

At this point we have the system with their possible events perfectly defined. KIMERA automatically creates then a reactive surface in where the dissolution is going to start. As the reactive surface may not be to our liking, the next section shows the commands that allow to modify it.

Clone this wiki locally