Jump to content
Geochemist's Workbench Support Forum

Jia Wang

Admin
  • Posts

    729
  • Joined

  • Last visited

  • Days Won

    29

Posts posted by Jia Wang

  1. Hello Wei,

    You're welcome. A couple of additional thoughts. You can go one step further with your React simulations to help set up your bigger more complex model. If you run a reaction model (e.g. flush model), then you can quickly identify minerals that precipitate but are not expected to form or observe. In particular, you might've noticed carbonate minerals (e.g. aragonite, dolomite, witherite) that form in your reactive transport model. If you don't expect some of these minerals to form in your system, you can suppress them from consideration in the simulation.

    Additionally, your X2t input file sets the injection fluid to 74C and not 25C, which is what you have set in React_injection and your previous X2t input file. Perhaps that is an error?

    Best,
    Jia

  2. Dear GWB users,

    We are pleased to announce our latest maintenance release for GWB subscribers, GWB 17.0.1.

    GWB 17.0.1 provides an improved user experience working with floating licenses, simplified installation of maintenance releases, run-time verification of GWBsymbol font functionality, and fixes for known issues.

    Update from 17.0.0 at no charge to ensure you have all the newest features and bug fixes. Existing installations should automatically update to this release, unless auto-update is disabled. In that case, users should update their installations from the GWB dashboard or from the Help menu of any GWB app.

    Regards,

    Jia Wang
    Aqueous Solutions LLC

  3. Hello Wei,

    Taking a look at your model, I am noticing that your injection well rapidly increases in mineral volume and eventually results in a very low porosity. I turned on the explain step feature and it seems like the simulation step size was limited by the transport criteria to maintain stability. As a result of the low porosity, I think your model is having a difficult time converging, especially when you increase the number of nodal blocks and decrease the bulk volume of each block. You can set the time interval to right before your model stops converging and check the mineral volume and porosity at your injection well.

    The SIT activity model is only available with a GWB Subscription or with the GWB Community Edition. In general, I do not recommend taking data from one dataset and combining it with the other dataset type. The default database uses the bdot activity model, which is conceptually very different from how the hmw activity model handles electrolyte activities. Simply taking reactions from one dataset and adding it to another with a different model type would result in erroneous results.

    You might want to if others have published any compatible datasets for your use. You might want to evaluate how your model results look using the default database and see if it is acceptable for your results.

    Hope this helps,
    Jia

  4. Hello Wei,

    When you ran the React input files, were you able to converge on an equilibrium state for your fluids? When I try running React-reservoir, it immediately fails upon trying to calculate the equilibrium state. I would suggest that you double check your basis and evaluate if it is correct. Minerals swapped are used to set the concentration of the component. This is typically done when you can assume that the mineral is in equilibrium with your fluid. If minerals are present in your system but not in equilibrium with your initial fluid, you can add the mineral as a kinetic reaction. I noticed that you have set Quartz in equilibrium with your initial fluid (basis) and set a kinetic rate law for the reaction. Are siderite and kaolinite in equilibrium with the fluid initially? Or should they be set as kinetic reactions?
     
    Another consideration, though this is not related to your initial fluid convergence issue, is to look at whether a different thermo dataset would serve your purpose better. Your brine fluid is much higher in concentration than your initial fluid. Thermo.tdat is the default dataset and uses the bdot activity model. The bdot model typically loses accuracy as the fluid ionic increases pass ~ 0.3 molal. I would suggest you take a look at the virial models available (SIT or hmw) and consider them. You can view a summary of thermo datasets on the thermo page, where you can download a fresh version of all datasets installed with the software or you can find them in your Gtdata folder.
     
    With regards to pickup, are you using pickup-> system -> entire? This should allow you to pick up all fluids and minerals (in equilibrium with your final system) as your basis. If you are using the command line, you can enter the command "pickup entire". Please see the GWB Command Reference for more details regarding the pickup command.
     
    Hope this helps,
    Jia
  5. Hello Erik,

    I am afraid I might not be understanding your question completely. Are you working with the GWB Plugin? If so, you should be outputting a plot file (e.g. .gtp) from the runs called in your script by the GWB apps. For examples of this, please try running GWBplugin_Python_example1.py and GWBplugin_Python_example2.py in the GWB src folder. The corresponding .gtp plot file should appear in your working directory. You can edit the name of the output plot file by using the suffix command (see GWB Command Reference for all commands).

    If this is not what you meant, could you provide a bit more explanation as to what you are trying to do?

    Hope this helps,
    Jia Wang
    Aqueous Solutions LLC

     

  6. Hello,

    The first launch will set the sliding temperature path and run that for all the samples you have selected.

    first launch trailer command:
    T initial = 25 C, final = temperature C

    After you have completed the first launch, go back to the trailer commands section and add "go" and "pickup. The second launch will perform the sliding temperature path calculation, then pick up the end result as your basis and then run again. You will be repeating the sliding temperature path calculations again and add the pickup part to it. Make sure you change the root name file or select a different folder to save your results so that they don't overwrite the results from the first launch. If you only care about the speciation results at the final temperature, then just run the commands from the second launch.

    second launch trailer command:
    T initial = 25 C, final = temperature C
    go
    pickup

    Hope this helps,
    Jia

  7. Hello,

    Thanks for attaching your files. I think there are a few things for you to consider. Above, I mentioned that you might want to consider the roles of your minerals in your system. Swapping a mineral for a component in the basis tells React to calculate that component's dissolved concentration in equilibrium with that mineral. Is that true for all minerals in your system? Given how oxidized your initial system is (as indicated by the high concentration of O2(aq)), it is unlikely pyrite arsenopyrite would be present in equilibrium with your fluid. Are these minerals present in your system initially? If so, you might want to consider using a kinetic rate law for constraining its reaction. Again, the purpose of the React simulation is to investigate the formation of Fe(OH)3, which will ultimately responsible for sorption reactions. Please see section 4.1 for more information regarding kinetic reactions.

    Other things to note, it seems like the mineral volume takes up 99% of your system. Is that correct? I think the low amount of fluid in the system is not helping with the convergence issue. In your reactive transport model, the porosity is set at 0.2.

    O2(aq) should almost always be set as a free constraint, although in this case I don’t think that’s a huge issue.

    You might also want to suppress more stable iron minerals like you had previously, so ferrihydrate can form.

    Hope this helps,
    Jia

     

  8. Hello again,

    After a closer look to the second part, the previous post would work only well if you are only launching one React sample at a time. If you are looking for separate results for the reaction paths and the post pickup results for multiple or all samples, you should do Launching twice. Once to run the temperature paths. Then again to run the path then just get the picked up results. In between launching, you can change the directory for the second set of output files to a different folder (e.g. first in a folder called path, second in a folder called pickup) or change the root filename (e.g. from path to pickup).

    first launch trailer command:

    T initial = 25 C, final = 100 C

    second launch trailer command:

    T initial = 25 C, final = 100 C
    go
    pickup

    Best regards,
    Jia

  9. Hello,

    A Gtplot plot file (.gtp) is generated when you run a React or SpecE8 simulation. If you are having issues locating the .gtp file generated when you run your React, you can check under "File" ->  "Working Directory" to see where your output files are being saved to. If you are performing multiple calculations, you can set a suffix (in Config -> Output...) prior to each run to save the results into separate output files. If you do not, the new results will output to the same file and overwrite the results from the previous run.

    When you save a file from using the "Save" or "Save as" options in Gtplot, a configuration file (.gtc) of the current Gtplot window settings (such as axes variables, lines colors, label size, etc) is created. This file makes it very convenient when you want to apply the same set of configurations to another set of results in Gtplot. Please refer to section 8.4 in the GWB Essentials Guide if you would like more details on loading and saving plot configurations.

    Hope this helps,
    Jia Wang
    Aqueous Solutions LLC

  10. Hello,

    You can set variable values (like temperature, pH, even component concentrations) directly in the trailer command but you cannot reference a value of an analyte on your spreadsheet. If you are looking to vary the input for each sample, you might want to consider using the GWB Plugin feature. GWB plug-in allows you to write a script in a program language of your choice and call in GWB apps to do calculations. You can set up a script to call each sample (from a text file or spreadsheet) and prescribe a different final temperature for your run. The final temperature in this case can be a row or a column considered as a variable read into your script. In general, this will give you more flexibility in customizing your scripts. Please see the Plug-in Feature chapter in the GWB Reference manual for more information. 

    If you want to pickup the results and run a speciation calculation, you can do that in the trailer commands section of the Launch dialog by using the pickup and go command. It may look something like this:

    T initial = 25 C, final = 100 C (<--set sliding temp path)
    go (<-- trigger calculation in React)
    pickup (<- pickup entire system as your Basis)
    suffix "_pickup" (<-set new suffix for new output files, if you don't the results will overwrite the first output files)
    go (<- trigger calculation in React again)

    Please refer to the GWB Command Guide for the full list of commands recognized in each app. 

    Hope this helps,
    Jia Wang
    Aqueous Solutions LLC

  11. Hello,

    In the plotting programs, you can resize the entire image (inside the plot window or adjust the entire Gtplot window) but not an isolated portion of the image. You can, however, plot individual samples or groups of samples on the Samples pane if you are trying to see where each point is plotting. Please see section 8, Using Gtplot, of the GWB Essentials User Guide for more information on plot configurations.

    Hope this helps,
    Jia Wang

  12. Hello,

    It seems like your injection fluid has a very high Cl- concentration. Did you also check the charge imbalance on this fluid in SpecE8/React? If I change your model to a zero injection rate for the well, it seems to run to completion just fine. I would suggest starting in React with your fluids and see what might be the issue there. If a fluid has an excess of anions, you should select a cation for charge balancing.

    Another suggestion is that for certain basis species, it would help with convergence if you swap in a more abundant species of that form give the conditions (such as pH) of your system.

    Another thing to double check is your concentration and units. I noticed that you have set the same concentration (1e-14 mg/l) for certain species. If you have no measurement for certain components, you would want to set the value to an insignificant concentration since the program can't numerically solve equations with zero values but not necessarily too low.

    Lastly, you might also be interested in looking into using a virial model for working with brine solutions. For more information regarding datasets available with the GWB installation, please see the Thermo Data page.

    Best regards,
    Jia Wang
    Aqueous Solutions LLC

  13. Thanks for providing more context on your conceptual model and the explanation.

    To simplify your problem for troubleshooting, you can eliminate the sorption reaction and focus on getting the mineralogy and fluid chemistry of your model correct. Even though sorption is ultimately the reaction that you want to focus on, it’s heavily dependent on getting a model to correctly account for formation of Fe(OH)3. The best place to start would be creating a reaction model in React.

    To transfer your model from React to a reactive transport model, I would suggest evaluating the role of your reactants. In a reaction path model, you can add in minerals like Calcite (moderating the pH of your system), and pyrite/arsenopyrite for the iron content to modify the composition of your system. This is typically less commonly used in a reactive transport modeling setting. If calcite is present at the start and in equilibrium with the fluid, for example, it should be swapped into the initial system’s basis. If a mineral exists in your domain but is not in equilibrium with your fluid, you may want to consider using a kinetic rate law to constrain its formation and dissolution. Also, is there any Fe(OH)3 present in the initial domain, before injection cycles?

    A 1D radial model might also be another step before a 2D model. When you are working on a 2D model, you create parallel models also focus on the transport side of things. For example, in a simple model, set a Br- tracer to see the size of the zone influenced by injection and see if that matches what is expected.

    Hope this helps,
    Jia

  14. Hello,

    It sounds like in the first case, you are trying to get Fe(OH)3ppd to precipitate and thus provide a surface for complexation of arsenic contamination. In the second case, you are trying to dissolve the Ferrihydrite.

    When I ran your models and plotted the Fe(OH)3ppd volume at the ASR well, it seems like the mineral precipitated in both scenarios and in fact there are more Fe(OH)3ppd that forms in your case of no buffer zone than the model with the buffer zone. This doesn't seem to fit the scenario that you conceptually described. If the main difference between the two models is the presence of Fe(OH)3ppd for surface complexation, then I would suggest simplifying your model to investigate. Maybe eliminate the reactants and see what effect that has on the model. You may want to investigate fluid chemistry in React for the initial composition (your native groundwater) mixed with your injection fluid. Maybe also consider how the pH can factor into Ferrihydrite stability?

    Another thing to check is to see whether you have any mistakes with the units for fluid concentrations. Looking at your input files and comparing the two, I see the same amount of O2(aq) assigned for all fluids.  How are you modeling an oxidizing environment for the first and the second with oxygen depletion? I also noticed that the native groundwater has the same concentration between the input files for all components except for Fe++.

    I noticed that your X2t model does not have any flow set. Is that intentional?

    Hope this helps,
    Jia Wang
    Aqueous Solutions LLC

     

  15. Hello Jaxon,

    The TEdit application current accepts PhreeqC and EQ3/6 datasets for conversion to the GWB format.

    Are you trying to create a surface dataset or a thermodynamic dataset? Surface datasets in the GWB loads its aqueous species from a thermodynamic dataset. You can see which thermodynamic dataset it is using from the header block located on top of the sdat file.

    In general, I would recommend editing and creating new datasets with TEdit, especially if you are unfamiliar with the text file format. If you are still running into issues with this, please post the .tdat or .sdat file that you are having issues with so that we can take a closer look. If you can provide additional information regarding the dataset that you are trying to create, that will be helpful too.

    I think you will find Thermo Datasets in the GWB Reference Guide and Using TEdit in the GWB Essentials Guide very useful. More information regarding the types of surface complexation models and sorption models are located in section 2.6 in the GWB Essentials User Guide.

    Hope this helps,
    Jia Wang
    Aqueous Solutions LLC

     

  16. Hello Keishi,

    You're welcome. I am glad to hear that you corrected the typos in your rate laws. The React input file ran to completion for me, but I am not sure what I am looking for here. It seems like you are using some reaction rate constants and rate laws highly dependent on various species activities. Are the rates behaving as you expect them?

    In general, I observe that the dissolution rates of your reactions drop really quickly after the start of your run. In particular, the reaction rate for Periclase is especially large at the start and drops close to zero immediately after the simulation begins. Typically, minerals that react very quickly within your system is represented with the equilibrium approach (swapped in equilibrium with your system in your basis). Reactions that proceed slowly but measurable can take advantage of the kinetic approach.

    I also noticed that your reactive transport model has slightly different fluid chemistry. Did your kinetic reactions work when your tried with that fluid? If you are still having issues configuring your models, could you provide some additional context for your modeling?

    Best,
    Jia

  17. Hello,

    The % of sites is the concentration of the weak site species divided by the total concentration. On the table, you can see that the total concentration is 1.871 mmolal. If you divide 1.23 mmolal byt 1.871 mmolal, you get 0.657. If you run the simulation in the example and use Gtplot to export the numerical data for species concentration to Excel, you can calculate the percent for each surface species. The exported values carry more significant digits and you will see that they match the rounded values in the % of site column. More details regarding exporting numerical data from simulations can be found in section 8.5 in the GWB Essentials User Guide.

    With regards to how the table of maximum concentration of metal sorption was calculated in the Co-precipitation example, please see this post.

    Hope this helps,
    Jia Wang
    Aqueous Solutions LLC

  18. Hello Scott,

    Thanks for attaching the additional files. I am glad to hear that you managed to get one fluid to converge. Going back to your previous attachment (X1t for Quesiton2.x1t), changing the absolute units to relative units seems to converge just fine when I also reset the epsilon value to the default value. The epsilon value is used as a convergence criterion for the Newton-Raphson used to solve a system of equations. Setting the epsilon to a value smaller than the default would produce a slightly more accurate result at the expense of smaller step sizes. In this case here, I think the small epsilon value is affecting the program's ability to converge since it's extremely small. I would not recommend changing it unless you have specific reason to do so.

    I also noticed that the fluid composition in the new attachments are not the same fluid from before. Was that intentional? In your Initial Fluid_molkg.rea file, I noticed that you had included a small amount of total iron concentration and you have set an alkalinity value instead of a total concentration for your bicarbonate component. I suspect that the oxidation state set by your aqueous oxygen concentration probably results in a very small amount of Fe++ in solution. To help the program's initial calculation of the equilibrium state, it is sometimes helpful to swap in a higher abundance species in solution. In this case, I tried swapping in Fe+++ and React had no issues with convergence. The program is still calculating the mass distribution between the different redox state of iron.

    For your input file "X1t for Quesiton3.x1t", if I reset the epsilon value to default, swap Fe+++ for Fe++ and set SO4--- as the balance ions in both the Basis and Reactants pane, your input file runs without issues.

    As a side note, you can disable redox equilibrium between oxidation states if you suspect that redox species are not in equilibrium. To do so, you can go to Config -> Redox couples... and then decouple Fe++/Fe+++. After doing so, you can directly add Fe+++ as a separate entry in you Basis, allow you to constrain the total concentration of Fe+++ species. For more information on redox disequilibrium, please see section 7.3 of the GWB Essentials User Guide.

    Hope this helps,
    Jia

  19.  Hello Donghun,

    The error message means the program can't calculate equilibrium state of your "inlet" fluid. You can try troubleshooting in React for just the fluid chemistry first. Right-click and drag the Fluids pane from X1t to a new instance of React. When I disabled the charge balancing ion and ran the calculation in React, the results show a charge imbalance with an excess of anion. You would likely want to pick an abundant cation (like Na+) instead of an anion for charge balancing.

    I also noticed that all you use relative units for all components except for cobalt concentration. Perhaps this was a mistake? If you use absolute units for the total concentration of a component, the amount of that solute won't scale with the total amount of fluid in your system.

    I think the more dominant species of cobalt is HCoO2-, given the pH in your system. You can try swapping to the predominant species to help the program converge.

    Additionally, I also noticed a couple other things in your input file that you might want to check.

    In the Reactants pane, a sliding pH path increments the pH from what you set in the system initially to a final value. This is not typically used in reactive transport models and you have it set to the same pH value as the start of the simulation. Is this what you had intended?

    I also suggest that you check your mineral volume and porosity. I noticed that with the volume of mineral and porosity, you have specified over 100% of your domain. This doesn't seem correct.

    I noted that you have very large specific surface areas (reactive surface area per gram of mineral) for kinetic minerals. The built-in rate law in the GWB uses the specific surface area to calculate the surface area used to calculate the kinetic rate. It would be good to check that your specific surface areas and the rate constants are correct. You can find the built-in rate law for kinetic reactions in section 4.2 Kinetics of precipitation and dissolution of the GWB Reaction Modeling User Guide.

    Hope this helps,
    Jia Wang
    Aqueous Solutions LLC

  20. Hello Fanuel,

    I am sorry to hear that you're having issues. When you check out with the Community License from the GWB webstore, did you receive an onscreen "Thank you for your order!" message with an order number? If so, please send a message to sales@gwb.com with the order number and I can look into it on our end.

    If you did not see an onscreen message with the order number, then I think your order did not go through. Could you try again after disabling pop up restrictions on your browser or try checking out on a different browser?

    Hope this helps,
    Jia

  21. Hello Betty,

    You can export the Xtplot data by going to Edit -> "Copy" and then paste into an Excel spreadsheet. The program will export the data that is currently selected for plotting.

    Separately from Xtplot, if you would like to print out more time slices in your text file output, you can adjust the dxprint interval in X1t under Config -> Output... dialog. By default, dxprint is set to 0.1, which tells the program to output data at every 0.1 reaction interval of your simulation. For more information on this setting, see the "dxprint" command in the X1t section of the GWB Command Reference.

    Hope this helps,
    Jia Wang
    Aqueous Solutions LLC

×
×
  • Create New...