Richards-Buckingham equation
Hi,
I'm trying to solve the Richards-Buckingham equation for single-phase 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/Richards-Buckingham...
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 Richards-Buckingham equation for single-phase 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/Richards-Buckingham...
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.107828e-09 (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 Richards-Buckingham_SfePy.py --save-regions-as-groups ./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/Richards-Buckingham...
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 UTC-4, Robert Cimrman a écrit :
Hi Essi,
On 08/11/2015 11:04 PM, Serge-Étienne Parent wrote:
Hi,
I'm trying to solve the Richards-Buckingham equation for single-phase 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/Richards-Buckingham...
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.107828e-09 (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 Richards-Buckingham_SfePy.py --save-regions-as-groups ./postproc.py cube_big_tetra_regions.vtk
to verify your region definitions.
r.
Hi Essi,
you need to define a time-stepping 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' : -1e-10, '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.85183102217e-11 max: 1.42514627652e-08 sfepy: conductivity: min: 700000.002696 max: 700000.997604
Without the scaling, it is:
sfepy: h_values: min: 3.85183102217e-06 max: 0.00142514627652 sfepy: conductivity: min: 7.00269732068e-05 max: 8.16340456145e-05
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/Richards-Buckingham...
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 UTC-4, Robert Cimrman a écrit :
Hi Essi,
On 08/11/2015 11:04 PM, Serge-Étienne Parent wrote:
Hi,
I'm trying to solve the Richards-Buckingham equation for single-phase 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/Richards-Buckingham...
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.107828e-09 (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 Richards-Buckingham_SfePy.py --save-regions-as-groups ./postproc.py cube_big_tetra_regions.vtk
to verify your region definitions.
r.
participants (2)
-
Robert Cimrman
-
Serge-Étienne Parent