13#include "libmesh/petsc_matrix.h"
22 params.
addRequiredParam<std::string>(
"mat1",
"The petsc binary mat file containing matrix1");
23 params.
addRequiredParam<std::string>(
"mat2",
"The petsc binary mat file containing matrix2");
25 "equivalence_tol", 1e-8,
"The relative tolerance for comparing equivalence");
31 _equiv_tol(getParam<Real>(
"equivalence_tol")),
32 _mat1_name(getParam<
std::string>(
"mat1")),
33 _mat2_name(getParam<
std::string>(
"mat2"))
45 if ((mat1->row_start() != mat2->row_start()) || (mat1->row_stop() != mat2->row_stop()) ||
46 (mat1->col_start() != mat2->col_start()) || (mat1->col_stop() != mat2->col_stop()))
52 for (
const auto i : make_range(mat1->row_start(), mat1->row_stop()))
53 for (
const auto j : make_range(mat1->col_start(), mat1->col_stop()))
55 const auto val1 = (*mat1)(i, j);
56 const auto val2 = (*mat2)(i, j);
57 if (!MooseUtils::relativeFuzzyEqual(val1, val2,
_equiv_tol) &&
58 !MooseUtils::absoluteFuzzyEqual(val1, val2,
_equiv_tol))
registerMooseObject("NavierStokesApp", MatrixEqualityCheck)
static InputParameters validParams()
Checks if two matrices are the same by comparing their coefficients.
virtual void finalize() override
virtual void execute() override
const std::string & _mat2_name
const std::string & _mat1_name
virtual Real getValue() const override
MatrixEqualityCheck(const InputParameters ¶meters)
static InputParameters validParams()
void min(const T &r, T &o, Request &req) const
const Parallel::Communicator & _communicator
std::unique_ptr< PetscMatrix< Number > > createMatrixFromFile(const libMesh::Parallel::Communicator &comm, Mat &petsc_mat, const std::string &binary_mat_file, unsigned int mat_number_to_load=1)