RichardsBuckingham equation
Hi,
I'm trying to solve the RichardsBuckingham equation for singlephase water flow in unsaturated porous media. Constitutive relationships and the variational formulation are developed here:
https://www.authorea.com/users/23640/articles/61529
I created a problem description file inspired from the examples in the diffusion section of the web site. However, the solution doesn't converge. Maybe the variational form wrong, maybe the equations part of the PDF is wrong, maybe its the options. I don't know. The PDF is hosted on GitHub.
https://github.com/sergeetiparent/EnvGeotech/blob/master/RichardsBuckingham...
Anyone interested in giving a hand on this case? My ultimate goal is to model solute transport in unsaturated soils.
Thanks!
Essi
Hi Essi,
On 08/11/2015 11:04 PM, SergeÉtienne Parent wrote:
Hi,
I'm trying to solve the RichardsBuckingham equation for singlephase water flow in unsaturated porous media. Constitutive relationships and the variational formulation are developed here:
https://www.authorea.com/users/23640/articles/61529
I created a problem description file inspired from the examples in the diffusion section of the web site. However, the solution doesn't converge. Maybe the variational form wrong, maybe the equations part of the PDF is wrong, maybe its the options. I don't know. The PDF is hosted on GitHub.
https://github.com/sergeetiparent/EnvGeotech/blob/master/RichardsBuckingham...
Anyone interested in giving a hand on this case? My ultimate goal is to model solute transport in unsaturated soils.
I have tried to run the file, and noticed three things:
 sfepy: nls: iter: 0, residual: 3.107828e09 (rel: 1.000000e+00)
 the initial residual is almost zero  this might mean that you need some scaling of parameters, so that the entries in the rhs (and the matrix) are not too small.
 UmfpackWarning: Singular matrix
 this might be related to one.
 The Gamma_Bottom region seems wrong  it does not contain only the bottom face, but the whole bottom half of the cube.
Using
'Gamma_Bottom' : ('vertices in (z < 0.49999)', 'facet'),
fixes that.
Use:
./simple.py RichardsBuckingham_SfePy.py saveregionsasgroups ./postproc.py cube_big_tetra_regions.vtk
to verify your region definitions.
r.
Hello Robert,
Thanks for the advices. There were trivial errors in the constitutive functions. I corrected them and preferred, before going further in complexity, to use a simple dummy function instead. Now the PDF is somewhat a combination of diffusion/poisson_neumann.py and diffusion/poisson_field_dependent_material.py.
https://github.com/sergeetiparent/EnvGeotech/blob/master/RichardsBuckingham...
The solver now converges without scaling. However, it seems from the outputs (lines 132 and 133) that the h_values are all zeros, and consequently the conductivity is constant. I replicated this issue by mixing diffusion/poisson_neumann.py and diffusion/poisson_field_dependent_material.py. Maybe wrongly defined boundary conditions?
Thanks again,
Essi
Le mercredi 12 août 2015 05:40:05 UTC4, Robert Cimrman a écrit :
Hi Essi,
On 08/11/2015 11:04 PM, SergeÉtienne Parent wrote:
Hi,
I'm trying to solve the RichardsBuckingham equation for singlephase water flow in unsaturated porous media. Constitutive relationships and the variational formulation are developed here:
https://www.authorea.com/users/23640/articles/61529
I created a problem description file inspired from the examples in the diffusion section of the web site. However, the solution doesn't converge. Maybe the variational form wrong, maybe the equations part of the PDF is wrong, maybe its the options. I don't know. The PDF is hosted on GitHub.
https://github.com/sergeetiparent/EnvGeotech/blob/master/RichardsBuckingham...
Anyone interested in giving a hand on this case? My ultimate goal is to model solute transport in unsaturated soils.
I have tried to run the file, and noticed three things:
 sfepy: nls: iter: 0, residual: 3.107828e09 (rel: 1.000000e+00)
 the initial residual is almost zero  this might mean that you need some scaling of parameters, so that the entries in the rhs (and the matrix) are not too small.
 UmfpackWarning: Singular matrix
 this might be related to one.
 The Gamma_Bottom region seems wrong  it does not contain only the bottom face, but the whole bottom half of the cube.
