The objective of this example is to illustrate how to change porosity and hydraulic conductivity when a solid phase is dissolving. The change in porosity and hydraulic conductivity is described by the linear model for temporal-spatial variability of hydraulic properties using scaling factors.


Description of example



Implementation


Additions to database


Two script functions are defined to account for evolving hydraulic properties:

  • InitialCalculation: a script that is executed for each node at the beginning of the transport simulations to calculate the inert solid phase. This is derived from the saturated water content defined in the HYDRUS GUI and the initial amount of calcite.
  • UpdateHydraulic: a script that is executed for each node within each time step after the geochemical calculations. It calculates the remaining solid phase and updates porosity, the scaling factor of the water content and the scaling factor of the hydraulic conductivity using the Carman-Kozeny relation.



calculate_values
InitialCalculation
-state initial #scripts that are performed just before the start of the transport simulations
#one execution for each node
#used here to calculate inert solid phase
-mybasic 
-start

ths = transprop("ths") #get porosity from HYDRUS GUI for given node number
inertsolidphase = 1 - ths - equi("calcite")*36.9/1000
put_node("Inert",inertsolidphase) #save value
change_por0(ths)
#to punch
put_node("porosity",ths)
put_node("sfwater",get_sfwater())
put_node("sfcond",get_sfcond())

-end


UpdateHydraulic
-state update #script will be performed for each node and time step after geochemical calculation
#used to calculate changed porosity (via scaling factor water content)
#and hydraulic conductivity (via scaling factor hydraulic conductivity)
-mybasic
-start

cal =equi("calcite")*36.9/1000
solidphase = get_node("Inert") + cal
porosity = 1 - solidphase 
change_por(porosity)
update_sfwater(porosity)
#update hydraulic conductivity using the Carman-Kozeny relation
alphaK = (porosity^3 / (1-porosity)^2) * ((1-get_por0())^2 / get_por0()^3)
change_sfcond(alphaK)
#to punch
put_node("porosity",porosity)
put_node("sfwater",get_sfwater())
put_node("sfcond",alphaK)

-end



GeoChemistry


The amount of calcite is defined with equilibrium_phases data block

The identifier -update hydraulicprop in reactive_transport data block indicates that  the scaling factor of the water content and the scaling factor of the hydraulic conductivity are updated during the transport calculations according the calculations done with scripts defined in the calculate_values data block for which -state update is defined.



equilibrium_phases 1001
-material 1
calcite 0 3
O2(g) -0.68


reactive_transport
-update hydraulicprop true




Results



Figure - Profiles of calcite content at selected times.



HPx Project

Hydraulic properties - Equilibrium dissolution calcite.zip