Jump to content
Geochemist's Workbench Support Forum
wbourcier

mass problem with Pitzer model

Recommended Posts

I get an unexpected change in elemental masses after using "pickup" command

and starting a polythermal simulation. I also hold a gas fugacity constant.

 

if I run the picked-up system without a temperature change I get one result, if I add the temperature path I get another (both at the starting condition)

 

Using Pitzer option

-----------------------------------

 

Model loading of sodium carbonate with CO2 during flue gas CO2 capture

 

The problem is that in using “pickup” command and fix fug command, the system changes composition

 

 

React> pickup system

React> show

Temperature is 25 C

Thermo dataset: C:\Program Files\Gwb\Gtdata\thermo_da0ypfR2.wlbrev9.dat

Working directory: c:\users\bourcier1\desktop\nahcolitetests\katherinepapercalcs

Options: H-M-W

 

Basis is:

H2O .9670762346433 free kg guess = 53.58010637651

HCO3- 1.175844707556 mol guess = 1.108927423502

Nahcolite (swapped for Na+) 2.595535888509 free mol guess = 3.87

CO2(g) (swapped for H+) .1 fugacity guess = -.09861940394104

No reactants specified.

 

React> HCO3- bal (system will not converge unless I change charge balance species – common issue with pickup command)

React> go

 

Step # 0 Xi = 0.0000

Temperature = 25.0 C Pressure = 1.013 bars

pH = 8.561

Ionic strength = 1.422313

Activity of water = 0.962599

Solvent mass = 0.967076 kg

Solution mass = 1.067985 kg

Solution density = 1.058 g/cm3

Chlorinity = 0.000000 molal

Dissolved solids = 94485 mg/kg sol'n

Hardness = 0.00 mg/kg sol'n as CaCO3

carbonate = 0.00 mg/kg sol'n as CaCO3

non-carbonate = 0.00 mg/kg sol'n as CaCO3

Rock mass = 0.218043 kg

Carbonate alkalinity= 59724.18 mg/kg sol'n as CaCO3

Water type = Na-HCO3

 

Minerals in system moles log moles grams volume (cm3)

----------------------------------------------------------------------------

Nahcolite 2.596 0.414 218.0 100.2

_____________ _____________

(total) 218.0 100.2

 

Aqueous species molality mg/kg sol'n act. coef. log act.

---------------------------------------------------------------------------

Na+ 1.318 2.743e+04 0.5367 -0.1504

HCO3- 1.109 6.127e+04 0.4848 -0.2696

CO3-- 0.1045 5676. 0.0878 -2.0378

CO2(aq) 0.002488 99.17 1.3651 -2.4689

OH- 5.320e-06 0.08193 0.6653 -5.4511

(only species > 1e-8 molal listed)

 

Mineral saturation states

log Q/K log Q/K

----------------------------------------------------------------

Nahcolite 0.0000 sat Na2CO3:7H2O -2.0257

Natron -1.7754 Thermonatrite -2.8964

Trona -1.9490

(only minerals with log Q/K > -3 listed)

 

Gases fugacity log fug.

-----------------------------------------------

CO2(g) 0.1000 -1.000

H2O(g) 0.03045 -1.516

 

In fluid Sorbed Kd

Original basis total moles moles mg/kg moles mg/kg L/kg

-------------------------------------------------------------------------------

H+ -0.0986 -0.0986 -93.1

H2O 53.7 53.7 9.05e+05

HCO3- 3.77 1.18 6.72e+04

Na+ 3.87 1.27 2.74e+04

 

Elemental composition In fluid Sorbed

total moles moles mg/kg moles mg/kg

-------------------------------------------------------------------------------

Carbon 3.771 1.176 1.322e+04

Hydrogen 111.0 108.4 1.023e+05

Oxygen 64.99 57.21 8.570e+05

Sodium 3.870 1.274 2.743e+04

 

Now heat the system holding PCO2 constant – first step should reproduce the output file from above

 

