Line data Source code
1 : //* This file is part of the MOOSE framework 2 : //* https://mooseframework.inl.gov 3 : //* 4 : //* All rights reserved, see COPYRIGHT for full restrictions 5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT 6 : //* 7 : //* Licensed under LGPL 2.1, please see LICENSE for details 8 : //* https://www.gnu.org/licenses/lgpl-2.1.html 9 : 10 : #pragma once 11 : 12 : #include "GeneralPostprocessor.h" 13 : 14 : /** 15 : * Checks whether the nonlinear system matrix is symmetric 16 : */ 17 : class MatrixSymmetryCheck : public GeneralPostprocessor 18 : { 19 : public: 20 : static InputParameters validParams(); 21 : 22 : MatrixSymmetryCheck(const InputParameters & parameters); 23 : 24 77 : virtual void initialize() override {} 25 : virtual void execute() override; 26 : virtual Real getValue() const override; 27 : 28 : protected: 29 : /// Whether the matrix we are checking for symmetry is from a file 30 : const bool _mat_from_file; 31 : /// The matrix from file name. Empty string if \p _mat_from_file is \p false 32 : const std::string _mat_file_name; 33 : /// Tolerance for the comparison between coefficients and transpose counterparts 34 : const Real _symm_tol; 35 : /// A binary file may contain multiple writes of a matrix. This member can be used to load a 36 : /// particular matrix from the binary file 37 : const unsigned int _mat_number_to_load; 38 : /// Whether the matrix is symmetric 39 : bool _equiv; 40 : };