ogs5-Richards flow-source term

Hi all,

I was wondering how the source term is applied in Richards flow. I have a 2D structured mesh, and I apply a Constant_Neumann source term at the inlet boundary (a polyline). This is, in turn, applied as the velocity at each node on the inlet boundary. Is this correct?

Is it possible to assign a flux at the inlet boundary which will result in different velocities assigned at different nodes along the polyline taking into account both permeability (heterogeneous domain) and saturation at each node?

Files are attached here rf-ah-discourse-master.zip (3.4 MB)
or available on Gitlab for reference.

Regards
Swamini

This is, in turn, applied as the velocity at each node on the inlet boundary. Is this correct?
That boundary condition means to assign velocity at the polyline.

Is it possible to assign a flux at the inlet boundary which will result in different velocities assigned at different nodes along the polyline taking into account both permeability (heterogeneous domain) and saturation at each node?
You have to manually compute the velocity at the polyline and then assign the value as CONSTAN_NEUMANN condition at the polyline.

Thank you, Wenqing! I was hoping to use the function type keyword ($FCT_TYPE) to do this, especially since the saturation may change in transient conditions. Do you think this is possible? I see several benchmarks that make use of this, but I am still unclear about the usage of several keywords in the *.fct input file.

As an example, I would like to change the value of the CONSTANT at the polyline “PLY_BC_TOP” depending on the saturation, I think the *.st and *.fct files should be written like so (using dummy numbers from benchmark files):

 #FUNCTION
 $TYPE
  Satdependentvelocity
 $GEO_TYPE
  POLYLINE PLY_BC_TOP
 $VARIABLES
  SATURATION
 $DATA
  1.000000e-001 3.115604e-005
  2.000000e-001 0.000000e+000
  3.000000e-001 5.842233e-003
  4.000000e-001 6.734331e-003
  5.000000e-001 0.000000e+000
  6.000000e-001 1.137714e-003
  7.000000e-001 1.137714e-003
  8.000000e-001 1.137714e-003
  9.000000e-001 1.137714e-003
  1.000000e+000 1.137714e-003

#SOURCE_TERM
$PCS_TYPE
RICHARDS_FLOW
$PRIMARY_VARIABLE
PRESSURE1
$GEO_TYPE
	POLYLINE PLY_BC_TOP
$DIS_TYPE
CONSTANT 0.00038
$FCT_TYPE  
ST_FUNCTION
#STOP

In the above case, the value 0.00038 would be multiplied by the corresponding value (given in column 2) in the *.fct depending on the saturation at each node (given in column 1 in *.fct file) along the polyline “PLY_BC_TOP”.

Is this a correct implementation?

Alternatively, I plan to write a separate file where the value of velocity at each node is written. In this case, the *.st file would be routed to read data from this file. Which keyword in the *.st file would be correct to route this information?

Lastly, what is the function of the keyword $DISTRIBUTE_VOLUME_FLUX in the *.st file?

Many thanks for your patience!

Regards
Swamini

You can try with fct data or use CURVES (index starts from 1 by the order of appearance) in rfd: ogs5-benchmarks/H_us/Wet/1d_ho.rfd at master · ufz/ogs5-benchmarks · GitHub
Place to use curve with 0 as the curve type:
ogs5-benchmarks/H_us/Wet/1d_ho.mmp at master · ufz/ogs5-benchmarks · GitHub

$DISTRIBUTE_VOLUME_FLUX is an obsolete keyword.