Using
'Gamma_Bottom' : ('vertices in (z < 0.49999)', 'facet'),
fixes that.
Use:
./simple.py RichardsBuckingham_SfePy.py saveregionsasgroups ./postproc.py cube_big_tetra_regions.vtk
to verify your region definitions.
r.
Hi Essi,
you need to define a timestepping solver, so that the material parameter gets updated using the computed h:
solvers = { 'ls' : ('ls.scipy_direct', {}), 'newton' : ('nls.newton', { 'i_max' : 1, 'eps_a' : 1e10, 'eps_r' : 1, }), 'ts' : ('ts.simple', { 't0' : 0.0, 't1' : 1.0, 'dt' : None, 'n_step' : 5, 'quasistatic' : True, }), }
options = { 'ts' : 'ts', 'nls' : 'newton', 'ls' : 'ls', }
It seems to work with the above (see also diffusion/poisson_field_dependent_material.py). I just had to give negative tolerances to the Newton solver, so that each step is resolved even for the very small residuals.
BTW. the scaling parameter does not seem to work: when I set it to e.g. 1e5 the residual seems to scale fine, but the conductivity is definitely wrong (time step 2):
sfepy: h_values: min: 3.85183102217e11 max: 1.42514627652e08 sfepy: conductivity: min: 700000.002696 max: 700000.997604
Without the scaling, it is:
sfepy: h_values: min: 3.85183102217e06 max: 0.00142514627652 sfepy: conductivity: min: 7.00269732068e05 max: 8.16340456145e05
You probably forgot to multiply with the scaling coefficient somewhere.
r.
On 08/19/2015 08:10 PM, SergeÉtienne Parent wrote:
Hello Robert,
Thanks for the advices. There were trivial errors in the constitutive functions. I corrected them and preferred, before going further in complexity, to use a simple dummy function instead. Now the PDF is somewhat a combination of diffusion/poisson_neumann.py and diffusion/poisson_field_dependent_material.py.
https://github.com/sergeetiparent/EnvGeotech/blob/master/RichardsBuckingham...
The solver now converges without scaling. However, it seems from the outputs (lines 132 and 133) that the h_values are all zeros, and consequently the conductivity is constant. I replicated this issue by mixing diffusion/poisson_neumann.py and diffusion/poisson_field_dependent_material.py. Maybe wrongly defined boundary conditions?
Thanks again,
Essi
Le mercredi 12 août 2015 05:40:05 UTC4, Robert Cimrman a écrit :
Hi Essi,
On 08/11/2015 11:04 PM, SergeÉtienne Parent wrote:
Hi,
I'm trying to solve the RichardsBuckingham equation for singlephase water flow in unsaturated porous media. Constitutive relationships and the variational formulation are developed here:
https://www.authorea.com/users/23640/articles/61529
I created a problem description file inspired from the examples in the diffusion section of the web site. However, the solution doesn't converge. Maybe the variational form wrong, maybe the equations part of the PDF is wrong, maybe its the options. I don't know. The PDF is hosted on GitHub.
https://github.com/sergeetiparent/EnvGeotech/blob/master/RichardsBuckingham...
Anyone interested in giving a hand on this case? My ultimate goal is to model solute transport in unsaturated soils.
I have tried to run the file, and noticed three things:
 sfepy: nls: iter: 0, residual: 3.107828e09 (rel: 1.000000e+00)
 the initial residual is almost zero  this might mean that you need some scaling of parameters, so that the entries in the rhs (and the matrix) are not too small.
 UmfpackWarning: Singular matrix
 this might be related to one.
 The Gamma_Bottom region seems wrong  it does not contain only the bottom face, but the whole bottom half of the cube.
Using
'Gamma_Bottom' : ('vertices in (z < 0.49999)', 'facet'),
fixes that.
Use:
./simple.py RichardsBuckingham_SfePy.py saveregionsasgroups ./postproc.py cube_big_tetra_regions.vtk
to verify your region definitions.
r.
participants (2)

Robert Cimrman

SergeÉtienne Parent