Jump to content
Geochemist's Workbench Support Forum

React reaction completion


Recommended Posts

I have developed a React model in which I have a custom rate equation for the oxidation of pyrite together with a few kinetic minerals using the default rate equation, a fixed oxygen fugacity and a custom oxidation reaction for the oxidation of ferrous to ferric iron an resultant precipitation of ferrihydrite. The model will only run when I set the delxi to < 1e-7, which I have no problem with, but then the model runs up to 999999 steps and says "successful completion of reaction path", but the reaction progress variable is 0.1, which implies that the model has not run to completion. I have played around with "step_increase" and "delxi", but can't get the model to run beyond this point, i.e. step 999999 and 0.1. Does anyone have any ideas of what I can do to get the model to run to a progress variable value of 1?

Link to comment
Share on other sites

Hi Robert,


Instead of setting a constant step size (to a very small value), I would try setting Dx_init to 10^-7 and then Step_increase to a small number like 1.01 or 1.001. That should let the step begin small and gradually increase in length, so you won't need to take as many.
You can find more information about these commands in the GWB Reference Manual. Please let us know how this works for you.




Brian Farrell

Aqueous Solutions LLC

Link to comment
Share on other sites

  • 2 months later...

Hi Brian


I’m having a similar problem to another post (Robert Dec 02 2013).


The overall gaol is two steps. Step I is to react a mineral-water assemblage, with some minerals at equilibrium (in the basis) and others as kinetic reactants, along with CO2, to a value of M CO2 that is the solubility in the brine (calculated from Duan et al). This is over ten years. Step 2 is to let this react for 1000 years but with no added CO2 (fix fCO2 at the value of CO2 solubility). I can’t get STEP 1 completed.


I have attached a react file (version 9.0.5). My goal is to run this to 10 years with the silicates and dawsonite as kinetic reactants. Calcite, dolomite and anhydrite are assumed to be at equilibrium (and are swapped into the basis). The amounts in the script are predicated on actual amounts of all minerals (from XRD, XRF and LPNORM) and the measured porosity. The water composition is from a real analysis of the formation water prior to CO2 injection.


1. My problem is the file runs to "completion", but it only gets to Xi = 0.1at 1.0 year (365.246 days) and adds 0.17 mol, instead of 1.7 mol, of CO2 (aq) over 10 years. I'm sure I've done something dumb, but I'm too dumb to figure out what it is.


2. My next step is to pick up the results, after iterating to get the actual CO2 solubility correct (Duan et al), and then let it react at fixed fCO2 (from the first REACT output) for 1000 years. So - on that note, is there a way to make this run a bit faster? It takes an hour or so right now. This may be the result of the different rates for dawsonite and the silicates, but I'm reluctant to separate those as the formation of dawsonite partly depends on the dissolution of albite. I have tried setting dx_init to 10^-5 and step_increase to 1.01, but this actually decreases the number of years the run takes to “completion” (from1.0 to 0.6?).


3. Also, is there a way to set the final M CO2? I can calculate the solubility in the brine from Duan, but I'm not sure how to set REACT to run to that value? This would save me the time required to iterate using individual runs (resetting the amount of CO2 as reactant) to the solubility value. I could also calculate fCO2(g) from Duan as an ending value, but I'm not sure how to set up to stop at a particular value of MCO2(aq). I could calculate fCO2 at the solubility and slide fCO2(g) to that value?


Any advice on any of the three issues much appreciated.





Link to comment
Share on other sites

Hi Ian,


The problem with the script running to "completion" involves a hard-coded maximum number of steps React will take (so that it doesn't keep trying to solve a problematic model indefinitely). React will report that is is finished if it gets this far, even though it hasn't, since you've noted Xi isn't 1, time isn't 10 years, and 1.7 moles of CO2 have not been reacted. This maximum number of steps allowed has been increased in one of the maintenance releases after 9.0.5, so after updating you may get a little further running the exact same script, but that doesn't solve the problem.


I know you don't want to here this, but I think the problem is with setting kinetic rate laws for the silicates and dawsonite. If I leave your script running until it gets bogged down, I can make it to 1.8 years. If I plot moles of k-feldspar, albite, and dawsonite vs. time, it seems that the dawsonite is precipitating just as quickly as the feldspars can supply sodium and aluminum to solution. Assuming feldspar dissolution is holding up the process, you should be able to ignore the kinetics of dawsonite precipitation. When I do that, the model runs to completion in seconds and at a quick glance looks identical to the model incorporating dawsonite precipitation kinetics.


You can set a total mass of CO2 that you'd like to react (a simple reactant, as you've done), or a final fugacity or activity of CO2, but not a final concentration. You can use a sliding fugacity or sliding activity path to adjust the solution's CO2 content to your target values. On the Reactants pane, choose add -> Sliding -> Gas... -> CO2 or add -> Sliding -> Aqueous... -> CO2(aq).


Hope this helps,


Brian Farrell


Aqueous Solutions LLC

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...