React> fix fug CO2(g)

React> temp start 25 end 110

React> go

Since the starting temperature has not changed I expect to see the same output at step 0

But elemental composition has changed (see blue highlight below)

PCO2 is at 0.1 bars in both cases, temperature is 25 C in both cases

 

Step # 0 Xi = 0.0000

Temperature = 25.0 C Pressure = 1.013 bars

pH = 8.581

Ionic strength = 1.520600

Activity of water = 0.960372

Solvent mass = 0.967076 kg

Solution mass = 1.074209 kg

Solution density = 1.061 g/cm3

Chlorinity = 0.000000 molal

Dissolved solids = 99732 mg/kg sol'n

Hardness = 0.00 mg/kg sol'n as CaCO3

carbonate = 0.00 mg/kg sol'n as CaCO3

non-carbonate = 0.00 mg/kg sol'n as CaCO3

Rock mass = 0.218043 kg

Carbonate alkalinity= 63244.90 mg/kg sol'n as CaCO3

Water type = Na-HCO3

 

moles moles grams cm3

Reactants remaining reacted reacted reacted

----------------------------------------------------------------------------

CO2(g) -- fixed fugacity buffer --

 

Minerals in system moles log moles grams volume (cm3)

----------------------------------------------------------------------------

Nahcolite 2.596 0.414 218.0 100.2

_____________ _____________

(total) 218.0 100.2

 

Aqueous species molality mg/kg sol'n act. coef. log act.

---------------------------------------------------------------------------

Na+ 1.404 2.905e+04 0.5331 -0.1259

HCO3- 1.170 6.426e+04 0.4778 -0.2526

CO3-- 0.1169 6317. 0.0837 -2.0095

CO2(aq) 0.002486 98.48 1.3932 -2.4606

OH- 5.422e-06 0.08301 0.6666 -5.4420

(only species > 1e-8 molal listed)

 

Mineral saturation states

log Q/K log Q/K

----------------------------------------------------------------

Nahcolite 0.0000 sat Na2CO3:7H2O -2.0318

Natron -1.7844 Thermonatrite -2.8765

Trona -1.8217

(only minerals with log Q/K > -3 listed)

 

Gases fugacity log fug.

-----------------------------------------------

CO2(g) 0.1000 -1.000

H2O(g) 0.03012 -1.521

 

In fluid Sorbed Kd

Original basis total moles moles mg/kg moles mg/kg L/kg

-------------------------------------------------------------------------------

H+ -0.111 -0.111 -104.

H2O 53.7 53.7 9.00e+05

HCO3- 3.84 1.25 7.08e+04

Na+ 3.95 1.36 2.91e+04

 

Elemental composition In fluid Sorbed

total moles moles mg/kg moles mg/kg

-------------------------------------------------------------------------------

Carbon 3.842 1.247 1.394e+04

Hydrogen 111.1 108.5 1.018e+05

Oxygen 65.21 57.42 8.552e+05

Sodium 3.953 1.357 2.905e+04

 

Elemental composition has changed – but I did not change it!

 

Share this post


Link to post
Share on other sites
Guest Melika Sharifi

Dear Wbourcier,

 

Could you, please, attach your React script here? That way we can take a look at it and find the problem.

 

Thanks,

Melika

 

 

Melika Sharifi

Aqueous Solutions LLC

Share this post


Link to post
Share on other sites
Guest Melika Sharifi

Dear Wbourcier,

 

Since you are using a custom-built thermo dataset, please upload your thermo dataset along with your script, so we could open your script to find the problem.

 

Thanks,

Melika

 

Melika Sharifi

Aqueous Solutions LLC

Share this post


Link to post
Share on other sites

script attached below

I will send dataset via email

 

 

FIRST STEP- REACT Na-CARBONATE CAPTURE SOLUTION WITH CO2

Temperature is 25 C

Thermo dataset: C:\Program Files\Gwb\Gtdata\thermo_da0ypfR2.wlbrev9.dat

