Jump to content
Geochemist's Workbench Support Forum

Jia Wang

Admin
  • Posts

    724
  • Joined

  • Last visited

  • Days Won

    29

Everything posted by Jia Wang

  1. Hello Adam, The ion size parameter, a0, in the debye huckel (or bdot) activity model has a special meaning as you had learned in the Reference manual for neutral species. The equation used to calculate the neutral species' activity coefficient may change depending on a0. For charged species, like HCO3- and CO3--, the ion size is used in the bdot equation (an extended form of the debye-huckel equation) for calculating species activity coefficients. Please see this post for a more detailed explanation of what the ion size parameter represents. Taking a look at the introduction of the paper cited, I noticed that they mention that the model developed uses the specific interaction model of Pitzer. The dataset you attached uses the debye-huckel model, which is very different. I suggest double checking that you are generating the correct dataset. The GWB can use the Harvie-Moller-Weare(HMW) formalism of the Pitzer equations for modeling high ionic strength solutions. Unfortunately, I don't have access to Duan etal. 2003 and can't compare it to the HMW model. For more information on activity models in the GWB, please see section 2.3 in the GWB Essentials User Guide. You can open GWB datasets in TEdit and find more information regarding its origins in the Headers Pane. In particular, you may be interested in thermo_hmw.tdat. Hope this helps, Jia Wang Aqueous Solutions LLC
  2. Hello Keishi, Thanks for attaching your script. Could you also attach your custom thermo and surface dataset so we can troubleshoot your script directly? Best, Jia Wang Aqueous Solutions LLC
  3. Hello, The best way to edit a GWB thermo or surface dataset is to the TEdit, the graphical user editor, part of the GWB package. You can add organic species for your reactions to the corresponding sections of your thermo dataset. You can add a generic form of dissolved organic matter as a basis species, but please note that the GWB currently does not include the NICA-Donnan method for calculations of metal binding to organic matters. For a summary of sorption and surface complexation models, please see section 2.6 in the GWB Essentials User Guide. A detailed description of the GWB dataset format is provided in the GWB Reference Manual. Best regards, Jia Wang
  4. Hello Scott, Thanks for attaching your input file. I wasn't able to run your file exactly because I didn't have your custom dataset. I switched to thermo.V8.R6+.tdat, which contains Molybate. When I run "go initial" with your input file, X1t tells me that "fluid_1" is the issue. Looking at this fluid more closely, I noticed that you have more Na+ than that of Cl- in your simulation. I switched the balancing ion to SO4-- and then did another "go initial" run and X1t converged. Typically, you would choose the most abundant anion or cation as the balancing species. By default, the program uses Cl-. You can change the balancing ion to another species by either clicking on the unit for the species in the GUI or use the command line "balance on" the species that you wish (e.g. "balance on SO4--"). I would suggest trying to troubleshoot by switching your balancing ion and see if that helps. If you are troubleshooting an issue that arises in the Fluids pane, you might find it easier and more direct to use React. If you have only one fluid, you can conveniently right-click on the Fluids tab and drag and drop into the Basis tab of a new React window. If this didn't help resolve your problem, please attach your custom thermo dataset so I can run your script directly. Hope this helps, Jia Wang Aqueous Solutions LLC
  5. Hello Isaac, Thank you for the additional files and I apologize for the delay. A 2D reactive transport modeling can be very challenging to configure correctly. I have looked through the two input files you attached and am not quite sure of the conceptual model here. Are the minerals you are setting in the Reactants pane part of the original domain, in equilibrium with the initial fluid? In that case, you would want to swap them for components in the Basis pane and not add them in the Reactants pane. When you add minerals as simple reactants, they are added to the domain incrementally throughout the simulation to alter the composition of your system. In contrast, if you set a mass or volume % of kinetic minerals in the Reactant pane and set a rate constant, the program will treat any mass as part of the initial domain. I think it would be better if you started with your solutions in a more simple model and then build your way up to a complex 2D reactive transport model. Maybe you would want to check that your kinetic reactions are working as expected in a one node system using React. Are the rates proceeding as expected? Should precipitation be turned off so that no new minerals are allowed to precipitate even if they are thermodynamically favorable, like how it is set now? I am not really sure what applies to your system here. When the reactions in your single node system appear to be working as expected, I think the next step is to build a 1D model in X1t. Start with a very simple system, maybe just a 1 component system with silica and set up a diffusion system. You can take a look also at the quartz precipitation in a vein, section 3.9 in the Reactive Transport Modeling Guide. This example treats the whole domain as a single fracture. Your system is of course different in many ways, but it might serve as a starting point. You may also want to check the boundary conditions you are using to make sure they reflect the problem you're modeling. For more information on boundary conditions, please see section 2.9 in the GWB Reactive Transport Guide. Once you have your transport parameters configured, you can add in the chemical reactions from the 1 node system. Finally, if your system requires a 2D model, then transition to X2t from what you have built in X1t. As a side note, you can also designate many other variables with the node-by-node feature other than just porosity if necessary. For example, if you want your kinetic minerals everywhere in the domain to start but not in the fracture, you can set that using node-by-node. Other methods for setting heterogeneity are also available (e.g. equations, scripts, etc). For more information on this, please see the Appendix: Heterogeneity in the GWB RTM Guide. Best regards, Jia
  6. Hello, I took a quick look at the input file attached and so far what I see is that you have set up an initial fluid of about 1 kg of solution to react with albite and k-feldspar over a period of 1 year. The dissolution and precipitation of these two minerals are constrained using the built-in rate in the GWB. The pH is fixed throughout the simulation. If you want to vary the water to fluid ratio, I see a couple of ways to approach this. Since you have set all the concentrations of your fluid in the basis pane in relative units, you can change the volume of H2O to the desired mass. Another option is to set the reactants times factor on the "Reactants" pane. The default value is 1, changing the factor will multiply the quantity of the reactants set on this pane. You can vary the ratio of rock to fluid and perform multiple runs as needed. There are a few options in The GWB to run a large batch of samples within the GWB, including the Plugin feature and control scripts if you would like more control over what the program outputs and to store the results in specific files. For more information regarding Plugin and Control scripts, please refer to section 7 and 6 in the GWB Reference manual. Please note that water to rock ratio is not a plottable variable in Gtplot. You can export the numerical data from the runs, mineral mass (set Variable type = Minerals) and mass solution (Variable type = chemical parameter), and make the calculation for a solution to mineral ratio in a spreadsheet. For more information on exporting numerical data from simulation, please see section 6.7 in the GWB Reaction Modeling Guide. Are you expecting specific minerals to precipitate in your simulation? If you are trying to replicate the plots posted, I would suggest you check the equilibrium constants used in those simulations against the ones in the thermodynamic dataset you're using. The software considers all minerals in the database loaded for the simulation, for those that you are not expected to form in your system, you might consider suppressing them (Config menu -> suppress). In Gtplot, you can also investigate the mineral saturation indices to see which minerals the fluid is close to equilibrium to. The caption in the plot also states that there are more details to how the curves are constructed. It would be good to check if the way you are setting up your problem matches that of the paper's. Best regards, Jia Wang Aqueous Solutions LLC
  7. Hello Frank, You're welcome. Thank you for letting us know that the release candidate resolves the issue you encountered. Best, Jia
  8. Hello, In X1t and X2t, you can specify fluids of different compositions as the boundary fluid at different reaction intervals. To do so, you will want to add each set of fluid composition as a new fluid under the "Fluids" pane. If you already have your water analyses entered in a GSS spreadsheet, you can right-click and drag on the sample header in GSS and drop into the Fluids pane in X1t. Once you have added all your fluid compositions, you can set reaction intervals with the desired length of time and inlet fluids on the "Intervals" pane. If you would like more information on using drag and drop to transfer data between GWB applications, please see section 1.7 in the GWB Essentials Guide. For examples on configuring boundary fluids and reaction intervals, please see section 2.8 and 2.10 in the GWB Reactive Transport Modeling Guide. Hope this helps, Jia Wang Aqueous Solutions LLC
  9. Hi Dirk, I just want to follow up with another strategy that may be easier to implement, depending on how complicated your model may be. If the dissolution rate of your minerals can be described with a kinetic rate law, you can try using a custom rate law script to include an "If" statement for dissolution when the mineral is undersaturated. For when the mineral is supersaturated, the rate equation should be set up so that precipitation occurs at a rate fast enough to maintain equilibrium with the fluid but not so fast that it forces the program to take really small time-step. For example, the precipitation rate constant could be gradually increased relative to the dissolution condition. You can play around with the rate you set and check the saturation indices to see how close your fluid is in equilibrium with the fluid. For more information on custom rate law script, please see section 5.2 in the GWB Reaction Modeling Guide. Best regards, Jia
  10. Hello Dirk, There's not really a way to force the program to enforce kinetics only for dissolution. It sounds like there are really two parts you are trying to simulate. The first part being dissolution of precipitation based on simple thermodynamic equilibrium and then in a second part you incorporate kinetics. If you are using React, then you can use the pickup command and use the end result of the equilibrium calculation as your starting point. You can then add kinetic rate laws for the second simulation. If you are doing this in X1t, it is a bit more complicated. You can run the first equilibrium simulation and build a second X1t model in which you can specify the minerals that you wish to constrain kinetically under the "Reactants" tab. You can set up kinetic minerals to vary node-by-node so that the quantity set matches the end result of your first simulation. To get to this setting for a kinetic mineral, you would select the "+" button next to the field for the amount of mineral and then select node-by-node. For more information on this please see the Appendix chapter on Heterogeneity in the Reactive Transport Modeling Guide. Hope this helps, Jia Wang Aqueous Solutions LLC
  11. Hello Frank, We have made a fix to the issue of ETA and MU virial coefficients not importing from PhreeqC. Please download and installing the "release candidate" below and try converting your custom PhreeqC dataset. 17.0.1rc1_setup.exe I also want to let you know that the compiler used for the installer was updated recently. If you encounter any issues while using the release candidate installer, please let us know. Best regards, Jia
  12. Hello Frank, Thank you for bringing this issue to our attention. We are looking into this issue now. Best regards, Jia Wang Aqueous Solutions LLC
  13. Hello Huan, Fluid of changing salinities will flow to fill the pore space in the domain. I am assuming that the chemistry of the inlet fluid and the initial fluid in the domain are fairly different. The effect of this on fluid velocity is extremely small, the plots shown are in units of meters per year in orders of 10^-6. Hope this helps, Jia
  14. Hello Jenna, In SpecE8 and React, you can change the charge balancing ion by adding in that component in the basis and then click on the unit and select "balance species". You can also alternatively enter the command "balance on HCO3-" in the Command pane, assuming that you are using thermo.tdat. All commands recognized by SpecE8, React and other GWB apps can be found in the GWB Command Reference. You can open this from the Help menu under any app. In GSS, you can set a charge balancing on HCO3- under Analysis -> Options.... Again, if you are using thermo.tdat (default database in the GWB), then the command would look like "balance on HCO3-". The header commands are at the top of the file and the trailer commands are placed at the bottom. In this case, I believe it does not matter if you place the balancing ion command in the header or trailer section. If you launch your samples from GSS in SpecE8 or React now, the programs will use HCO3- for charge balancing. If you are looking to calculate charge balance for many water samples at once, you can use the calculated analytes feature in GSS. To do so, add all your water samples to your GSS spreadsheet, go to "+analyte", select "Calculate with SpecE8", select the "charge imbalance" and hit "Apply" or "Ok". You will see an extra row added to your spreadsheet for your newly calculated charge imbalance. Please see more about calculating with SpecE8 in section 3.3.7 in the GWB Essentials Guide. The concentrations entered into GSS are bulk concentrations. The charge imbalance and charge imbalance error are calculated with all cation and anion species concentrations after chemical speciation. For more information regarding speciation, please see section 7.2 Equilibrium Models in the GWB Essentials Guide. To perform a manual calculation of charge imbalance, I would suggest launching a SpecE8 instant for one sample in your GSS spreadsheet. Then run the calculation and verify the charge imbalance by summing the total electrical equivalents for anions and subtracting it from the total equivalents of cations from concentrations, found under the variable type "Species concentration" in Gtplot. You can export the numerical values by going to Edit -> Copy as... -> Spreadsheet or Tab. Make sure all species concentration are plotted before exporting. The equation 100*[(Sum cations-Sum anions)/(Sum cations+Sum anions)] is how the software calculates the percentage of charge imbalance error. Hope this helps, Jia
  15. Hello, It is difficult to say for sure what might be different here since I don't know how the other program or the diagram in the screenshot was created. The applications Act2 and Tact are simple diagram generators. The species you specify in the axis variables represents the activity of that species and not a total concentration of the component. In Act2 (and Tact), the diagram is an assemblage of equilibrium equations. You can create a "mosaic diagram" in which species you specify in the "in presence of section" can speciate across the x and y-axes, but the species in the axes themselves do not speciate, unlike an actual multicomponent chemical model in SpecE8 or React. For more information regarding mosaic diagrams, please see section 5.3 in the GWB Essential User Guide. If you are looking to create phase diagrams of more complex systems, you may find the Phase2 application useful. Unlike Act2 and Tact, Phase2 solves the distribution mass for multicomponent systems of varying conditions along the x and y axes. You can plot predominance diagrams that shows the most abundant species, mineral, or gas in regions. For more information and examples using Phase2, please see section 7 in the GWB Reaction Modeling User Guide. Hope this helps, Jia Wang Aqueous Solutions LLC
  16. Hello Scott, I would also like to let you know that another solution is to download the GWB font on computers that are having the symbol marker issue. The font is free to download from our website here: https://www.gwb.com/font.php Best regards, Jia
  17. Hello Scott, If you are pasting the plot as an enhanced metadata file, you can always select the option to embed fonts in Powerpoint before saving, so that the markers will display correctly even on computers without the GWB font. In most versions of Powerpoint, I believe it's under File tab -> Options -> Save tab in the left column, check Embed font. Alternatively, if you don't need to manipulate the plot in Powerpoint, you can also export a plot in the "Save image..." dialog (File -> Same image...) and select a graphics format such as jpeg or png. You can also export in Postscript format and select "embed font" when doing so, the markers should show up correctly on computers without the GWB font. Best regards, Jia
  18. Hello Mojo, When a volume fraction of the nodal block is specified as a stagnant zone, only the process of diffusion takes place in that volume. The diffusion profile into the spheres, cubes, or half-slabs are calculated based on the parameters provided in the Dual Porosity dialog under the Config menu in X1t. Please note that chemical reactions do not take place within stagnant zones. The mineral volume fraction specified operates in the free flowing zone, where chemical reactions (equilibrium, kinetic) takes place. The half width is half the width of the cube or fractures. The radius or half widths should not be set arbitrarily. This is because the value set affects the cumulative surface area of the stagnant zones in contact of the free flowing zone, which is the most important quantity for controlling diffusion into and out of the stagnant zone. The geometry of your stagnant zones on the other hand has little effect on the simulation results. The parameters provided for the geometry is used to calculate the contact surface area. The contact area for the spherical geometry is calculated as the 3*X_stag*V_b/radius, where X_stag is the fraction of your nodal block specified as stagnant and V_b is the nodal bulk volume. The corresponding equation for cubic and fracture geometry are 3*X_stag*V_b/half_width and X_stag*V_b/half_width. If you decrease the radius or half-widths, then the contact area effectively increases. If you would like more details regarding this calculation, please see section 25.2.1 Contact Area of the Geochemical and Biogeochemical Reaction Modeling textbook 3rd edition. The porosity value in the Medium pane is applied in both the stagnant and free-flowing zone. If you wish to set a different porosity for within the stagnant zone in your calculation, you can do so within the Dual Porosity dialog under the Config menu. In the future, please post your queries on the Forum front page. Our team members do not receive notifications when a new post is added to the GWB post archive. Hope this helps, Jia Wang Aqueous Solutions LLC
  19. Hello, The reactions in the “Redox couples” section of GWB datasets allows users the flexibility to decouple redox equilibrium between different valence states of the same element during simulation. For example, in thermo.tdat, the basis species for carbon is HCO3-. Acetate (CH3COO-) and methane(CH4(aq)) are species of alternative oxidation states of carbon corresponding to HCO3- in the basis section. By default, the GWB assumes that these species of different redox states are in equilibrium, which means that a bulk concentration entered for the HCO3- component in the Basis is going to be distributed between all redox states carbon. You can decouple these redox reactions which then will allow you to specify a bulk concentration for each oxidation state separately. You can try this by decoupling the HCO3-/CH4(aq) in a SpecE8 instance (Config -> Redox couples). Once you have done so, you can now add both HCO3- and CH4(aq) components in your Basis. If the reaction for CH4(aq) was specified as a secondary aqueous species in the “Aqueous Species” section, the redox reaction is permanently coupled. You will not have the option to disable redox equilibrium. You can try this by going to CH4(aq) in thermos.tdat, right-click and select Couple, save the dataset with a new name and load it into SpecE8. Any reactions in the Minerals, Aqueous Species, and Gases section can be a redox reaction, but to take advantage of the flexibility of redox disequilibrium, the redox couple should be specified in the “Redox couples” section. Please note that in the GWB, only aqueous species can be specified in the “Redox couples” section. You cannot add a mineral into the Basis without swapping it for an aqueous component. If you would like more information regarding redox coupling, please see section 2.4 and 7.3 of the GWB Essentials User Guide. You can adjust redox coupling reactions using TEdit. For more information on this, please see section 9.2.9 in the same guide. You can find more information regarding the structure of GWB thermo datasets in the GWB Reference Manual. Hope this helps, Jia
  20. Dear GWB users, We are proud to announce the release of GWB 2023! GWB 2023 adds site-mixing and temperature-dependent solid solutions models, the capability to import and export EQ3/EQ6 thermodynamic databases, and much more! Plus, the amazing ChemPlugin self-linking software object is now included with the GWB Professional subscription at no extra cost. Supported subscriptions will upgrade automatically within three days, or simply click "Check for updates" on the GWB dashboard. GWB community users can request a new license through our webstore. Not yet a subscriber? Sign up now or contact us for a same-day quote. Best regards, Jia Wang Aqueous Solutions LLC
  21. Hello Adam, You're welcome. I am glad you found the examples helpful. I took a quick look at the second script and compared it to your first script. Your first script had the CO2 gas swapped in for H+, but your second script has CO2(g) swapped in for HCO3-. Is this correct? With your original script, I unsuppressed Anorthite as a test and was able to converge with going as far as 100 kg of anorthite. Once the system is saturated with respect to the anorthite, it simply starts to accumulate. Not really sure what minerals you're expecting your system to form when titrating the anorthite. Are there any specific secondary minerals you are expecting to form in this system? It initially sounds like you were doing a test with anorthite titration until it's saturated but perhaps I am not really understanding what you are hoping to achieve ultimately. You could try unsuppressing one mineral at a time when testing. Again, the program will consider everything that's not suppressed as part of the simulation. Best regards, Jia
  22. Hello Adam, You're welcome. React titrates incrementally the reactants you have set in your Reactants tab and reports the equilibrium state at each step. By default, React divides titration paths into 100 steps. For example, in your script, 100 grams of Anorthite is set to titrate into the initial fluid over the course of the simulation. The program is going to add in 1 gram of Anorthite at each time step into the initial system until all 100 grams are added. The equilibrium state of your system is reported at each step. In its calculation of the equilibrium state, React will allow supersaturated minerals that are most thermodynamically stable in your system to precipitate, if precipitation is enabled and the mineral is not suppressed from forming. If suppressed, the mineral is not considered. The mineral assemblage does not differentiate between primary (i.e. the mineral(s) you are titrating in) minerals or secondary (other minerals that were not present initially) minerals. In your case however, the program won't consider any minerals for precipitation in its calculation because they are all suppressed. If you disable precipitation (go to Config -> Options), it would also have the same effect. I think it's also important to note here that the only thing that matters for a simple reactant is its composition. Perhaps an example will be best to demonstrate what I mean. In a new React instance, set an initial fluid with 1 mg/kg of SiO2(aq) and in the Reactants pane, add 10 mmol of Amrph' silica as a simple mineral. Include a suffix like _amrph_silica. 1 mg/kg SiO2(aq) react 10 mmol Amrph^silica suffix _amrph_silica go In another React instance, I will set the same initial system but now titrate in 10 mmol of quartz instead. 1 mg/kg SiO2(aq) react 10 mmol Quartz suffix _qtz go Comparing the results, you will see that Quartz precipitates in both cases, because it is the most thermodynamically stable silica mineral in this system. In both cases, the simple reactants are changing the composition of your system by adding SiO2. Whether it is Amrph^silica or Quartz (or another silica polymorph), does not affect the results. If you return to either of the simulations and suppress all silica minerals (Amrph^silica, Chalcedony, Cristobalite, Quartz, and Tridymite), then no minerals will precipitate and all the silica titrated in will remain in fluid. Disabling precipitation in the Options dialog will also have the same effect. If you would like more details regarding the conceptual model behind React and other GWB apps, I would recommend checking out the Geochemical and Biogeochemical Reaction Modeling Textbook by Craig Bethke in addition to the user guides installed with the software. I think you will find chapter 2 Modeling Overview very helpful. Hope this helps, Jia
  23. Hello Zixuan, You're welcome. Glad that helped. Best, Jia
  24. Hello, I took a quick look at your script and I noticed that you have suppressed all minerals. When you do this, the program won't allow any minerals to precipitate even when it's supersaturated. As you decrease the amount of water even further, the program can't numerically converge on a stable state for your system which has a lot of highly supersaturated minerals. Did you intend to suppress all minerals? If I unsuppress Anorthite in your system, I am able to run your script at a much lower water to anorthite ratio than 0.33 and have no issues with convergence. I think this would also answer your questions in the other post too. If you want to allow Anorthite to accumulate in your system when it's thermodynamically favorable, then you would need to unsuppress Anorthite. The mass reacted you plot under the Variable Type is the total amount of stuff (minerals, aqueous species, etc) you have added to your system in the reaction path. In your case, you only added 100 grams of Anorthite. To see the minerals that precipitate in your system, you would want to plot the Variable Type "Minerals". Again, if you suppress all minerals, the program won't consider any minerals for precipitation in your system. If you would like to see more examples of titration paths and how they work, please see the example in section 3.1 in the Reaction Modeling User Guide. For more information on the suppress feature, please see section 6.1 the GWB Command Reference. Hope this helps, Jia Wang Aqueous Solutions LLC
×
×
  • Create New...