Applications and Case Studies > Soil profile geochemistry

Can anyone help me check the code of my simulation process,plz!

<< < (2/2)

I don't know an easy way to find the least soluble uranium phase. Not sure I have encountered a problem posed quite like this. Here is a way with a little trial and error.

First, I am assuming the predominant U valence state is U(6). At pH 5, I simply added 1e-2 moles UO2Cl2 to the solution and found a mineral Soddyite that was supersaturated. Then the following script determines the amount of UO2Cl2 that must be added to reach equilibrium with Soddyite (for a given pH). The USER_PRINT block determines all of the uranium minerals that are saturated or supersaturated in the solution that is in equilibrium with Soddyite. If Soddyite is the only mineral listed in USER_PRINT output, then you have found the mineral with the lowest solubility. If other minerals are supersaturated, then you would have to rerun the calculation, replacing Soddyite in EQUILIBRIUM_PHASES with one of the minerals that is supersaturated. You would have to repeat the process until you find the mineral with the lowest solubility (only one mineral listed in USER_PRINT). In this script, when you equilibrate with Soddyite, you find that Haiweeite and CaUO4 are supersaturated (with CaUO4 having the largest SI). A further run with CaUO4 determines that CaUO4 is the least soluble mineral at a U concentration of 1.2e-9.

You would repeat the whole process at another pH.

--- Code: ---SOLUTION 1
    temp      25
    pH        10
    pe        3.957
    redox     pe
    units     mg/l
    density   1
    Al        0.06
    Br(-1)    0.0001
    C(4)      130.9
    Ca        183
    Cl(-1)    1193 charge
    F         2.2
    Fe(2)     0.033
    K         15.95
    Li        0.0112
    Mg        50.4
    Mn(2)     0.022
    N(5)      32.6
    Na        1036
    S(6)      941.1
    Tc        1e-006 Mol/l
    Si        4.22
    Sr        0.715
    -water    1 # kg
USE solution 1
Soddyite     0 UO2Cl2 1
10 t = SYS("phases", count , name$ , type$ , moles )
20 FOR i = 1 TO count
30  IF SI(name$(i)) < -1e-4 THEN GOTO 100
40  s$ = PHASE_FORMULA (name$(i), pcount , elt$ , pcoef)
50  FOR j = 1 TO pcount
60    IF elt$(j) = "U" THEN PRINT PAD$(name$(i), 15), SI(name$(i)), s$
70  NEXT J
100 NEXT i

--- End code ---


[0] Message Index

[*] Previous page

Go to full version