Jump to content
Geochemist's Workbench Support Forum

Jia Wang

Admin
  • Posts

    729
  • Joined

  • Last visited

  • Days Won

    29

Everything posted by Jia Wang

  1. Jia Wang

    Kinetics

    Hello Cali, Unfortunately, I can not run your script without your custom thermo dataset. Would you mind posting your custom dataset so someone can take a closer look? My apologies for missing your post earlier. The GWB staff doesn't receive notifications when a new thread is posted in the archive. In the future, please post on the front page of the forum. Best, Jia Wang
  2. Hello Jason, I took a quick look at your input files and noticed a couple of issues with the set up. In the Reactant pane, you have set up reaction pathway for HCl to be titrated into your system. As it is, React titrates in HCl until the it reaches 36 wt% of your fluid and not titrating an acid of 36 wt% of HCl. You would need to create the 36 wt% acid you want to use before setting it as a reactant. To do so, set up the basis pane with 1 kg of H2O and enter H+ and Cl- as a basis species and enter the concentration corresponding to the acid. Select Run -> Go and have React speciate this fluid. You can up the pickup feature and use the resulting fluid composition as your reactant (Run -> Pick up -> Reactant -> Fluid). Throughout the simulation, your reactant is titrated linearly into your fluid. You can scale down the amount of reactant titrated into your system in the reactant times box (e.g. 0.01). After picking up the results, return to the basis pane and enter the basis species and concentrations for the basis species as given by the geochemical fluid analysis. I noticed that you are using the alkalinity measurement directly as the component concentration for the carbonate species. In React, alkalinity units accepted are in terms of CaCO3 or in equivalents of acids (Chapter 6.1 Units in the GWB Command User Guide). You would want to convert your alkalinity units from your geochemical analyses to either one of the accepted units above. To convert to units of meq_acid/l, you would divide the alkalinity reported as mg/l as HCO3- by the molar mass of HCO3-. My apologies for the late response. This part of the forum was set up as an archive for older posts, so I don't receive notifications when people add new topics there. If you post to the font page, though, notifications to the GWB staff will be sent out. Hope this helps, Jia Wang
  3. Hello Spencer, You can certainly calculate the redox species speciation given the proper constraints (e.g. the Eh or O2(aq) concentration) and total component concentration. GSS can use SpecE8 to calculate values for your spreadsheet, including species concentration. To do so, go to "+ analyte" and select "Calculate with SpecE8". Then select species concentration for variable type. In your example, you would select Fe+++ and Fe++. The species concentration calculated should be added to your spreadsheet once you hit apply at the bottom of the analyte dialog. Not that that the order of the analytes in the data sheet is important. In its calculations, SpecE8 will use the first constraint it finds for a particular basis component. For example, if both Eh and O2(aq) are present, SpecE8 will use whichever is first in the data sheet. You can easily change the order of the analytes by dragging, or hide analytes you don’t want used in the calculations. For more information, please refer to section 3.2.5 Calculating analytes in the GWB Essentials User Guide. Hope this helps, Jia Wang
  4. Hello Alex, X1t is set up so that you set the flow from the inlet to the outlet across the nodes that make up the domain. You can set up the domain as if it is a vertical column since the flow direction is arbitrary in X1t. Hope this helps, Jia Wang
  5. Hello Matt, Glad to hear it helped! I hope you enjoy using the software. Best, Jia Wang
  6. Hello Teng, The value reported in chapter 9 is in units of umol of SeO4-- sorbed per gram of solids. You would need to take the moles of sorbed species and divide by the mass of solids in the system. That would be: 2.465e-7 moles SeO4-- sorbed / 500 grams solid = 4.93e-10 moles/gram = .493e-3 umoles/gram The reported values in molality value of 2.465e-07 is moles of SeO4-- sorbed per kg of solvent. Hope this helps, Jia Wang
  7. Hello Dietrimj, Thank you for attaching the file. The sorbed mg/kg unit is mg of sorbed species per kg of fluid, not kg of minerals. The GWB assumes a density of 2.65 g/cm3 for inert minerals. You would need to account for the volume of the inert mineral in the system if you are doing a hand calculation. I did a simple back of the envelope calculation for Kd and got the same value given in the output file. To solve for Kd, divide the sorbed concentration (moles sorbed/g solid) by the solute concentration (moles / cm3 fluid). You can find the moles sorbed in your React_output file for each basis species, fluid volume, moles of dissolved species in fluid, mineral mass, and inert mineral volume. You can compute the total mineral mass by adding the mass of your inert mineral to the mineral mass in the existing system. Using Ca++ as an example at the step 0 output, it would look like this: inert mass = 2.65 g/cm3 * 0.0357 cm3 = 2.5546 g total mass = 2.5546 g + 0.1522 g = 2.7068 g S = 0.165 moles Ca / 2.7068 g = 0.006096 moles Ca/g C = 0.00476 moles Ca / 999 cm3 = 4.765 e -6 moles Ca/ cm3 Kd = (0.006096 moles Ca/g) / (4.765 e -6 moles Ca/ cm3) = 1279.33 cm3/g or L/kg. The Kd value calculated by the GWB is 1.28 e+03 L/kg. Hope this helps, Jia Wang
  8. Hello Dirk, You are correct in that you are specifying the total concentration for the component in the basis pane, as long as the free option is not selected. When a concentration is assigned to the component, the program begins to figure out the distribution of mass of species that makes up that component. The program starts with the first guess of the solution assuming that most of the concentration entered for the initial constraint is in the form of the basis species and solves the mass action law for secondary species concentration. The program uses the Newton-Raphson iteration method to solve for the unknown concentration of all species. If the species you choose to represent as the system component is too small, the program might have issues converging on a solution by mass action law. In this case, the predominant Al-bearing species is unlikely to be in Al+++ ion form. Therefore, when the program tries to calculate Al secondary species concentration, the program could not converge on a solution. It would help the program to converge if the aqueous species in the basis is also in an abundant form in the system. If you would like more details regarding the numerical method, please refer to section 4.3.4 Newton-Raphson iteration and 4.3.7 Optimizing the starting guess sections in the Geochemical and Biogeochemical Reaction Modeling text. If you only have a few samples for calculating the saturation indices, then you might want to consider swapping in AlO2- for Al+++ in SpecE8 for each sample. Alternatively, if you are working with a large dataset, you might want to create a version of the Yucca Mountain Project dataset such that you exchange Al+++ and AlO2- so that you can enter AlO2- as a basis species in your GSS spreadsheet. A convenient way to do this would be to open the Yucca Mountain Project thermo dataset in TEdit and go to Al+++ in basis species, click the exchange arrows next to the species name and select AlO2-. For more information, please refer to section 9.2.9 Exchanging species in the GWB Essentials User Guide. Hope this helps, Jia Wang
  9. Hello Sara, Swapping minerals into the basis pane sets the fluid in equilibrium with those minerals. However, you would need to be careful of which minerals you are setting your fluid in equilibrium to and whether or not they are all at equilibrium at the same time. If you have the initial water chemistry, you can run a SpecE8 run which will help you determine the mineral saturation indices of all possible minerals. You might find that some of the minerals that you were originally swapping out is far from equilibrium given the fluid chemical analysis and thus leading to the issue in the software that you see. Perhaps calcite, gypsum, glauberite, and halite are observed but may have precipitated at different times at different points of the evaporation process. For an example of evaporation with React, please see section 3.2 Flow-through model in the GWB Reaction Modeling User Guide. The React file corresponding to example can be found in Script folder where you installed GWB. You might also be interested in the pickup fluid option in React as well. If you plan to use the equilibrated fluid with your minerals for an evaporation experiment, you can set up the basis pane in React as you would in SpecE8 and run the simulation without the evaporation. Then pickup the result as your new basis constraint as the starting point of your experiment. For more information on picking up results, please refer to section 3.10 Picking up the results of a run in the GWB Reaction Modeling User Guide. Hope this helps, Jia Wang
  10. Hello Carnotaur, When you pickup your results from a simulation as your reactant, it resets the basis pane for the new simulation. I am not sure what your model is trying to do but if you want to easily keep the same set of species in your basis pane, you can simply copy and paste all your commands again. Alternatively, another quick way to do that is to have two React windows open and use one for running your model while the other one just have your basis species. When you pickup the results as the reactants, you can then go to the basis pane of the React window that is not used for the run and left drag and drop the basis pane into the one that the results were picked up. This copies all the basis species into the basis pane from the original file. For more information on the pickup command, please refer to section 6.64 Pickup in the GWB Reference User Guide. For more information on drag and drop, please refer to section 1.7 in the GWB Essentials User Guide. With another look at the original post, perhaps the function you want is "pickup fluid", where the simulation results are used in the basis pane, instead of "pickup reactant = fluid". You might also want to consider using the Run > History feature to see the history of commands implemented after triggers from the GUI. Hope this helps, Jia Wang
  11. Hello Teng, I noticed a few problems with your scripts. I think you missed the pH entry for seawater speciation calculation. Please check your scripts to make sure that they match the examples. You can find the input files for the examples from the textbook in the GWB subfolder Script --> GBRM scripts. With regards to Fig. 9.1, SpecE8 can calculate the sorbed concentration of selenate to the solid at one selenate fluid concentration at a time. You can enter in a different selenate concentration into the basis pane of SpecE8 and get the sorbed concentration after speciation. You can also calculate the sorbed fraction at various selenate concentration in the fluid by setting up a titration reaction path in React. You can set up the basis composition as you had done in SpecE8 and in the “Reactants” pane, add in a Simple aqueous species and react in 25 umol of selenate. You can then use Gtplot to plot selenate in concentration (umol/kg) vs. selenate sorbed (umol). Note that to get the same units on the y-axis as Fig. 9.1, you would have to divide the sorbed concentration by the mass of the sediment. In these examples, an inert volume used of 189 cm^3 and the density is 2.65 g/cm^3 so you can calculate the total mass of the sediment. I recommend copying and pasting the numerical results from the React simulation and perform the conversion. To do so, go to Edit -> Copy as -> Spreadsheet in Gtplot and then paste the data into Excel. Also note that the examples of interest in the Geochemical and Biogeochemical Reaction Modeling text use thermo.tdat as the thermodynamic database. You might need to change your thermo dataset so that you are using the same one for your calculations. Hope this helps, Jia Wang
  12. Hello Spencer, For your example of Fe++ and Fe+++, you can enter both valences on your spreadsheet if you decouple the redox coupling reactions between Fe+++ and Fe++. Decoupling the reaction will make Fe+++ available to add as a basis species to your spreadsheet. Secondary parameters such as charge imbalance and mineral saturation indices are done using SpecE8 for each fluid entry. Hope this helps, Jia Wang
  13. Hello Ozan, I think the primary issue with your input file is that you have not specify a nucleus density for the minerals in the Reactants pane. If your mineral is not present in your chemical system, for example Dawsonite, then it will not form according to your kinetic rate law in your simulation since the surface area for a non-existing mineral is 0. You can set for any kinetic mineral a simple description of nucleation by setting the nucleus density. This feature allows minerals not present in the chemical system to form according to kinetic rate laws by prescribing a minimum value for a supersaturated mineral's surface area over the calculation. For more information, please refer to section 4.2.4 Nucleation in the GWB Reaction Modeling User guide. Hope this helps, Jia Wang
  14. Hello T.C. Onstott, Thank you for attaching your thermo dataset. I noticed a couple of issues in your scripts. I noticed that in your database, water is written as H2O, however when defining the initial isotope composition of water, you added an extra (aq) at the end. In order for the software to find the species properly, the name must match between species. Also note that you are setting H2O to be reacted out of the system, there shouldn’t be any need to set its isotopic composition. With regards to solution density, you have set your reaction path to react out water and titrate in large amounts of H2(aq) and O2(aq) through time. Since most of your reactions are decoupled, H2(aq) and O2(aq) are added into the system but not reacted, therefore, H2(aq) and O2(aq) are just accumulating in your system. As a result, the fluid density increases with the decreasing amount of solvent and large amount of dissolved solutes. Hope this helps, Jia Wang
  15. Hello Ozan, I think the problem with your script is that you don’t have a return statement at the end. Can you try again with the statement “RETURN rate “ at the bottom? For more examples, please refer to section 5.2 Rate law scripts in the Reaction Modeling Guide. If you would like for someone to take a closer look at the issue, please attach your model input file and the basic script file. If you want to prescribe different k and E values in the same rate law, then you would need to implement a custom rate law. The built in format will only allow one value of each. Hope this helps, Jia Wang
  16. Hello Rob, X1t carries the flow rate in terms of specific discharge (i.e. volumetric flux) rather than the average linear velocity of fluid flow. The volumetric flux is written in units of volume of fluid / area of your domain cross section/ time. Because the units for volume is length cubed (cm^3) and area is length square (e.g. cm^2) , the simplification reduces the unit to length per time (e.g. cm/day). To attain the fluid velocity, you have to divide the specific discharge by the porosity of your domain. So if you decrease the porosity of your domain, then you are increase the fluid flow velocity. You can actually plot the fluid velocity and the specific discharge in Xtplot to check that they are being calculated correctly in your simulation. Double-click on the plot in Xtplot and under the Y Axis type, choose Variable type "Physical parameters". You can plot both specific discharge and fluid velocity for your simulation. For more details and examples, please refer to section 3.2 Setting flow rate in the Reactive Transport Modeling User Guide. Hope this helps, Jia Wang
  17. Hello T.C. Onstott, Unfortunately we can't run your React input file without your customized thermo dataset. Can you upload your thermo file so we can take a closer look at the issues? Best regards, Jia Wang
  18. Hello zndxzmf, To calculate the water stability limits, you must include H2(g) in your thermodynamic database. Can you check if your customized thermo database contains H2(g)? If not, you will need to add that reaction manually. For an example, please look at the H2(g) entry under Gases in thermo.tdat. You can find thermo.tdat in the Gtdata subfolder where you installed GWB. Hope this helps, Jia Wang
  19. Hello Jnc, Here are a couple of suggestions to help you get started. You might want to get started by familiarizing using SpecE8 to calculate the equilibrium speciation of your fluid. To do so, start by setting up the basis pane with using your initial soil fluid species concentrations. To add basis species, click the ‘add’ button on the bottom left of the basis pane. To include redox conditions, such as Eh, you will need to swap in e into your basis pane. To include the pH of your fluid, add in ‘H+’ from the dropdown menu. To calculate the equilibrium concentration of Sb-species in solution, you can select the basis species containing Sb and swap in Stibnite. For more information, please refer to section 7 SpecE8 in the GWB Essentials Guide. Just note that the default thermo.tdat does not include stibnite thermodynamic data. You can modify the dataset to add stibnite and related Sb-species to the dataset using literature values. A good place to start may be the thermo.com.V8.R6+.tdat, an expanded variant of the Lawrence Livermore National Lab database. This thermo database does contain data for stibnite and Sb(OH)3(aq) as a basis species. You can edit thermo dataset using a text editor or use GWB's graphical thermo data editor, TEdit app. For more information, please see section 9 Using TEdit in the GWB Essentials Guide. Hope this helps, Jia Wang
  20. Hello Polly, Thank you for your message. The GWB does not currently support the SIT activity model. It will be added in an upcoming release in the next 6-8 months. Best regards, Jia Wang
  21. Hello Peter, Thank you for your post. This issue was brought to our attention earlier this year. The fix will be available in the upcoming maintenance release. Best, Jia Wang
  22. Hello Kristin, When creating a new user analyte, you would need to first select the type of user analyte under category. For example, if you select Components in fluid, a list of units will be available to select in the drop down box next to 'default units'. Please refer to section 3.3.4 User analytes for more information and examples. Default units for titration acidity are in equivalent base per volume or kg of fluid. Unfortunately, there is not a way to add mg/kg as CaCO3 as a default unit. Perhaps, you might consider adding a user defined analyte and set the unit to be mg/L as CaCO3. Please note that user defined analyte cannot be used in simulations by GWB apps. Hope this helps, Jia Wang
  23. Hello Jan, It sounds like you already worked out a pretty robust method for calculating Gibbs free energy for your reactions. Unfortunately, there is not a way to screen pH or temperature in Rxn. You can however, scan over a range of pH, temperature, and Eh using the sliding feature in React. For detailed examples, please see sections 3.4 Polythermal reaction paths and 3.6 Sliding activity and fugacity in the Reaction Modeling User Guide. Using Gtplot , you can display the simulation results. You can easily change the axes to the variables you're interested in. For example, if you are screening from pH 5-8, you might want to configure your plot to display pH on the x-axis and species activity for the y-axis. Retrieve the numerical results by going to 'Edit' --> 'Copy as' --> 'Spreadsheet'. You can place these activities into your Rxn calculations to calculate Gibbs free energy. Alternatively, you can paste the species activities into a spreadsheet and calculate delta_G using Gibb's free energy equation. You can also setup your reaction in Phase2, if you would like to screen across two variables at once to produce a map of species activities. You can setup sliding paths along the x-axis(e.g. pH) and y-axis(e.g. Eh) in Phase2 and calculate species activities. Similar to the results in Gtplot above, you can copy the results from P2plot and paste it into excel for each species activity of interest to calculate delta_G. For more information on Phase2, please see sections 7 Using Phase2 and 8 Using P2plot in the Reaction Modeling User Guide. Hope this helps, Jia Wang
  24. Hello Helge, Sorry about the delayed response. If you would like to put the results in a file, you can try exec_cmd with the normal "print" command in combination with the "suffix" command for changing the name just like one would normally do. The file should still get generated. If you would like a file name besides what can be done directly in React ( React_output[SUFFIX].txt ) then you can try a simple file rename in Python. Hope this helps, Jia Wang
  25. Hello Ulagai, Act2 can create stability or solubility diagram for a dominant species that you choose. You can choose the same species for the diagram species as your x or y axis species.You can see examples of this in section 5.2 of the GWB Essentials guide, where solubility diagrams of Uranium and Aluminium are plotted. In both cases, the y-axis is showing the species of interest and the x-axis is pH. There are a couple of things to note though. As mentioned in one of my previous posts above, Act2 cannot simply raise the power of the activity of a species on the x or y axis. Therefore, you would not be able to replicate your exact diagram with log a[F-]^2 in your x-axis. You can obtain the equilibrium equation to plot your diagram manually using Rxn though. Similar to your previous problem above, you can open up Rxn and select fluorite to write out a balanced reaction. Rxn automatically populates the components to balance fluorite in terms of Ca++ and F-. Enter the temperature at which you want to balance this reaction at and run the calculation. In the 'Results' pane, you will find the equilibrium equation written in terms of log a[Ca++] and 2 log a[F-], which are your y and x axes respectively. If you want, you can return to the basis pane and enter in an activity for F- while leaving the activity for Ca++ blank, run the calculation again to have Rxn calculate the activity of Ca++ for you. If you want to calculate activity of F-, then you would enter the activity of Ca++ in the basis pane and run the calculation. Hope this helps, Jia
×
×
  • Create New...