Jump to content
Geochemist's Workbench Support Forum

Brian Farrell

  • Content Count

  • Joined

  • Last visited

  • Days Won


Brian Farrell last won the day on August 16 2019

Brian Farrell had the most liked content!

Community Reputation

10 Good

About Brian Farrell

  • Rank
    Advanced Member

Profile Information

  • Gender

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Hi Silvain, As long as you don’t specify “free” or choose a unit that implies a free constraint (e.g. activity or pH), your constraint is for the bulk concentration of a component. To test this out, fire up SpecE8 and enter HCO3- = .001 molal pH = 6 Na+ = 1 molal balance on Cl- go You can look in the text output file to see the concentrations of several carbon species: CO2(aq) has the highest concentration at .0005060 molal, then in decreasing abundance HCO3-, NaHCO3, CO3--, and NaCO3-. Add them up and you’ll find the molal concentrations will sum to .001 molal, which is the bulk constraint you supplied. Scroll down to “Original basis total moles” in the text file and you’ll see HCO3- = .001 moles, which matches your bulk constraint. You can of course look in the plot file as well. The “species concentration” variable type refers to all the individual aqueous species, and the “components in fluid” refers to bulk composition. You could alternatively use the input below and you’d get the same results. swap CO2(aq) for HCO3- CO2(aq) = .001 molal pH = 6 Na+ = 1 molal balance on Cl- go Of course, if you use units like mg/kg you’ll have to account for the mole weight of whatever species is in your basis, or use the “as” setting to specify concentration in terms of mg Carbon, mg CO2, etc. Since we calculated the complete distribution of species, we can take our results from before and test out the “free” constraint setting: swap CO2(aq) for HCO3- CO2(aq) = .0005060 free molal pH = 6 Na+ = 1 molal balance on Cl- go Running this latest version should give equivalent results. For your second question: Act2 calculates the simple type of diagram that geochemists have traditionally drawn by hand. By design, a number of simplifications make the calculation straightforward (but still laborious). For example, you can only have logarithmic axes (log activity, pH, pe or Eh, etc.). There’s no mass balance. You have to work in terms of activity, rather than concentration. The diagrams are in many cases fairly similar, though. If you want a general picture of how chemistry of a particular system works, a traditional calculation might be fine. Certain applications might demand a more rigorous solution. Beyond recreating activity or redox-pH diagrams, though, Phase2 calculates other diagrams that Act2 cannot even contemplate. You can include surface complexes in your calculations, for example. Or, you can diagram how various properties (solubilities, saturation indices, gas pressures, and so on) vary across the diagram using color maps or contours. You can account for isotope fractionation or kinetic reactions. You can plot assemblages (combinations) of stable minerals under different geochemical conditions. Basically, it has all the capabilities of React, so it's almost endlessly configurable. Hope this helps, Brian Farrell Aqueous Solutions LLC
  2. Hi Polly, For the two-layer surface complexation dataset, you need to specify a site density or densities for each sorbing mineral. If you don’t, the program can’t account for the existence of the surface. If Ferrihydrite contains both of the sites you defined, >(w1)SOH and >(w2)SOH, your entry might look like this: Ferrihydrite surface area= 600.0000 m2/g 2 sorption sites >(w1)SOH site density= .0050 mol/mol mineral >(w2)SOH site density= .2000 mol/mol mineral You should, of course, supply values appropriate for your sorbing mineral. In GWB14, by the way, you can alternatively specify site density in sites/nm2, as you sometimes see in the literature. You should also remove the entry for >(w) in the surface species section. I’m not sure if it was intentionally put in the dataset like this, or it was a stub of an entry that you didn’t finish, but there’s no reaction, stability, or mole weight and that’s causing a problem. Finally, the surface dataset has a field where the user specifies the thermo dataset to use with it. The aqueous species that are included in the surface reactions, as well as the sorbing minerals, are drawn from the thermo dataset you specify. If you plan to use this surface dataset with your custom thermo dataset, it might be best to specify that custom thermo dataset within the surface dataset. Note that the sorbing mineral you’ve chosen, Ferrihydite, is not in your custom thermo dataset, so you may need to make further modifications to either your thermo or surface dataset. You’ll probably have to make these modifications in a text editor, like Notepad, since TEdit can’t open the unproperly formatted dataset. As for your thermo dataset, I don’t think you should include SiO2, H4SiO4, and Si(OH)4(aq) as separate basis entries. They all represent essentially the same thing. Pick one and write all reactions in terms of that species. Hope this helps, Brian Farrell Aqueous Solutions
  3. Hi Thomas, I hope you're doing well. I happened to come across this old post and thought you might be interested to know about Phase2, an app introduced with GWB12. The program essentially traces a stacked series of reaction paths, as you'd run in React, to traverse two geochemical variables of interest. You can set up a diagram with sliding log f O2(g) and fixed pH along the y axis, then sliding pH with fixed f O2(g) along the x axis. The basis fluid is defined in terms of total concentrations, as in React, and mass is conserved throughout the calculation. You can also titrate a species into a fluid initially devoid of it to consider a range of total concentrations. By titrating SO4-- in log steps you can make a diagram much like you've envisioned, with the sulfur speciation depending on the y axis variable, log f O2(g). You can render the calculation results in various types of 2D diagrams or in horizontal or vertical cross-sections through the diagram. For the 2D diagrams, you can plot "true predominance" for any basis species or element (the species accounting for the most mass predominates, not the species with the highest activity), mineral assemblage diagrams (which show every stable mineral or combinations of minerals), and render any variable as a color map, mask, or contour. In a log f O2-pH diagram, for example, you can diagram the stable iron minerals under various conditions and contour the concentration of dissolved Fe. Please visit GWB.com/phase2.php to learn more. I'm happy to send a demo if you'd like to try it out. Cheers, Brian Farrell Aqueous Solutions LLC
  4. Hi Polly, Thanks for providing the thermo dataset. I'm taking a look to see if I can offer any suggestions. Regards, Brian
  5. Johan, Some time ago you tried to report the pore volumes displaced from a ChemPlugin instance in GWB12. I’m writing to let you know that GWB14 is now available, and ChemPlugin instances now plot pore volumes displaced and have the value available in the report command. Additionally, React now plots pore volumes displaced from flush and flash models. I hope you enjoy using the software. Cheers, Brian
  6. Dear GWB users, GWB14 is here! A new compute engine makes it a surface chemistry powerhouse. Plus, our latest release features user equations in GSS datasheets, high-temperature Pitzer coefficients, cluster computing, and flexible input for thermo data, just to start. Visit our GWB14 page to learn more. GWB subscribers upgrade automatically. Can’t wait another minute? Click “Check for updates” on your GWB dashboard. Not subscribing yet? Take advantage of one of our flexible plans—fixed or floating, 3 months to 3 years! Or, convert that old GWB license to a modern subscription and a free kick-off period is on us. Contact us today for a quote, or go shopping at our online store and you’ll be up and running in minutes. Sincerely, Brian Farrell Aqueous Solutions LLC
  7. Hi Sanjoy, I’m writing to let you know about a new feature in the GWB14 release. You can control species loading in a calculation by specifying a temperature range over which thermodynamic data should be available. In your case, many species have thermo data available at 25 C, but not other temperatures, so your calculations at 25 C and 26 C loaded a different set of species, which caused your results to differ more than expected. By specifying a temperature range, say 10-150 C, you can ensure that any calculations within that range load the same exact set of species. It’s basically like automatically suppressing a set of species with limited thermo data, simply by setting a temperature range. You can read about the span command in the GWB Command Reference. The new release has many more new features as well. Please let us know if you’re interested in trying GWB14. I’m happy to send you a demo. Cheers, Brian
  8. Hi Bill, I’m writing to let you know about a new feature available in GWB14. You can control species loading in a calculation by specifying a temperature range over which thermodynamic data should be available. You can additionally force the program to always get log K values by evaluating a polynomial, even when the calculation is isothermal at a principal temperature. In this case, the program would normally use the value directly from the thermo dataset. The difference is small, but it’s why the endpoint of your polythermal path and your isothermal calculation post-pickup were slightly different. You can read about the feature in section 6.92 span in the GWB Command Reference. The new release has many more new features as well. Please let us know if you’re interested in trying GWB14. I’m happy to send you a demo. Cheers, Brian
  9. Hi Mauricio, I’m writing to let you know that GWB 14 is now available. The new release includes support for several different polydentate surface complexation formalisms. You had to convert the log K for a bidentate reaction in your surface dataset to be consistent with the method in GWB9, but now you can choose one of four methods consistent with your log Ks and specify that in your surface dataset. React will read the dataset and evaluate mass action laws according to the convention you specified. In your case, you could set the stoichiometric approach in the dataset’s header and use the original literature reference’s log K value of 4.6. The calculation will reproduce figure 3A in your plot. However, this approach is not satisfactory, as described in the reference above, and it will be in error at other concentrations of the sorbing mineral. The better approach is to convert the log K, as you did before, to use the mole fraction approach, which is entitled Hiemstra-VanRiemsdjik in GWB14. This is the default approach in GWB14, so you can leave the method unspecified in your surface dataset, but to be clear it’s best to set the method in the header. With this approach, changing the amount of the sorbing mineral should still yield reasonable results. Please let us know if you’re interested in trying GWB14. I’m happy to send you a demo. You can read about the feature in section 2.5.8 Polydentate sorption in the GWB Essentials Guide. Regards, Brian
  10. Hi again Dave, Upon closer inspection, you can include a user-defined analyte in a radial plot as long as you put it in the "Components in fluid" category, since this is where the normal basis species plot in Gtplot. If you instead choose a category like "Chemical parameters" and pick Concentration for the dimension, it won't be recognized by the water chemistry plots. Still, if you want to do any thermodynamic calculations including Be, you'll need to use a dataset that includes the relevant reactions. Hope this helps, Brian
  11. Hi Dave, The radial diagram can plot uncharged species when you choose units like mg/l, as you've done. However, the special plots, including the radial plot, only diagram basis and redox species in your spreadsheet. They do not include user-defined analytes. User analytes can only be plotted in xy plots. You might try using a different thermo dataset, like thermo.com.V8.R6+.tdat. That has Be++ as a basis species. Or, you can modify the thermo dataset you're using by adding the element Be and any species that you need, then load that dataset into GSS. Hope this helps, Brian Farrell Aqueous Solutions LLC
  12. Hi Polly, You attached a .lnk file (a shortcut), not your actual GWB thermo dataset, which should be a .tdat file. For one thing, you should check to ensure that your dataset and your spreadsheet are using the same exact set of reactions and log K values. I looked at how you set up your script, but I couldn’t run it because I don’t have the thermo dataset. In any case, it doesn’t look like you took my advice. Can you explain why you’ve set your calculation up with trace quantities of all your basis entries, then titrated large amounts of all your minerals of interest? As I mentioned before, a common way to find solubility is to swap your mineral of interest into the basis, then find the total dissolved concentration of the constituent of interest. In my example to find the solubility of Kaolinite, the mineral was swapped into the basis and the concentration of the Al+++ component in the fluid was determined. The sliding pH part is a convenient method to make a type of solubility diagram, to see how the solubility changes with pH, but if you don’t care about that part, you can certainly omit it to look at solubility under a single condition – your groundwater of interest. I would repeat the calculation for each mineral of interest. Swap a mineral like Pd(OH)2(s) into the basis in place of Pd++, but use the measured concentrations for all of your other ions. Find the total concentration of Pd++ in the fluid in equilibrium with your Pd(OH2(s). Then move on to SnO2(am), swapping that for Sn++++ but leaving all the other ions, like Pd++, at their measured values. It’s likely that your spreadsheet is performing a series of calculations, so I think you need to do the same. As I also mentioned, you need to look at the output and ensure that your mineral of interest is still present in equilibrium with the fluid. If you swap amorphous silica into the basis to find its solubility, React will precipitate quartz, which is more thermodynamically stable, unless you suppress it or disable precipitation entirely. If you don’t, you’d actually be finding the solubility of quartz, which is lower than the amorphous silica, so it’s important to check your output carefully and adjust your input as necessary. Regards, Brian Farrell Aqueous Solutions LLC
  13. Hi, Thanks for catching that. This issue has been fixed. It will be available in the next maintenance release. Regards, Brian Farrell Aqueous Solutions
  14. Hi Silvain, The reaction for Pyrite in the LLNL dataset, thermo.tdat, is shown below: Pyrite + H2O = Fe++ + 1.75 HS- + .25 SO4-- + .25 H+ You’ll notice that the reaction is written in terms of the basis species SO4-- and the redox species HS- because the oxidation state of sulfur in pyrite is between that of SO4-- and HS-. When the reaction gets loaded into an app like Rxn, SpecE8, or GSS, though, it’s rebalanced to be in terms of the basis species only: Pyrite + H2O + 3.5 O2(aq) = Fe++ + 2 SO4-- + 2 H+ This is because each of the apps assume that redox coupling reactions are enabled by default. In any case, to be able to calculate a saturation index for a mineral like pyrite, you need a way to constrain every species in the reaction. So in addition to adding Fe++ and SO4-- to your spreadsheet, you need to add O2(aq) (or Eh or pe), as well as pH. In this case, the concentration you set for the SO4-- component should represent all the sulfur in the system. The program uses the oxidation state you supply to find the equilibrium distribution of mass between sulfate and sulfide species. You can alternatively decouple HS- from SO4-- to set up a disequilibrium model. This is done from the Config > Redox Couples dialog in Rxn and SpecE8, and from Data > Redox Couples in GSS. Alternatively, simply adding the redox species HS- to your spreadsheet triggers HS- to be decoupled from SO4--. In this case, you don’t need to supply a measure of oxidation state, but you do need to provide separate measurements for the SO4-- and HS- entries. Hope this helps, Brian Farrell Aqueous Solutions LLC
  15. Hi Frank and Andrew, Act2 uses a simple analytical method to calculate equilibrium lines and assemble them into Pourbaix diagrams, so there's no difficulty in creating a diagram that spans large Eh and pH ranges. If you wanted, you could set the Eh and pH to span the range -100 to 100, and it would draw the diagram. With Phase2, however, you're setting up numerical reaction path models. In a model of the aqueous phase, working far outside the stability limits of water (i.e., the bottom left and top right corners of an Eh-pH diagram) can be difficult. To investigate your calculations, try overlaying some contour plots on your 2D diagram, or better yet, just look at a simple xy plot of the diagram’s left edge. You can select the left-most vertical cross-section through the entire diagram, use the “Go Y” option in Phase2 to calculate only the left edge of the diagram, or set up a React script to reproduce the left edge of the calculation. Whatever you choose, start out by plotting the Mass of Solution or Fluid volume vs. Eh. You'll see they're initially enormous. If you make a plot of species concentration, you’ll see it’s due to the extremely high concentration of H2(aq) that would exist under your initial conditions, which are far outside the stability range of water. Next, try plotting the concentration of your metal component of interest (U++++ or Al+++ in the system) and you should see that your initial conditions are honored. In the U example, U++++ was set to 1e-10 mol/l, but under the initial conditions that’s equivalent to .19 molal! That’s why so many minerals are stable throughout the diagram, compared to the Act2 calculation. As for the Al example, Al+++ was set to 1e-5 mol, and there’s still 1 kg of solvent in the system, so the initial Al+++ molal concentration isn’t skewed the way the U++++ was. You didn’t attach an Act2 script, Andrew, but presumably it’s not as different as the U calculations were. As for the failures you’re encountering, unfortunately it’s likely to happen when you’re so far outside water’s stability region, as in the corners of an Eh-pH diagram with a traditional range. In a log f O2(g)-pH diagram, by contrast, you don’t have to include such extreme conditions. Since a large portion of the area in an Eh-pH diagram is likely to be masked, log f O2(g)-pH diagrams can be a nice alternative in that they fill more of the plot area with useful information, rather than blank space. If you need to know the Eh, you can always plot contours on the log f O2(g) diagram. Whatever diagram you choose, it’s common to use a narrower range in these types of diagrams. I think when you do that you’ll find that you can reproduce an Act2 diagram much more closely. There will still be differences, of course. Boundary lines can be somewhat curved, rather than straight, reflecting the fact that Phase2 is solving a complete multicomponent calculation at each point in the grid instead of drawing equilibrium lines. It includes mass balance and activity calculations, unlike Act2. And whereas an Act2 diagram shows the stability of minerals and predominance of aqueous species (in terms of highest activity), Phase2/P2plot’s predominance map strictly shows the species accounting for the most mass at each point in the diagram. In other words, a mineral’s stability field (which you can see with an assemblage map) can be slightly larger than the area in which that mineral predominates all other species. Sorry for the delay in responding. It looks like we missed the original post. Hope this helps, Brian Farrell Aqueous Solutions
  • Create New...