Working directory: c:\users\bourcier1\desktop\nahcolitetests\katherinepapercalcs

Options: H-M-W

 

Basis is:

H2O 1 free kg

CO3-- (swapped for HCO3-) 1.935 molal

Na+ 3.87 molal

OH- (swapped for H+) charge balance

Reactants:

Slide fugacity of CO2(g) to .1

 

Elemental composition In fluid Sorbed

total moles moles mg/kg moles mg/kg

-------------------------------------------------------------------------------

Carbon 3.771 1.176 1.322e+04

Hydrogen 111.0 108.4 1.023e+05

Oxygen 64.99 57.21 8.570e+05

Sodium 3.870 1.274 2.743e+04

 

Pickup system and re-run to confirm masses remain the same

 

Elemental composition In fluid Sorbed

total moles moles mg/kg moles mg/kg

-------------------------------------------------------------------------------

Carbon 3.771 1.176 1.322e+04

Hydrogen 111.0 108.4 1.023e+05

Oxygen 64.99 57.21 8.570e+05

Sodium 3.870 1.274 2.743e+04

 

Fix CO2 fugacity and re-run

 

Elemental composition In fluid Sorbed

total moles moles mg/kg moles mg/kg

-------------------------------------------------------------------------------

Carbon 3.771 1.176 1.322e+04

Hydrogen 111.0 108.4 1.023e+05

Oxygen 64.99 57.21 8.570e+05

Sodium 3.870 1.274 2.743e+04

 

Now add temperature path starting at 25 C – here the masses have changed

 

Elemental composition In fluid Sorbed

total moles moles mg/kg moles mg/kg

-------------------------------------------------------------------------------

Carbon 3.842 1.247 1.394e+04

Hydrogen 111.1 108.5 1.018e+05

Oxygen 65.21 57.42 8.552e+05

Sodium 3.953 1.357 2.905e+04

 

 

 

verbatim input commands:

React> show

Temperature is 25 C

Thermo dataset: C:\Program Files\Gwb\Gtdata\thermo_da0ypfR2.wlbrev9.dat

Working directory: c:\users\bourcier1\desktop\nahcolitetests\katherinepapercalcs

Options: H-M-W

 

Basis is:

H2O 1 free kg

CO3-- (swapped for HCO3-) 1.935 molal

Na+ 3.87 molal

OH- (swapped for H+) charge balance

Reactants:

Slide fugacity of CO2(g) to .1

 

 

React> go

React> pickup system

React> show

Temperature is 25 C

Thermo dataset: C:\Program Files\Gwb\Gtdata\thermo_da0ypfR2.wlbrev9.dat

Working directory: c:\users\bourcier1\desktop\nahcolitetests\katherinepapercalcs

Options: H-M-W

 

Basis is:

H2O .9670762346433 free kg guess = 53.58010637651

HCO3- 1.175844707556 mol guess = 1.108927423502

Nahcolite (swapped for Na+) 2.595535888509 free mol guess = 3.87

CO2(g) (swapped for H+) .1 fugacity guess = -.09861940394104

No reactants specified.

 

 

React> bal HCO3-

React> go

React> fix fug CO2(g)

React> go

React> temp start 25 end 110

React> go

React> show

Initial temperature is 25 C, final is 110 C

Thermo dataset: C:\Program Files\Gwb\Gtdata\thermo_da0ypfR2.wlbrev9.dat

Working directory: c:\users\bourcier1\desktop\nahcolitetests\katherinepapercalcs

Options: H-M-W

 

Basis is:

H2O .9670762346433 free kg guess = 53.58010637651

HCO3- 1.175844707556 mol guess = 1.108927423502 (charge balance species)

Nahcolite (swapped for Na+) 2.595535888509 free mol guess = 3.87

CO2(g) (swapped for H+) .1 fugacity guess = -.09861940394104

Reactants:

Fix fugacity of CO2(g)

 

Other "show" options: type "show show"

