for (unsigned int face_number=0; face_number<GeometryInfo<dim>::faces_per_cell; ++face_number)
if (
cell->face(face_number)->at_boundary()
&&
cell->face(face_number)->boundary_id() == 2 // Neumann boundaries
)
{
fe_face_values.reinit (cell, face_number);
// define points and normals
std::vector< Point<dim> > points = fe_face_values.get_quadrature_points();
std::vector< Tensor<1,dim> > normals = fe_face_values.get_all_normal_vectors();
// calculate neumann values
for (unsigned int q_point=0; q_point<n_face_q_points; ++q_point)
{
// values: mechanical
Tensor<1,dim> mech_neumann_value;
neumann_bc_for_mech.bc_value( points[q_point], normals[q_point], mech_neumann_value );
.....
Informativa sulla Privacy: http://www.unibs.it/node/8155--
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+un...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
In brief: I'd like to design an algorithm to solve a problem over two separate domains connected by an interface. Think in 1D of line 0_1 separated in two parts 0_1/2 and 1/2_1.In the simplest case, a linear elastic problem on each subdomain with a spring that joins the two sides located at point 1/2. The boundary conditions of the two parts at point 1/2 are a linear combination of the solutions on the two boundaries.The weak form of this problem can easily be written and surface integrals involving unknowns arise. I tried to solve this with the algorithm suggested by Wolfgang, and it works fine for very small meshes. However, this strategy would imply that for each cell on the boundary (at point 1/2 for the domain 0_1/2) one has to seek trough the whole triangulation for the cell that corresponds to point 1/2 in the remaining part (1/2_1). This procedure is very expensive, or at least that comes out to me. (By the way, although the triangulation is parallel shared I can only see cells on the same node: shall I use a specific iterator?).
To circumvent the issue, one could define a zero-thickness element at point 1/2 (called cohesive in the literature sometimes) because in such a case the element brings in all the connectivities that are required and one can still define the tangent stiffness matrix based on surface integrals. I have been working on this idea but I run into a major problem in loading the triangulation from gmsh, since elements with zero volume are not considered to be good as for now. I wonder if one could get rid of this control or if zero-volume condition is used all over deal.ii as a check of something going wrong.In fact one could also move the nodes a bit to generate "almost" zero volumes. In some cases it can be done easily, but in general this approach is unfeasible for complex meshes.