Processes > Reactive transport modelling
Water cleaning by air stripping
MichaelZ20:
There is a 10-m column filled with water polluted by Benzine. I want to model its cleaning by bubbling air at a pressure of 2 atm. This is neither fixed_volume, nor fixed_gas problem.
I thought that by representing all the bubbles as a giant bubble in equilibrium with the solution and changing the bubble volume, I could get an estimate of the volume of bubbling that provides the required standard benzine concentration. I am confused by setting the problem: should it be the fixed_volume problem?
I attach my input file and will be much grateful for any advice.
dlparkhurst:
Interesting question. Here is my take, assuming your Benzene(g) definitions are correct. I consider the volume of gas that exits the top of the column at 1 atm and assume the gas is in equilibrium with dissolved benzene for a well-mixed reservoir of 1 liter. The actual system is more complicated and probably depends on bubble size/surface area and liquid-gas transfer rates, possibly as a function of pressure.
I have the gas phase as fixed volume gas and ignore the other constituents in the gas phase. The script equilibrates 1 liter of water with 0.1 liter of benzene-free gas. Some benzene transfers from liquid to gas. The gas is removed and the liquid is retained for equilibration with another volume of gas. Ideally, it looks like a liter (0.8 L in the graph) of gas per liter of water would be sufficient. The result may depend somewhat on the incremental volume of gas you choose (0.1 L here), but the kinetics of the liquid-water exchange is probably a much bigger unknown. The total volume of gas would scale according to the volume of your 10-m column.
--- Code: ---TITLE Cleaning water from benzene pollution by air stripping
SOLUTION_MASTER_SPECIES
#element species alk gfw_formula element_gfw
Benzene Benzene 0.0 C6H6 78.115
SOLUTION_SPECIES
Benzene = Benzene
log_k 0
delta_h 0 kcal
PHASES
Benzene(g)
Benzene = Benzene
log_k -2.727 # log(K_Henry in mol/L/Atm)
delta_h 8.097 kcal
T_c 288.85; -P_c 48.3; -Omega 0.212
END
GAS_PHASE 1
-pressure 1 # external pressure at the top of the colomn?
-fixed_volume
-volume 0.1 # L
Benzene(g) 0
END
USER_GRAPH 1
-headings vol Dissolved_benzene Standard Gas_benzene
-axis_titles "Liter gas per liter of water" "Dissolved Benzene, mg/L" "Gas-phase Benzene, moles"
-axis_scale y_axis auto auto auto auto log
-axis_scale sy_axis auto auto auto auto log
-initial_solutions true
-connect_simulations true
-plot_concentration_vs x
-start
10 PUT(GET(1) + (GAS("Benzene(g)") > 0) * 0.1, 1)
20 GRAPH_X GET(1)
30 GRAPH_Y TOT("Benzene")*GFW("Benzene")*1000, 0.005
40 GRAPH_SY GAS("Benzene(g)")
-end
END
SOLUTION 1 Water polluted with benzene
units mmol/kgw
pH 7 charge
temp 25
Benzene 1 # 78.1 mg/kgw (at the standard for drinking water <0.005 mg/L)
water 1 # kg
END
USE SOLUTION 1
USE GAS_PHASE 1
SAVE solution 1
END
USE SOLUTION 1
USE GAS_PHASE 1
SAVE solution 1
END
USE SOLUTION 1
USE GAS_PHASE 1
SAVE solution 1
END
USE SOLUTION 1
USE GAS_PHASE 1
SAVE solution 1
END
USE SOLUTION 1
USE GAS_PHASE 1
SAVE solution 1
END
USE SOLUTION 1
USE GAS_PHASE 1
SAVE solution 1
END
USE SOLUTION 1
USE GAS_PHASE 1
SAVE solution 1
END
USE SOLUTION 1
USE GAS_PHASE 1
SAVE solution 1
END
USE SOLUTION 1
USE GAS_PHASE 1
SAVE solution 1
END
USE SOLUTION 1
USE GAS_PHASE 1
SAVE solution 1
END
USE SOLUTION 1
USE GAS_PHASE 1
SAVE solution 1
END
--- End code ---
MichaelZ20:
Thank you, David!
MichaelZ20:
Dear David,
Can you please explain line 10 in the USER_GRAPH?
Thank you in advance.
dlparkhurst:
--- Code: ---10 PUT(GET(1) + (GAS("Benzene(g)") > 0) * 0.1, 1)
--- End code ---
There may be better ways to set the X value for plotting, but this was quick and dirty. "(GAS("Benzene(g)") > 0)" is a logical expression and will take on the value of 0 if it is false [that is GAS("Benzene(g)") <= 0] and 1 if true.
The first calculation after the USER_GRAPH definition is an initial solution calculation, so the value of GAS("Benzene(g)") will be zero, and GET(1) will equal zero if there has been no PUT(1). At this point, the solution has not reacted with a gas phase, so the cumulative volume of gas is zero, and the first X plotting location is zero.
All of the rest of the calculations have GAS_PHASE and GAS("Benzene(g)") will be greater than zero, so at each subsequent calculation the PUT statement will increment by 0.1--the volume of gas introduced at each step, with the result that the plotting location will be equal to the cumulative volume of gas introduced to the system.
Navigation
[0] Message Index
[#] Next page
Go to full version