I found the problem. :)
The problem were Dirichlet boundary conditions... I just realised how 
constraints in deal.II work.

I defined the boundary IDs in the following way now:

// Boundary: Definition of boundary IDs
const double tol_boundary = 1e-6;

typename parallel::distributed::Triangulation<dim>::active_cell_iterator 
cell = triangulation.begin_active(), endc = triangulation.end();
for (; cell != endc; ++cell)
{
std::cout << "CELL NUMBER: " << cell->id() << std::endl;

for (unsigned int i = 0; i < GeometryInfo<dim>::faces_per_cell; ++i)
{
if (cell->face(i)->at_boundary() == true)
{
// Boundary IDs for a 2D cube
if (std::abs(cell->face(i)->center()[0]) == 0)
{
cell->face(i)->set_boundary_id(0); // LEFT Boundary (0)
}
else if (std::abs(cell->face(i)->center()[0] - 1.0) < tol_boundary)
{
cell->face(i)->set_boundary_id(1); // RIGHT Boundary (1)
}
else if (std::abs(cell->face(i)->center()[1]) == 0)
{
cell->face(i)->set_boundary_id(2); // BOTTOM Boundary (2)
}
else if (std::abs(cell->face(i)->center()[1] - 1.0) < tol_boundary)
{
cell->face(i)->set_boundary_id(3); // TOP Boundary (3)
}

pcout << "CELL CENTER X: " << cell->face(i)->center()[0] << std::endl;
pcout << "CELL CENTER Y: " << cell->face(i)->center()[1] << std::endl;

std::cout << "Cell face number " << cell->face(i) << " has boundary ID " << 
(int) cell->face(i)->boundary_id() << "." << std::endl;
}
}
}


For every newcomer with the same problem:

std::map<types::global_dof_index, double> boundary_values;
VectorTools::interpolate_boundary_values(dof_handler, 0, 
ZeroFunction<dim>(dim), boundary_values);
MatrixTools::apply_boundary_values(boundary_values, system_matrix, 
locally_relevant_solution, system_rhs, false);

These lines within our assembly are crucial. 
Hence, the second one is the most important part since it also takes the 
boundary_id into account. 
Now as we can see "0" fixes the left boundary in my case.
Earlier 0 fixed my entire boundaries except the loaded ones due to the 
boundary IDs being initially 0.

Now fixing the left boundary and loading the right boundary leads to the 
attached displacement field.

I hope what I understood is correct and the Deal.II developers can confirm 
that.  

Thank you again for your help, Timo and Daniel.

Best regards,
Seyed Ali

-- 
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 dealii+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to