Dear Daniel,
I have applied periodic boundary condition on displacement field for a
square 2D domain and in order to apply boundary displacement I want to
consider relative displacement between pair faces, namely,
u_x (0,y)=u_x(L,y)+delta_x and u_y (x,0)=u_y(x,L)+delta_y , using
"constraints.set_inhomogeneity"
. I have used the following code for relative displacement between pair
faces:
{
IndexSet selected_dofs_x;
std::set< types::boundary_id > boundary_ids_x=
std::set<types::boundary_id>();
boundary_ids_x.insert(0);
DoFTools::extract_boundary_dofs(dof_handler,
fe.component_mask(x_displacement),
selected_dofs_x,
boundary_ids_x);
unsigned int nb_dofs_face_x = selected_dofs_x.n_elements();
IndexSet::ElementIterator dofs_x = selected_dofs_x.begin();
double relative_displacement_x;
if (timestep <10)
relative_displacement_x = -0.1e-9;
else
relative_displacement_x = -0.01e-9;
for(unsigned int i = 0; i < nb_dofs_face_x; i++)
{
constraints.set_inhomogeneity(*dofs_x, (apply_dirichlet_bc ?
relative_displacement_x : 0.0));
dofs_x++;
}
}
{
IndexSet selected_dofs_y;
std::set< types::boundary_id > boundary_ids_y=
std::set<types::boundary_id>();
boundary_ids_y.insert(2);
DoFTools::extract_boundary_dofs(dof_handler,
fe.component_mask(y_displacement),
selected_dofs_y,
boundary_ids_y);
unsigned int nb_dofs_face_y = selected_dofs_y.n_elements();
IndexSet::ElementIterator dofs_y = selected_dofs_y.begin();
double relative_displacement_y;
if (timestep <10)
relative_displacement_y = 0.05e-9;
else
relative_displacement_y = 0.005e-9;
for(unsigned int i = 0; i < nb_dofs_face_y; i++)
{
constraints.set_inhomogeneity(*dofs_y, (apply_dirichlet_bc ?
relative_displacement_y : 0.0));
dofs_y++;
}
}
Periodic boundary condition works great without boundary displacement and I
can apply boundary displacement without any problem in two conditions :
First, considering displacement between only two faces for example left and
right faces, second, applying periodicity for only one components of
displacement on pair faces, namely, u_x for left and right faces and u_y
for top and bottom faces. However, considering periodicity for the both
displacement components on pair faces and at the same time, applying both
u_x (0,y)=u_x(L,y)+delta_x and u_y (x,0)=u_y(x,L)+delta_y, the
corner elements get distorted. In the attached picture you can see what
happens.
Any hint about the source of error would be appreciated.
Thanks,
Hamed
--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see
https://groups.google.com/d/forum/dealii?hl=en
---
You received this message because you are subscribed to the Google Groups
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.