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 "GeneralReporter.h" 13 : 14 : /** 15 : * Reports mortar segment mesh statistics (element counts and volume statistics) for all mortar 16 : * interfaces in the problem. One entry per primary-secondary subdomain pair is appended to each 17 : * output vector, in the order the interfaces are iterated. 18 : */ 19 : class MortarSegmentMeshReporter : public GeneralReporter 20 : { 21 : public: 22 : static InputParameters validParams(); 23 : MortarSegmentMeshReporter(const InputParameters & parameters); 24 : 25 22 : virtual void initialize() override {} 26 22 : virtual void finalize() override {} 27 : virtual void execute() override; 28 : 29 : private: 30 : /// Whether to report statistics for the displaced mortar interfaces 31 : const bool _on_displaced; 32 : 33 : /// Element count in the secondary lower-dimensional subdomain, one entry per mortar interface 34 : std::vector<unsigned int> & _secondary_lower_n_elems; 35 : /// Maximum element volume in the secondary lower-dimensional subdomain 36 : std::vector<Real> & _secondary_lower_max_volume; 37 : /// Minimum element volume in the secondary lower-dimensional subdomain 38 : std::vector<Real> & _secondary_lower_min_volume; 39 : /// Median element volume in the secondary lower-dimensional subdomain 40 : std::vector<Real> & _secondary_lower_median_volume; 41 : 42 : /// Element count in the primary lower-dimensional subdomain, one entry per mortar interface 43 : std::vector<unsigned int> & _primary_lower_n_elems; 44 : /// Maximum element volume in the primary lower-dimensional subdomain 45 : std::vector<Real> & _primary_lower_max_volume; 46 : /// Minimum element volume in the primary lower-dimensional subdomain 47 : std::vector<Real> & _primary_lower_min_volume; 48 : /// Median element volume in the primary lower-dimensional subdomain 49 : std::vector<Real> & _primary_lower_median_volume; 50 : 51 : /// Element count in the mortar segment mesh, one entry per mortar interface 52 : std::vector<unsigned int> & _msm_n_elems; 53 : /// Maximum element volume in the mortar segment mesh 54 : std::vector<Real> & _msm_max_volume; 55 : /// Minimum element volume in the mortar segment mesh 56 : std::vector<Real> & _msm_min_volume; 57 : /// Median element volume in the mortar segment mesh 58 : std::vector<Real> & _msm_median_volume; 59 : };