Jump to content
Geochemist's Workbench Support Forum

problems in Kinetic precipitation of mineral

Recommended Posts

Hi, everyone:

I am trying to use kinetic rate law for mineral dissolution and precipitation.

Here, I give a simple example.


Initial mineral: Albite

Secondary mineral: Kaolinite, Quartz, Calcite


If I do not use kinetic rate law for precipitation of kaolinite, quartz and calcite, they would precipitate. However, if I use kinetic rate law, they do not precipitate.


Can anyone give me some advice? The rate law, nucleus density are set. I cannot figure out what is wrong. Very confusing.


Thank you very much.





  • Like 1
Link to post
Share on other sites

Hello Huan,

I wasn’t able to run your simulation with your custom dataset but I  can offer some suggestions base on running your input file with thermo.tdat.

When I used the rate law script files provided for quartz and albite, the resulting precipitation rate for quartz precipitation is zero, you can see this if you plot "Dissolution Rate, Quartz" under Reactant properties  vs. "Time" in Gtplot. Similarly, the dissolution rate for Albite also drops to near zero at the start of your simulation as well. Since your reaction rates are so slow, nothing is really happening after your system initially equilibrated. This would explain why you do not see quartz accumulating in your simulation.

I also noticed that you have selected to write your rate law for quartz as a precipitation reaction instead of a dissolution reaction, please check that your basic scripts are written correctly for both minerals.

Can you explain a little bit about what you are trying to do with this simulation? I am a little confused by your model setup. I see that one of the variables in your custom rate law is the activity of H+ but in the basis pane, you set H+ as the charge balancing ion. If you would like someone to take a closer look, please attach your customized dataset so we can run your input file directly.

Best regards,
Jia Wang

Link to post
Share on other sites

Hi, Jia Wang:

Thank you very much for your quick response.

1. Sorry for missing my thermo dataset. I am trying to simulate the influence of CO2 on sandstone diagenesis. So, I give a value for fugacity of CO2 and therefore use pH to balance charge. I attached my dataset.

2. Now, I am testing kinetic precipitation rate law to constrain mineral precipitation, like quartz. But it did not work. Therefore, I just use feldspar (primary) and quartz (secondary) to test the kinetic precipitation rate law.

3. The dissolution rate is set according to the three-mechanism-rate in Palandri and Kharaka (2004):



The rate parameters are also derived from Palandri and Kharaka (2004):



4. I attached a React_output file. It shows that the quartz is supersaturated. The log (Q/K) is 1.0201. But it does not precipitate. So, I think maybe it is not related to dissolution rate of Albite.

5. I am thinking if the rate law is right or wrong. But I checked several times. I cannot think of any point is wrong. The rate law is

rate = surface * ((acid) + (neutral) + (base))

Return rate

6. The nucleus density is also tested. I improved the nucleus density to as high as 10000 cm2/cm3, but it still did not work.

7. Questions:

I think we write same rate law for both mineral precipitation and dissolution, is it right? GWB determine if it dissolve or precipitate according to Q/K, is it right?

If a primary mineral might precipitate, should we set a value for nuclues density? For example, the rock initially has 5% kaolinite, 50%K-feldspar, and with injection of CO2, K-feldspar might dissolve into kaolinite. In this case, do we need to set nucleus density for kaolinite?


Appreciation for your help.

Best wishes



Link to post
Share on other sites

Hello Huan,

Thank you for the additional files and information. 

I noticed that there is a minus sign in front of the surface area term in the screenshot of the equation but it is missing in your rate law scripts. Perhaps that Is intentional? I didn't check if all the other values are correct though.

I also believe that when you use a custom rate law, the nucleus density input is not used in your simulation unless you specify it in the script itself. Note that the nucleus density option prescribes a minimum value for a supersaturated mineral’s surface area over the calculation. The program calculates the actual surface area from the mineral’s current mass and specific surface area and uses this whenever it exceeds the nucleus density. I edited your quartz script by adding a few lines to allow the rate to be calculated from the nucleus density when the surface area is less than the nucleus density times the solution volume. Can you try this to see if it helps? 

IF surface < nucleus * soln_volume THEN 20 ELSE 40
20: rate = -nucleus * [rest of your equation here]
40: rate = -surface*[rest of your equation here]
60: RETURN rate

In GWB, mineral reactions are written as dissociation reactions, which means that mineral is on the left hand side of the reaction and the aqueous species are on the right. In React, a rate law is commonly set describing the forward proceeding reaction. So in this case, a positive rate, indicates a mineral is dissolving and a negative rate indicates the mineral is precipitation. You alternatively, can also specify for GWB to evaluate the rate law to give you a positive result for the reverse reaction instead, which is the precipitation of the mineral. In this case, a positive rate would indicate mineral precipitation and a negative rate would indicate mineral dissolution. By default, the GWB evaluates the You can find a detailed example for this in section 4.3 Forward and reverse reactions of the GWB Reaction Modeling Guide. I noticed on the Reactants pane, that you have chosen the precipitation as the positive rate for kinetic quartz reaction but the the dissolution rate as the positive rate for kinetic albite, which is why I suggest double checking to make sure that they are consistent. 

Hope this helps,
Jia Wang

Link to post
Share on other sites

Dear Jia Wang:

Deep appreciation. It works after adding the nucleus to the script. It is very useful.

What can I say? Maybe just thanks. But you solved a big problem for me. It has confused me for some time.

Best wishes for you.


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Create New...