NumericVector interface to PETSc Vec. More...
#include <petsc_vector.h>
Public Member Functions | |
PetscVector (const Parallel::Communicator &comm_in, const ParallelType type=AUTOMATIC) | |
PetscVector (const Parallel::Communicator &comm_in, const numeric_index_type n, const ParallelType type=AUTOMATIC) | |
PetscVector (const Parallel::Communicator &comm_in, const numeric_index_type n, const numeric_index_type n_local, const ParallelType type=AUTOMATIC) | |
PetscVector (const Parallel::Communicator &comm_in, const numeric_index_type N, const numeric_index_type n_local, const std::vector< numeric_index_type > &ghost, const ParallelType type=AUTOMATIC) | |
PetscVector (Vec v, const Parallel::Communicator &comm_in) | |
PetscVector< T > & | operator= (const PetscVector< T > &v) |
PetscVector (PetscVector &&)=delete | |
PetscVector (const PetscVector &)=delete | |
PetscVector & | operator= (PetscVector &&)=delete |
virtual | ~PetscVector () |
virtual void | close () override |
virtual void | clear () override |
virtual void | zero () override |
virtual std::unique_ptr< NumericVector< T > > | zero_clone () const override |
virtual std::unique_ptr< NumericVector< T > > | clone () const override |
virtual void | init (const numeric_index_type N, const numeric_index_type n_local, const bool fast=false, const ParallelType type=AUTOMATIC) override |
virtual void | init (const numeric_index_type N, const bool fast=false, const ParallelType type=AUTOMATIC) override |
virtual void | init (const numeric_index_type N, const numeric_index_type n_local, const std::vector< numeric_index_type > &ghost, const bool fast=false, const ParallelType=AUTOMATIC) override |
virtual void | init (const NumericVector< T > &other, const bool fast=false) override |
virtual NumericVector< T > & | operator= (const T s) override |
virtual NumericVector< T > & | operator= (const NumericVector< T > &v) override |
virtual NumericVector< T > & | operator= (const std::vector< T > &v) override |
virtual Real | min () const override |
virtual Real | max () const override |
virtual T | sum () const override |
virtual Real | l1_norm () const override |
virtual Real | l2_norm () const override |
virtual Real | linfty_norm () const override |
virtual numeric_index_type | size () const override |
virtual numeric_index_type | local_size () const override |
virtual numeric_index_type | first_local_index () const override |
virtual numeric_index_type | last_local_index () const override |
numeric_index_type | map_global_to_local_index (const numeric_index_type i) const |
virtual T | operator() (const numeric_index_type i) const override |
virtual void | get (const std::vector< numeric_index_type > &index, T *values) const override |
PetscScalar * | get_array () |
const PetscScalar * | get_array_read () const |
void | restore_array () |
virtual NumericVector< T > & | operator+= (const NumericVector< T > &v) override |
virtual NumericVector< T > & | operator-= (const NumericVector< T > &v) override |
virtual void | reciprocal () override |
virtual void | conjugate () override |
virtual void | set (const numeric_index_type i, const T value) override |
virtual void | add (const numeric_index_type i, const T value) override |
virtual void | add (const T s) override |
virtual void | add (const NumericVector< T > &v) override |
virtual void | add (const T a, const NumericVector< T > &v) override |
virtual void | add_vector (const T *v, const std::vector< numeric_index_type > &dof_indices) override |
virtual void | add_vector (const NumericVector< T > &v, const SparseMatrix< T > &A) override |
virtual void | add_vector_transpose (const NumericVector< T > &v, const SparseMatrix< T > &A) override |
void | add_vector_conjugate_transpose (const NumericVector< T > &v, const SparseMatrix< T > &A) |
virtual void | insert (const T *v, const std::vector< numeric_index_type > &dof_indices) override |
virtual void | scale (const T factor) override |
virtual NumericVector< T > & | operator/= (const NumericVector< T > &v) override |
virtual void | abs () override |
virtual T | dot (const NumericVector< T > &v) const override |
T | indefinite_dot (const NumericVector< T > &v) const |
virtual void | localize (std::vector< T > &v_local) const override |
virtual void | localize (NumericVector< T > &v_local) const override |
virtual void | localize (NumericVector< T > &v_local, const std::vector< numeric_index_type > &send_list) const override |
virtual void | localize (std::vector< T > &v_local, const std::vector< numeric_index_type > &indices) const override |
virtual void | localize (const numeric_index_type first_local_idx, const numeric_index_type last_local_idx, const std::vector< numeric_index_type > &send_list) override |
virtual void | localize_to_one (std::vector< T > &v_local, const processor_id_type proc_id=0) const override |
virtual void | pointwise_mult (const NumericVector< T > &vec1, const NumericVector< T > &vec2) override |
virtual void | print_matlab (const std::string &name="") const override |
virtual void | create_subvector (NumericVector< T > &subvector, const std::vector< numeric_index_type > &rows) const override |
virtual void | swap (NumericVector< T > &v) override |
Vec | vec () |
template<> | |
void | localize_to_one (std::vector< Real > &v_local, const processor_id_type pid) const |
template<> | |
void | localize_to_one (std::vector< Complex > &v_local, const processor_id_type pid) const |
virtual bool | initialized () const |
ParallelType | type () const |
ParallelType & | type () |
virtual bool | closed () const |
virtual Real | subset_l1_norm (const std::set< numeric_index_type > &indices) const |
virtual Real | subset_l2_norm (const std::set< numeric_index_type > &indices) const |
virtual Real | subset_linfty_norm (const std::set< numeric_index_type > &indices) const |
virtual T | el (const numeric_index_type i) const |
void | get (const std::vector< numeric_index_type > &index, std::vector< T > &values) const |
NumericVector< T > & | operator*= (const T a) |
NumericVector< T > & | operator/= (const T a) |
void | add_vector (const std::vector< T > &v, const std::vector< numeric_index_type > &dof_indices) |
virtual void | add_vector (const NumericVector< T > &v, const std::vector< numeric_index_type > &dof_indices) |
void | add_vector (const DenseVector< T > &v, const std::vector< numeric_index_type > &dof_indices) |
void | add_vector (const NumericVector< T > &v, const ShellMatrix< T > &A) |
void | insert (const std::vector< T > &v, const std::vector< numeric_index_type > &dof_indices) |
virtual void | insert (const NumericVector< T > &v, const std::vector< numeric_index_type > &dof_indices) |
void | insert (const DenseVector< T > &v, const std::vector< numeric_index_type > &dof_indices) |
void | insert (const DenseSubVector< T > &v, const std::vector< numeric_index_type > &dof_indices) |
virtual int | compare (const NumericVector< T > &other_vector, const Real threshold=TOLERANCE) const |
virtual int | local_relative_compare (const NumericVector< T > &other_vector, const Real threshold=TOLERANCE) const |
virtual int | global_relative_compare (const NumericVector< T > &other_vector, const Real threshold=TOLERANCE) const |
virtual void | print (std::ostream &os=libMesh::out) const |
template<> | |
void | print (std::ostream &os) const |
virtual void | print_global (std::ostream &os=libMesh::out) const |
template<> | |
void | print_global (std::ostream &os) const |
const Parallel::Communicator & | comm () const |
processor_id_type | n_processors () const |
processor_id_type | processor_id () const |
Static Public Member Functions | |
static std::unique_ptr< NumericVector< T > > | build (const Parallel::Communicator &comm, 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 | |
void | increment_constructor_count (const std::string &name) |
void | increment_destructor_count (const std::string &name) |
Protected Attributes | |
bool | _is_closed |
bool | _is_initialized |
ParallelType | _type |
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 |
Private Types | |
typedef std::unordered_map< numeric_index_type, numeric_index_type > | GlobalToLocalMap |
Private Member Functions | |
void | _get_array (bool read_only) const |
void | _restore_array () const |
Private Attributes | |
Vec | _vec |
std::atomic< bool > | _array_is_present |
bool | _array_is_present |
numeric_index_type | _first |
numeric_index_type | _last |
numeric_index_type | _local_size |
Vec | _local_form |
const PetscScalar * | _read_only_values |
PetscScalar * | _values |
std::mutex | _petsc_vector_mutex |
Threads::spin_mutex | _petsc_vector_mutex |
GlobalToLocalMap | _global_to_local_map |
bool | _destroy_vec_on_exit |
bool | _values_manually_retrieved |
bool | _values_read_only |
NumericVector interface to PETSc Vec.
This class provides a nice interface to PETSc's Vec object. All overridden virtual functions are documented in numeric_vector.h.
Definition at line 64 of file petsc_vector.h.
|
protectedinherited |
Data structure to log the information. The log is identified by the class name.
Definition at line 117 of file reference_counter.h.
|
private |
Type for map that maps global to local ghost cells.
Definition at line 421 of file petsc_vector.h.
|
inlineexplicit |
Dummy-Constructor. Dimension=0
Definition at line 454 of file petsc_vector.h.
References libMesh::NumericVector< T >::_type.
|
inlineexplicit |
Constructor. Set dimension to n
and initialize all elements with zero.
Definition at line 473 of file petsc_vector.h.
References libMesh::PetscVector< T >::init().
|
inline |
Constructor. Set local dimension to n_local
, the global dimension to n
, and initialize all elements with zero.
Definition at line 492 of file petsc_vector.h.
References libMesh::PetscVector< T >::init().
|
inline |
Constructor. Set local dimension to n_local
, the global dimension to n
, but additionally reserve memory for the indices specified by the ghost
argument.
Definition at line 512 of file petsc_vector.h.
References libMesh::PetscVector< T >::init().
|
inline |
Constructor. Creates a PetscVector assuming you already have a valid PETSc Vec object. In this case, v
is NOT destroyed by the PetscVector constructor when this object goes out of scope. This allows ownership of v
to remain with the original creator, and to simply provide additional functionality with the PetscVector.
Definition at line 535 of file petsc_vector.h.
References libMesh::PetscVector< T >::_global_to_local_map, libMesh::NumericVector< T >::_is_closed, libMesh::NumericVector< T >::_is_initialized, libMesh::NumericVector< T >::_type, libMesh::PetscVector< T >::_vec, libMesh::GHOSTED, ierr, libMesh::PARALLEL, and libMesh::SERIAL.
|
delete |
This class manages a C-style struct (Vec) manually, so we don't want to allow any automatic copy/move functions to be generated, and we can't default the destructor.
|
delete |
|
inlinevirtual |
Definition at line 619 of file petsc_vector.h.
|
private |
Queries the array (and the local form if the vector is ghosted) from PETSc.
read_only | Whether or not a read only copy of the raw data |
Definition at line 1348 of file petsc_vector.C.
References libMesh::GHOSTED, ierr, and libMesh::initialized().
|
private |
Restores the array (and the local form if the vector is ghosted) to PETSc.
Definition at line 1452 of file petsc_vector.C.
References libMesh::GHOSTED, ierr, and libMesh::initialized().
Referenced by libMesh::PetscVector< T >::add(), libMesh::PetscVector< T >::create_subvector(), libMesh::PetscVector< T >::init(), and libMesh::PetscVector< T >::operator=().
|
overridevirtual |
Sets for each entry in the vector.
Implements libMesh::NumericVector< T >.
Definition at line 440 of file petsc_vector.C.
References libMesh::GHOSTED, and ierr.
|
overridevirtual |
Adds value
to each entry of the vector.
Implements libMesh::NumericVector< T >.
Definition at line 180 of file petsc_vector.C.
|
overridevirtual |
Adds s
to each entry of the vector,
Implements libMesh::NumericVector< T >.
Definition at line 321 of file petsc_vector.C.
|
overridevirtual |
Adds v
to this
, . Equivalent to calling operator+=()
.
Implements libMesh::NumericVector< T >.
Definition at line 332 of file petsc_vector.C.
|
overridevirtual |
Vector addition with a scalar multiple, . Equivalent to calling operator+=()
.
Implements libMesh::NumericVector< T >.
Definition at line 340 of file petsc_vector.C.
References libMesh::PetscVector< T >::_restore_array(), libMesh::PetscVector< T >::_vec, libMesh::GHOSTED, ierr, and libMesh::PetscVector< T >::size().
|
overridevirtual |
Computes , where v
is a pointer and each dof_indices
[i] specifies where to add value v
[i]. This should be overridden in subclasses for efficiency.
Reimplemented from libMesh::NumericVector< T >.
Definition at line 198 of file petsc_vector.C.
References ierr.
|
overridevirtual |
Computes , i.e. adds the product of a SparseMatrix
A
and a NumericVector
v
to this
.
Implements libMesh::NumericVector< T >.
Definition at line 221 of file petsc_vector.C.
References libMesh::PetscVector< T >::_vec, A, and ierr.
|
inlineinherited |
Computes , where v
is a std::vector and each dof_indices
[i] specifies where to add value v
[i].
Definition at line 835 of file numeric_vector.h.
|
virtualinherited |
Computes , where v
is a NumericVector and each dof_indices
[i] specifies where to add value v(i)
.
Definition at line 372 of file numeric_vector.C.
|
inlineinherited |
Computes , where v
is a DenseVector and each dof_indices
[i] specifies where to add value v(i)
.
Definition at line 847 of file numeric_vector.h.
|
inherited |
Computes , i.e. adds the product of a ShellMatrix
A
and a NumericVector
v
to this
.
Definition at line 384 of file numeric_vector.C.
void libMesh::PetscVector< T >::add_vector_conjugate_transpose | ( | const NumericVector< T > & | v, |
const SparseMatrix< T > & | A | ||
) |
.
Adds the product of the conjugate-transpose of SparseMatrix
A
and a NumericVector
v
to this
.
Definition at line 277 of file petsc_vector.C.
|
overridevirtual |
Computes , i.e. adds the product of the transpose of a SparseMatrix
A
and a NumericVector
v
to this
.
Implements libMesh::NumericVector< T >.
Definition at line 249 of file petsc_vector.C.
References libMesh::PetscVector< T >::_vec, A, and ierr.
|
staticinherited |
Builds a NumericVector
on the processors in communicator comm
using the linear solver package specified by solver_package
Definition at line 48 of file numeric_vector.C.
Referenced by libMesh::ExactSolution::_compute_error(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::System::add_vector(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::System::calculate_norm(), libMesh::AdjointRefinementEstimator::estimate_error(), libMesh::ExactErrorEstimator::estimate_error(), and libMesh::CondensedEigenSystem::get_eigenpair().
|
inlineoverridevirtual |
Restores the NumericVector<T>
to a pristine state.
Reimplemented from libMesh::NumericVector< T >.
Definition at line 838 of file petsc_vector.h.
References libMesh::libMeshPrivateData::_is_initialized, ierr, and libMesh::initialized().
|
inlineoverridevirtual |
Implements libMesh::NumericVector< T >.
Definition at line 910 of file petsc_vector.h.
References libMesh::NumericVector< T >::init().
|
inlineoverridevirtual |
Calls the NumericVector's internal assembly routines, ensuring that the values are consistent across processors.
Implements libMesh::NumericVector< T >.
Definition at line 810 of file petsc_vector.h.
References libMesh::GHOSTED, and ierr.
Referenced by libMesh::__libmesh_petsc_diff_solver_monitor(), libMesh::SlepcEigenSolver< T >::get_eigenpair(), libMesh::PetscVector< T >::localize(), and libMesh::PetscLinearSolver< T >::solve().
|
inlinevirtualinherited |
true
if the vector is closed and ready for computation, false otherwise. Definition at line 165 of file numeric_vector.h.
Referenced by libMesh::DofMap::enforce_adjoint_constraints_exactly(), libMesh::DofMap::enforce_constraints_exactly(), libMesh::DofMap::max_constraint_error(), libMesh::EigenSparseVector< T >::operator=(), libMesh::LaspackVector< T >::operator=(), and libMesh::PetscVector< T >::operator=().
|
inlineinherited |
Parallel::Communicator
object used by this mesh. Definition at line 89 of file parallel_object.h.
References libMesh::ParallelObject::_communicator.
Referenced by libMesh::__libmesh_petsc_diff_solver_jacobian(), libMesh::__libmesh_petsc_diff_solver_monitor(), libMesh::__libmesh_petsc_diff_solver_residual(), libMesh::__libmesh_tao_equality_constraints(), libMesh::__libmesh_tao_equality_constraints_jacobian(), libMesh::__libmesh_tao_gradient(), libMesh::__libmesh_tao_hessian(), libMesh::__libmesh_tao_inequality_constraints(), libMesh::__libmesh_tao_inequality_constraints_jacobian(), libMesh::__libmesh_tao_objective(), libMesh::MeshRefinement::_coarsen_elements(), libMesh::ExactSolution::_compute_error(), libMesh::UniformRefinementEstimator::_estimate_error(), libMesh::BoundaryInfo::_find_id_maps(), 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::MeshRefinement::_smooth_flags(), libMesh::PetscDMWrapper::add_dofs_helper(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::ImplicitSystem::add_matrix(), libMesh::System::add_vector(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Modification::all_tri(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::FEMSystem::assemble_qoi(), libMesh::MeshCommunication::assign_global_indices(), libMesh::DofMap::attach_matrix(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::PetscDMWrapper::build_section(), libMesh::PetscDMWrapper::build_sf(), libMesh::MeshBase::cache_elem_dims(), libMesh::System::calculate_norm(), libMesh::DofMap::check_dirichlet_bcid_consistency(), libMesh::PetscDMWrapper::check_section_n_dofs(), 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::ExodusII_IO::copy_elemental_solution(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::MeshTools::create_bounding_box(), libMesh::MeshTools::create_nodal_bounding_box(), libMesh::MeshRefinement::create_parent_error_vector(), libMesh::MeshTools::create_processor_bounding_box(), libMesh::MeshTools::create_subdomain_bounding_box(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), DMlibMeshFunction(), DMlibMeshJacobian(), DMlibMeshSetSystem_libMesh(), DMVariableBounds_libMesh(), libMesh::MeshRefinement::eliminate_unrefined_patches(), libMesh::EpetraVector< T >::EpetraVector(), 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::DofMap::get_info(), libMesh::ImplicitSystem::get_linear_solver(), libMesh::LocationMap< T >::init(), libMesh::TimeSolver::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::PetscDMWrapper::init_and_attach_petscdm(), libMesh::EigenSystem::init_data(), libMesh::EigenSystem::init_matrices(), libMesh::OptimizationSystem::initialize_equality_constraints_storage(), libMesh::OptimizationSystem::initialize_inequality_constraints_storage(), libMesh::MeshTools::libmesh_assert_consistent_distributed(), libMesh::MeshTools::libmesh_assert_consistent_distributed_nodes(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_new_node_procids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_topology_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_boundary_ids(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_flags(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_object_ids(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_p_levels(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::MeshTools::libmesh_assert_valid_unique_ids(), libMesh::libmesh_petsc_snes_fd_residual(), libMesh::libmesh_petsc_snes_jacobian(), libMesh::libmesh_petsc_snes_mffd_residual(), libMesh::libmesh_petsc_snes_postcheck(), libMesh::libmesh_petsc_snes_residual(), libMesh::libmesh_petsc_snes_residual_helper(), libMesh::MeshRefinement::limit_level_mismatch_at_edge(), libMesh::MeshRefinement::limit_level_mismatch_at_node(), libMesh::MeshRefinement::limit_overrefined_boundary(), libMesh::MeshRefinement::limit_underrefined_boundary(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshCommunication::make_elems_parallel_consistent(), libMesh::MeshRefinement::make_flags_parallel_consistent(), libMesh::MeshCommunication::make_new_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_new_nodes_parallel_consistent(), libMesh::MeshCommunication::make_node_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_proc_ids_parallel_consistent(), libMesh::MeshCommunication::make_node_unique_ids_parallel_consistent(), libMesh::MeshCommunication::make_nodes_parallel_consistent(), libMesh::MeshCommunication::make_p_levels_parallel_consistent(), libMesh::MeshRefinement::make_refinement_compatible(), libMesh::FEMSystem::mesh_position_set(), libMesh::DistributedMesh::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::BoundaryInfo::n_shellface_conds(), libMesh::DistributedMesh::parallel_max_elem_id(), libMesh::DistributedMesh::parallel_max_node_id(), libMesh::ReplicatedMesh::parallel_max_unique_id(), libMesh::DistributedMesh::parallel_max_unique_id(), libMesh::DistributedMesh::parallel_n_elem(), libMesh::DistributedMesh::parallel_n_nodes(), libMesh::SparsityPattern::Build::parallel_sync(), libMesh::MeshTools::paranoid_n_levels(), libMesh::petsc_auto_fieldsplit(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::MeshBase::prepare_for_use(), libMesh::Nemesis_IO::read(), libMesh::XdrIO::read(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_header(), 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_helper(), 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::DistributedMesh::renumber_dof_objects(), libMesh::CheckpointIO::select_split_config(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::PetscDiffSolver::setup_petsc_data(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::split_mesh(), libMesh::MeshBase::subdomain_ids(), libMesh::BoundaryInfo::sync(), libMesh::MeshRefinement::test_level_one(), libMesh::MeshRefinement::test_unflagged(), libMesh::MeshTools::total_weight(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::NameBasedIO::write(), libMesh::XdrIO::write(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), and libMesh::XdrIO::write_serialized_nodesets().
|
virtualinherited |
-1
when this
is equivalent to other_vector
(up to the given threshold
), or the first index where abs
(a[i]-b[i]) exceeds the threshold. Definition at line 104 of file numeric_vector.C.
|
overridevirtual |
Negates the imaginary component of each entry in the vector.
Implements libMesh::NumericVector< T >.
Definition at line 168 of file petsc_vector.C.
References ierr.
|
overridevirtual |
Fills in subvector
from this vector using the indices in rows
. Similar to the create_submatrix()
routine for the SparseMatrix class, it is currently only implemented for PetscVectors.
Reimplemented from libMesh::NumericVector< T >.
Definition at line 1259 of file petsc_vector.C.
References libMesh::NumericVector< T >::_is_initialized, libMesh::PetscVector< T >::_restore_array(), libMesh::PetscVector< T >::_vec, libMesh::MeshTools::Generation::Private::idx(), ierr, libMesh::NumericVector< T >::initialized(), libMesh::Utility::iota(), libMesh::numeric_petsc_cast(), and PETSC_USE_POINTER.
|
staticinherited |
Definition at line 106 of file reference_counter.C.
References libMesh::ReferenceCounter::_enable_print_counter.
Referenced by libMesh::LibMeshInit::LibMeshInit().
|
overridevirtual |
v
.Uses the complex-conjugate of v
in the complex-valued case.
Implements libMesh::NumericVector< T >.
Definition at line 466 of file petsc_vector.C.
References libMesh::PetscVector< T >::_vec, ierr, and value.
|
inlinevirtualinherited |
|
staticinherited |
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.
|
inlineoverridevirtual |
0
. Implements libMesh::NumericVector< T >.
Definition at line 959 of file petsc_vector.h.
References ierr, and libMesh::initialized().
|
inlineoverridevirtual |
Access multiple components at once. values
will not be reallocated; it should already have enough space. The default implementation calls operator()
for each index, but some implementations may supply faster methods here.
Reimplemented from libMesh::NumericVector< T >.
Definition at line 1087 of file petsc_vector.h.
References libMesh::GHOSTED.
|
inlineinherited |
Access multiple components at once. values
will be resized, if necessary, and filled. The default implementation calls operator()
for each index, but some implementations may supply faster methods here.
Definition at line 820 of file numeric_vector.h.
|
inline |
Get read/write access to the raw PETSc Vector data array.
Definition at line 1110 of file petsc_vector.h.
|
inline |
Get read only access to the raw PETSc Vector data array.
Definition at line 1121 of file petsc_vector.h.
|
staticinherited |
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().
|
virtualinherited |
-1
when this
is equivalent to other_vector
(up to the given global relative threshold
), or the first index where abs
(a[i]-b[i])/max_j(a[j],b[j]) exceeds the threshold. Definition at line 169 of file numeric_vector.C.
|
inlineprotectedinherited |
Increments the construction counter. Should be called in the constructor of any derived class that will be reference counted.
Definition at line 181 of file reference_counter.h.
References libMesh::ReferenceCounter::_counts, libMesh::Quality::name(), and libMesh::Threads::spin_mtx.
Referenced by libMesh::ReferenceCountedObject< RBParametrized >::ReferenceCountedObject().
|
inlineprotectedinherited |
Increments the destruction counter. Should be called in the destructor of any derived class that will be reference counted.
Definition at line 194 of file reference_counter.h.
References libMesh::ReferenceCounter::_counts, libMesh::Quality::name(), and libMesh::Threads::spin_mtx.
Referenced by libMesh::ReferenceCountedObject< RBParametrized >::~ReferenceCountedObject().
T libMesh::PetscVector< T >::indefinite_dot | ( | const NumericVector< T > & | v | ) | const |
v
.Definition at line 487 of file petsc_vector.C.
References libMesh::PetscVector< T >::_vec, ierr, and value.
|
inlineoverridevirtual |
Change the dimension of the vector to n
. The reserved memory for this vector remains unchanged if possible. If n==0
, all memory is freed. Therefore, if you want to resize the vector and release the memory not needed, you have to first call init(0)
and then init(n)
. This behaviour is analogous to that of the STL containers.
On fast==false
, the vector is filled by zeros.
Implements libMesh::NumericVector< T >.
Definition at line 628 of file petsc_vector.h.
References libMesh::libMeshPrivateData::_is_initialized, libMesh::AUTOMATIC, ierr, libMesh::initialized(), libMesh::PARALLEL, libMesh::SERIAL, and libMesh::zero.
Referenced by libMesh::PetscVector< T >::localize(), and libMesh::PetscVector< T >::PetscVector().
|
inlineoverridevirtual |
Call init()
with n_local = N.
Implements libMesh::NumericVector< T >.
Definition at line 698 of file petsc_vector.h.
References libMesh::TriangleWrapper::init().
|
overridevirtual |
Create a vector that holds tha local indices plus those specified in the ghost
argument.
Implements libMesh::NumericVector< T >.
|
inlineoverridevirtual |
Creates a vector that has the same dimension and storage type as other
, including ghost dofs.
Implements libMesh::NumericVector< T >.
Definition at line 771 of file petsc_vector.h.
References libMesh::PetscVector< T >::_global_to_local_map, libMesh::libMeshPrivateData::_is_initialized, libMesh::PetscVector< T >::_restore_array(), libMesh::NumericVector< T >::_type, libMesh::PetscVector< T >::_vec, ierr, libMesh::NumericVector< T >::initialized(), libMesh::initialized(), and libMesh::zero.
|
inlinevirtualinherited |
true
if the vector has been initialized, false otherwise. Definition at line 149 of file numeric_vector.h.
Referenced by libMesh::ImplicitSystem::assemble(), libMesh::NumericVector< Number >::compare(), libMesh::PetscVector< T >::create_subvector(), libMesh::NumericVector< Number >::global_relative_compare(), libMesh::PetscVector< T >::init(), and libMesh::NumericVector< Number >::local_relative_compare().
|
overridevirtual |
Inserts the entries of v
in *this at the locations specified by v
.
Reimplemented from libMesh::NumericVector< T >.
Definition at line 380 of file petsc_vector.C.
References ierr, and libMesh::numeric_petsc_cast().
|
inlineinherited |
Inserts the entries of v
in *this at the locations specified by v
.
Definition at line 859 of file numeric_vector.h.
|
virtualinherited |
Inserts the entries of v
in *this at the locations specified by v
.
Definition at line 92 of file numeric_vector.C.
|
inlineinherited |
Inserts the entries of v
in *this at the locations specified by v
.
Definition at line 871 of file numeric_vector.h.
|
inlineinherited |
Inserts the entries of v
in *this at the locations specified by v
.
Definition at line 883 of file numeric_vector.h.
|
overridevirtual |
Implements libMesh::NumericVector< T >.
Definition at line 57 of file petsc_vector.C.
References libMesh::closed(), ierr, libMesh::Real, and value.
|
overridevirtual |
Implements libMesh::NumericVector< T >.
Definition at line 74 of file petsc_vector.C.
References libMesh::closed(), ierr, libMesh::Real, and value.
|
inlineoverridevirtual |
size()
. Implements libMesh::NumericVector< T >.
Definition at line 983 of file petsc_vector.h.
References ierr, and libMesh::initialized().
|
overridevirtual |
Implements libMesh::NumericVector< T >.
Definition at line 92 of file petsc_vector.C.
References libMesh::closed(), ierr, libMesh::Real, and value.
|
virtualinherited |
-1
when this
is equivalent to other_vector
, (up to the given local relative threshold
), or the first index where abs
(a[i]-b[i])/max(a[i],b[i]) exceeds the threshold. Definition at line 136 of file numeric_vector.C.
|
inlineoverridevirtual |
index_stop
- index_start
. Implements libMesh::NumericVector< T >.
Definition at line 942 of file petsc_vector.h.
References ierr, and libMesh::initialized().
Referenced by libMesh::PetscVector< T >::operator=().
|
overridevirtual |
Creates a copy of the global vector in the local vector v_local
.
Implements libMesh::NumericVector< T >.
Definition at line 926 of file petsc_vector.C.
References ierr.
Referenced by libMesh::PetscVector< T >::localize().
|
overridevirtual |
Same, but fills a NumericVector<T>
instead of a std::vector
.
Implements libMesh::NumericVector< T >.
Definition at line 660 of file petsc_vector.C.
References libMesh::PetscVector< T >::_vec, libMesh::PetscVector< T >::close(), libMesh::GHOSTED, libMesh::MeshTools::Generation::Private::idx(), ierr, libMesh::Utility::iota(), PETSC_USE_POINTER, libMesh::PetscVector< T >::size(), and libMesh::NumericVector< T >::type().
|
overridevirtual |
Creates a local vector v_local
containing only information relevant to this processor, as defined by the send_list
.
Implements libMesh::NumericVector< T >.
Definition at line 713 of file petsc_vector.C.
References libMesh::PetscVector< T >::_vec, libMesh::PetscVector< T >::close(), libMesh::GHOSTED, libMesh::MeshTools::Generation::Private::idx(), ierr, libMesh::PARALLEL, PETSC_USE_POINTER, libMesh::PetscVector< T >::size(), and libMesh::NumericVector< T >::type().
|
overridevirtual |
Fill in the local std::vector "v_local" with the global indices given in "indices".
Example:
* On 4 procs *this = {a, b, c, d, e, f, g, h, i} is a parallel vector. * On each proc, the indices arrays are set up as: * proc0, indices = {1,2,4,5} * proc1, indices = {2,5,6,8} * proc2, indices = {2,3,6,7} * proc3, indices = {0,1,2,3} * * After calling this version of localize, the v_local vectors are: * proc0, v_local = {b,c,e,f} * proc1, v_local = {c,f,g,i} * proc2, v_local = {c,d,g,h} * proc3, v_local = {a,b,c,d} *
This function is useful in parallel I/O routines, when you have a parallel vector of solution values which you want to write a subset of.
Implements libMesh::NumericVector< T >.
Definition at line 787 of file petsc_vector.C.
References ierr, libMesh::numeric_petsc_cast(), and PETSC_USE_POINTER.
|
overridevirtual |
Updates a local vector with selected values from neighboring processors, as defined by send_list
.
Implements libMesh::NumericVector< T >.
Definition at line 854 of file petsc_vector.C.
References libMesh::PetscVector< T >::_vec, libMesh::PetscVector< T >::close(), libMesh::MeshTools::Generation::Private::idx(), ierr, libMesh::PetscVector< T >::init(), libMesh::Utility::iota(), libMesh::PetscVector< T >::localize(), libMesh::PARALLEL, and PETSC_USE_POINTER.
|
overridevirtual |
Creates a local copy of the global vector in v_local
only on processor proc_id
. By default the data is sent to processor 0. This method is useful for outputting data from one processor.
Implements libMesh::NumericVector< T >.
void libMesh::PetscVector< Real >::localize_to_one | ( | std::vector< Real > & | v_local, |
const processor_id_type | pid | ||
) | const |
Definition at line 961 of file petsc_vector.C.
References ierr.
void libMesh::PetscVector< Complex >::localize_to_one | ( | std::vector< Complex > & | v_local, |
const processor_id_type | pid | ||
) | const |
Definition at line 1055 of file petsc_vector.C.
References ierr.
|
inline |
i
.If the index is not a ghost cell, this is done by subtraction the number of the first local index. If it is a ghost cell, it has to be looked up in the map.
Definition at line 1007 of file petsc_vector.h.
References end, ierr, and libMesh::initialized().
|
inlineoverridevirtual |
Implements libMesh::NumericVector< T >.
Definition at line 1162 of file petsc_vector.h.
References ierr, and libMesh::Real.
|
inlineoverridevirtual |
Implements libMesh::NumericVector< T >.
Definition at line 1141 of file petsc_vector.h.
References ierr, and libMesh::Real.
|
inlinestaticinherited |
Prints the number of outstanding (created, but not yet destroyed) objects.
Definition at line 83 of file reference_counter.h.
References libMesh::ReferenceCounter::_n_objects.
|
inlineinherited |
Definition at line 95 of file parallel_object.h.
References libMesh::ParallelObject::_communicator, and libMesh::Parallel::Communicator::size().
Referenced by libMesh::BoundaryInfo::_find_id_maps(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::DistributedMesh::add_elem(), libMesh::DistributedMesh::add_node(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::FEMSystem::assembly(), libMesh::AztecLinearSolver< T >::AztecLinearSolver(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::DistributedMesh::clear(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::UnstructuredMesh::create_pid_mesh(), libMesh::MeshTools::create_processor_bounding_box(), 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::SystemSubsetBySubdomain::init(), libMesh::PetscDMWrapper::init_and_attach_petscdm(), libMesh::Nemesis_IO_Helper::initialize(), libMesh::DistributedMesh::insert_elem(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_new_node_procids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_topology_consistent_procids< Node >(), libMesh::MeshTools::libmesh_assert_valid_boundary_ids(), libMesh::MeshTools::libmesh_assert_valid_dof_ids(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::MeshTools::libmesh_assert_valid_refinement_flags(), libMesh::DofMap::local_variable_indices(), libMesh::MeshRefinement::make_coarsening_compatible(), libMesh::MeshBase::n_active_elem_on_proc(), libMesh::MeshBase::n_elem_on_proc(), libMesh::MeshBase::n_nodes_on_proc(), libMesh::MeshBase::partition(), libMesh::PetscLinearSolver< T >::PetscLinearSolver(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::NameBasedIO::read(), libMesh::Nemesis_IO::read(), libMesh::CheckpointIO::read(), libMesh::CheckpointIO::read_connectivity(), libMesh::XdrIO::read_header(), libMesh::CheckpointIO::read_nodes(), libMesh::System::read_parallel_data(), libMesh::System::read_SCALAR_dofs(), libMesh::System::read_serialized_blocked_dof_objects(), libMesh::System::read_serialized_vector(), libMesh::DistributedMesh::renumber_dof_objects(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::DistributedMesh::update_parallel_id_counts(), libMesh::GMVIO::write_binary(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::System::write_parallel_data(), libMesh::System::write_SCALAR_dofs(), libMesh::XdrIO::write_serialized_bcs_helper(), libMesh::System::write_serialized_blocked_dof_objects(), libMesh::XdrIO::write_serialized_connectivity(), libMesh::XdrIO::write_serialized_nodes(), and libMesh::XdrIO::write_serialized_nodesets().
|
inlineoverridevirtual |
Implements libMesh::NumericVector< T >.
Definition at line 1067 of file petsc_vector.h.
References libMesh::GHOSTED.
|
inlineinherited |
Scales the vector by a
, . Equivalent to u.scale(a)
Definition at line 391 of file numeric_vector.h.
|
overridevirtual |
Adds v
to *this, . Equivalent to u.add(1, v)
.
Implements libMesh::NumericVector< T >.
Definition at line 111 of file petsc_vector.C.
References libMesh::closed().
|
overridevirtual |
Subtracts v
from *this, . Equivalent to u.add
(-1, v).
Implements libMesh::NumericVector< T >.
Definition at line 125 of file petsc_vector.C.
References libMesh::closed().
|
overridevirtual |
Computes the pointwise division of this vector's entries by another's,
Implements libMesh::NumericVector< T >.
Definition at line 427 of file petsc_vector.C.
References libMesh::PetscVector< T >::_vec, and ierr.
|
inlineinherited |
Scales the vector by 1/a
, . Equivalent to u.scale
(1./a)
Definition at line 400 of file numeric_vector.h.
PetscVector< T > & libMesh::PetscVector< T >::operator= | ( | const PetscVector< T > & | v | ) |
Copy assignment operator. Calls VecCopy after performing various checks.
Definition at line 560 of file petsc_vector.C.
References libMesh::PetscVector< T >::_restore_array(), libMesh::NumericVector< T >::_type, libMesh::PetscVector< T >::_vec, libMesh::NumericVector< T >::closed(), libMesh::GHOSTED, ierr, libMesh::PetscVector< T >::local_size(), libMesh::PARALLEL, libMesh::SERIAL, libMesh::PetscVector< T >::size(), and libMesh::NumericVector< T >::type().
|
delete |
|
overridevirtual |
Sets all entries of the vector to the value s
.
Implements libMesh::NumericVector< T >.
Definition at line 510 of file petsc_vector.C.
References libMesh::closed(), libMesh::GHOSTED, and ierr.
|
overridevirtual |
This looks like a copy assignment operator, but note that, unlike normal copy assignment operators, it is pure virtual. This function should be overridden in derived classes so that they can be copied correctly via references to the base class. This design usually isn't a good idea in general, but in this context it works because we usually don't have a mix of different kinds of NumericVectors active in the library at a single time.
Implements libMesh::NumericVector< T >.
Definition at line 546 of file petsc_vector.C.
|
overridevirtual |
Sets (*this)(i) = v(i) for each entry of the vector.
Case 1: The vector is the same size of The global vector. Only add the local components.
Case 2: The vector is the same size as our local piece. Insert directly to the local piece.
Implements libMesh::NumericVector< T >.
Definition at line 624 of file petsc_vector.C.
References libMesh::GHOSTED.
|
overridevirtual |
Computes (summation not implied) i.e. the pointwise (component-wise) product of vec1
and vec2
, and stores the result in *this
.
Implements libMesh::NumericVector< T >.
Definition at line 1141 of file petsc_vector.C.
References libMesh::GHOSTED, and ierr.
|
inlinevirtualinherited |
Prints the local contents of the vector, by default to libMesh::out
Definition at line 916 of file numeric_vector.h.
|
inlineinherited |
Definition at line 898 of file numeric_vector.h.
|
inlinevirtualinherited |
Prints the global contents of the vector, by default to libMesh::out
Definition at line 953 of file numeric_vector.h.
|
inlineinherited |
Definition at line 931 of file numeric_vector.h.
|
staticinherited |
Prints the reference information, by default to libMesh::out
.
Definition at line 87 of file reference_counter.C.
References libMesh::ReferenceCounter::_enable_print_counter, and libMesh::ReferenceCounter::get_info().
|
overridevirtual |
Print the contents of the vector in Matlab's sparse matrix format. Optionally prints the vector to the file named name
. If name
is not specified it is dumped to the screen.
Create an ASCII file containing the matrix if a filename was provided.
Otherwise the matrix will be dumped to the screen.
Destroy the viewer.
Reimplemented from libMesh::NumericVector< T >.
Definition at line 1188 of file petsc_vector.C.
References libMesh::closed(), ierr, and libMesh::Quality::name().
|
inlineinherited |
Definition at line 101 of file parallel_object.h.
References libMesh::ParallelObject::_communicator, and libMesh::Parallel::Communicator::rank().
Referenced by libMesh::BoundaryInfo::_find_id_maps(), libMesh::EquationSystems::_read_impl(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::DistributedMesh::add_elem(), libMesh::BoundaryInfo::add_elements(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::DistributedMesh::add_node(), libMesh::UnstructuredMesh::all_second_order(), libMesh::MeshTools::Modification::all_tri(), libMesh::FEMSystem::assembly(), libMesh::EquationSystems::build_discontinuous_solution_vector(), libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::DistributedMesh::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::MeshTools::correct_node_proc_ids(), libMesh::ExodusII_IO_Helper::create(), libMesh::DistributedMesh::delete_elem(), libMesh::DistributedMesh::delete_node(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_local_dofs_node_major(), libMesh::DofMap::distribute_local_dofs_var_major(), libMesh::DistributedMesh::DistributedMesh(), libMesh::DofMap::end_dof(), libMesh::DofMap::end_old_dof(), libMesh::EnsightIO::EnsightIO(), libMesh::MeshFunction::find_element(), libMesh::MeshFunction::find_elements(), 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::DofMap::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::SparsityPattern::Build::handle_vi_vj(), libMesh::SystemSubsetBySubdomain::init(), 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::DistributedMesh::insert_elem(), libMesh::DofMap::is_evaluable(), libMesh::SparsityPattern::Build::join(), libMesh::DofMap::last_dof(), libMesh::MeshTools::libmesh_assert_consistent_distributed(), libMesh::MeshTools::libmesh_assert_consistent_distributed_nodes(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_parallel_consistent_procids< Elem >(), libMesh::MeshTools::libmesh_assert_valid_neighbors(), libMesh::DistributedMesh::libmesh_assert_valid_parallel_object_ids(), 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::BoundaryInfo::n_shellface_conds(), libMesh::SparsityPattern::Build::operator()(), libMesh::DistributedMesh::own_node(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), 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::XdrIO::read(), libMesh::CheckpointIO::read(), libMesh::ExodusII_IO_Helper::read_elem_num_map(), libMesh::ExodusII_IO_Helper::read_global_values(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_header(), 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_helper(), 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::DistributedMesh::renumber_dof_objects(), libMesh::CheckpointIO::select_split_config(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::MeshTools::total_weight(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::Parallel::Packing< T >::unpack(), libMesh::DistributedMesh::update_parallel_id_counts(), libMesh::NameBasedIO::write(), libMesh::XdrIO::write(), libMesh::CheckpointIO::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::Nemesis_IO_Helper::write_nodesets(), libMesh::ExodusII_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_helper(), 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::Nemesis_IO_Helper::write_sidesets(), libMesh::ExodusII_IO_Helper::write_sidesets(), libMesh::ExodusII_IO::write_timestep(), libMesh::ExodusII_IO_Helper::write_timestep(), and libMesh::ExodusII_IO::write_timestep_discontinuous().
|
overridevirtual |
Computes the pointwise reciprocal,
Implements libMesh::NumericVector< T >.
Definition at line 156 of file petsc_vector.C.
References ierr.
|
inline |
Restore the data array.
Definition at line 1131 of file petsc_vector.h.
|
overridevirtual |
Scale each element of the vector by the given factor
.
Implements libMesh::NumericVector< T >.
Definition at line 400 of file petsc_vector.C.
References libMesh::GHOSTED, and ierr.
|
overridevirtual |
Sets v(i) = value
.
Implements libMesh::NumericVector< T >.
Definition at line 138 of file petsc_vector.C.
|
inlineoverridevirtual |
Implements libMesh::NumericVector< T >.
Definition at line 922 of file petsc_vector.h.
References ierr, and libMesh::initialized().
Referenced by libMesh::PetscVector< T >::add(), libMesh::PetscVector< T >::localize(), and libMesh::PetscVector< T >::operator=().
|
virtualinherited |
Definition at line 311 of file numeric_vector.C.
Referenced by libMesh::System::discrete_var_norm().
|
virtualinherited |
Definition at line 326 of file numeric_vector.C.
Referenced by libMesh::System::discrete_var_norm().
|
virtualinherited |
Definition at line 341 of file numeric_vector.C.
Referenced by libMesh::System::discrete_var_norm().
|
overridevirtual |
Implements libMesh::NumericVector< T >.
Definition at line 41 of file petsc_vector.C.
References libMesh::closed(), ierr, and value.
|
inlineoverridevirtual |
Swaps the contents of this with v
. There should be enough indirection in subclasses to make this an O(1) header-swap operation.
Reimplemented from libMesh::NumericVector< T >.
Definition at line 1183 of file petsc_vector.h.
References libMesh::PetscVector< T >::_array_is_present, libMesh::PetscVector< T >::_destroy_vec_on_exit, libMesh::PetscVector< T >::_global_to_local_map, libMesh::PetscVector< T >::_local_form, libMesh::PetscVector< T >::_values, libMesh::PetscVector< T >::_vec, swap(), and libMesh::NumericVector< T >::swap().
Referenced by libMesh::__libmesh_petsc_diff_solver_residual(), libMesh::__libmesh_tao_equality_constraints(), libMesh::__libmesh_tao_equality_constraints_jacobian(), libMesh::__libmesh_tao_gradient(), libMesh::__libmesh_tao_hessian(), libMesh::__libmesh_tao_inequality_constraints(), libMesh::__libmesh_tao_inequality_constraints_jacobian(), libMesh::__libmesh_tao_objective(), DMlibMeshFunction(), DMlibMeshJacobian(), libMesh::libmesh_petsc_snes_jacobian(), libMesh::libmesh_petsc_snes_postcheck(), and libMesh::libmesh_petsc_snes_residual_helper().
|
inlineinherited |
Definition at line 154 of file numeric_vector.h.
Referenced by libMesh::DofMap::enforce_adjoint_constraints_exactly(), libMesh::DofMap::enforce_constraints_exactly(), libMesh::EpetraVector< T >::EpetraVector(), libMesh::MeshFunction::find_element(), libMesh::MeshFunction::find_elements(), libMesh::DistributedVector< T >::init(), libMesh::EigenSparseVector< T >::init(), libMesh::LaspackVector< T >::init(), libMesh::EpetraVector< T >::init(), libMesh::PetscVector< T >::localize(), libMesh::PetscVector< T >::operator=(), and libMesh::System::read_serialized_vector().
|
inlineinherited |
Definition at line 159 of file numeric_vector.h.
|
inline |
Definition at line 325 of file petsc_vector.h.
References libMesh::PetscVector< T >::_vec.
Referenced by libMesh::PetscPreconditioner< T >::apply(), libMesh::SlepcEigenSolver< T >::attach_deflation_space(), libMesh::PetscNonlinearSolver< Number >::build_mat_null_space(), DMCreateGlobalVector_libMesh(), libMesh::PetscMatrix< T >::get_diagonal(), libMesh::TaoOptimizationSolver< T >::get_dual_variables(), libMesh::SlepcEigenSolver< T >::get_eigenpair(), libMesh::SlepcEigenSolver< T >::set_initial_space(), libMesh::PetscDiffSolver::solve(), and libMesh::PetscLinearSolver< T >::solve().
|
inlineoverridevirtual |
Set all entries to zero. Equivalent to v
= 0, but more obvious and faster.
Implements libMesh::NumericVector< T >.
Definition at line 862 of file petsc_vector.h.
References libMesh::closed(), libMesh::GHOSTED, and ierr.
Referenced by libMesh::__libmesh_tao_equality_constraints(), libMesh::__libmesh_tao_gradient(), libMesh::__libmesh_tao_inequality_constraints(), libMesh::libmesh_petsc_snes_fd_residual(), libMesh::libmesh_petsc_snes_mffd_residual(), libMesh::libmesh_petsc_snes_residual(), and libMesh::TaoOptimizationSolver< T >::solve().
|
inlineoverridevirtual |
Implements libMesh::NumericVector< T >.
Definition at line 899 of file petsc_vector.h.
References libMesh::NumericVector< T >::init().
|
mutableprivate |
If true
, the actual PETSc array of the values of the vector is currently accessible. That means that the members _local_form
and _values
are valid.
Definition at line 342 of file petsc_vector.h.
Referenced by libMesh::PetscVector< T >::swap().
|
mutableprivate |
Definition at line 344 of file petsc_vector.h.
|
protectedinherited |
Definition at line 107 of file parallel_object.h.
Referenced by libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::ParallelObject::comm(), libMesh::ParallelObject::n_processors(), libMesh::ParallelObject::operator=(), and libMesh::ParallelObject::processor_id().
|
staticprotectedinherited |
Actually holds the data.
Definition at line 122 of file reference_counter.h.
Referenced by libMesh::ReferenceCounter::get_info(), libMesh::ReferenceCounter::increment_constructor_count(), and libMesh::ReferenceCounter::increment_destructor_count().
|
private |
This boolean value should only be set to false for the constructor which takes a PETSc Vec object.
Definition at line 433 of file petsc_vector.h.
Referenced by libMesh::PetscVector< T >::swap().
|
staticprotectedinherited |
Flag to control whether reference count information is printed when print_info is called.
Definition at line 141 of file reference_counter.h.
Referenced by libMesh::ReferenceCounter::disable_print_counter_info(), libMesh::ReferenceCounter::enable_print_counter_info(), and libMesh::ReferenceCounter::print_info().
|
mutableprivate |
|
private |
Map that maps global to local ghost cells (will be empty if not in ghost cell mode).
Definition at line 427 of file petsc_vector.h.
Referenced by libMesh::PetscVector< T >::init(), libMesh::PetscVector< T >::PetscVector(), and libMesh::PetscVector< T >::swap().
|
protectedinherited |
Flag which tracks whether the vector's values are consistent on all processors after insertion or addition of values has occurred on some or all processors.
Definition at line 712 of file numeric_vector.h.
Referenced by libMesh::NumericVector< Number >::closed(), libMesh::EpetraVector< T >::EpetraVector(), libMesh::DistributedVector< T >::localize(), libMesh::DistributedVector< T >::operator=(), and libMesh::PetscVector< T >::PetscVector().
|
protectedinherited |
true
once init() has been called.
Definition at line 717 of file numeric_vector.h.
Referenced by libMesh::PetscVector< T >::create_subvector(), libMesh::EpetraVector< T >::EpetraVector(), libMesh::NumericVector< Number >::initialized(), libMesh::DistributedVector< T >::localize(), libMesh::DistributedVector< T >::operator=(), and libMesh::PetscVector< T >::PetscVector().
|
mutableprivate |
|
mutableprivate |
PETSc vector datatype to hold the local form of a ghosted vector. The contents of this field are only valid if the vector is ghosted and _array_is_present
is true
.
Definition at line 371 of file petsc_vector.h.
Referenced by libMesh::PetscVector< T >::swap().
|
mutableprivate |
Size of the local values from _get_array()
Definition at line 364 of file petsc_vector.h.
|
staticprotectedinherited |
Mutual exclusion object to enable thread-safe reference counting.
Definition at line 135 of file reference_counter.h.
|
staticprotectedinherited |
The number of objects. Print the reference count information when the number returns to 0.
Definition at line 130 of file reference_counter.h.
Referenced by libMesh::ReferenceCounter::n_objects(), libMesh::ReferenceCounter::ReferenceCounter(), and libMesh::ReferenceCounter::~ReferenceCounter().
|
mutableprivate |
Mutex for _get_array and _restore_array. This is part of the object to keep down thread contention when reading frmo multiple PetscVectors simultaneously
Definition at line 399 of file petsc_vector.h.
|
mutableprivate |
Definition at line 401 of file petsc_vector.h.
|
mutableprivate |
Pointer to the actual PETSc array of the values of the vector. This pointer is only valid if _array_is_present
is true
. We're using PETSc's VecGetArrayRead() function, which requires a constant PetscScalar *, but _get_array and _restore_array are const member functions, so _values also needs to be mutable (otherwise it is a "const PetscScalar * const" in that context).
Definition at line 381 of file petsc_vector.h.
|
protectedinherited |
Type of vector.
Definition at line 722 of file numeric_vector.h.
Referenced by libMesh::DistributedVector< T >::DistributedVector(), libMesh::EigenSparseVector< T >::EigenSparseVector(), libMesh::EpetraVector< T >::EpetraVector(), libMesh::PetscVector< T >::init(), libMesh::LaspackVector< T >::LaspackVector(), libMesh::PetscVector< T >::operator=(), libMesh::PetscVector< T >::PetscVector(), and libMesh::NumericVector< Number >::type().
|
mutableprivate |
Pointer to the actual PETSc array of the values of the vector. This pointer is only valid if _array_is_present
is true
. We're using PETSc's VecGetArrayRead() function, which requires a constant PetscScalar *, but _get_array and _restore_array are const member functions, so _values also needs to be mutable (otherwise it is a "const PetscScalar * const" in that context).
Definition at line 391 of file petsc_vector.h.
Referenced by libMesh::PetscVector< T >::swap().
|
mutableprivate |
Whether or not the data array has been manually retrieved using get_array() or get_array_read()
Definition at line 439 of file petsc_vector.h.
|
mutableprivate |
Whether or not the data array is for read only access
Definition at line 444 of file petsc_vector.h.
|
private |
Actual PETSc vector datatype to hold vector entries.
Definition at line 333 of file petsc_vector.h.
Referenced by libMesh::PetscVector< T >::add(), libMesh::PetscVector< T >::add_vector(), libMesh::PetscVector< T >::add_vector_transpose(), libMesh::PetscVector< T >::create_subvector(), libMesh::PetscVector< T >::dot(), libMesh::PetscVector< T >::indefinite_dot(), libMesh::PetscVector< T >::init(), libMesh::PetscVector< T >::localize(), libMesh::PetscVector< T >::operator/=(), libMesh::PetscVector< T >::operator=(), libMesh::PetscVector< T >::PetscVector(), libMesh::PetscVector< T >::swap(), and libMesh::PetscVector< T >::vec().