Poster of Linux kernelThe best gift for a Linux geek
fe_boundary.C

fe_boundary.C

Section: C Library Functions (3) Updated: Thu Apr 7 2011
Local index Up
 

NAME

fe_boundary.C -  

SYNOPSIS


 

Functions


REINIT_ERROR (REINIT_ERROR(0, REINIT_ERROR(CLOUGH, reinit)
 

Function Documentation

 

REINIT_ERROR (REINIT_ERROR(0, REINIT_ERROR(CLOUGH, reinit)

Definition at line 47 of file fe_boundary.C.

References FEBase::_p_level, Elem::build_side(), FEBase::compute_face_map(), FEBase::elem_type, FEBase::get_p_level(), QBase::get_points(), FEBase::get_type(), QBase::get_weights(), QBase::init(), InfFE< Dim, T_radial, T_map >::init_face_shape_functions(), InfFE< Dim, T_radial, T_map >::inverse_map(), FEBase::JxW, std::max(), Elem::neighbor(), Elem::p_level(), FEBase::qrule, InfFE< Dim, T_radial, T_map >::reinit(), InfFE< Dim, T_radial, T_map >::shapes_need_reinit(), Elem::type(), and FEBase::xyz.

{
  libmesh_assert (elem  != NULL);
  libmesh_assert (qrule != NULL);
  // We now do this for 1D elements!
  // libmesh_assert (Dim != 1);

  // Build the side of interest 
  const AutoPtr<Elem> side(elem->build_side(s));


  // Find the max p_level to select 
  // the right quadrature rule for side integration
  unsigned int side_p_level = elem->p_level();
  if (elem->neighbor(s) != NULL)
     side_p_level = std::max(side_p_level, elem->neighbor(s)->p_level());
     
  // initialize quadrature rule
  qrule->init(side->type(), side_p_level);

  // FIXME - could this break if the same FE object was used
  // for both volume and face integrals? - RHS
  // We might not need to reinitialize the shape functions
  if ((this->get_type() != elem->type())    ||
      (s != last_side)                      || 
      (this->get_p_level() != side_p_level) ||
      this->shapes_need_reinit())
    {
      // Set the element type
      elem_type = elem->type();

      // Set the last_side
      last_side = s;
      
      // Set the last p level
      _p_level = side_p_level;
      
      // Initialize the face shape functions
      this->init_face_shape_functions (qrule->get_points(),  side.get());
    }
  
  // Compute the Jacobian*Weight on the face for integration
  this->compute_face_map (qrule->get_weights(), side.get());

  // make a copy of the Jacobian for integration
  const std::vector<Real> JxW_int(JxW);

  // Find where the integration points are located on the
  // full element.
  std::vector<Point> qp; this->inverse_map (elem, xyz, qp, tolerance);
  
  // compute the shape function and derivative values
  // at the points qp
  this->reinit  (elem, &qp);
      
  // copy back old data
  JxW = JxW_int;
}
 

Author

Generated automatically by Doxygen for libMesh from the source code.


 

Index

NAME
SYNOPSIS
Functions
Function Documentation
REINIT_ERROR (REINIT_ERROR(0, REINIT_ERROR(CLOUGH, reinit)
Author

This document was created by man2html, using the manual pages.
Time: 21:46:02 GMT, April 16, 2011