Jump to content
Geochemist's Workbench Support Forum

Kinetic fluid-rock interaction in React

Recommended Posts



I have been working in React building a model of fluid rock interaction between host rock minerals and a measured surface water that I sampled dripping from a tunnel roof - this fluid has flowed through a few hundred meters of cold rock. I reacted this fluid with the rocks at increasing temperatures to ~200 degrees. To constrain the model I have analyses of geothermal spring waters in the area, which is what essentially comes out the other end of the system - I have only used these analyses to compare with the modelled fluid compositions and I have not involved them in the model. The rock compositions used were based on "average" rocks the fluid would interact with based on various thin section observations of the different rock types and their proportions in the area.


By doing this I aim to: 1. investigate the strongest controls on fluid chemistry to try and explain the differences in chemistry between the springs I have analysed and 2. investigate alteration mineral assemblages and the how much water, time, etc it would take to alter the rocks to varying degrees that we see in the field.


Starting out with a basic equilibrium model I quickly realised that I needed to set kinetic constraints on mineral dissolution and so included the built in kinetic rate laws (constrained by specifying pre-exp and Ea)for all minerals involved other than halite and graphite (kinetic minerals = Quartz, K-feldspar, Anorthite, Albite, Phlogopite, Annite, Muscovite, Epidote, Tremolite, Calcite, Clinochlore14-A and Pyrite). This model runs and converges when I increase temperatures from 10 (measured fluid temperature) to 200 degrees (>maximum temperatures of spring fluids at depths) over different timescales in the range of 20-200 years and allow minerals to precipitate (with inappropriate minerals suppressed). I should/will at some point involve kinetic mineral precipitation too.


However, this is not very realistic as the fluid is moving through the rock pile to probably >2km depth and therefore back reaction with minerals already precipitated is not realistic - but when I tell the model to "flow-through" it does not converge or simply gets stuck trying to solve at a particular stage. Additionally the fluids are flowing through the system and interacting with more and more rock as they go, so the system will not "run out" of any of the reactant minerals. To try and get around this I broke up the reaction path and asked it to first of all solve the model for temperatures increasing from 10 to 20 degrees over 1 year, and several other options with the intention of pickingup this fluid and interacting with more fresh reactants. However, the model gets stuck trying to solve for one stage (normally about Xi=0.02), or sometimes the model gets stuck then the message "Successful completion of react path." pops up, yet in reality it has only run for <5 days.


I think the problem may be do to with step size while using kinetics as the model solves when run over ~20 years up to 200 degrees but not for the same temperature change over 15 years, or the smaller time steps when I try to break down the reaction paths.


Please could you advise on what may be causing these problems or how I could fix them?


I have attached the .rea file for more details - it takes 15-30 minutes to solve under the saved conditions in that file.

Av tunnels-simple kinetics posted.rea




Link to comment
Share on other sites

Hi Catriona,


One thing I notice right away is that you're using kinetics for a very large number of minerals. Typically these all won't dissolve or precipitate at the same rate. A carbonate mineral like calcite, for example, is likely to dissolve much more quickly than some of the silicate minerals. When you set kinetics for extremely fast reactions (relative to the timescale of interest) you force extremely small timesteps on the program, which can slow down your run at best, or prevent it from reaching completion in certain cases if the time step keeps getting cut between iterations. It's best to start with a simpler example - an equilibrium model - and gradually add in kinetics as necessary.


We did notice an issue with kinetic reaction paths and flow-through models, as described in this forum post. We're looking into this and it should be cleared up in the next maintenance release.




Brian Farrell

Aqueous Solutions LLC

Link to comment
Share on other sites

Hi Catriona


With a lot of kinetic minerals I sometimes give all of them a zero surface area to start with. then I add the surface area (SA) of each mineral one after the other (running the model inbetween) until I see where is the problem (the faster reacting minerals). It is difficult to know the exact mineral SA. Sometimes I also reduce the SA of the silicates (then the model often runs)and slightly increases it until I feel it sorts of reflect the conditions I want to model.

It would be interesting to see the model in X1t also.



Link to comment
Share on other sites

Hello Brian and Johan,


Thanks for your responses and advice. I did start with an equilibrium model and gradually added the kinetic minerals, but at the time I wasn't thinking about breaking up the reaction path (I didn't know flow through would be a problem) and therefore using smaller time steps, etc.


Brian, do you know an approximate date for the maintenance release that should fix flow through? I'm just trying to figure out if I should keep going with this just now or wait until the fix for flow through is available.


I might try reducing the number of kinetic minerals for lower temperatures parts of the path, as removing these is likely to have less of an effect on the end solution composition (as much less rock is dissolved at lower Ts) and the model seems to always take much longer to solve at lower temperatures (which isn't what I would expect as kinetic reaction rates should be lower at lower temperatures).


Johan, I will have a play with gradually increasing surface areas, I did try that approach a while ago and just got frustrated, I will give it another go today. I'll also try inputting the model into X1t, I was avoiding doing this as I felt adding more complexity to the model at this stage would not help, but if it allows me to simulate the problems better as the fluid "flows through" the medium then I will have a stab at it (after doing some reading about X1t).


Thanks again for your advice, I will keep plugging away and hopefully make some progress.



Link to comment
Share on other sites

  • 1 month later...

Hi Catriona,


Just wanted to let you know that maintenance release 9.0.6 is out. Included is a fix that might be of interest to you:


Fix a problem in which React sets too small time steps when running flow-through models containing both kinetic reactants and buffer minerals.


I think there is still an issue with kinetic reactions of widely varying rates in your script. For example, the rates of pyrite and calcite dissolution in your script are approximately 7 orders of magnitude faster than the slowest kinetic reactions. The fast reactions cause React to take extremely small time steps, bogging down the program. A good strategy is to divide mineral reactions into three groups:


  1. reactions that proceed quickly over the time scale of the calculation - assume equilibrium
  2. minerals that react negligibly over the calculation - suppress these
  3. reactions that proceed at a slow but measureable rate over your time scale of interest - use kinetics for these

Hope this helps. By the way, have you made progress with an X1t model?




Link to comment
Share on other sites

Hi Brian,


Thanks for your help, I am excited to get going now the maintenance release is out. Unfortunately my 60 day trial has now expired and I'm waiting for the budget holder for our research group's grants to sort out buying a licence or two before I can get any more work done on my model.


Before the licence expired I got the model running better in REACT by setting calcite and pyrite as equilibrium minerals as you suggested, but not with "flow through". I started to have a play with X1t but I didn't get very far before I had to stop and work with some visiting scientists and by time they had left the licence had expired. My initial thoughts were that X1t required me to make too many assumptions/ guesses about the system I am investigating, so that did put me off a little as I think there is enough error in my estimates as it is. X1t will be something for future investigation I think, once we have physical parameters (permeability, thermal gradient, etc)better constrained for the area of interest.


Thanks for all your help,


Link to comment
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...