$extrastylesheet
EXTERN_C_FOR_PETSC_END Namespace Reference

Functions

std::streambuf * out_buf (NULL)
std::streambuf * err_buf (NULL)
void libmesh_handleFPE (int, siginfo_t *info, void *)
void libmesh_handleSEGV (int, siginfo_t *info, void *)
void indices_to_fieldsplit (const Parallel::Communicator &comm, const std::vector< dof_id_type > &indices, PC my_pc, const std::string &field_name)

Variables

UniquePtr< GetPot > command_line
UniquePtr< std::ofstream > _ofstream
UniquePtr
< libMesh::Threads::task_scheduler_init
task_scheduler
bool libmesh_initialized_mpi = false
bool libmesh_initialized_petsc = false
bool libmesh_initialized_slepc = false

Function Documentation

void EXTERN_C_FOR_PETSC_END::indices_to_fieldsplit ( const Parallel::Communicator comm,
const std::vector< dof_id_type > &  indices,
PC  my_pc,
const std::string &  field_name 
)

Definition at line 37 of file petsc_auto_fieldsplit.C.

References libMesh::Parallel::Communicator::get(), libMesh::MeshTools::Generation::Private::idx(), libMesh::ierr, and PETSC_COPY_VALUES.

Referenced by libMesh::petsc_auto_fieldsplit().

{
  const PetscInt *idx = PETSC_NULL;
  if (!indices.empty())
    idx = reinterpret_cast<const PetscInt*>(&indices[0]);

  IS is;
  int ierr = ISCreateLibMesh(comm.get(), indices.size(),
                             idx, PETSC_COPY_VALUES, &is);
  CHKERRABORT(comm.get(), ierr);

  ierr = PCFieldSplitSetIS(my_pc, field_name.c_str(), is);
  CHKERRABORT(comm.get(), ierr);
}
void EXTERN_C_FOR_PETSC_END::libmesh_handleFPE ( int  ,
siginfo_t *  info,
void *   
)

Floating point exception handler -- courtesy of Cody Permann & MOOSE team

Definition at line 106 of file libmesh.C.

References libMesh::err.

Referenced by libMesh::enableFPE().

{
  libMesh::err << std::endl;
  libMesh::err << "Floating point exception signaled (";
  switch (info->si_code)
    {
    case FPE_INTDIV: libMesh::err << "integer divide by zero"; break;
    case FPE_INTOVF: libMesh::err << "integer overflow"; break;
    case FPE_FLTDIV: libMesh::err << "floating point divide by zero"; break;
    case FPE_FLTOVF: libMesh::err << "floating point overflow"; break;
    case FPE_FLTUND: libMesh::err << "floating point underflow"; break;
    case FPE_FLTRES: libMesh::err << "floating point inexact result"; break;
    case FPE_FLTINV: libMesh::err << "invalid floating point operation"; break;
    case FPE_FLTSUB: libMesh::err << "subscript out of range"; break;
    default:         libMesh::err << "unrecognized"; break;
    }
  libMesh::err << ")!" << std::endl;

  libmesh_error_msg("\nTo track this down, compile in debug mode, then in gdb do:\n" \
                    << "  break libmesh_handleFPE\n"                    \
                    << "  run ...\n"                                    \
                    << "  bt");
}
void EXTERN_C_FOR_PETSC_END::libmesh_handleSEGV ( int  ,
siginfo_t *  info,
void *   
)

Definition at line 131 of file libmesh.C.

References libMesh::err.

Referenced by libMesh::enableSEGV().

{
  libMesh::err << std::endl;
  libMesh::err << "Segmentation fault exception signaled (";
  switch (info->si_code)
    {
    case SEGV_MAPERR: libMesh::err << "Address not mapped"; break;
    case SEGV_ACCERR: libMesh::err << "Invalid permissions"; break;
    default:         libMesh::err << "unrecognized"; break;
    }
  libMesh::err << ")!" << std::endl;

  libmesh_error_msg("\nTo track this down, compile in debug mode, then in gdb do:\n" \
                    << "  break libmesh_handleSEGV\n"                    \
                    << "  run ...\n"                                    \
                    << "  bt");
}

Variable Documentation

UniquePtr<std::ofstream> EXTERN_C_FOR_PETSC_END::_ofstream

Definition at line 83 of file libmesh.C.

Referenced by libMesh::LibMeshInit::LibMeshInit().