$extrastylesheet
#include <trilinos_preconditioner.h>

Public Member Functions | |
| TrilinosPreconditioner (const libMesh::Parallel::Communicator &comm LIBMESH_CAN_DEFAULT_TO_COMMWORLD) | |
| virtual | ~TrilinosPreconditioner () |
| virtual void | apply (const NumericVector< T > &x, NumericVector< T > &y) |
| virtual void | clear () |
| virtual void | init () |
| void | set_params (Teuchos::ParameterList &list) |
| Epetra_FECrsMatrix * | mat () |
| void | set_preconditioner_type (const PreconditionerType &preconditioner_type) |
| void | compute () |
| bool | initialized () const |
| virtual void | setup () |
| void | set_matrix (SparseMatrix< Number > &mat) |
| PreconditionerType | type () const |
| void | set_type (const PreconditionerType pct) |
| const Parallel::Communicator & | comm () const |
| processor_id_type | n_processors () const |
| processor_id_type | processor_id () const |
Static Public Member Functions | |
| static Preconditioner< T > * | build (const libMesh::Parallel::Communicator &comm LIBMESH_CAN_DEFAULT_TO_COMMWORLD, const SolverPackage solver_package=libMesh::default_solver_package()) |
| static std::string | get_info () |
| static void | print_info (std::ostream &out=libMesh::out) |
| static unsigned int | n_objects () |
| static void | enable_print_counter_info () |
| static void | disable_print_counter_info () |
Protected Types | |
| typedef std::map< std::string, std::pair< unsigned int, unsigned int > > | Counts |
Protected Member Functions | |
| virtual int | SetUseTranspose (bool UseTranspose) |
| virtual int | Apply (const Epetra_MultiVector &X, Epetra_MultiVector &Y) const |
| virtual int | ApplyInverse (const Epetra_MultiVector &r, Epetra_MultiVector &z) const |
| virtual double | NormInf () const |
| virtual const char * | Label () const |
| virtual bool | UseTranspose () const |
| virtual bool | HasNormInf () const |
| virtual const Epetra_Comm & | Comm () const |
| virtual const Epetra_Map & | OperatorDomainMap () const |
| virtual const Epetra_Map & | OperatorRangeMap () const |
| void | increment_constructor_count (const std::string &name) |
| void | increment_destructor_count (const std::string &name) |
Protected Attributes | |
| Epetra_Operator * | _prec |
| Epetra_FECrsMatrix * | _mat |
| Teuchos::ParameterList | _param_list |
| SparseMatrix< T > * | _matrix |
| PreconditionerType | _preconditioner_type |
| bool | _is_initialized |
| const Parallel::Communicator & | _communicator |
Static Protected Attributes | |
| static Counts | _counts |
| static Threads::atomic < unsigned int > | _n_objects |
| static Threads::spin_mutex | _mutex |
| static bool | _enable_print_counter = true |
This class provides an interface to the suite of preconditioners available from Trilinos.
Definition at line 60 of file trilinos_preconditioner.h.
typedef std::map<std::string, std::pair<unsigned int, unsigned int> > libMesh::ReferenceCounter::Counts [protected, inherited] |
Data structure to log the information. The log is identified by the class name.
Definition at line 113 of file reference_counter.h.
| libMesh::TrilinosPreconditioner< T >::TrilinosPreconditioner | ( | const libMesh::Parallel::Communicator &comm | LIBMESH_CAN_DEFAULT_TO_COMMWORLD | ) | [inline] |
Constructor. Initializes PetscPreconditioner data structures
Definition at line 145 of file trilinos_preconditioner.h.
| libMesh::TrilinosPreconditioner< T >::~TrilinosPreconditioner | ( | ) | [inline, virtual] |
| void libMesh::TrilinosPreconditioner< T >::apply | ( | const NumericVector< T > & | x, |
| NumericVector< T > & | y | ||
| ) | [virtual] |
Computes the preconditioned vector "y" based on input "x". Usually by solving Py=x to get the action of P^-1 x.
Implements libMesh::Preconditioner< T >.
Definition at line 46 of file trilinos_preconditioner.C.
{
}
| int libMesh::TrilinosPreconditioner< T >::Apply | ( | const Epetra_MultiVector & | X, |
| Epetra_MultiVector & | Y | ||
| ) | const [protected, virtual] |
Definition at line 185 of file trilinos_preconditioner.C.
{
return _prec->Apply(X, Y);
}
| int libMesh::TrilinosPreconditioner< T >::ApplyInverse | ( | const Epetra_MultiVector & | r, |
| Epetra_MultiVector & | z | ||
| ) | const [protected, virtual] |
Definition at line 192 of file trilinos_preconditioner.C.
{
return _prec->ApplyInverse(r, z);
}
| Preconditioner< T > * libMesh::Preconditioner< T >::build | ( | const libMesh::Parallel::Communicator &comm | LIBMESH_CAN_DEFAULT_TO_COMMWORLD, |
| const SolverPackage | solver_package = libMesh::default_solver_package() |
||
| ) | [static, inherited] |
Builds a Preconditioner using the linear solver package specified by solver_package
Definition at line 38 of file preconditioner.C.
References libMesh::EIGEN_SOLVERS, libMesh::PETSC_SOLVERS, and libMesh::TRILINOS_SOLVERS.
{
// Build the appropriate solver
switch (solver_package)
{
#ifdef LIBMESH_HAVE_PETSC
case PETSC_SOLVERS:
{
return new PetscPreconditioner<T>(comm);
}
#endif
#ifdef LIBMESH_HAVE_TRILINOS
case TRILINOS_SOLVERS:
return new TrilinosPreconditioner<T>(comm);
#endif
#ifdef LIBMESH_HAVE_EIGEN
case EIGEN_SOLVERS:
return new EigenPreconditioner<T>(comm);
#endif
default:
libmesh_error_msg("ERROR: Unrecognized solver package: " << solver_package);
}
return NULL;
}
| virtual void libMesh::TrilinosPreconditioner< T >::clear | ( | ) | [inline, virtual] |
Release all memory and clear data structures.
Reimplemented from libMesh::Preconditioner< T >.
Definition at line 86 of file trilinos_preconditioner.h.
{}
| const Parallel::Communicator& libMesh::ParallelObject::comm | ( | ) | const [inline, inherited] |
Parallel::Communicator object used by this mesh. Definition at line 86 of file parallel_object.h.
References libMesh::ParallelObject::_communicator.
Referenced by libMesh::__libmesh_petsc_diff_solver_monitor(), libMesh::__libmesh_petsc_diff_solver_residual(), libMesh::__libmesh_petsc_snes_residual(), libMesh::MeshRefinement::_coarsen_elements(), libMesh::ExactSolution::_compute_error(), libMesh::MetisPartitioner::_do_partition(), libMesh::ParmetisPartitioner::_do_repartition(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::SlepcEigenSolver< T >::_petsc_shell_matrix_get_diagonal(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_get_diagonal(), libMesh::SlepcEigenSolver< T >::_petsc_shell_matrix_mult(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_mult(), libMesh::PetscLinearSolver< T >::_petsc_shell_matrix_mult_add(), libMesh::EquationSystems::_read_impl(), libMesh::MeshRefinement::_refine_elements(), libMesh::ImplicitSystem::add_matrix(), libMesh::System::add_vector(), libMesh::UnstructuredMesh::all_second_order(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::FEMSystem::assemble_qoi(), libMesh::MeshCommunication::assign_global_indices(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::DofMap::attach_matrix(), libMesh::MeshTools::bounding_box(), libMesh::MeshBase::cache_elem_dims(), libMesh::System::calculate_norm(), libMesh::MeshRefinement::coarsen_elements(), libMesh::Nemesis_IO_Helper::compute_num_global_elem_blocks(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::Problem_Interface::computeF(), libMesh::Problem_Interface::computeJacobian(), libMesh::Problem_Interface::computePreconditioner(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), DMlibMeshFunction(), DMlibMeshSetSystem_libMesh(), libMesh::MeshRefinement::eliminate_unrefined_patches(), libMesh::WeightedPatchRecoveryErrorEstimator::estimate_error(), libMesh::PatchRecoveryErrorEstimator::estimate_error(), libMesh::JumpErrorEstimator::estimate_error(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::ExactErrorEstimator::estimate_error(), libMesh::MeshRefinement::flag_elements_by_elem_fraction(), libMesh::MeshRefinement::flag_elements_by_error_fraction(), libMesh::MeshRefinement::flag_elements_by_nelem_target(), libMesh::CondensedEigenSystem::get_eigenpair(), libMesh::ImplicitSystem::get_linear_solver(), libMesh::LocationMap< T >::init(), libMesh::TimeSolver::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::EigenSystem::init_data(), libMesh::EigenSystem::init_matrices(), libMesh::ParmetisPartitioner::initialize(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::ParallelMesh::libmesh_assert_valid_parallel_flags(), libMesh::MeshTools::libmesh_assert_valid_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::MeshRefinement::limit_level_mismatch_at_edge(), libMesh::MeshRefinement::limit_level_mismatch_at_node(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshCommunication::make_elems_parallel_consistent(), libMesh::MeshRefinement::make_flags_parallel_consistent(), libMesh::MeshCommunication::make_node_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_nodes_parallel_consistent(), libMesh::MeshRefinement::make_refinement_compatible(), libMesh::FEMSystem::mesh_position_set(), libMesh::MeshSerializer::MeshSerializer(), libMesh::ParallelMesh::n_active_elem(), libMesh::MeshTools::n_active_levels(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::CondensedEigenSystem::n_global_non_condensed_dofs(), libMesh::MeshTools::n_levels(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::MeshTools::n_p_levels(), libMesh::ParallelMesh::parallel_max_elem_id(), libMesh::ParallelMesh::parallel_max_node_id(), libMesh::ParallelMesh::parallel_n_elem(), libMesh::ParallelMesh::parallel_n_nodes(), libMesh::Partitioner::partition(), libMesh::Partitioner::partition_unpartitioned_elements(), libMesh::petsc_auto_fieldsplit(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::MeshBase::prepare_for_use(), libMesh::System::project_vector(), libMesh::Nemesis_IO::read(), libMesh::XdrIO::read(), libMesh::System::read_header(), libMesh::System::read_legacy_data(), libMesh::System::read_SCALAR_dofs(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::XdrIO::read_serialized_nodes(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::XdrIO::read_serialized_subdomain_names(), libMesh::System::read_serialized_vector(), libMesh::MeshBase::recalculate_n_partitions(), libMesh::MeshRefinement::refine_and_coarsen_elements(), libMesh::MeshRefinement::refine_elements(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::MeshBase::subdomain_ids(), libMesh::BoundaryInfo::sync(), libMesh::Parallel::sync_element_data_by_parent_id(), libMesh::Parallel::sync_node_data_by_element_id(), libMesh::MeshRefinement::test_level_one(), libMesh::MeshRefinement::test_unflagged(), libMesh::MeshTools::total_weight(), libMesh::NameBasedIO::write(), libMesh::CheckpointIO::write(), libMesh::XdrIO::write(), libMesh::LegacyXdrIO::write_mesh(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), libMesh::XdrIO::write_serialized_nodesets(), and libMesh::DivaIO::write_stream().
{ return _communicator; }
| const Epetra_Comm & libMesh::TrilinosPreconditioner< T >::Comm | ( | ) | const [protected, virtual] |
Definition at line 227 of file trilinos_preconditioner.C.
{
return _prec->Comm();
}
| void libMesh::TrilinosPreconditioner< T >::compute | ( | ) |
Compute the preconditioner. In Trilinos, we need to call this explicitly.
Definition at line 83 of file trilinos_preconditioner.C.
References libMesh::AMG_PRECOND, libMesh::ILU_PRECOND, and libMesh::SOR_PRECOND.
Referenced by libMesh::Problem_Interface::computePreconditioner().
{
Ifpack_Preconditioner * ifpack = NULL;
#ifdef LIBMESH_HAVE_ML
ML_Epetra::MultiLevelPreconditioner * ml = NULL;
#endif
switch (this->_preconditioner_type)
{
// IFPACK preconditioners
case ILU_PRECOND:
case SOR_PRECOND:
ifpack = dynamic_cast<Ifpack_Preconditioner *>(_prec);
ifpack->Compute();
break;
#ifdef LIBMESH_HAVE_ML
// ML preconditioners
case AMG_PRECOND:
ml = dynamic_cast<ML_Epetra::MultiLevelPreconditioner *>(_prec);
ml->ComputePreconditioner();
break;
#endif
default:
// no nothing here
break;
}
}
| void libMesh::ReferenceCounter::disable_print_counter_info | ( | ) | [static, inherited] |
Definition at line 106 of file reference_counter.C.
References libMesh::ReferenceCounter::_enable_print_counter.
Referenced by libMesh::LibMeshInit::LibMeshInit().
{
_enable_print_counter = false;
return;
}
| void libMesh::ReferenceCounter::enable_print_counter_info | ( | ) | [static, inherited] |
Methods to enable/disable the reference counter output from print_info()
Definition at line 100 of file reference_counter.C.
References libMesh::ReferenceCounter::_enable_print_counter.
{
_enable_print_counter = true;
return;
}
| std::string libMesh::ReferenceCounter::get_info | ( | ) | [static, inherited] |
Gets a string containing the reference information.
Definition at line 47 of file reference_counter.C.
References libMesh::ReferenceCounter::_counts, and libMesh::Quality::name().
Referenced by libMesh::ReferenceCounter::print_info().
{
#if defined(LIBMESH_ENABLE_REFERENCE_COUNTING) && defined(DEBUG)
std::ostringstream oss;
oss << '\n'
<< " ---------------------------------------------------------------------------- \n"
<< "| Reference count information |\n"
<< " ---------------------------------------------------------------------------- \n";
for (Counts::iterator it = _counts.begin();
it != _counts.end(); ++it)
{
const std::string name(it->first);
const unsigned int creations = it->second.first;
const unsigned int destructions = it->second.second;
oss << "| " << name << " reference count information:\n"
<< "| Creations: " << creations << '\n'
<< "| Destructions: " << destructions << '\n';
}
oss << " ---------------------------------------------------------------------------- \n";
return oss.str();
#else
return "";
#endif
}
| bool libMesh::TrilinosPreconditioner< T >::HasNormInf | ( | ) | const [protected, virtual] |
Definition at line 220 of file trilinos_preconditioner.C.
{
return _prec->HasNormInf();
}
| void libMesh::ReferenceCounter::increment_constructor_count | ( | const std::string & | name | ) | [inline, protected, inherited] |
Increments the construction counter. Should be called in the constructor of any derived class that will be reference counted.
Definition at line 163 of file reference_counter.h.
References libMesh::ReferenceCounter::_counts, libMesh::Quality::name(), and libMesh::Threads::spin_mtx.
Referenced by libMesh::ReferenceCountedObject< RBParametrized >::ReferenceCountedObject().
{
Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
std::pair<unsigned int, unsigned int>& p = _counts[name];
p.first++;
}
| void libMesh::ReferenceCounter::increment_destructor_count | ( | const std::string & | name | ) | [inline, protected, inherited] |
Increments the destruction counter. Should be called in the destructor of any derived class that will be reference counted.
Definition at line 176 of file reference_counter.h.
References libMesh::ReferenceCounter::_counts, libMesh::Quality::name(), and libMesh::Threads::spin_mtx.
Referenced by libMesh::ReferenceCountedObject< RBParametrized >::~ReferenceCountedObject().
{
Threads::spin_mutex::scoped_lock lock(Threads::spin_mtx);
std::pair<unsigned int, unsigned int>& p = _counts[name];
p.second++;
}
| void libMesh::TrilinosPreconditioner< T >::init | ( | ) | [virtual] |
Initialize data structures if not done so already.
Reimplemented from libMesh::Preconditioner< T >.
Definition at line 55 of file trilinos_preconditioner.C.
References libMesh::libMeshPrivateData::_is_initialized, and libMesh::EpetraMatrix< T >::mat().
{
if(!this->_matrix)
libmesh_error_msg("ERROR: No matrix set for PetscPreconditioner, but init() called");
// Clear the preconditioner in case it has been created in the past
if (!this->_is_initialized)
{
EpetraMatrix<T> * matrix = cast_ptr<EpetraMatrix<T>*, SparseMatrix<T> >(this->_matrix);
_mat = matrix->mat();
}
set_preconditioner_type(this->_preconditioner_type);
this->_is_initialized = true;
}
| bool libMesh::Preconditioner< T >::initialized | ( | ) | const [inline, inherited] |
Definition at line 88 of file preconditioner.h.
{ return _is_initialized; }
| const char * libMesh::TrilinosPreconditioner< T >::Label | ( | ) | const [protected, virtual] |
Definition at line 206 of file trilinos_preconditioner.C.
{
return _prec->Label();
}
| Epetra_FECrsMatrix* libMesh::TrilinosPreconditioner< T >::mat | ( | ) | [inline] |
Returns the actual Trilinos preconditioner object.
Definition at line 98 of file trilinos_preconditioner.h.
References libMesh::TrilinosPreconditioner< T >::_mat.
Referenced by libMesh::Problem_Interface::computePreconditioner().
{ return _mat; }
| static unsigned int libMesh::ReferenceCounter::n_objects | ( | ) | [inline, static, inherited] |
Prints the number of outstanding (created, but not yet destroyed) objects.
Definition at line 79 of file reference_counter.h.
References libMesh::ReferenceCounter::_n_objects.
Referenced by libMesh::LibMeshInit::~LibMeshInit().
{ return _n_objects; }
| processor_id_type libMesh::ParallelObject::n_processors | ( | ) | const [inline, inherited] |
Definition at line 92 of file parallel_object.h.
References libMesh::ParallelObject::_communicator, and libMesh::Parallel::Communicator::size().
Referenced by libMesh::ParmetisPartitioner::_do_repartition(), libMesh::ParallelMesh::add_elem(), libMesh::ParallelMesh::add_node(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::FEMSystem::assembly(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::ParallelMesh::assign_unique_ids(), libMesh::AztecLinearSolver< T >::AztecLinearSolver(), libMesh::ParallelMesh::clear(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::UnstructuredMesh::create_pid_mesh(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::EnsightIO::EnsightIO(), libMesh::MeshBase::get_info(), libMesh::EquationSystems::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::ParmetisPartitioner::initialize(), libMesh::Nemesis_IO_Helper::initialize(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::DofMap::local_variable_indices(), libMesh::MeshBase::n_active_elem_on_proc(), libMesh::MeshBase::n_elem_on_proc(), libMesh::MeshBase::n_nodes_on_proc(), libMesh::Partitioner::partition(), libMesh::MeshBase::partition(), libMesh::Partitioner::partition_unpartitioned_elements(), libMesh::PetscLinearSolver< T >::PetscLinearSolver(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::MeshTools::processor_bounding_box(), libMesh::System::project_vector(), libMesh::NameBasedIO::read(), libMesh::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::XdrIO::read(), libMesh::System::read_parallel_data(), libMesh::System::read_SCALAR_dofs(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::System::read_serialized_vector(), libMesh::Partitioner::repartition(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::BoundaryInfo::sync(), libMesh::ParallelMesh::update_parallel_id_counts(), libMesh::CheckpointIO::write(), libMesh::GMVIO::write_binary(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::System::write_parallel_data(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), and libMesh::XdrIO::write_serialized_nodesets().
{ return cast_int<processor_id_type>(_communicator.size()); }
| double libMesh::TrilinosPreconditioner< T >::NormInf | ( | ) | const [protected, virtual] |
Definition at line 199 of file trilinos_preconditioner.C.
{
return _prec->NormInf();
}
| const Epetra_Map & libMesh::TrilinosPreconditioner< T >::OperatorDomainMap | ( | ) | const [protected, virtual] |
Definition at line 234 of file trilinos_preconditioner.C.
{
return _prec->OperatorDomainMap();
}
| const Epetra_Map & libMesh::TrilinosPreconditioner< T >::OperatorRangeMap | ( | ) | const [protected, virtual] |
Definition at line 241 of file trilinos_preconditioner.C.
{
return _prec->OperatorRangeMap();
}
| void libMesh::ReferenceCounter::print_info | ( | std::ostream & | out = libMesh::out | ) | [static, inherited] |
Prints the reference information, by default to libMesh::out.
Definition at line 88 of file reference_counter.C.
References libMesh::ReferenceCounter::_enable_print_counter, and libMesh::ReferenceCounter::get_info().
Referenced by libMesh::LibMeshInit::~LibMeshInit().
{
if( _enable_print_counter ) out_stream << ReferenceCounter::get_info();
}
| processor_id_type libMesh::ParallelObject::processor_id | ( | ) | const [inline, inherited] |
Definition at line 98 of file parallel_object.h.
References libMesh::ParallelObject::_communicator, and libMesh::Parallel::Communicator::rank().
Referenced by libMesh::MetisPartitioner::_do_partition(), libMesh::EquationSystems::_read_impl(), libMesh::SerialMesh::active_local_elements_begin(), libMesh::ParallelMesh::active_local_elements_begin(), libMesh::SerialMesh::active_local_elements_end(), libMesh::ParallelMesh::active_local_elements_end(), libMesh::SerialMesh::active_local_subdomain_elements_begin(), libMesh::ParallelMesh::active_local_subdomain_elements_begin(), libMesh::SerialMesh::active_local_subdomain_elements_end(), libMesh::ParallelMesh::active_local_subdomain_elements_end(), libMesh::SerialMesh::active_not_local_elements_begin(), libMesh::ParallelMesh::active_not_local_elements_begin(), libMesh::SerialMesh::active_not_local_elements_end(), libMesh::ParallelMesh::active_not_local_elements_end(), libMesh::ParallelMesh::add_elem(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::ParallelMesh::add_node(), libMesh::UnstructuredMesh::all_second_order(), libMesh::FEMSystem::assembly(), libMesh::ParmetisPartitioner::assign_partitioning(), libMesh::ParallelMesh::assign_unique_ids(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::ParmetisPartitioner::build_graph(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::DofMap::build_sparsity(), libMesh::ParallelMesh::clear(), libMesh::ExodusII_IO_Helper::close(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::compute_communication_map_parameters(), libMesh::Nemesis_IO_Helper::compute_internal_and_border_elems_and_internal_nodes(), libMesh::Nemesis_IO_Helper::compute_node_communication_maps(), libMesh::Nemesis_IO_Helper::compute_num_global_elem_blocks(), libMesh::Nemesis_IO_Helper::compute_num_global_nodesets(), libMesh::Nemesis_IO_Helper::compute_num_global_sidesets(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::ExodusII_IO_Helper::create(), libMesh::ParallelMesh::delete_elem(), libMesh::ParallelMesh::delete_node(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::DofMap::end_dof(), libMesh::DofMap::end_old_dof(), libMesh::EnsightIO::EnsightIO(), libMesh::SerialMesh::facelocal_elements_begin(), libMesh::ParallelMesh::facelocal_elements_begin(), libMesh::SerialMesh::facelocal_elements_end(), libMesh::ParallelMesh::facelocal_elements_end(), libMesh::MeshFunction::find_element(), libMesh::UnstructuredMesh::find_neighbors(), libMesh::DofMap::first_dof(), libMesh::DofMap::first_old_dof(), libMesh::Nemesis_IO_Helper::get_cmap_params(), libMesh::Nemesis_IO_Helper::get_eb_info_global(), libMesh::Nemesis_IO_Helper::get_elem_cmap(), libMesh::Nemesis_IO_Helper::get_elem_map(), libMesh::MeshBase::get_info(), libMesh::Nemesis_IO_Helper::get_init_global(), libMesh::Nemesis_IO_Helper::get_init_info(), libMesh::Nemesis_IO_Helper::get_loadbal_param(), libMesh::Nemesis_IO_Helper::get_node_cmap(), libMesh::Nemesis_IO_Helper::get_node_map(), libMesh::Nemesis_IO_Helper::get_ns_param_global(), libMesh::Nemesis_IO_Helper::get_ss_param_global(), libMesh::SystemSubsetBySubdomain::init(), libMesh::ParmetisPartitioner::initialize(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::ExodusII_IO_Helper::initialize_element_variables(), libMesh::ExodusII_IO_Helper::initialize_global_variables(), libMesh::ExodusII_IO_Helper::initialize_nodal_variables(), libMesh::ParallelMesh::insert_elem(), libMesh::SparsityPattern::Build::join(), libMesh::DofMap::last_dof(), libMesh::MeshTools::libmesh_assert_valid_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_procids< Node >(), libMesh::SerialMesh::local_elements_begin(), libMesh::ParallelMesh::local_elements_begin(), libMesh::SerialMesh::local_elements_end(), libMesh::ParallelMesh::local_elements_end(), libMesh::SerialMesh::local_level_elements_begin(), libMesh::ParallelMesh::local_level_elements_begin(), libMesh::SerialMesh::local_level_elements_end(), libMesh::ParallelMesh::local_level_elements_end(), libMesh::SerialMesh::local_nodes_begin(), libMesh::ParallelMesh::local_nodes_begin(), libMesh::SerialMesh::local_nodes_end(), libMesh::ParallelMesh::local_nodes_end(), libMesh::SerialMesh::local_not_level_elements_begin(), libMesh::ParallelMesh::local_not_level_elements_begin(), libMesh::SerialMesh::local_not_level_elements_end(), libMesh::ParallelMesh::local_not_level_elements_end(), libMesh::DofMap::local_variable_indices(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshBase::n_active_local_elem(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::DofMap::n_local_dofs(), libMesh::System::n_local_dofs(), libMesh::MeshBase::n_local_elem(), libMesh::MeshBase::n_local_nodes(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::SerialMesh::not_local_elements_begin(), libMesh::ParallelMesh::not_local_elements_begin(), libMesh::SerialMesh::not_local_elements_end(), libMesh::ParallelMesh::not_local_elements_end(), libMesh::WeightedPatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::SparsityPattern::Build::operator()(), libMesh::PatchRecoveryErrorEstimator::EstimateError::operator()(), libMesh::ParallelMesh::ParallelMesh(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::System::project_vector(), libMesh::Nemesis_IO_Helper::put_cmap_params(), libMesh::Nemesis_IO_Helper::put_elem_cmap(), libMesh::Nemesis_IO_Helper::put_elem_map(), libMesh::Nemesis_IO_Helper::put_loadbal_param(), libMesh::Nemesis_IO_Helper::put_node_cmap(), libMesh::Nemesis_IO_Helper::put_node_map(), libMesh::NameBasedIO::read(), libMesh::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::XdrIO::read(), libMesh::ExodusII_IO_Helper::read_elem_num_map(), libMesh::System::read_header(), libMesh::System::read_legacy_data(), libMesh::ExodusII_IO_Helper::read_node_num_map(), libMesh::System::read_parallel_data(), libMesh::System::read_SCALAR_dofs(), libMesh::XdrIO::read_serialized_bc_names(), libMesh::XdrIO::read_serialized_bcs(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::XdrIO::read_serialized_connectivity(), libMesh::System::read_serialized_data(), libMesh::XdrIO::read_serialized_nodes(), libMesh::XdrIO::read_serialized_nodesets(), libMesh::XdrIO::read_serialized_subdomain_names(), libMesh::System::read_serialized_vector(), libMesh::System::read_serialized_vectors(), libMesh::MeshData::read_xdr(), libMesh::SerialMesh::semilocal_elements_begin(), libMesh::ParallelMesh::semilocal_elements_begin(), libMesh::SerialMesh::semilocal_elements_end(), libMesh::ParallelMesh::semilocal_elements_end(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::BoundaryInfo::sync(), libMesh::MeshTools::total_weight(), libMesh::ParallelMesh::update_parallel_id_counts(), libMesh::MeshTools::weight(), libMesh::NameBasedIO::write(), libMesh::ExodusII_IO::write(), libMesh::CheckpointIO::write(), libMesh::XdrIO::write(), libMesh::EquationSystems::write(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::ExodusII_IO::write_element_data(), libMesh::ExodusII_IO_Helper::write_element_values(), libMesh::ExodusII_IO_Helper::write_elements(), libMesh::ExodusII_IO::write_global_data(), libMesh::ExodusII_IO_Helper::write_global_values(), libMesh::System::write_header(), libMesh::ExodusII_IO::write_information_records(), libMesh::ExodusII_IO_Helper::write_information_records(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::UCDIO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data_discontinuous(), libMesh::ExodusII_IO_Helper::write_nodal_values(), libMesh::ExodusII_IO_Helper::write_nodesets(), libMesh::Nemesis_IO_Helper::write_nodesets(), libMesh::System::write_parallel_data(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bc_names(), libMesh::XdrIO::write_serialized_bcs(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::System::write_serialized_data(), libMesh::XdrIO::write_serialized_nodes(), libMesh::XdrIO::write_serialized_nodesets(), libMesh::XdrIO::write_serialized_subdomain_names(), libMesh::System::write_serialized_vector(), libMesh::System::write_serialized_vectors(), libMesh::ExodusII_IO_Helper::write_sidesets(), libMesh::Nemesis_IO_Helper::write_sidesets(), libMesh::ExodusII_IO::write_timestep(), and libMesh::ExodusII_IO_Helper::write_timestep().
{ return cast_int<processor_id_type>(_communicator.rank()); }
| void libMesh::Preconditioner< T >::set_matrix | ( | SparseMatrix< Number > & | mat | ) | [inherited] |
Sets the matrix P to be preconditioned.
Definition at line 175 of file preconditioner.h.
References libMesh::libMeshPrivateData::_is_initialized.
{
//If the matrix is changing then we (probably) need to reinitialize.
_is_initialized = false;
_matrix = &mat;
}
| void libMesh::TrilinosPreconditioner< T >::set_params | ( | Teuchos::ParameterList & | list | ) |
Definition at line 75 of file trilinos_preconditioner.C.
{
_param_list = list;
}
| void libMesh::TrilinosPreconditioner< T >::set_preconditioner_type | ( | const PreconditionerType & | preconditioner_type | ) |
Definition at line 116 of file trilinos_preconditioner.C.
References libMesh::AMG_PRECOND, libMesh::ASM_PRECOND, libMesh::BLOCK_JACOBI_PRECOND, libMesh::CHOLESKY_PRECOND, libMesh::EISENSTAT_PRECOND, libMesh::err, libMesh::ICC_PRECOND, libMesh::IDENTITY_PRECOND, libMesh::ILU_PRECOND, libMesh::JACOBI_PRECOND, libMesh::LU_PRECOND, libMesh::pc, and libMesh::SOR_PRECOND.
{
Ifpack_Preconditioner * pc = NULL;
#ifdef LIBMESH_HAVE_ML
ML_Epetra::MultiLevelPreconditioner * ml = NULL;
#endif
switch (preconditioner_type)
{
case IDENTITY_PRECOND:
// pc = new Ifpack_DiagPreconditioner();
break;
case CHOLESKY_PRECOND:
break;
case ICC_PRECOND:
break;
case ILU_PRECOND:
pc = new Ifpack_ILU(_mat);
pc->SetParameters(_param_list);
pc->Initialize();
_prec = pc;
break;
case LU_PRECOND:
break;
case ASM_PRECOND:
break;
case JACOBI_PRECOND:
break;
case BLOCK_JACOBI_PRECOND:
break;
case SOR_PRECOND:
break;
case EISENSTAT_PRECOND:
break;
#ifdef LIBMESH_HAVE_ML
case AMG_PRECOND:
ml = new ML_Epetra::MultiLevelPreconditioner(*_mat, _param_list, false);;
_prec = ml;
break;
#endif
default:
libMesh::err << "ERROR: Unsupported Trilinos Preconditioner: "
<< preconditioner_type << std::endl
<< "Continuing with Trilinos defaults" << std::endl;
}
}
| void libMesh::Preconditioner< T >::set_type | ( | const PreconditionerType | pct | ) | [inherited] |
Sets the type of preconditioner to use.
Definition at line 184 of file preconditioner.h.
References libMesh::libMeshPrivateData::_is_initialized.
{
//If the preconditioner type changes we (probably) need to reinitialize.
_is_initialized = false;
_preconditioner_type = pct;
}
| virtual void libMesh::Preconditioner< T >::setup | ( | ) | [inline, virtual, inherited] |
This is called every time the "operator might have changed".
This is essentially where you need to fill in your preconditioning matrix.
Definition at line 113 of file preconditioner.h.
{}
| int libMesh::TrilinosPreconditioner< T >::SetUseTranspose | ( | bool | UseTranspose | ) | [protected, virtual] |
Definition at line 178 of file trilinos_preconditioner.C.
{
return _prec->SetUseTranspose(UseTranspose);
}
| PreconditionerType libMesh::Preconditioner< T >::type | ( | ) | const [inline, inherited] |
Returns the type of preconditioner to use.
Definition at line 123 of file preconditioner.h.
{ return _preconditioner_type; }
| bool libMesh::TrilinosPreconditioner< T >::UseTranspose | ( | ) | const [protected, virtual] |
Definition at line 213 of file trilinos_preconditioner.C.
{
return _prec->UseTranspose();
}
const Parallel::Communicator& libMesh::ParallelObject::_communicator [protected, inherited] |
Definition at line 104 of file parallel_object.h.
Referenced by libMesh::EquationSystems::build_solution_vector(), libMesh::ParallelObject::comm(), libMesh::EquationSystems::get_solution(), libMesh::ParallelObject::n_processors(), libMesh::ParallelObject::operator=(), and libMesh::ParallelObject::processor_id().
ReferenceCounter::Counts libMesh::ReferenceCounter::_counts [static, protected, inherited] |
Actually holds the data.
Definition at line 118 of file reference_counter.h.
Referenced by libMesh::ReferenceCounter::get_info(), libMesh::ReferenceCounter::increment_constructor_count(), and libMesh::ReferenceCounter::increment_destructor_count().
bool libMesh::ReferenceCounter::_enable_print_counter = true [static, protected, inherited] |
Flag to control whether reference count information is printed when print_info is called.
Definition at line 137 of file reference_counter.h.
Referenced by libMesh::ReferenceCounter::disable_print_counter_info(), libMesh::ReferenceCounter::enable_print_counter_info(), and libMesh::ReferenceCounter::print_info().
bool libMesh::Preconditioner< T >::_is_initialized [protected, inherited] |
Flag indicating if the data structures have been initialized.
Definition at line 147 of file preconditioner.h.
Referenced by libMesh::Preconditioner< Number >::initialized().
Epetra_FECrsMatrix* libMesh::TrilinosPreconditioner< T >::_mat [protected] |
Trilinos matrix that's been pulled out of the _matrix object.
Definition at line 119 of file trilinos_preconditioner.h.
Referenced by libMesh::TrilinosPreconditioner< T >::mat().
SparseMatrix<T>* libMesh::Preconditioner< T >::_matrix [protected, inherited] |
The matrix P... ie the matrix to be preconditioned. This is often the actual system matrix of a linear sytem.
Definition at line 137 of file preconditioner.h.
Threads::spin_mutex libMesh::ReferenceCounter::_mutex [static, protected, inherited] |
Mutual exclusion object to enable thread-safe reference counting.
Definition at line 131 of file reference_counter.h.
Threads::atomic< unsigned int > libMesh::ReferenceCounter::_n_objects [static, protected, inherited] |
The number of objects. Print the reference count information when the number returns to 0.
Definition at line 126 of file reference_counter.h.
Referenced by libMesh::ReferenceCounter::n_objects(), libMesh::ReferenceCounter::ReferenceCounter(), and libMesh::ReferenceCounter::~ReferenceCounter().
Teuchos::ParameterList libMesh::TrilinosPreconditioner< T >::_param_list [protected] |
Parameter list to be used for building the preconditioner
Definition at line 124 of file trilinos_preconditioner.h.
Epetra_Operator* libMesh::TrilinosPreconditioner< T >::_prec [protected] |
Trilinos preconditioner
Definition at line 114 of file trilinos_preconditioner.h.
PreconditionerType libMesh::Preconditioner< T >::_preconditioner_type [protected, inherited] |
Enum statitng with type of preconditioner to use.
Definition at line 142 of file preconditioner.h.
Referenced by libMesh::Preconditioner< Number >::type().