Beginners > PHREEQC basics

Converting from molality (mol/kgw) to mg/l for high solubility minerals

(1/5) > >>

I read on the PHREEQC Q+A thread that the conversion from molality (mol/kgw) to mg/l for dissolved species requires a correction for the density of the final solution and mass of the solutes.


Rewritten here, where X is the molar mass of the phase

mg/L = (mol/kgw) * (X g/mol) * (1000 mg/g) * (1 kgw/L)

For most solutions where the solubility of dissolving phases is low, I imagine the correction is only minor and could even be ignored. For very soluble minerals I would guess the density would change.

Is it possible to output the density of a solution? Or is the mass of water considered to represent the density (ie mass of water (in kg) per litre)?

I have attempted to print density in SELECTED_OUTPUT without any luck. Alternatively could it be output using a BASIC command in USER_PUNCH?


Version 3 will calculate density when using the Amm.dat, phreeqc.dat, or pitzer.dat databases. The density is printed in the output section "Description of solution". In Basic, the function RHO returns the density (kg/L).

Thanks David, that's a great tip.

I had been using version 2.18 for MacOS so will experiment a little with V3 on a Windows PC.

The Basic command worked fine with the MacOS version.

For anyone else looking to output density, I used the following to output to the SELECTED_OUTPUT file:

-headings density
10 punch RHO

Quick tip for output of mg/l without a density consideration (assumes 1kgw/litre):

Examples below for sulfate (S(6)) with molecular mass 96.06 g/mol.

Calculation in BASIC is:

mol/kgw * g/mol * 1000mg/g

The following writes to the SELECTED_OUTPUT file:

-heading sulfate_mg/l
10 PUNCH TOT("S(6)")*96.06*1000

Alternatively the following writes to the general output file:

10 PRINT "mg SO4/l", TOT("S(6)")*96.06*1000

For anyone looking to compare the effect of a density correction here is a partial script that may help.

The USER_PUNCH data block outputs density (BASIC 10), then converts mol SO4/kgw to mgSO4/l without a density correction (BASIC 20), then converts mol SO4/kgw to mgSO4/l with a density correction (BASIC 30), then outputs the difference between the uncorrected and corrected value (in mgSO4/l) (BASIC 40). Finally, the percentage difference is calculated (BASIC 50).

-file out1.xls

-headings density mgSO4/l_uncorrected mgSO4/l_corrected diff %diff
20 PUNCH TOT("S(6)")*96.06*1000
30 PUNCH TOT("S(6)")*96.06*1000*RHO
40 PUNCH (TOT("S(6)")*96.06*1000)-(TOT("S(6)")*96.06*1000*RHO)
50 PUNCH (((TOT("S(6)")*96.06*1000)-(TOT("S(6)")*96.06*1000*RHO))/(TOT("S(6)")*96.06*1000*RHO))*100

Please let me know if you spot any errors for correction or identify any simplifications that could be made.

I suppose the BASIC could be simplified by defining each punch as a variable? But it probably helps with explanation to leave it written in full...


[0] Message Index

[#] Next page

Go to full version