React>

Share this post


Link to post
Share on other sites
Guest Melika Sharifi

Hi Bill,

 

In isothermal runs in which temperature is set to one of the principal temperatures, the GWB applications take log Ks directly from the tables in the thermo dataset. In a run at 25°C, for example, React takes the second log K entry for each chemical species in the dataset. Where temperature differs from a principal temperature, React fits each table to a polynomial with respect to temperature T, in °C. The polynomial is used at all temperatures in polythermal simulations.

 

Even though both of your post-pickup simulations start at 25°C, the isothermal run uses the log Ks directly from the dataset while the polythermal run uses the polynomial to evaluate the log Ks at each step. You can verify this by setting the printout for “reactions loaded” to long mode. Type the command “printout reaction = long” or go to the Config – Output dialog and click twice in the “reactions loaded” checkbox to completely fill it (you should see a square, indicating long output, instead of the checkmark for short output). Run each model and compare the text output files. You’ll see slightly different log Ks for the initial condition (25°C) for each reaction that’s loaded.

 

To get around this, you might consider running your pre-pickup simulation at a temperature slightly higher or lower than 25°C , such as 25.001°C. That way, you’ll always use the polynomial to evaluate log Ks and your subsequent isothermal and polythermal simulations will have identical initial conditions.

 

There is another complication that doesn’t arise in your particular example, but it can come up when comparing isothermal and polythemal simulations. The GWB apps will only load reactions for species whose thermo data span the temperature range of the simulation. You may have thermo data for a large number of species at 25°C, but data for some of those species may be unavailable at 150°C. In this case, an isothermal run at 25°C will load more species than an isothermal run at 150°C or a polythermal run from 25°C to 150°C. You might wish to use the extrapolate option, which causes React to use the temperature polynomial to estimate log Ks outside the range of known values, to load the entire set of species over your temperature range of interest. Or, you can suppress the species with limited data from your isothermal run at 25°C so that you’re consistently working with a smaller subset of species. You can take a look at the very top of the Results pane to see how many aqueous species are loaded in a simulation.

 

For more information, please see React’s “extrapolate” command in the GWB Reference Manual as well as the Thermo Datasets Appendix to the Reference Manual.

Share this post


Link to post
Share on other sites

Thanks.

I am guessing one would only see a change in component masses (vs change in distribution of species) when starting with a system that is constrained in a kind of unusual manner (typical for pickup files). I have never noticed this for input files where I specifically constrain component masses.

 

Thanks for your analysis!

 

bill

Share this post


Link to post
Share on other sites
Guest Melika Sharifi

Dear Bill,

 

Your assumption is correct. The distribution of species, of course, is affected by the log Ks being used. The bulk composition, on the other hand, should not change when your Basis is defined entirely with bulk constraints. This is quite common, such as when your input is a bulk lab analysis of a fluid. If you look at your Basis pane (after pick-up), though, you will see HCO3-, Nahcolite, and CO2(g) in the basis. The HCO3- is a bulk constraint but the last two entries are free constraints. The software honors the constraints set for the fugacity of CO2 and concentration of free Nahcolite but the log Ks come into play in figuring the bulk composition of the system.

 

Bests,

Melika

 

Melika Sharifi

Aqueous Solutions LLC

Share this post


Link to post
Share on other sites

Hi Bill, 

I’m writing to let you know about a new feature available in GWB14. You can control species loading in a calculation by specifying a temperature range over which thermodynamic data should be available. You can additionally force the program to always get log K values by evaluating a polynomial, even when the calculation is isothermal at a principal temperature. In this case, the program would normally use the value directly from the thermo dataset. The difference is small, but it’s why the endpoint of your polythermal path and your isothermal calculation post-pickup were slightly different. You can read about the feature in section 6.92 span in the GWB Command Reference. The new release has many more new features as well. Please let us know if you’re interested in trying GWB14. I’m happy to send you a demo.

Cheers,
Brian
 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...