> Is this a good way to assemble the boundary integral? It seems that using
> the FEFieldFunction is a bit cumbersome, and may introduce interpolation
> errors.

Yes. Also, the term you are integrating is
  int u dx
not the normal derivative (you don't make use of either the derivative of the 
solution nor of the normal vector in your computation).

The canonical way to compute the term you want would go like this:

  FEFaceValues fe_face_values (...);
  std::vector<Tensor<1,dim> > solution_gradients (...);
  for (cell=...)
     for (f=...) // faces
        if (cell->face(f)->at_boundary())
          {
              fe_face_values.reinit (cell, f);
              fe_face_values.get_function_gradients (solution,
                                                   solution_gradients);
              for (q=...) // quadrature points
                du_dn += solution_gradients[q] *
                                  fe_face_values.normal_vector(q) *
                                  fe_face_values.JxW(q);
           }

Best
 W.

-------------------------------------------------------------------------
Wolfgang Bangerth                email:            [email protected]
                                 www: http://www.math.tamu.edu/~bangerth/

_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii

Reply via email to