Meeting some questions using constraints to apply boundary values

37 views
Skip to first unread message

chenxi....@gmail.com

unread,
Mar 13, 2019, 1:26:14 AM3/13/19
to deal.II User Group
Hello everyone,

I am coding for my graduation design, and hoping to achieve a coupling geomechanics and fluid model.
I use FE_RT<dim> for velocities and FE_Q<dim> for displacement of the rock.

In order to valid my model and programming, I use 1 D Terzaghi.
But my boundary conditions appears have some problems.

there is a 1 * 10 rectangle, I put the boundary conditions as the pic:

1,2,3,4 represent the boundary id.
I apply the boundary conditions that displacement is zero at 3.
And no flux boundary at 1,2,3;
 constraints.clear();
    FEValuesExtractors::Vector displacement(dim+2);
    VectorTools::interpolate_boundary_values(dof_handler,
                                             3,
                                             Functions::ZeroFunction<dim>(2*dim+2),
                                             constraints,
                                             fe.component_mask(displacement));

    VectorTools::project_boundary_values_div_conforming(dof_handler,
                                                        0,
                                                        Functions::ZeroFunction<dim>(2),
                                                        1,
                                                        constraints);

    VectorTools::project_boundary_values_div_conforming(dof_handler,
                                                        0,
                                                        Functions::ZeroFunction<dim>(2),
                                                        2,
                                                        constraints);

    VectorTools::project_boundary_values_div_conforming(dof_handler,
                                                        0,
                                                        Functions::ZeroFunction<dim>(2),
                                                        3,
constraints);
constraints.close(); 
 

However, what I get is : 
123.png




















the displacements  are  also been limited in 1,2,3 boundary.
If I just set no flux boundary at 2,3,
it seems that displacements also are zero at boundary 2,3. 
What can I do to solve this?
Thank you all in advance!

Wolfgang Bangerth

unread,
Mar 13, 2019, 3:00:37 PM3/13/19
to dea...@googlegroups.com

> I am coding for my graduation design, and hoping to achieve a coupling
> geomechanics and fluid model.
> I use FE_RT<dim> for velocities and FE_Q<dim> for displacement of the rock.
>
> In order to valid my model and programming, I use 1 D Terzaghi.
> But my boundary conditions appears have some problems.

I assume you then expect that the vertical velocity should be a 1d function
independent of x and only dependent on y?

The picture you attach clearly does not satisfy this. I don't know why this
isn't so, but here are a few things you can check:
* The vertical velocity you show is zero at the left and right sides of the
domain. You say that you are applying "no flux" at boundaries 1, 2, 3 (which
sides of the rectangle are these?) but that does not seem to be the case. I
think that the function you are using,
'VectorTools::project_boundary_values_div_conforming', should do this
correctly, but you may want to look at a small testcase with just the 1x10
mesh and output the constraints you get.

There is a function in DoFTools that also lets you output the physical
location of every degree of freedom so that you can correlate what you get
from the constraints object to where these DoFs are located.

Best
W.

--
------------------------------------------------------------------------
Wolfgang Bangerth email: bang...@colostate.edu
www: http://www.math.colostate.edu/~bangerth/

Reply all
Reply to author
Forward
0 new messages