HP1 SEASONCHAIN

The HP1 code incorporates modules simulating
(1) transient water flow in variably-saturated media,
(2) transport of multiple components, and
(3) mixed equilibrium/kinetic geochemical reactions.
Post Reply
witwoj
Posts: 4
Joined: Thu Aug 01, 2024 12:43 pm
Location: Poland

HP1 SEASONCHAIN

Post by witwoj » Thu Aug 01, 2024 3:40 pm

I am trying to repeat HP1 SEASONCHAIN example in Hydrus 1D with HP1. Yet I need to account for stratified medium, say two layers. Each strata has its own initial conditions, sorption properties and first order decay reaction coefficients.
I think that first order decay reaction coefficients, variable per layer, can be accounted for by using two Kinetics blocks with appropriate reference to cells say Kinetics 1-10 and Kinetics 11-100. Each block calls RATEs with parameters appropriate for cells 1-10 and 11-100.
However, I am not sure how to define sorption. In SEASONCHAIN there is only surface with sites Sora, Sorb and Sorc. Should I define (accordingly to Kinetics) Surface 1-10 and Surface 11-100 and equilibrate them with appropriate initial solution?
If this is the case, can sites Sora, Sorb and Sorc be the same in each Surface 1-10 and Surface 11-100? Or each surface should have its “own” Sor(abc) sites?

diederik
Posts: 76
Joined: Fri Mar 10, 2006 7:57 am
Location: Belgium

Re: HP1 SEASONCHAIN

Post by diederik » Wed Aug 21, 2024 6:11 am

You can define different surfaces (for different materials) in exact the same way as different kinetics with different parameters for different materials and indeed equilibrate it with the corresponding solution.

From the description in the document Jacques and Simunek (2005), paragrapf 4.1.2 (section Modelling nonlinear Freundlich adsorsption with PHREEQC), the log K value of a given reaction (e.g., Sora + Conta = SoraConta) is calculated from Kd, bulk density and an assumed sorption capacity chosen to be very large (1E100). If you follow the same approach, a new surface should be defined for each layer (SorAA,SorAB, ...)
I have not tested it, but probably, one can define a fixed log K (say -100) and recalculate the corresponding (material-dependent) capacity. The example in Jacques and Simunek (2005) has Kd = 5 and bulk density 1.5 (kg/dm3), thus for a surface capacity of S = 1E100, log_k is -99.1249. Turning this around, we define a log_k of -100, and have then a material-dependent capacity of 7.5E100. Thus, in Box 4.1 in Jacques and Simunek (2005) (repeated below), K on line 12 is -100, and S on line 16 is 7.5E100. The latter can be different for the different materials (depending on Kd and bulk density).
Note that this only holds for linear sorption. In case of Freundlich sorption, with nF defined in the reaction equation (line 10), I guess you need to define a material-specific surface name.

Code: Select all

1 	SOLUTION_MASTER_SPECIES
2 	Cont Cont 0.0 Cont 1.0
3 	SOLUTION_SPECIES
4 	Cont = Cont; log_k 0.0
5 	SURFACE_MASTER_SPECIES
6 	Sor Sor
7 	SURFACE_SPECIES
8 	Sor = Sor
9 	 log_k 0
10 	Sor + nF Cont = SorCont 	#nF Freundlich term
11 	 -no_check; -mole_balance SorCont
12	 log_k K 				#K = LOG(KDW /S)
13 	SURFACE 1
14 	equilibrate 1
15 	-no_edl true
16	 Sor S 1 S 				#S Total amount of adsorption sites
Depending on the HP1/HPx version you have (just try it - if you have an older version of HP1, it will give errors), some aspects can be made more convenient:

1. To define a chemical entity related to a specific material, you can refer to material number with the identifier -material. Note than you need to define a chemical entity number greater than the number of nodes. So, if you change discretisation or the material distribution, you do not need to adapt the node numbers.

Code: Select all

SURFACE 1001  #maximum 1000 nodes in HP1, thus 1001 is always larger than the number of nodes
-material 1      #refer to the nodes with material number 1 in the HYDRUS GUI
equilibrate 1001
-no_edl true
Sor 7.5E100 1 7.5E100 
2. Calculate S inline with @<> (also global variables can be used)

Code: Select all

SURFACE 1001  
-material 1   
equilibrate 1001
-no_edl true
Sor @<5*1.5/1E100> 1 @<5*1.5/1E100>

witwoj
Posts: 4
Joined: Thu Aug 01, 2024 12:43 pm
Location: Poland

Re: HP1 SEASONCHAIN

Post by witwoj » Fri Aug 23, 2024 5:40 pm

Dear Diederik
Thank you very much for clarification

witwoj
Posts: 4
Joined: Thu Aug 01, 2024 12:43 pm
Location: Poland

Re: HP1 SEASONCHAIN

Post by witwoj » Sat Aug 24, 2024 10:44 am

I successfully implemented the previous explanation. Now I would like to add first-order rate constant for solid phase (SinkSolid1' according to Hydrus-1D application help). How should I define sorption reactions to be first order kinetic?

diederik
Posts: 76
Joined: Fri Mar 10, 2006 7:57 am
Location: Belgium

Re: HP1 SEASONCHAIN

Post by diederik » Wed Aug 28, 2024 2:53 pm

What do you want to do:

-model kinetic sorption on the surface; or
-model kinetic degradation of species that are sorbed (in equilibrium) to the surface?

Diederik

witwoj
Posts: 4
Joined: Thu Aug 01, 2024 12:43 pm
Location: Poland

Re: HP1 SEASONCHAIN

Post by witwoj » Wed Aug 28, 2024 3:56 pm

I am interested in the second option.

diederik
Posts: 76
Joined: Fri Mar 10, 2006 7:57 am
Location: Belgium

Re: HP1 SEASONCHAIN

Post by diederik » Thu Aug 29, 2024 6:26 am

I will think about it
I guess you will to use (fast) kinetic sorption together with degradation.

Post Reply