Jump to content
Geochemist's Workbench Support Forum

Brian Farrell

Admin
  • Posts

    1,060
  • Joined

  • Last visited

  • Days Won

    11

Everything posted by Brian Farrell

  1. Hi Nikoleta, You can use Pitzer datasets with Act2. The app will work properly with the data it's given, but the results may not be especially interesting and can be a little misleading. Unlike Debye-Hückel based models, which account for the distribution of aqueous species explicitly, Pitzer models by design include almost no speciation. Most species are treated as if they’re completely ionized; in most published datasets only a limited number of basis species protonate and deprotonate or form ion pairs that are worth including as distinct species. You’re much better off using a Debye-Hückel dataset instead of a Pitzer dataset for drawing diagrams. When you load a Pitzer dataset, the message that pops up simply alerts you that you’re not using a true speciation (Debye-Hückel) model. Your chosen dataset is in fact loaded into the app and used to construct the diagram. You can verify this by going to File – File Properties – Thermo Data. By the way, the current release includes several improvements to the Pitzer equations implemented in GWB8. The Pitzer models now accept species of any charge. Additionally, the form of the temperature polynomial for virial coefficients in the H-M-W model has been extended. Regards, Brian Farrell Aqueous Solutions LLC
  2. Brian Farrell

    GSS

    Hi Gordon, Are you launching SpecE8 from GSS? Or dragging a sample from GSS into SpecE8? Can you please attach your GSS file and your incomplete SpecE8 file so that we can take a look? Thanks, Brian Farrell Aqueous Solutions LLC
  3. Hi John, The first step is to determine the microbial rate law that’s applicable to your situation. After that, one can specify the rate law within the GWB using the "power", "powerA" and "powerD" settings, which I’ll explain below. To get started, let’s look at half-cell reactions in general: Donating half-reaction: ΣD = ΣD+ + ne- Accepting half-reaction: ΣA + ne- = ΣA- where D and D+ are all the species on left and right sides, respectively, of the e- donating half-reaction, and A and A- are the species on left and right sides, respectively, of the e- accepting half-reaction. To keep this simple, let’s look at the generalized kinetic terms for electron donation (FD) and acceptance (FA), assuming for now that the exponents applied to the various species (the beta terms in the GBRM textbook) are 1. FD = (ΠmD)/( ΠmD + KD ΠmD+) FA = (ΠmA)/( ΠmA + KA ΠmA-) Here Π is the product function, m refers to the molal concentration of the species in the reactions, and KD and KA are constants. Let’s look at microbial sulfate reduction as an example: CH3COO- + SO4-- = 2 HCO3- + HS- Donating half-reaction: CH3COO- + 4 H2O = 2 HCO3- + 9 H+ + 8 e- Accepting half-reaction: SO4-- + 9 H+ + 8e- = HS- + 4 H2O We can write out the kinetic terms in general form by taking species from the left and right sides of the half-cell reactions and inserting them into the equations: FD = (mCH3COO-)/((mCH3COO-) + KD(mHCO3-*mH+)) FA = (mSO4--*mH+)/((mSO4--*mH+) + KA(mHS-)) If we wanted to set this rate law, we’d use the “power” keyword for species in the numerator of either kinetic factor (I think this is straightforward enough), “powerA” for species in the denominator of the accepting half-reaction kinetic factor, and “powerD” for species in the denominator of the donating half-reaction kinetic factor. Looking at the donating half-reaction first, you would set: mpower(CH3COO-) = 1, mpowerD(CH3COO-) = 1 mpowerD(HCO3-) = 1 mpowerD(H+) = 1 And now, the accepting half-reaction: mpower(SO4--) = 1, mpowerA(SO4--) = 1 mpower(H+) = 1, mpowerA(H+) = 1 mpowerA(HS-) = 1 The “1” settings simply mean the concentration of the species are used in each part of the rate law (a “power” of 1), rather than being squared, as an example (mpower = 2) or raised to some non-integer value (mpower = 1.2). You don’t have to “pick” the species to go on the left or right side of the denominator for either term (i.e. whether they appear by themselves or are multiplied by the kinetic constant). They’re assigned to one side or the other based on what side of the donating half-reaction they’re on. All you have to specify is that they’re in the denominator of the kinetic term for donation (mpowerD) or acceptance (mpowerA). Now, species whose concentrations don’t change much don’t need to be carried in the rate law. Perhaps the pH is buffered, and reaction of the microbially produced sulfide with ferrous iron in solution precipitates FeS of some sort, so the amount of HS- in solution doesn’t build up. In that case, only the CH3COO-, SO4—, and HCO3- change concentrations much. We could simplify our rate law to this: FD = mCH3COO-/(mCH3COO- + KD*mHCO3-) FA = mSO4--/(mSO4-- + KA) In this case, we just set mpower(CH3COO-) = 1, mpowerD(CH3COO-) = 1 mpowerD(HCO3-) = 1 and mpower(SO4--) = 1 mpowerA(SO4--) = 1 The rate law might be even simpler. The acetate might be supplied in excess, and there might be quite a bit of HCO3- in solution so that its concentration doesn’t change much. In that case, the rate law might look like a traditional Monod equation, written for the electron acceptor. In that case, you just set mpower for SO4—to appear in the numerator and mpowerA for SO4—in the denominator. As for why they’re all set to 1? The beta values are determined empirically through careful experiments, but they’re commonly taken to be 1. This is written in the paragraph after equation 18.24 in the GBRM text and is explained in a bit more detail in Jin and Bethke 2005 (the text in section 3.1 and their Figure 1). The reference also discusses how the kinetic terms might be written in a general form accounting for all of the species in the donating and accepting half-reactions, and where simplifications are commonly made. As far as I’m aware, all of the microbial example in the GBRM textbook have “mpower”, “mpowerD”, and “mpowerA” set to 1. You should know that the “mpower” variable, for species appearing in the numerator, is also used in the various other kinetic reactions built into the GWB (mineral dissolution, complex dissociation, gas transfer, redox transformation). Perhaps the example you found with “mpower” set to greater than 1 is one of these reaction types. A complexation reaction A + A -> B, for example, might proceed at a rate r = k * (mA)^2. In that case, mpower(A) is set to 2 (note that’s “mpower()”, not “mpowerA()”). Hope this helps, Brian Farrell Aqueous Solutions LLC
  4. Hi Clark, I think the issue here is how you’re constraining the amount of the sorbing species. By default, the concentrations you specify on the Basis pane refer to the amount in the fluid. React figures how much additional mass is present on the surface. This option is useful when you know the composition of the fluid, such as when you sample water from a well. An alternative method is to set the sum of dissolved and sorbed mass on the Basis pane using the “sorbate include” option. In a lab experiment, for example, you might know the total mass of a species that you add to a reactor with a sorbing mineral, but not how much is in solution or how much gets sorbed. If the amount of sorption is pH-dependent, you can set different initial pH values only if you’re using the “sorbate include” option. The constraints you specify on the Basis pane in this case must correspond to measurements of the sum of dissolved and sorbed mass, of course. Otherwise, with React’s default setting (“sorbate exclude”) you have to start with the known values in solution at the particular pH. For more information, please see the “sorbate” command in the GWB Reference Manual. By the way, I noticed that Mg++ also sorbs in your model. It’s probably best to pick a non-sorbing species for the charge balancing ion. Regards, Brian Farrell Aqueous Solutions LLC
  5. Hi, If you're using the free GWB Student Edition license, the SpecE8 program will be your best bet to do these calculations. The Redox disequilibrium lesson in the GWB Online Academy demonstrates how to calculate available energy in the environment. If you'd like more background material, the subject is explained in more detail in Chapter 7 of the Geochemical and Biogeochemical Reaction Modeling text. If you're interested in usable energy, which is the difference between the available energy and the energy maintained by a cell, you'll have to make an additional calculation. The theory and procedure is described in Bethke et al.'s The Thermodynamic Ladder in Geomicrobiology. If you have access to the React app (it's included in the GWB Professional and Standard packages) then you can perform the calculation at a variety of pH values more quickly by using a sliding pH path. Hope this helps, Brian Farrell Aqueous Solutions LLC
  6. Hi Frank, I think your best bet is to set up a kinetic model. The example in section 26.4, Ostwald’s step rule, in the Geochemical and Biogeochemical Reaction Modeling text is very similar to what you’re trying to do. As you’re doing, suppress the other Fe minerals. Then set the initial fluid in equilibrium with Fe(OH)3(ppd) and set a kinetic rate law for both minerals. You’ll either want to set a small initial mass for the Goethite on the Reactants pane or account for its nucleation in some way. Hope this helps, Brian Farrell Aqueous Solutions LLC
  7. Hi Angelica, It's good to hear from you again. Hope all is well. 1)You could add TOC or DOC as a User-defined analyte (see 3.3.5, User-defined analytes, in the GWB Essentials Guide). That way you can store it in your spreadsheet and make plots, but it won't factor into any of your calculations. For a calculation you need the actual chemical species that are present, such as acetate or formate, or perhaps you could approximate the system by assuming that a single species accounts for all of the DOC mass. 2)You can add data for Mo species to the thermo dataset you're using (be sure to give it a new name). Either take it from the literature or copy from another dataset, like thermo.com.V8.R6+.tdat. Or, just load that dataset directly. You'll have to take a look at the Mo species and reactions in the dataset (the filter option is handy for this, see 9.2.1, Show, in the GWB Essentials Guide ). Find the basis species, redox species, secondary aqueous species, etc. and pay attention to how the reactions are stuctured. I think you'll find that MoO4-- is the basis species for Mo in thermo.com.V8.r6+.tdat. For more information on editing thermo datasets, see Chapter 9 in the GWB Essentials Guide. 3)You don't need to know the speciation in advance, but you may want to make some assumptions about the oxidation state and whether redox-sensitive species are in a state of redox equilibrium or disequilibrium (see 7.3, Redox disequilibrium, in the GWB Essentials Guide). First, look at how basis and redox couples for your elements of interest are set up in the thermo dataset. Add a basis species to your spreadsheet if you want equilibrium. Or decouple a redox species from the basis species if they should not be in equilibrium (go to Data - Redox Couples... in GSS to decouple the redox species CH4(aq) from the basis species HCO3-, for example - this effectively makes CH4(aq) a new basis species that is now independent from the HCO3-), then add your desired basis species. The "as" option is a convenient feature for entering the mass of analytes how they're often reported in routine lab analyses (as an element instead of an oxyanion, for example). For more information, see 7.1, Example calculation, in the GWB Essentials Guide. For boron, sure you can use mg/l as B. For the redox-sensitive elements, such as Fe or As (again, check the thermo dataset for basis and redox species) you need to first make an assumption about redox state. If it's all As(V), for example, you would decouple the redox species AsO4--- from the basis species As(OH)4- and add AsO4---. If it's all As(III), decouple them and add As(OH)4-. If As(V) and As(III) are in equilibrium, add the original basis species As(OH)4- without decoupling. Any measure of oxidation state you add (such as Eh or free O2(aq) concentration) will distribute mass between As(V) and As(III). After you make an assumption about redox coupling, the "as" As option may be a convenient way to enter the concentration. 4)In the Initial pane you set up the initial equilibrium system. Most likely you'll enter the composition of the original pore fluid, and you'll swap in minerals known to be in equilibrium with that fluid (swap quartz for SiO2(aq), for example). In the Reactants pane you could add kinetic minerals (those not initially in equilibrium with the system). In the Inlet pane you add your permeating solution. I would choose a linear domain for a column. As for the Medium pane, the porosity and dispersivity are properties of the medium. The diffusion coefficient in real life might vary from one component to another, but in the model you can only choose a single value that applies to all components. Since that's the case, you might choose it for the component you're most interested in. It really shouldn't make much of a difference, though, because diffusion is a relatively unimportant process in all but the most slow-moving of waters. Hope this helps, Brian Farrell Aqueous Solutions LLC
  8. Hi Bob, I'm assuming the original f CO2 setting was arbitrarily chosen to give a very small amount of dissolved carbonate so that calcite starts off undersaturated. If that's the case, you probably want to go a fair amount lower considering the high pH. A fugacity of 10^-14 or lower worked well. You can check the concentration of the CO3-- component in the fluid at the start (before reaction with the atmosphere) to verify this makes sense. After that, I could do a few things to get the model to run with reasonable results. I could set Ca++ to the charge balancing species, since it's very abundant. Or, I could set a higher concentration background electrolyte, such as 10 mmolal Na-Cl, with Cl- as the balancing ion. Finally, I could simply turn charge balancing off for the calculation. In each case, Portlandite and then Calcite precipitate as the f CO2 increases and pH decreases. Hope this helps, Brian Farrell Aqueous Solutions LLC
  9. You're welcome. I hope the discussion helped.
  10. Hi rarthur, You cannot currently fix fugacity on a node-by-node basis in X1t. The most elegant solution would be to use ChemPlugin instead of X1t. ChemPlugin is a software object derived from The Geochemist’s Workbench. It’s a brand new product that we’re really excited about. It can be embedded within software programs, such as a simple flow code that you write, to handle the reactions and transport. An instance of ChemPlugin is spawned for each nodal block; the instances link together but each maintains its own memory space. As a result, you have a lot more flexibility in setting up a chemical model. For example, separate instances can load different thermo datasets, use completely different buffer minerals or kinetic rate laws, or maintain separate fugacity constraints, as you desire. We have a number of example programs to simulate everything from simple titrations and flow-through reactors to 1D reactive transport. If you’re interested in trying a demo, we could help you get up and running. The faster workaround is to implement gas transfer kinetics in your X1t model. In a kinetic gas transfer model, you set the fugacity of a gas in an external reservoir along with a rate constant and a specific contact area between the fluid and that reservoir. These three parameters are field variables, so you can set them node-by-node. You could set up your model so that exchange is rapid enough to maintain your desired fugacity in the nodes above the water table. You should be careful to ensure that exchange is not so rapid that the program is bogged down by taking very small time steps. For the nodes in the saturated zone, you can prevent gas transfer by setting the rate constant or specific contact area to 0. Hope this helps, Brian Farrell Aqueous Solutions LLC
  11. Hi Stacey, You’re not seeing any sorption because your sorbing mineral, La(OH)3, does not precipitate at all during the run. I took a look at the species in solution and noticed that the La++ ion is by far the predominant lanthanum species. It is much more stable than the La+++ ion. La(OH)3 has a very low saturation index because of the low La+++ activity. If you don’t expect the La++ to be important in your system, you could simply suppress it. Or, you could remove all La(II) species from consideration by decoupling the La++ from La+++. If you suspect the thermo data is wrong, you could also alter the log K for the reaction between La++ and La+++. Whatever you choose, a higher La+++ activity should cause La(OH)3 to precipitate and its sorbing sites to form. By the way, I noticed that you are gradually titrating HPO4-- into the system as you increase the pH. You end up with more total phosphorous in the system at pH 10 than at pH 5. Is this what you want? Just wanted to check. Hope this helps, Brian
  12. Thanks, I have an idea but I'd like to be sure. Please send the custom thermo dataset you're using to support@gwb.com. Regards, Brian
  13. Hi Stacey, Please attach the React script, which shouldn't be too large, and I'll see if I can spot any problems. I'll let you know if I need the thermo dataset. Thanks, Brian
  14. Hi Stacey, If you attach your React script and your custom thermo dataset I'll be able to take a look at your problem. Regards, Brian
  15. Hi Stacey, I noticed a few problems with the dataset which I’ll try to explain below. All .sdat surface datasets include in the Header a reference to the thermo dataset that supplied all the aqueous species and minerals involved in the surface complexation reactions. The dataset you supplied refers to thermo.tdat, which does not contain any lanthanum species. If you’ve modified that dataset to include lanthanum species, it’s best practice to save the dataset with a new filename, such as thermo+La.tdat, rather than overwriting the original file. Or if you’re using another dataset that already contains lanthanum species, such as thermo_minteq.tdat, you should make sure that the surface dataset points to that particular file. Otherwise, TEdit will issue some warnings when it reads your surface dataset because it doesn’t know the mole weight of Lanthanum. You’ve specified La(OH)3 as the sorbing mineral, but you haven’t specified the site density of your sorbing site on that mineral. Even if the mineral is present in React, it won’t have any sorbing sites based on the dataset you supplied, so you won’t see any sorption. The program expects the sorbing sites (the basis surface species) to be uncharged. In FeOH.sdat, for example, you can see >(s)FeOH and >(w)FeOH, both of which have a charge of 0. Your sorbing site has a charge of +2, however. This causes a problem. You’ll have to designate an uncharged surface species as the sorbing site. This will likely affect the charge of all your complexes. This isn’t really a problem, but it is a little weird that some of your reactions are written in terms of H+ and some in terms of OH-. It’s probably best for anyone viewing the dataset that you stick with one or the other. My recommendation is H+. Another tip for readability is to designate surface species with a “>” symbol and to include “+” or “-“ symbols in the names of species so that you can immediately tell the charge of a species just by looking at its name. In the FeOH.sdat dataset we distribute, for example, you can find species such as >(s)FeOH2+, >(s)FeOH, >(s)FeO-, and >(w)FePO4- -. It’s really easy to tell just by looking at them that they’re all surface species and that they have charges, respectively, of +1, 0, -1, and -2. Hope this helps, Brian Farrell Aqueous Solutions LLC
  16. Hello, You can find a quick tutorial on calculating species' concentrations and activities here. For more information, please see section 7, Using SpecE8, in the GWB Essentials Guide. You can access the Guide from the Help menu of any GWB program. Regards, Brian Farrell Aqueous Solutions LLC
  17. Dear GWB users, Registration is open for our famous Reactive Transport Modeling workshop in Paris. Join us in the world’s most cherished city for only €180 when you register for the Goldschmidt 2017 conference! The hands-on workshop takes place 12-13 August, immediately preceding the Goldschmidt. Simply add the Reactive Transport Modeling workshop to your cart when you register, or return anytime and add it to your purchases. This workshop fills quickly, so don't delay! Even if you're not attending the meeting, you can still join the workshop. Please see our Paris workshop page for more details. Regards, Brian Farrell Aqueous Solutions LLC
  18. Hi, Occasionally weird things happen with virtual machines. If you were able to see your activation on the first machine the correct procedure would be to deactivate, but since you can't I've gone ahead and reset your license from our end. You should be all set to activate on the new machine. I hope you enjoy using the GWB. Cheers, Brian Farrell Aqueous Solutions LLC
  19. Glad to hear that you're all set. I hope you enjoy using the software. Cheers, Brian
  20. Hi Marie, There are two ways to do this. The first is to simply set a value for the HCO3- basis entry. The HCO3- entry will already be included when you open a new GSS spreadsheet, but if you delete it, just click the "+ analyte" button at the bottom of GSS, then choose Basis species -> HCO3-. Then you set the bulk concentration of the HCO3- component. In other words, it is the sum of CO2, HCO3-, CO3--, NaHCO3, etc, not just the free HCO3- species. This is the same way you typically define the majority of basis entries in a calculation. What you enter for HPO4--, as another example, is a bulk constraint equal to the sum of H2PO4-, HPO4--, PO4---, etc. species. You can choose from a variety of units to suit your analyses. The HCO3- basis entry is a special case in that you can alternatively set the carbonate alkalinity. The carbonate alkalinity refers to the sum of the concentrations in solution of the free HCO3- and CO3-- species. To specify this value, click "+ analyte" -> Chemical parameters -> Carbonate alkalinity. If your lab results list the bicarbonate and carbonate contributions to carbonate alkalinity separately, and both of them are mg/l as CaCO3, just add them together and enter that total for the carbonate alkalinity. You cannot, of course, simply add the concentrations of free species in mg/l units because each species has a different mole weight. Hope this helps, Brian Farrell Aqueous Solutions LLC
  21. That's good to hear. I hope you enjoy using the software. Regards, Brian
  22. Hi Ben, I’m glad to hear the suggestions were helpful. If you send me an input file that causes React to crash I’ll take a look. You can decouple the CrO4--/ Cr+++ redox pair, but doing so by definition eliminates the provision for equilibrium between the two oxidation states. They’ll be treated as completely separate entities. Your example as it’s currently set up, with FeSO4 being titrated into the system, will no longer cause chromium reduction, unless you incorporate redox kinetics. There are a variety of organic species included in thermo.tdat (the default GWB thermodynamic dataset) and thermo.com.V8.R6+.tdat (an expanded version) such as acetate, formate, lactate, etc. There is no generic dissolved organic carbon, though. Is this something that’s already present in the system, or another reductant that’s added to the system like the FeSO4? Cheers, Brian
  23. Hi Zack, It's hard to say what might be causing that problem. We haven't encountered any problems running GWB Student Edition on Windows 10 machines in the past. Here's an article that lists some solutions to the "This app can't run on your PC" problem in general: http://windowsreport.com/app-cant-run-windows-10/ Have you been able to run other software (that you download from the internet, not from the Windows Store) on your Windows 10 Education system? Thanks, Brian Farrell Aqueous Solutions LLC
×
×
  • Create New...