libMesh
|
This class provides a nice interface to the PETSc C-based AIJ data structures for parallel, sparse matrices. More...
#include <petsc_matrix.h>
Public Member Functions | |
PetscMatrix (const Parallel::Communicator &comm_in) | |
Constructor; initializes the matrix to be empty, without any structure, i.e. More... | |
PetscMatrix (Mat m, const Parallel::Communicator &comm_in, bool destroy_on_exit=false) | |
Constructor. More... | |
PetscMatrix (const Parallel::Communicator &comm_in, const numeric_index_type m, const numeric_index_type n, const numeric_index_type m_l, const numeric_index_type n_l, const numeric_index_type n_nz=30, const numeric_index_type n_oz=10, const numeric_index_type blocksize=1) | |
Constructor. More... | |
PetscMatrix (PetscMatrix &&)=delete | |
This class manages a C-style struct (Mat) manually, so we don't want to allow any automatic copy/move functions to be generated, and we can't default the destructor. More... | |
PetscMatrix (const PetscMatrix &)=delete | |
PetscMatrix & | operator= (PetscMatrix &&)=delete |
virtual | ~PetscMatrix () |
PetscMatrix & | operator= (const PetscMatrix &) |
virtual SparseMatrix< T > & | operator= (const SparseMatrix< T > &v) override |
This looks like a copy assignment operator, but note that, unlike normal copy assignment operators, it is pure virtual. More... | |
virtual void | init (const numeric_index_type m, const numeric_index_type n, const numeric_index_type m_l, const numeric_index_type n_l, const numeric_index_type n_nz=30, const numeric_index_type n_oz=10, const numeric_index_type blocksize=1) override |
Initialize a PETSc matrix. More... | |
void | init (const numeric_index_type m, const numeric_index_type n, const numeric_index_type m_l, const numeric_index_type n_l, const std::vector< numeric_index_type > &n_nz, const std::vector< numeric_index_type > &n_oz, const numeric_index_type blocksize=1) |
Initialize a PETSc matrix. More... | |
virtual void | init (ParallelType=PARALLEL) override |
Initialize this matrix using the sparsity structure computed by dof_map . More... | |
void | update_preallocation_and_zero () |
Update the sparsity pattern based on dof_map , and set the matrix to zero. More... | |
void | reset_preallocation () |
Reset matrix to use the original nonzero pattern provided by users. More... | |
virtual void | zero () override |
Set all entries to 0. More... | |
virtual std::unique_ptr< SparseMatrix< T > > | zero_clone () const override |
virtual std::unique_ptr< SparseMatrix< T > > | clone () const override |
virtual void | zero_rows (std::vector< numeric_index_type > &rows, T diag_value=0.0) override |
Sets all row entries to 0 then puts diag_value in the diagonal entry. More... | |
virtual void | flush () override |
For PETSc matrix , this function is similar to close but without shrinking memory. More... | |
virtual void | set (const numeric_index_type i, const numeric_index_type j, const T value) override |
Set the element (i,j) to value . More... | |
virtual void | add (const numeric_index_type i, const numeric_index_type j, const T value) override |
Add value to the element (i,j). More... | |
virtual void | add_matrix (const DenseMatrix< T > &dm, const std::vector< numeric_index_type > &rows, const std::vector< numeric_index_type > &cols) override |
Add the full matrix dm to the SparseMatrix. More... | |
virtual void | add_matrix (const DenseMatrix< T > &dm, const std::vector< numeric_index_type > &dof_indices) override |
Same as add_matrix , but assumes the row and column maps are the same. More... | |
virtual void | add_block_matrix (const DenseMatrix< T > &dm, const std::vector< numeric_index_type > &brows, const std::vector< numeric_index_type > &bcols) override |
Add the full matrix dm to the SparseMatrix. More... | |
virtual void | add_block_matrix (const DenseMatrix< T > &dm, const std::vector< numeric_index_type > &dof_indices) override |
Same as add_block_matrix() , but assumes the row and column maps are the same. More... | |
virtual void | add (const T a, const SparseMatrix< T > &X) override |
Compute A += a*X for scalar a , matrix X . More... | |
virtual void | matrix_matrix_mult (SparseMatrix< T > &X, SparseMatrix< T > &Y, bool reuse=false) override |
Compute Y = A*X for matrix X . More... | |
virtual void | add_sparse_matrix (const SparseMatrix< T > &spm, const std::map< numeric_index_type, numeric_index_type > &row_ltog, const std::map< numeric_index_type, numeric_index_type > &col_ltog, const T scalar) override |
Add scalar* spm to the rows and cols of this matrix (A): A(rows[i], cols[j]) += scalar * spm(i,j) More... | |
virtual T | operator() (const numeric_index_type i, const numeric_index_type j) const override |
virtual Real | l1_norm () const override |
virtual Real | frobenius_norm () const |
virtual Real | linfty_norm () const override |
virtual void | print_personal (std::ostream &os=libMesh::out) const override |
Print the contents of the matrix to the screen with the PETSc viewer. More... | |
virtual void | print_matlab (const std::string &name="") const override |
Print the contents of the matrix in Matlab's sparse matrix format. More... | |
virtual void | print_petsc_binary (const std::string &filename) override |
Write the contents of the matrix to a file in PETSc's binary sparse matrix format. More... | |
virtual void | print_petsc_hdf5 (const std::string &filename) override |
Write the contents of the matrix to a file in PETSc's HDF5 sparse matrix format. More... | |
virtual void | read_petsc_binary (const std::string &filename) override |
Read the contents of the matrix from a file in PETSc's binary sparse matrix format. More... | |
virtual void | read_petsc_hdf5 (const std::string &filename) override |
Read the contents of the matrix from a file in PETSc's HDF5 sparse matrix format. More... | |
virtual void | get_diagonal (NumericVector< T > &dest) const override |
Copies the diagonal part of the matrix into dest . More... | |
virtual void | get_transpose (SparseMatrix< T > &dest) const override |
Copies the transpose of the matrix into dest , which may be *this. More... | |
virtual void | get_row (numeric_index_type i, std::vector< numeric_index_type > &indices, std::vector< T > &values) const override |
Get a row from the matrix. More... | |
virtual void | create_submatrix_nosort (SparseMatrix< T > &submatrix, const std::vector< numeric_index_type > &rows, const std::vector< numeric_index_type > &cols) const override |
Similar to the create_submatrix function, this function creates a submatrix which is defined by the indices given in the rows and cols vectors. More... | |
virtual void | scale (const T scale) override |
Scales all elements of this matrix by scale . More... | |
std::unique_ptr< PetscMatrix< T > > | copy_from_hash () |
Creates a copy of the current hash table matrix and then performs assembly. More... | |
virtual bool | supports_hash_table () const override |
virtual void | restore_original_nonzero_pattern () override |
Reset the memory storage of the matrix. More... | |
virtual SolverPackage | solver_package () override |
Mat | mat () |
Mat | mat () const |
virtual void | clear () noexcept override |
clear() is called from the destructor, so it should not throw. More... | |
void | set_destroy_mat_on_exit (bool destroy=true) |
If set to false, we don't delete the Mat on destruction and allow instead for PETSc to manage it. More... | |
void | swap (PetscMatrixBase< T > &) |
Swaps the internal data pointers of two PetscMatrices, no actual values are swapped. More... | |
void | set_context () |
Set the context (ourself) for _mat . More... | |
virtual numeric_index_type | m () const override |
virtual numeric_index_type | local_m () const final |
Get the number of rows owned by this process. More... | |
virtual numeric_index_type | n () const override |
virtual numeric_index_type | local_n () const final |
Get the number of columns owned by this process. More... | |
virtual numeric_index_type | row_start () const override |
virtual numeric_index_type | row_stop () const override |
virtual numeric_index_type | col_start () const override |
virtual numeric_index_type | col_stop () const override |
virtual void | close () override |
Calls the SparseMatrix's internal assembly routines, ensuring that the values are consistent across processors. More... | |
virtual bool | closed () const override |
virtual bool | initialized () const |
void | attach_dof_map (const DofMap &dof_map) |
Set a pointer to the DofMap to use. More... | |
void | attach_sparsity_pattern (const SparsityPattern::Build &sp) |
Set a pointer to a sparsity pattern to use. More... | |
virtual bool | need_full_sparsity_pattern () const |
virtual bool | require_sparsity_pattern () const |
virtual void | update_sparsity_pattern (const SparsityPattern::Graph &) |
Updates the matrix sparsity pattern. More... | |
Real | l1_norm_diff (const SparseMatrix< T > &other_mat) const |
virtual std::size_t | n_nonzeros () const |
void | print (std::ostream &os=libMesh::out, const bool sparse=false) const |
Print the contents of the matrix to the screen in a uniform style, regardless of matrix/solver package being used. More... | |
template<> | |
void | print (std::ostream &os, const bool sparse) const |
virtual void | read (const std::string &filename) |
Read the contents of the matrix from a file, with the file format inferred from the extension of filename . More... | |
virtual void | read_matlab (const std::string &filename) |
Read the contents of the matrix from the Matlab-script sparse matrix format used by PETSc. More... | |
virtual void | create_submatrix (SparseMatrix< T > &submatrix, const std::vector< numeric_index_type > &rows, const std::vector< numeric_index_type > &cols) const |
This function creates a matrix called "submatrix" which is defined by the row and column indices given in the "rows" and "cols" entries. More... | |
virtual void | reinit_submatrix (SparseMatrix< T > &submatrix, const std::vector< numeric_index_type > &rows, const std::vector< numeric_index_type > &cols) const |
This function is similar to the one above, but it allows you to reuse the existing sparsity pattern of "submatrix" instead of reallocating it again. More... | |
void | vector_mult (NumericVector< T > &dest, const NumericVector< T > &arg) const |
Multiplies the matrix by the NumericVector arg and stores the result in NumericVector dest . More... | |
void | vector_mult_add (NumericVector< T > &dest, const NumericVector< T > &arg) const |
Multiplies the matrix by the NumericVector arg and adds the result to the NumericVector dest . More... | |
void | use_hash_table (bool use_hash) |
Sets whether to use hash table assembly. More... | |
bool | use_hash_table () const |
const Parallel::Communicator & | comm () const |
processor_id_type | n_processors () const |
processor_id_type | processor_id () const |
Static Public Member Functions | |
static PetscMatrixBase< T > * | get_context (Mat mat, const TIMPI::Communicator &comm) |
static std::unique_ptr< SparseMatrix< T > > | build (const Parallel::Communicator &comm, const SolverPackage solver_package=libMesh::default_solver_package(), const MatrixBuildType matrix_build_type=MatrixBuildType::AUTOMATIC) |
Builds a SparseMatrix<T> using the linear solver package specified by solver_package . More... | |
static std::string | get_info () |
Gets a string containing the reference information. More... | |
static void | print_info (std::ostream &out_stream=libMesh::out) |
Prints the reference information, by default to libMesh::out . More... | |
static unsigned int | n_objects () |
Prints the number of outstanding (created, but not yet destroyed) objects. More... | |
static void | enable_print_counter_info () |
Methods to enable/disable the reference counter output from print_info() More... | |
static void | disable_print_counter_info () |
Protected Types | |
typedef std::map< std::string, std::pair< unsigned int, unsigned int > > | Counts |
Data structure to log the information. More... | |
Protected Member Functions | |
void | init_without_preallocation (numeric_index_type m, numeric_index_type n, numeric_index_type m_l, numeric_index_type n_l, numeric_index_type blocksize) |
Perform matrix initialization steps sans preallocation. More... | |
void | preallocate (numeric_index_type m_l, const std::vector< numeric_index_type > &n_nz, const std::vector< numeric_index_type > &n_oz, numeric_index_type blocksize) |
void | finish_initialization () |
Finish up the initialization process. More... | |
virtual void | _get_submatrix (SparseMatrix< T > &submatrix, const std::vector< numeric_index_type > &rows, const std::vector< numeric_index_type > &cols, const bool reuse_submatrix) const override |
This function either creates or re-initializes a matrix called submatrix which is defined by the indices given in the rows and cols vectors. More... | |
void | _petsc_viewer (const std::string &filename, PetscViewerType viewertype, PetscFileMode filemode) |
void | increment_constructor_count (const std::string &name) noexcept |
Increments the construction counter. More... | |
void | increment_destructor_count (const std::string &name) noexcept |
Increments the destruction counter. More... | |
Protected Attributes | |
PetscMatrixType | _mat_type |
Mat | _mat |
PETSc matrix datatype to store values. More... | |
bool | _destroy_mat_on_exit |
This boolean value should only be set to false for the constructor which takes a PETSc Mat object. More... | |
DofMap const * | _dof_map |
The DofMap object associated with this object. More... | |
SparsityPattern::Build const * | _sp |
The sparsity pattern associated with this object. More... | |
bool | _is_initialized |
Flag indicating whether or not the matrix has been initialized. More... | |
bool | _use_hash_table |
Flag indicating whether the matrix is assembled using a hash table. More... | |
const Parallel::Communicator & | _communicator |
Static Protected Attributes | |
static Counts | _counts |
Actually holds the data. More... | |
static Threads::atomic< unsigned int > | _n_objects |
The number of objects. More... | |
static Threads::spin_mutex | _mutex |
Mutual exclusion object to enable thread-safe reference counting. More... | |
static bool | _enable_print_counter = true |
Flag to control whether reference count information is printed when print_info is called. More... | |
Private Member Functions | |
template<NormType N> | |
Real | norm () const |
Private Attributes | |
std::mutex | _petsc_matrix_mutex |
Threads::spin_mutex | _petsc_matrix_mutex |
Friends | |
class | ::PetscMatrixTest |
This class provides a nice interface to the PETSc C-based AIJ data structures for parallel, sparse matrices.
All overridden virtual functions are documented in sparse_matrix.h.
Definition at line 61 of file petsc_matrix.h.
|
protectedinherited |
Data structure to log the information.
The log is identified by the class name.
Definition at line 119 of file reference_counter.h.
|
explicit |
Constructor; initializes the matrix to be empty, without any structure, i.e.
the matrix is not usable at all. This constructor is therefore only useful for matrices which are members of a class. All other matrices should be created at a point in the data flow where all necessary information is available.
You have to initialize the matrix before usage with init
(...).
Definition at line 86 of file petsc_matrix.C.
|
explicit |
Constructor.
Creates a PetscMatrix assuming you already have a valid Mat object. In this case, m may not be destroyed by the PetscMatrix destructor when this object goes out of scope. This allows ownership of m to remain with the original creator, and to simply provide additional functionality with the PetscMatrix.
Definition at line 96 of file petsc_matrix.C.
References libMesh::PetscMatrix< T >::_mat_type, libMesh::AIJ, and libMesh::HYPRE.
|
explicit |
Constructor.
Creates and initializes a PetscMatrix with the given structure. See init
(...) for a description of the parameters.
Definition at line 115 of file petsc_matrix.C.
References libMesh::PetscMatrix< T >::init().
|
delete |
This class manages a C-style struct (Mat) manually, so we don't want to allow any automatic copy/move functions to be generated, and we can't default the destructor.
|
delete |
|
virtualdefault |
|
overrideprotectedvirtual |
This function either creates or re-initializes a matrix called submatrix
which is defined by the indices given in the rows
and cols
vectors.
This function is implemented in terms of MatGetSubMatrix(). The reuse_submatrix
parameter determines whether or not PETSc will treat submatrix
as one which has already been used (had memory allocated) or as a new matrix.
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 800 of file petsc_matrix.C.
References libMesh::SparseMatrix< T >::_is_initialized, libMesh::PetscMatrixBase< T >::_mat, libMesh::SparseMatrix< T >::clear(), libMesh::PetscMatrixBase< T >::close(), libMesh::closed(), libMesh::WrappedPetsc< T >::get(), libMesh::SparseMatrix< T >::initialized(), and libMesh::numeric_petsc_cast().
|
protected |
Definition at line 663 of file petsc_matrix.C.
References libMesh::libMeshPrivateData::_is_initialized, and libMesh::initialized().
|
overridevirtual |
Add value
to the element (i,j).
Throws an error if the entry does not exist. Zero values can be "added" to non-existent entries.
Implements libMesh::SparseMatrix< T >.
Definition at line 987 of file petsc_matrix.C.
References libMesh::initialized(), libMesh::libmesh_assert(), and value.
Referenced by PetscMatrixTest::testPetscCopyFromHash().
|
overridevirtual |
Compute A += a*X for scalar a
, matrix X
.
PETSc
will crash!init()
, but also explicitly zero the terms of this
whenever you add a non-zero value to X
.X
will be closed, if not already done, before performing any work. Implements libMesh::SparseMatrix< T >.
Definition at line 1017 of file petsc_matrix.C.
References libMesh::PetscMatrixBase< T >::_mat, libMesh::PetscMatrixBase< T >::closed(), libMesh::initialized(), libMesh::libmesh_assert(), libMesh::SparseMatrix< T >::m(), and libMesh::SparseMatrix< T >::n().
|
overridevirtual |
Add the full matrix dm
to the SparseMatrix.
This is useful for adding an element matrix at assembly time. The matrix is assumed blocked, and brow
, bcol
correspond to the block row and column indices.
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 759 of file petsc_matrix.C.
References libMesh::DenseMatrix< T >::get_values(), libMesh::initialized(), libMesh::libmesh_assert(), libMesh::DenseMatrixBase< T >::m(), libMesh::DenseMatrixBase< T >::n(), libMesh::numeric_petsc_cast(), and libMesh::pPS().
Referenced by libMesh::PetscMatrix< T >::add_block_matrix().
|
inlineoverridevirtual |
Same as add_block_matrix()
, but assumes the row and column maps are the same.
Thus the matrix dm
must be square.
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 197 of file petsc_matrix.h.
References libMesh::PetscMatrix< T >::add_block_matrix().
|
overridevirtual |
Add the full matrix dm
to the SparseMatrix.
This is useful for adding an element matrix at assembly time.
Implements libMesh::SparseMatrix< T >.
Definition at line 733 of file petsc_matrix.C.
References libMesh::DenseMatrix< T >::get_values(), libMesh::initialized(), libMesh::libmesh_assert(), libMesh::DenseMatrixBase< T >::m(), libMesh::DenseMatrixBase< T >::n(), libMesh::numeric_petsc_cast(), and libMesh::pPS().
|
overridevirtual |
Same as add_matrix
, but assumes the row and column maps are the same.
Thus the matrix dm
must be square.
Implements libMesh::SparseMatrix< T >.
Definition at line 1004 of file petsc_matrix.C.
|
overridevirtual |
Add scalar*
spm
to the rows and cols of this matrix (A): A(rows[i], cols[j]) += scalar * spm(i,j)
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 1071 of file petsc_matrix.C.
References libMesh::closed(), libMesh::index_range(), libMesh::SparseMatrix< T >::m(), libMesh::SparseMatrix< T >::n(), and libMesh::PS().
|
inherited |
Set a pointer to the DofMap
to use.
If a separate sparsity pattern is not being used, use the one from the DofMap.
The lifetime of dof_map
must exceed the lifetime of this
.
Definition at line 72 of file sparse_matrix.C.
Referenced by libMesh::__libmesh_tao_hessian(), DMlibMeshJacobian(), libMesh::libmesh_petsc_snes_jacobian(), and libMesh::DofMap::update_sparsity_pattern().
|
inherited |
Set a pointer to a sparsity pattern to use.
Useful in cases where a matrix requires a wider (or for efficiency narrower) pattern than most matrices in the system, or in cases where no system sparsity pattern is being calculated by the DofMap.
The lifetime of sp
must exceed the lifetime of this
.
Definition at line 82 of file sparse_matrix.C.
Referenced by libMesh::DofMap::update_sparsity_pattern().
|
staticinherited |
Builds a SparseMatrix<T>
using the linear solver package specified by solver_package
.
Definition at line 165 of file sparse_matrix.C.
Referenced by libMesh::CondensedEigenSystem::add_matrices(), libMesh::System::add_matrix(), libMesh::TransientRBConstruction::allocate_data_structures(), libMesh::RBConstruction::allocate_data_structures(), libMesh::CondensedEigenSystem::copy_super_to_sub(), libMesh::StaticCondensation::init(), main(), libMesh::DofMap::process_mesh_constraint_rows(), ConstraintOperatorTest::test1DCoarseningNewNodes(), ConstraintOperatorTest::test1DCoarseningOperator(), ConstraintOperatorTest::testCoreform(), ConnectedComponentsTest::testEdge(), SystemsTest::testProjectMatrix1D(), SystemsTest::testProjectMatrix2D(), and SystemsTest::testProjectMatrix3D().
|
overridevirtualnoexceptinherited |
clear() is called from the destructor, so it should not throw.
Implements libMesh::SparseMatrix< T >.
Reimplemented in libMesh::StaticCondensation, and libMesh::StaticCondensation.
Definition at line 74 of file petsc_matrix_base.C.
Referenced by libMesh::StaticCondensation::clear().
|
overridevirtual |
Implements libMesh::SparseMatrix< T >.
Definition at line 454 of file petsc_matrix.C.
References libMesh::closed().
|
overridevirtualinherited |
Calls the SparseMatrix's internal assembly routines, ensuring that the values are consistent across processors.
Implements libMesh::SparseMatrix< T >.
Reimplemented in libMesh::StaticCondensation, and libMesh::StaticCondensation.
Definition at line 226 of file petsc_matrix_base.C.
Referenced by libMesh::PetscMatrix< T >::_get_submatrix(), libMesh::PetscMatrix< T >::create_submatrix_nosort(), DMlibMeshJacobian(), libMesh::PetscMatrix< T >::get_transpose(), libMesh::libmesh_petsc_snes_jacobian(), and libMesh::PetscLinearSolver< Number >::solve_common().
|
overridevirtualinherited |
true
if the matrix has been assembled. Implements libMesh::SparseMatrix< T >.
Reimplemented in libMesh::StaticCondensation, and libMesh::StaticCondensation.
Definition at line 241 of file petsc_matrix_base.C.
Referenced by libMesh::PetscMatrix< T >::add().
|
overridevirtualinherited |
Implements libMesh::SparseMatrix< T >.
Reimplemented in libMesh::StaticCondensation, and libMesh::StaticCondensation.
Definition at line 202 of file petsc_matrix_base.C.
|
overridevirtualinherited |
Implements libMesh::SparseMatrix< T >.
Reimplemented in libMesh::StaticCondensation, and libMesh::StaticCondensation.
Definition at line 214 of file petsc_matrix_base.C.
|
inlineinherited |
Parallel::Communicator
object used by this mesh. Definition at line 97 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::Partitioner::_find_global_index_by_pid_map(), libMesh::BoundaryInfo::_find_id_maps(), libMesh::PetscLinearSolver< Number >::_petsc_shell_matrix_get_diagonal(), libMesh::SlepcEigenSolver< libMesh::Number >::_petsc_shell_matrix_get_diagonal(), libMesh::PetscLinearSolver< Number >::_petsc_shell_matrix_mult(), libMesh::SlepcEigenSolver< libMesh::Number >::_petsc_shell_matrix_mult(), libMesh::PetscLinearSolver< Number >::_petsc_shell_matrix_mult_add(), libMesh::MeshRefinement::_refine_elements(), libMesh::MeshRefinement::_smooth_flags(), libMesh::DofMap::add_constraints_to_send_list(), add_cube_convex_hull_to_mesh(), libMesh::PetscDMWrapper::add_dofs_helper(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::TransientRBConstruction::add_IC_to_RB_space(), libMesh::RBEIMEvaluation::add_interpolation_data(), libMesh::CondensedEigenSystem::add_matrices(), libMesh::EigenSystem::add_matrices(), libMesh::System::add_matrix(), libMesh::RBConstruction::add_scaled_matrix_and_vector(), libMesh::System::add_variable(), libMesh::System::add_variables(), libMesh::System::add_vector(), libMesh::MeshTools::Modification::all_tri(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::TransientRBConstruction::allocate_data_structures(), libMesh::RBConstruction::allocate_data_structures(), libMesh::TransientRBConstruction::assemble_affine_expansion(), libMesh::AdvectionSystem::assemble_claw_rhs(), libMesh::FEMSystem::assemble_qoi(), libMesh::Nemesis_IO::assert_symmetric_cmaps(), libMesh::MeshCommunication::assign_global_indices(), libMesh::Partitioner::assign_partitioning(), libMesh::MeshTools::Generation::build_extrusion(), libMesh::Partitioner::build_graph(), 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_data(), libMesh::System::calculate_norm(), libMesh::DofMap::check_dirichlet_bcid_consistency(), libMesh::RBConstruction::compute_Fq_representor_innerprods(), libMesh::RBConstruction::compute_max_error_bound(), 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::RBConstruction::compute_output_dual_innerprods(), libMesh::RBConstruction::compute_residual_dual_norm_slow(), libMesh::RBSCMConstruction::compute_SCM_bounds_on_training_set(), libMesh::DofMap::computed_sparsity_already(), libMesh::Problem_Interface::computeF(), libMesh::Problem_Interface::computeJacobian(), libMesh::Problem_Interface::computePreconditioner(), libMesh::ContinuationSystem::ContinuationSystem(), libMesh::MeshBase::copy_constraint_rows(), libMesh::ExodusII_IO::copy_elemental_solution(), libMesh::ExodusII_IO::copy_nodal_solution(), libMesh::ExodusII_IO::copy_scalar_solution(), libMesh::CondensedEigenSystem::copy_super_to_sub(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::MeshTools::create_bounding_box(), libMesh::DofMap::create_dof_constraints(), 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::PetscMatrix< T >::create_submatrix_nosort(), create_wrapped_function(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::RBEIMEvaluation::distribute_bfs(), DMlibMeshFunction(), DMlibMeshJacobian(), DMlibMeshSetSystem_libMesh(), DMVariableBounds_libMesh(), libMesh::DTKSolutionTransfer::DTKSolutionTransfer(), libMesh::MeshRefinement::eliminate_unrefined_patches(), libMesh::RBEIMConstruction::enrich_eim_approximation_on_interiors(), libMesh::RBEIMConstruction::enrich_eim_approximation_on_nodes(), libMesh::RBEIMConstruction::enrich_eim_approximation_on_sides(), libMesh::TransientRBConstruction::enrich_RB_space(), libMesh::EpetraVector< T >::EpetraVector(), AssembleOptimization::equality_constraints(), libMesh::PatchRecoveryErrorEstimator::estimate_error(), libMesh::WeightedPatchRecoveryErrorEstimator::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_error_tolerance(), libMesh::MeshRefinement::flag_elements_by_mean_stddev(), libMesh::MeshRefinement::flag_elements_by_nelem_target(), libMesh::RBEIMEvaluation::gather_bfs(), libMesh::DofMap::gather_constraints(), libMesh::MeshfreeInterpolation::gather_remote_data(), libMesh::CondensedEigenSystem::get_eigenpair(), libMesh::RBEIMEvaluation::get_eim_basis_function_node_value(), libMesh::RBEIMEvaluation::get_eim_basis_function_side_value(), libMesh::RBEIMEvaluation::get_eim_basis_function_value(), libMesh::MeshBase::get_info(), libMesh::System::get_info(), libMesh::DofMap::get_info(), libMesh::RBEIMEvaluation::get_interior_basis_functions_as_vecs(), libMesh::ImplicitSystem::get_linear_solver(), libMesh::RBEIMConstruction::get_max_abs_value(), libMesh::RBEIMConstruction::get_node_max_abs_value(), libMesh::RBEIMEvaluation::get_parametrized_function_node_value(), libMesh::RBEIMEvaluation::get_parametrized_function_side_value(), libMesh::RBEIMEvaluation::get_parametrized_function_value(), libMesh::RBEIMConstruction::get_random_point(), AssembleOptimization::inequality_constraints(), AssembleOptimization::inequality_constraints_jacobian(), libMesh::LocationMap< T >::init(), libMesh::TimeSolver::init(), libMesh::StaticCondensation::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::PetscDMWrapper::init_and_attach_petscdm(), libMesh::AdvectionSystem::init_data(), libMesh::ClawSystem::init_data(), libMesh::PetscDMWrapper::init_petscdm(), libMesh::ExodusII_IO_Helper::initialize(), libMesh::OptimizationSystem::initialize_equality_constraints_storage(), libMesh::OptimizationSystem::initialize_inequality_constraints_storage(), libMesh::RBEIMConstruction::initialize_parametrized_functions_in_training_set(), libMesh::RBEIMConstruction::inner_product(), integrate_function(), libMesh::MeshTools::libmesh_assert_consistent_distributed(), libMesh::MeshTools::libmesh_assert_consistent_distributed_nodes(), libMesh::MeshTools::libmesh_assert_contiguous_dof_ids(), libMesh::MeshTools::libmesh_assert_equal_connectivity(), libMesh::MeshTools::libmesh_assert_equal_points(), 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_constraint_rows(), 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_linesearch_shellfunc(), libMesh::libmesh_petsc_preconditioner_apply(), libMesh::libmesh_petsc_recalculate_monitor(), libMesh::libmesh_petsc_snes_fd_residual(), libMesh::libmesh_petsc_snes_jacobian(), libMesh::libmesh_petsc_snes_mffd_interface(), libMesh::libmesh_petsc_snes_mffd_residual(), libMesh::libmesh_petsc_snes_postcheck(), libMesh::libmesh_petsc_snes_precheck(), 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::LinearImplicitSystem::LinearImplicitSystem(), main(), 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_bcids_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::TransientRBConstruction::mass_matrix_scaled_matvec(), libMesh::FEMSystem::mesh_position_set(), libMesh::TriangulatorInterface::MeshedHole::MeshedHole(), LinearElasticityWithContact::move_mesh(), libMesh::DistributedMesh::n_active_elem(), libMesh::MeshTools::n_active_levels(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::MeshTools::n_connected_components(), libMesh::DofMap::n_constrained_dofs(), libMesh::MeshBase::n_constraint_rows(), libMesh::DofMap::n_dofs(), libMesh::DofMap::n_dofs_per_processor(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::CondensedEigenSystem::n_global_non_condensed_dofs(), libMesh::MeshTools::n_levels(), MixedOrderTest::n_neighbor_links(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::SparsityPattern::Build::n_nonzeros(), libMesh::MeshTools::n_p_levels(), libMesh::BoundaryInfo::n_shellface_conds(), libMesh::RBEIMEvaluation::node_distribute_bfs(), libMesh::RBEIMEvaluation::node_gather_bfs(), libMesh::RBEIMConstruction::node_inner_product(), libMesh::MeshBase::operator==(), 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::BoundaryInfo::parallel_sync_node_ids(), libMesh::BoundaryInfo::parallel_sync_side_ids(), libMesh::MeshTools::paranoid_n_levels(), 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::MeshBase::print_constraint_rows(), libMesh::DofMap::print_dof_constraints(), libMesh::DofMap::process_mesh_constraint_rows(), libMesh::Partitioner::processor_pairs_to_interface_nodes(), libMesh::InterMeshProjection::project_system_vectors(), FEMParameters::read(), libMesh::Nemesis_IO::read(), libMesh::XdrIO::read(), libMesh::EquationSystems::read(), libMesh::ExodusII_IO::read_header(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_header(), libMesh::System::read_header(), libMesh::RBEIMEvaluation::read_in_interior_basis_functions(), libMesh::RBEIMEvaluation::read_in_node_basis_functions(), libMesh::RBEIMEvaluation::read_in_side_basis_functions(), libMesh::RBEvaluation::read_in_vectors_from_multiple_files(), libMesh::System::read_legacy_data(), libMesh::TransientRBConstruction::read_riesz_representors_from_files(), libMesh::RBConstruction::read_riesz_representors_from_files(), 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::Nemesis_IO_Helper::read_var_names_impl(), libMesh::MeshBase::recalculate_n_partitions(), libMesh::MeshRefinement::refine_and_coarsen_elements(), libMesh::SimplexRefiner::refine_via_edges(), libMesh::StaticCondensationDofMap::reinit(), libMesh::DistributedMesh::renumber_dof_objects(), libMesh::DistributedMesh::renumber_nodes_and_elements(), LinearElasticityWithContact::residual_and_jacobian(), OverlappingAlgebraicGhostingTest::run_ghosting_test(), OverlappingCouplingGhostingTest::run_sparsity_pattern_test(), scale_mesh_and_plot(), libMesh::DofMap::scatter_constraints(), libMesh::CheckpointIO::select_split_config(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::send_and_insert_dof_values(), libMesh::TransientRBConstruction::set_error_temporal_data(), libMesh::Partitioner::set_interface_node_processor_ids_BFS(), libMesh::Partitioner::set_interface_node_processor_ids_linear(), libMesh::Partitioner::set_interface_node_processor_ids_petscpartitioner(), libMesh::Partitioner::set_node_processor_ids(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::Partitioner::set_parent_processor_ids(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::PetscDiffSolver::setup_petsc_data(), libMesh::RBEIMEvaluation::side_distribute_bfs(), libMesh::RBEIMEvaluation::side_gather_bfs(), libMesh::RBEIMConstruction::side_inner_product(), libMesh::Partitioner::single_partition(), libMesh::LaplaceMeshSmoother::smooth(), libMesh::VariationalMeshSmoother::smooth(), libMesh::ClawSystem::solve_conservation_law(), libMesh::split_mesh(), libMesh::RBEIMConstruction::store_eim_solutions_for_training_set(), libMesh::MeshBase::subdomain_ids(), libMesh::BoundaryInfo::sync(), ConstraintOperatorTest::test1DCoarseningNewNodes(), ConstraintOperatorTest::test1DCoarseningOperator(), libMesh::MeshRefinement::test_level_one(), MeshfunctionDFEM::test_mesh_function_dfem(), MeshfunctionDFEM::test_mesh_function_dfem_grad(), MeshFunctionTest::test_p_level(), libMesh::MeshRefinement::test_unflagged(), DofMapTest::testBadElemFECombo(), SystemsTest::testBlockRestrictedVarNDofs(), BoundaryInfoTest::testBoundaryOnChildrenErrors(), VolumeTest::testC0PolygonMethods(), VolumeTest::testC0PolyhedronMethods(), ConstraintOperatorTest::testCoreform(), ConnectedComponentsTest::testEdge(), MeshInputTest::testExodusIGASidesets(), MeshTriangulationTest::testFoundCenters(), PointLocatorTest::testLocator(), BoundaryInfoTest::testMesh(), PointLocatorTest::testPlanar(), MeshTriangulationTest::testPoly2TriRefinementBase(), SystemsTest::testProjectCubeWithMeshFunction(), BoundaryInfoTest::testRenumber(), CheckpointIOTest::testSplitter(), MeshInputTest::testTetgenIO(), MeshTriangulationTest::testTriangulatorInterp(), MeshTriangulationTest::testTriangulatorMeshedHoles(), MeshTriangulationTest::testTriangulatorRoundHole(), libMesh::MeshTools::total_weight(), libMesh::RBConstruction::train_reduced_basis_with_POD(), libMesh::MeshFunctionSolutionTransfer::transfer(), libMesh::MeshfreeSolutionTransfer::transfer(), libMesh::Poly2TriTriangulator::triangulate(), libMesh::TransientRBConstruction::truth_assembly(), libMesh::RBConstruction::truth_assembly(), libMesh::MeshRefinement::uniformly_coarsen(), update_current_local_solution(), libMesh::TransientRBConstruction::update_RB_initial_condition_all_N(), libMesh::TransientRBConstruction::update_RB_system_matrices(), libMesh::RBConstruction::update_RB_system_matrices(), libMesh::TransientRBConstruction::update_residual_terms(), libMesh::RBConstruction::update_residual_terms(), libMesh::MeshTools::volume(), libMesh::STLIO::write(), libMesh::NameBasedIO::write(), libMesh::XdrIO::write(), libMesh::VTKIO::write_nodal_data(), libMesh::RBEIMEvaluation::write_out_interior_basis_functions(), libMesh::RBEIMEvaluation::write_out_node_basis_functions(), libMesh::RBEIMEvaluation::write_out_side_basis_functions(), libMesh::RBEvaluation::write_out_vectors(), libMesh::TransientRBConstruction::write_riesz_representors_to_files(), libMesh::RBConstruction::write_riesz_representors_to_files(), 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(), libMesh::XdrIO::write_serialized_nodesets(), libMesh::RBDataSerialization::RBEvaluationSerialization::write_to_file(), libMesh::RBDataSerialization::TransientRBEvaluationSerialization::write_to_file(), libMesh::RBDataSerialization::RBEIMEvaluationSerialization::write_to_file(), and libMesh::RBDataSerialization::RBSCMEvaluationSerialization::write_to_file().
std::unique_ptr< PetscMatrix< T > > libMesh::PetscMatrix< T >::copy_from_hash | ( | ) |
Creates a copy of the current hash table matrix and then performs assembly.
This is very useful in cases where you are not done filling this matrix but want to be able to read the current state of it
Definition at line 1280 of file petsc_matrix.C.
References libMesh::closed(), libMesh::initialized(), and libMesh::libmesh_assert().
Referenced by PetscMatrixTest::testPetscCopyFromHash().
|
inlinevirtualinherited |
This function creates a matrix called "submatrix" which is defined by the row and column indices given in the "rows" and "cols" entries.
Currently this operation is only defined for the PetscMatrixBase subclasses. Note: The rows
and cols
vectors need to be sorted; Use the nosort version below if rows
and cols
vectors are not sorted; The rows
and cols
only contain indices that are owned by this processor.
Definition at line 509 of file sparse_matrix.h.
Referenced by libMesh::CondensedEigenSystem::copy_super_to_sub(), libMesh::libmesh_petsc_DMCreateInterpolation(), and libMesh::CondensedEigenSystem::solve().
|
overridevirtual |
Similar to the create_submatrix
function, this function creates a submatrix
which is defined by the indices given in the rows
and cols
vectors.
Note: Both rows
and cols
can be unsorted; Use the above function for better efficiency if your indices are sorted; rows
and cols
can contain indices that are owned by other processors.
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 851 of file petsc_matrix.C.
References libMesh::SparseMatrix< T >::_is_initialized, libMesh::PetscMatrixBase< T >::_mat, libMesh::PetscMatrixBase< T >::close(), libMesh::closed(), libMesh::ParallelObject::comm(), libMesh::MeshTools::Generation::Private::idx(), and libMesh::index_range().
|
staticinherited |
Definition at line 100 of file reference_counter.C.
References libMesh::ReferenceCounter::_enable_print_counter.
|
staticinherited |
Methods to enable/disable the reference counter output from print_info()
Definition at line 94 of file reference_counter.C.
References libMesh::ReferenceCounter::_enable_print_counter.
|
protected |
Finish up the initialization process.
This method does a few things which include
Definition at line 329 of file petsc_matrix.C.
References libMesh::libMeshPrivateData::_is_initialized.
Referenced by PetscMatrixTest::testPetscCopyFromHash().
|
overridevirtual |
For PETSc matrix , this function is similar to close but without shrinking memory.
This is useful when we want to switch between ADD_VALUES and INSERT_VALUES. close should be called before using the matrix.
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 960 of file petsc_matrix.C.
|
virtual |
Definition at line 497 of file petsc_matrix.C.
|
staticinherited |
mat
if it exists, else a nullptr
Definition at line 116 of file petsc_matrix_base.C.
Referenced by DMlibMeshJacobian(), form_matrixA(), and libMesh::libmesh_petsc_snes_jacobian().
|
overridevirtual |
Copies the diagonal part of the matrix into dest
.
Implements libMesh::SparseMatrix< T >.
Definition at line 919 of file petsc_matrix.C.
References libMesh::PetscVector< T >::vec().
|
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().
|
overridevirtual |
Get a row from the matrix.
i | The matrix row to get |
indices | A container that will be filled with the column indices corresponding to (possibly) non-zero values |
values | A container holding the column values |
Implements libMesh::SparseMatrix< T >.
Definition at line 1174 of file petsc_matrix.C.
References libMesh::closed(), libMesh::index_range(), libMesh::initialized(), and libMesh::libmesh_assert().
|
overridevirtual |
Copies the transpose of the matrix into dest
, which may be *this.
Implements libMesh::SparseMatrix< T >.
Definition at line 931 of file petsc_matrix.C.
References libMesh::SparseMatrix< T >::_is_initialized, libMesh::PetscMatrixBase< T >::_mat, libMesh::SparseMatrix< T >::clear(), and libMesh::PetscMatrixBase< T >::close().
|
inlineprotectednoexceptinherited |
Increments the construction counter.
Should be called in the constructor of any derived class that will be reference counted.
Definition at line 183 of file reference_counter.h.
References libMesh::err, libMesh::BasicOStreamProxy< charT, traits >::get(), libMesh::Quality::name(), and libMesh::Threads::spin_mtx.
Referenced by libMesh::ReferenceCountedObject< RBParametrized >::ReferenceCountedObject().
|
inlineprotectednoexceptinherited |
Increments the destruction counter.
Should be called in the destructor of any derived class that will be reference counted.
Definition at line 207 of file reference_counter.h.
References libMesh::err, libMesh::BasicOStreamProxy< charT, traits >::get(), libMesh::Quality::name(), and libMesh::Threads::spin_mtx.
Referenced by libMesh::ReferenceCountedObject< RBParametrized >::~ReferenceCountedObject().
|
overridevirtual |
Initialize a PETSc matrix.
m | The global number of rows. |
n | The global number of columns. |
m_l | The local number of rows. |
n_l | The local number of columns. |
n_nz | The number of nonzeros in each row of the DIAGONAL portion of the local submatrix. |
n_oz | The number of nonzeros in each row of the OFF-DIAGONAL portion of the local submatrix. |
blocksize | Optional value indicating dense coupled blocks for systems with multiple variables all of the same type. |
Implements libMesh::SparseMatrix< T >.
Definition at line 214 of file petsc_matrix.C.
References libMesh::AIJ, finish_initialization(), and libMesh::HYPRE.
Referenced by libMesh::PetscMatrix< T >::PetscMatrix().
void libMesh::PetscMatrix< T >::init | ( | const numeric_index_type | m, |
const numeric_index_type | n, | ||
const numeric_index_type | m_l, | ||
const numeric_index_type | n_l, | ||
const std::vector< numeric_index_type > & | n_nz, | ||
const std::vector< numeric_index_type > & | n_oz, | ||
const numeric_index_type | blocksize = 1 |
||
) |
Initialize a PETSc matrix.
m | The global number of rows. |
n | The global number of columns. |
m_l | The local number of rows. |
n_l | The local number of columns. |
n_nz | array containing the number of nonzeros in each row of the DIAGONAL portion of the local submatrix. |
n_oz | Array containing the number of nonzeros in each row of the OFF-DIAGONAL portion of the local submatrix. |
blocksize | Optional value indicating dense coupled blocks for systems with multiple variables all of the same type. |
Definition at line 338 of file petsc_matrix.C.
References finish_initialization().
|
overridevirtual |
Initialize this matrix using the sparsity structure computed by dof_map
.
type | The serial/parallel/ghosted type of the matrix |
Implements libMesh::SparseMatrix< T >.
|
protected |
Perform matrix initialization steps sans preallocation.
m | The global number of rows |
n | The global number of columns |
m_l | The local number of rows |
n_l | The local number of columns |
blocksize | The matrix block size |
Definition at line 135 of file petsc_matrix.C.
References libMesh::AIJ, libMesh::HYPRE, libMesh::initialized(), and libMesh::libmesh_ignore().
Referenced by PetscMatrixTest::testPetscCopyFromHash().
|
inlinevirtualinherited |
true
if the matrix has been initialized, false
otherwise. Reimplemented in libMesh::StaticCondensation.
Definition at line 133 of file sparse_matrix.h.
Referenced by libMesh::PetscMatrix< T >::_get_submatrix(), libMesh::ImplicitSystem::assemble(), libMesh::System::init_matrices(), and libMesh::StaticCondensation::initialized().
|
overridevirtual |
This is the natural matrix norm that is compatible with the \( \ell_1 \)-norm for vectors, i.e. \( |Mv|_1 \leq |M|_1 |v|_1 \). (cf. Haemmerlin-Hoffmann : Numerische Mathematik)
Implements libMesh::SparseMatrix< T >.
Definition at line 492 of file petsc_matrix.C.
|
inherited |
this
and other_mat
Definition at line 879 of file sparse_matrix.C.
|
overridevirtual |
\( |M|_{\infty} = \max_{i} \sum_{j} |M_{ij}| \)
This is the natural matrix norm that is compatible to the \( \ell_{\infty} \)-norm of vectors, i.e. \( |Mv|_{\infty} \leq |M|_{\infty} |v|_{\infty} \). (cf. Haemmerlin-Hoffmann : Numerische Mathematik)
Implements libMesh::SparseMatrix< T >.
Definition at line 502 of file petsc_matrix.C.
|
finalvirtualinherited |
Get the number of rows owned by this process.
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 142 of file petsc_matrix_base.C.
|
finalvirtualinherited |
Get the number of columns owned by this process.
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 166 of file petsc_matrix_base.C.
|
overridevirtualinherited |
Implements libMesh::SparseMatrix< T >.
Reimplemented in libMesh::StaticCondensation, and libMesh::StaticCondensation.
Definition at line 130 of file petsc_matrix_base.C.
|
inlineinherited |
Definition at line 120 of file petsc_matrix_base.h.
Referenced by libMesh::StaticCondensation::add_matrix(), libMesh::PetscLinearSolver< Number >::init(), libMesh::libmesh_petsc_DMCreateInterpolation(), libMesh::libmesh_petsc_DMCreateRestriction(), libMesh::PetscDiffSolver::solve(), libMesh::TaoOptimizationSolver< T >::solve(), libMesh::PetscNonlinearSolver< Number >::solve(), and libMesh::PetscLinearSolver< Number >::solve_common().
|
inlineinherited |
Definition at line 121 of file petsc_matrix_base.h.
|
overridevirtual |
Compute Y = A*X for matrix X
.
Set reuse = true if this->_mat and X have the same nonzero pattern as before, and Y is obtained from a previous call to this function with reuse = false
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 1041 of file petsc_matrix.C.
References libMesh::initialized(), libMesh::libmesh_assert(), and libMesh::SparseMatrix< T >::m().
|
overridevirtualinherited |
Implements libMesh::SparseMatrix< T >.
Reimplemented in libMesh::StaticCondensation, and libMesh::StaticCondensation.
Definition at line 154 of file petsc_matrix_base.C.
|
virtualinherited |
Definition at line 238 of file sparse_matrix.C.
Referenced by libMesh::SparseMatrix< ValOut >::n_nonzeros().
|
inlinestaticinherited |
Prints the number of outstanding (created, but not yet destroyed) objects.
Definition at line 85 of file reference_counter.h.
References libMesh::ReferenceCounter::_n_objects.
Referenced by libMesh::LibMeshInit::~LibMeshInit().
|
inlineinherited |
Definition at line 103 of file parallel_object.h.
References libMesh::ParallelObject::_communicator, libMesh::libmesh_assert(), and TIMPI::Communicator::size().
Referenced by libMesh::Partitioner::_find_global_index_by_pid_map(), libMesh::BoundaryInfo::_find_id_maps(), libMesh::DofMap::add_constraints_to_send_list(), libMesh::PetscDMWrapper::add_dofs_to_section(), libMesh::DistributedMesh::add_elem(), libMesh::DofMap::add_neighbors_to_send_list(), libMesh::DistributedMesh::add_node(), libMesh::System::add_vector(), libMesh::LaplaceMeshSmoother::allgather_graph(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::FEMSystem::assembly(), libMesh::Nemesis_IO::assert_symmetric_cmaps(), libMesh::Partitioner::assign_partitioning(), libMesh::AztecLinearSolver< T >::AztecLinearSolver(), libMesh::Partitioner::build_graph(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::DistributedMesh::clear(), libMesh::DistributedMesh::clear_elems(), libMesh::Nemesis_IO_Helper::compute_border_node_ids(), libMesh::Nemesis_IO_Helper::construct_nemesis_filename(), libMesh::UnstructuredMesh::copy_nodes_and_elements(), libMesh::ExodusII_IO::copy_scalar_solution(), libMesh::Nemesis_IO::copy_scalar_solution(), libMesh::UnstructuredMesh::create_pid_mesh(), libMesh::MeshTools::create_processor_bounding_box(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_scalar_dofs(), libMesh::DistributedMesh::DistributedMesh(), libMesh::EnsightIO::EnsightIO(), libMesh::RBEIMEvaluation::gather_bfs(), libMesh::MeshBase::get_info(), libMesh::StaticCondensation::init(), libMesh::SystemSubsetBySubdomain::init(), libMesh::PetscDMWrapper::init_petscdm(), libMesh::Nemesis_IO_Helper::initialize(), libMesh::ExodusII_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::DofMap::n_dofs_per_processor(), libMesh::MeshBase::n_elem_on_proc(), libMesh::MeshBase::n_nodes_on_proc(), libMesh::RBEIMEvaluation::node_gather_bfs(), libMesh::Partitioner::partition(), libMesh::MeshBase::partition(), libMesh::Partitioner::partition_unpartitioned_elements(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::DofMap::prepare_send_list(), libMesh::MeshBase::print_constraint_rows(), libMesh::DofMap::print_dof_constraints(), 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::Partitioner::repartition(), OverlappingFunctorTest::run_partitioner_test(), libMesh::DofMap::scatter_constraints(), libMesh::DistributedMesh::set_next_unique_id(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), WriteVecAndScalar::setupTests(), libMesh::RBEIMEvaluation::side_gather_bfs(), DistributedMeshTest::testRemoteElemError(), CheckpointIOTest::testSplitter(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::DistributedMesh::update_parallel_id_counts(), libMesh::GMVIO::write_binary(), libMesh::GMVIO::write_discontinuous_gmv(), libMesh::ExodusII_IO_Helper::write_nodal_coordinates(), libMesh::VTKIO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data(), 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().
|
inlinevirtualinherited |
true
if this sparse matrix format needs to be fed the graph of the sparse matrix.This is true for LaspackMatrix
, but not PetscMatrixBase
subclasses. In the case where the full graph is not required, we can efficiently approximate it to provide a good estimate of the required size of the sparse matrix.
Reimplemented in libMesh::EpetraMatrix< T >, and libMesh::LaspackMatrix< T >.
Definition at line 162 of file sparse_matrix.h.
Referenced by libMesh::DofMap::attach_matrix(), and libMesh::DofMap::update_sparsity_pattern().
Definition at line 474 of file petsc_matrix.C.
References libMesh::closed(), libMesh::initialized(), libMesh::libmesh_assert(), libMesh::Real, and value.
|
overridevirtual |
(i,j).Implements libMesh::SparseMatrix< T >.
Definition at line 1121 of file petsc_matrix.C.
References libMesh::closed(), distance(), libMesh::initialized(), libMesh::libmesh_assert(), and value.
|
delete |
PetscMatrix< T > & libMesh::PetscMatrix< T >::operator= | ( | const PetscMatrix< T > & | v | ) |
Definition at line 1224 of file petsc_matrix.C.
References libMesh::libMeshPrivateData::_is_initialized, libMesh::PetscMatrixBase< T >::_mat, and libMesh::libmesh_assert().
|
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 SparseMatrix active in the library at a single time.
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 1253 of file petsc_matrix.C.
|
protected |
Definition at line 260 of file petsc_matrix.C.
References libMesh::AIJ, libMesh::HYPRE, libMesh::libmesh_ignore(), and libMesh::numeric_petsc_cast().
|
inherited |
Definition at line 131 of file sparse_matrix.C.
|
inherited |
Print the contents of the matrix to the screen in a uniform style, regardless of matrix/solver package being used.
Definition at line 247 of file sparse_matrix.C.
Referenced by libMesh::EigenSparseMatrix< T >::print_personal(), and libMesh::LaspackMatrix< T >::print_personal().
|
staticinherited |
Prints the reference information, by default to libMesh::out
.
Definition at line 81 of file reference_counter.C.
References libMesh::ReferenceCounter::_enable_print_counter, and libMesh::ReferenceCounter::get_info().
Referenced by libMesh::LibMeshInit::~LibMeshInit().
|
overridevirtual |
Print the contents of the matrix in Matlab's sparse matrix format.
Optionally prints the matrix to the file named name
. If name
is not specified it is dumped to the screen.
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 510 of file petsc_matrix.C.
References libMesh::closed(), libMesh::WrappedPetsc< T >::get(), libMesh::initialized(), libMesh::libmesh_assert(), and libMesh::Quality::name().
|
overridevirtual |
Print the contents of the matrix to the screen with the PETSc viewer.
This function only allows printing to standard out since we have limited ourselves to one PETSc implementation for writing.
Implements libMesh::SparseMatrix< T >.
Definition at line 567 of file petsc_matrix.C.
References libMesh::closed(), libMesh::initialized(), libMesh::libmesh_assert(), and mkstemp().
|
overridevirtual |
Write the contents of the matrix to a file in PETSc's binary sparse matrix format.
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 693 of file petsc_matrix.C.
References libMesh::initialized(), and libMesh::libmesh_assert().
|
overridevirtual |
Write the contents of the matrix to a file in PETSc's HDF5 sparse matrix format.
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 703 of file petsc_matrix.C.
References libMesh::initialized(), and libMesh::libmesh_assert().
|
inlineinherited |
Definition at line 114 of file parallel_object.h.
References libMesh::ParallelObject::_communicator, and TIMPI::Communicator::rank().
Referenced by libMesh::BoundaryInfo::_find_id_maps(), 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::MeshTools::Modification::all_tri(), libMesh::DofMap::allgather_recursive_constraints(), libMesh::FEMSystem::assembly(), libMesh::Nemesis_IO::assert_symmetric_cmaps(), libMesh::Partitioner::assign_partitioning(), libMesh::Nemesis_IO_Helper::build_element_and_node_maps(), libMesh::Partitioner::build_graph(), libMesh::InfElemBuilder::build_inf_elem(), libMesh::BoundaryInfo::build_node_list_from_side_list(), libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::MeshFunction::check_found_elem(), libMesh::DistributedMesh::clear(), libMesh::DistributedMesh::clear_elems(), 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::RBConstruction::compute_max_error_bound(), 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::copy_elemental_solution(), libMesh::ExodusII_IO::copy_nodal_solution(), libMesh::ExodusII_IO::copy_scalar_solution(), libMesh::Nemesis_IO::copy_scalar_solution(), libMesh::MeshTools::correct_node_proc_ids(), libMesh::ExodusII_IO_Helper::create(), libMesh::DistributedMesh::delete_elem(), libMesh::MeshCommunication::delete_remote_elements(), libMesh::DofMap::distribute_dofs(), libMesh::DofMap::distribute_scalar_dofs(), libMesh::DistributedMesh::DistributedMesh(), libMesh::DofMapBase::end_dof(), libMesh::DofMapBase::end_old_dof(), libMesh::EnsightIO::EnsightIO(), libMesh::GenericProjector< FFunctor, GFunctor, FValue, ProjectionAction >::SubFunctor::find_dofs_to_send(), libMesh::UnstructuredMesh::find_neighbors(), libMesh::DofMapBase::first_dof(), libMesh::DofMapBase::first_old_dof(), libMesh::RBEIMEvaluation::gather_bfs(), 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::RBEIMEvaluation::get_interior_basis_functions_as_vecs(), libMesh::Nemesis_IO_Helper::get_loadbal_param(), libMesh::DofMap::get_local_constraints(), libMesh::MeshBase::get_local_constraints(), 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::LaplaceMeshSmoother::init(), libMesh::SystemSubsetBySubdomain::init(), HeatSystem::init_data(), 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::TransientRBEvaluation::legacy_write_offline_data_to_files(), libMesh::RBSCMEvaluation::legacy_write_offline_data_to_files(), libMesh::RBEvaluation::legacy_write_offline_data_to_files(), 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(), main(), libMesh::MeshRefinement::make_coarsening_compatible(), AugmentSparsityOnInterface::mesh_reinit(), libMesh::TriangulatorInterface::MeshedHole::MeshedHole(), libMesh::MeshBase::n_active_local_elem(), libMesh::BoundaryInfo::n_boundary_conds(), libMesh::MeshTools::n_connected_components(), libMesh::MeshBase::n_constraint_rows(), libMesh::BoundaryInfo::n_edge_conds(), libMesh::DofMapBase::n_local_dofs(), libMesh::MeshBase::n_local_elem(), libMesh::MeshBase::n_local_nodes(), libMesh::BoundaryInfo::n_nodeset_conds(), libMesh::BoundaryInfo::n_shellface_conds(), libMesh::RBEIMEvaluation::node_gather_bfs(), libMesh::DistributedMesh::own_node(), libMesh::BoundaryInfo::parallel_sync_node_ids(), libMesh::BoundaryInfo::parallel_sync_side_ids(), libMesh::System::point_gradient(), libMesh::System::point_hessian(), libMesh::System::point_value(), libMesh::MeshBase::print_constraint_rows(), libMesh::DofMap::print_dof_constraints(), libMesh::DofMap::process_mesh_constraint_rows(), 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::EquationSystems::read(), libMesh::ExodusII_IO_Helper::read_elem_num_map(), libMesh::ExodusII_IO_Helper::read_global_values(), libMesh::ExodusII_IO::read_header(), libMesh::CheckpointIO::read_header(), libMesh::XdrIO::read_header(), libMesh::System::read_header(), libMesh::System::read_legacy_data(), libMesh::DynaIO::read_mesh(), libMesh::ExodusII_IO_Helper::read_node_num_map(), libMesh::System::read_parallel_data(), libMesh::TransientRBConstruction::read_riesz_representors_from_files(), libMesh::RBConstruction::read_riesz_representors_from_files(), 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::Nemesis_IO_Helper::read_var_names_impl(), libMesh::SimplexRefiner::refine_via_edges(), libMesh::StaticCondensationDofMap::reinit(), libMesh::DistributedMesh::renumber_dof_objects(), libMesh::DistributedMesh::renumber_nodes_and_elements(), libMesh::DofMap::scatter_constraints(), libMesh::CheckpointIO::select_split_config(), libMesh::DistributedMesh::set_next_unique_id(), libMesh::DofMap::set_nonlocal_dof_objects(), libMesh::PetscDMWrapper::set_point_range_in_section(), libMesh::RBEIMEvaluation::side_gather_bfs(), ExodusTest< elem_type >::test_read_gold(), ExodusTest< elem_type >::test_write(), MeshInputTest::testAbaqusRead(), MeshInputTest::testBadGmsh(), MeshInputTest::testCopyElementSolutionImpl(), MeshInputTest::testCopyElementVectorImpl(), MeshInputTest::testCopyNodalSolutionImpl(), DefaultCouplingTest::testCoupling(), PointNeighborCouplingTest::testCoupling(), MeshInputTest::testDynaFileMappings(), MeshInputTest::testDynaNoSplines(), MeshInputTest::testDynaReadElem(), MeshInputTest::testDynaReadPatch(), MeshInputTest::testExodusFileMappings(), MeshInputTest::testExodusIGASidesets(), MeshInputTest::testExodusWriteElementDataFromDiscontinuousNodalData(), MeshInputTest::testGmshBCIDOverlap(), MeshInputTest::testGoodGmsh(), MeshInputTest::testGoodSTL(), MeshInputTest::testGoodSTLBinary(), MeshInputTest::testLowOrderEdgeBlocks(), SystemsTest::testProjectMatrix3D(), BoundaryInfoTest::testShellFaceConstraints(), MeshInputTest::testSingleElementImpl(), WriteVecAndScalar::testSolution(), CheckpointIOTest::testSplitter(), MeshInputTest::testTetgenIO(), libMesh::MeshTools::total_weight(), libMesh::NetGenMeshInterface::triangulate(), libMesh::MeshRefinement::uniformly_coarsen(), libMesh::DistributedMesh::update_parallel_id_counts(), libMesh::DTKAdapter::update_variable_values(), libMesh::MeshTools::volume(), libMesh::STLIO::write(), 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_element_values_element_major(), libMesh::ExodusII_IO_Helper::write_elements(), libMesh::ExodusII_IO_Helper::write_elemset_data(), libMesh::ExodusII_IO_Helper::write_elemsets(), 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::VTKIO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data(), libMesh::ExodusII_IO::write_nodal_data_common(), libMesh::ExodusII_IO::write_nodal_data_discontinuous(), libMesh::ExodusII_IO_Helper::write_nodal_values(), libMesh::ExodusII_IO_Helper::write_nodeset_data(), libMesh::Nemesis_IO_Helper::write_nodesets(), libMesh::ExodusII_IO_Helper::write_nodesets(), libMesh::RBEIMEvaluation::write_out_interior_basis_functions(), libMesh::RBEIMEvaluation::write_out_node_basis_functions(), libMesh::RBEIMEvaluation::write_out_side_basis_functions(), write_output_solvedata(), libMesh::System::write_parallel_data(), libMesh::RBConstruction::write_riesz_representors_to_files(), 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::ExodusII_IO_Helper::write_sideset_data(), 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().
|
virtualinherited |
Read the contents of the matrix from a file, with the file format inferred from the extension of filename
.
Definition at line 511 of file sparse_matrix.C.
|
virtualinherited |
Read the contents of the matrix from the Matlab-script sparse matrix format used by PETSc.
If the size and sparsity of the matrix in filename
appears consistent with the existing sparsity of this
then the existing parallel decomposition and sparsity will be retained. If not, then this
will be initialized with the sparsity from the file, linearly partitioned onto the number of processors available.
Definition at line 567 of file sparse_matrix.C.
Referenced by ConstraintOperatorTest::test1DCoarseningNewNodes().
|
overridevirtual |
Read the contents of the matrix from a file in PETSc's binary sparse matrix format.
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 713 of file petsc_matrix.C.
|
overridevirtual |
Read the contents of the matrix from a file in PETSc's HDF5 sparse matrix format.
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 723 of file petsc_matrix.C.
|
inlinevirtualinherited |
This function is similar to the one above, but it allows you to reuse the existing sparsity pattern of "submatrix" instead of reallocating it again.
This should hopefully be more efficient if you are frequently extracting submatrices of the same size.
Definition at line 540 of file sparse_matrix.h.
|
inlinevirtualinherited |
DofMap
Reimplemented in libMesh::StaticCondensation, libMesh::PetscMatrixShellMatrix< T >, and libMesh::PetscMatrixShellMatrix< Number >.
Definition at line 168 of file sparse_matrix.h.
void libMesh::PetscMatrix< T >::reset_preallocation | ( | ) |
Reset matrix to use the original nonzero pattern provided by users.
Definition at line 385 of file petsc_matrix.C.
References libMesh::initialized(), and libMesh::libmesh_assert().
|
overridevirtual |
Reset the memory storage of the matrix.
Unlike clear()
, this does not destroy the matrix but rather will reset the matrix to use the original preallocation or when using hash table matrix assembly (see use_hash_table()
) will reset (clear) the hash table used for assembly. In the words of the MatResetPreallocation
documentation in PETSc, 'current values in the matrix are lost in this call', so a user can expect to have back their original sparsity pattern in a zeroed state
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 1293 of file petsc_matrix.C.
|
overridevirtualinherited |
Implements libMesh::SparseMatrix< T >.
Reimplemented in libMesh::StaticCondensation, and libMesh::StaticCondensation.
Definition at line 178 of file petsc_matrix_base.C.
|
overridevirtualinherited |
Implements libMesh::SparseMatrix< T >.
Reimplemented in libMesh::StaticCondensation, and libMesh::StaticCondensation.
Definition at line 190 of file petsc_matrix_base.C.
|
overridevirtual |
Scales all elements of this matrix by scale
.
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 1260 of file petsc_matrix.C.
References libMesh::closed(), libMesh::libmesh_assert(), libMesh::PS(), and libMesh::MeshTools::Modification::scale().
|
overridevirtual |
Set the element (i,j) to
value
.
Throws an error if the entry does not exist. Zero values can be "stored" in non-existent fields.
Implements libMesh::SparseMatrix< T >.
Definition at line 970 of file petsc_matrix.C.
References libMesh::initialized(), libMesh::libmesh_assert(), and value.
|
inherited |
Set the context (ourself) for _mat
.
Definition at line 105 of file petsc_matrix_base.C.
|
inherited |
If set to false, we don't delete the Mat on destruction and allow instead for PETSc
to manage it.
Definition at line 91 of file petsc_matrix_base.C.
|
inlineoverridevirtualinherited |
Implements libMesh::SparseMatrix< T >.
Reimplemented in libMesh::StaticCondensation, and libMesh::StaticCondensation.
Definition at line 107 of file petsc_matrix_base.h.
|
overridevirtual |
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 1268 of file petsc_matrix.C.
|
inherited |
Swaps the internal data pointers of two PetscMatrices, no actual values are swapped.
Definition at line 98 of file petsc_matrix_base.C.
Referenced by DMlibMeshJacobian().
void libMesh::PetscMatrix< T >::update_preallocation_and_zero | ( | ) |
Update the sparsity pattern based on dof_map
, and set the matrix to zero.
This is useful in cases where the sparsity pattern changes during a computation.
Definition at line 379 of file petsc_matrix.C.
|
inlinevirtualinherited |
Updates the matrix sparsity pattern.
When your SparseMatrix<T>
implementation does not need this data, simply do not override this method.
Reimplemented in libMesh::EpetraMatrix< T >, and libMesh::LaspackMatrix< T >.
Definition at line 175 of file sparse_matrix.h.
Referenced by libMesh::DofMap::update_sparsity_pattern().
|
inherited |
Sets whether to use hash table assembly.
This will error if the passed-in value is true and the matrix type does not support hash tables. Hash table or hash map assembly means storing maps from i-j locations in the matrix to values. Because it is a hash map as opposed to a contiguous array of data, no preallocation is required to use it
Definition at line 667 of file sparse_matrix.h.
Referenced by PetscMatrixTest::testPetscCopyFromHash().
|
inlineinherited |
Definition at line 609 of file sparse_matrix.h.
Referenced by libMesh::SparseMatrix< ValOut >::require_sparsity_pattern().
|
inherited |
Multiplies the matrix by the NumericVector arg
and stores the result in NumericVector dest
.
Definition at line 209 of file sparse_matrix.C.
Referenced by libMesh::TransientRBConstruction::add_IC_to_RB_space(), libMesh::RBSCMConstruction::Aq_inner_product(), libMesh::AdvectionSystem::assemble_claw_rhs(), libMesh::RBSCMConstruction::B_inner_product(), libMesh::RBConstruction::compute_Fq_representor_innerprods(), libMesh::RBConstruction::compute_output_dual_innerprods(), libMesh::RBConstruction::compute_residual_dual_norm_slow(), libMesh::TransientRBConstruction::enrich_RB_space(), libMesh::RBConstruction::enrich_RB_space(), AssembleOptimization::gradient(), libMesh::TransientRBConstruction::mass_matrix_scaled_matvec(), AssembleOptimization::objective(), libMesh::RBConstruction::print_basis_function_orthogonality(), libMesh::ImplicitSystem::qoi_parameter_hessian(), libMesh::ImplicitSystem::qoi_parameter_hessian_vector_product(), libMesh::TransientRBConstruction::set_error_temporal_data(), libMesh::RBConstruction::train_reduced_basis_with_POD(), libMesh::TransientRBConstruction::truth_assembly(), libMesh::RBConstruction::truth_solve(), libMesh::TransientRBConstruction::update_RB_system_matrices(), libMesh::RBConstruction::update_RB_system_matrices(), libMesh::TransientRBConstruction::update_residual_terms(), and libMesh::RBConstruction::update_residual_terms().
|
inherited |
Multiplies the matrix by the NumericVector arg
and adds the result to the NumericVector dest
.
Definition at line 219 of file sparse_matrix.C.
Referenced by libMesh::ImplicitSystem::weighted_sensitivity_adjoint_solve().
|
overridevirtual |
Set all entries to 0.
Implements libMesh::SparseMatrix< T >.
Definition at line 401 of file petsc_matrix.C.
References libMesh::initialized(), and libMesh::libmesh_assert().
|
overridevirtual |
Implements libMesh::SparseMatrix< T >.
Definition at line 435 of file petsc_matrix.C.
References libMesh::closed().
|
overridevirtual |
Sets all row entries to 0 then puts diag_value
in the diagonal entry.
Reimplemented from libMesh::SparseMatrix< T >.
Definition at line 416 of file petsc_matrix.C.
References libMesh::initialized(), libMesh::libmesh_assert(), libMesh::numeric_petsc_cast(), and libMesh::PS().
|
friend |
Definition at line 366 of file petsc_matrix.h.
|
protectedinherited |
Definition at line 120 of file parallel_object.h.
Referenced by libMesh::EquationSystems::build_parallel_elemental_solution_vector(), libMesh::EquationSystems::build_parallel_solution_vector(), libMesh::StaticCondensation::close(), libMesh::ParallelObject::comm(), libMesh::CondensedEigenSystem::initialize_condensed_matrices(), libMesh::ParallelObject::n_processors(), libMesh::ParallelObject::operator=(), libMesh::ParallelObject::processor_id(), libMesh::BoundaryInfo::regenerate_id_sets(), and libMesh::StaticCondensationDofMap::reinit().
|
staticprotectedinherited |
Actually holds the data.
Definition at line 124 of file reference_counter.h.
Referenced by libMesh::ReferenceCounter::get_info().
|
protectedinherited |
This boolean value should only be set to false
for the constructor which takes a PETSc Mat object.
Definition at line 186 of file petsc_matrix_base.h.
Referenced by libMesh::PetscMatrixBase< Number >::swap().
|
protectedinherited |
The DofMap
object associated with this object.
May be queried for degree-of-freedom counts on processors.
Definition at line 641 of file sparse_matrix.h.
|
staticprotectedinherited |
Flag to control whether reference count information is printed when print_info is called.
Definition at line 143 of file reference_counter.h.
Referenced by libMesh::ReferenceCounter::disable_print_counter_info(), libMesh::ReferenceCounter::enable_print_counter_info(), and libMesh::ReferenceCounter::print_info().
|
protectedinherited |
Flag indicating whether or not the matrix has been initialized.
Definition at line 653 of file sparse_matrix.h.
Referenced by libMesh::PetscMatrix< T >::_get_submatrix(), libMesh::PetscMatrix< T >::create_submatrix_nosort(), libMesh::EpetraMatrix< T >::EpetraMatrix(), libMesh::PetscMatrix< T >::get_transpose(), and libMesh::SparseMatrix< ValOut >::initialized().
|
protectedinherited |
PETSc matrix datatype to store values.
Definition at line 180 of file petsc_matrix_base.h.
Referenced by libMesh::PetscMatrix< T >::_get_submatrix(), libMesh::PetscMatrix< T >::add(), libMesh::PetscMatrix< T >::create_submatrix_nosort(), libMesh::PetscMatrix< T >::get_transpose(), libMesh::PetscMatrixBase< Number >::mat(), libMesh::PetscMatrix< T >::operator=(), and libMesh::PetscMatrixBase< Number >::swap().
|
protected |
Definition at line 349 of file petsc_matrix.h.
Referenced by libMesh::PetscMatrix< T >::PetscMatrix().
|
staticprotectedinherited |
Mutual exclusion object to enable thread-safe reference counting.
Definition at line 137 of file reference_counter.h.
|
staticprotectedinherited |
The number of objects.
Print the reference count information when the number returns to 0.
Definition at line 132 of file reference_counter.h.
Referenced by libMesh::ReferenceCounter::n_objects(), libMesh::ReferenceCounter::ReferenceCounter(), and libMesh::ReferenceCounter::~ReferenceCounter().
|
mutableprivate |
Definition at line 353 of file petsc_matrix.h.
|
mutableprivate |
Definition at line 355 of file petsc_matrix.h.
|
protectedinherited |
The sparsity
pattern associated with this object.
Should be queried for entry counts (or with need_full_sparsity_pattern, patterns) when needed.
Definition at line 648 of file sparse_matrix.h.
|
protectedinherited |
Flag indicating whether the matrix is assembled using a hash table.
Definition at line 658 of file sparse_matrix.h.
Referenced by libMesh::SparseMatrix< ValOut >::use_hash_table().