LCOV - code coverage report
Current view: top level - src/postprocessors - MaterialTensorAverage.C (source / functions) Hit Total Coverage
Test: idaholab/moose solid_mechanics: f45d79 Lines: 21 26 80.8 %
Date: 2025-07-25 05:00:39 Functions: 12 14 85.7 %
Legend: Lines: hit not hit

          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             : #include "MaterialTensorAverage.h"
      11             : 
      12             : registerMooseObject("SolidMechanicsApp", MaterialTensorAverage);
      13             : registerMooseObject("SolidMechanicsApp", ADMaterialTensorAverage);
      14             : 
      15             : template <bool is_ad>
      16             : InputParameters
      17          88 : MaterialTensorAverageTempl<is_ad>::validParams()
      18             : {
      19          88 :   InputParameters params = MaterialTensorIntegralTempl<is_ad>::validParams();
      20          88 :   params.addClassDescription("Computes the average of a RankTwoTensor component over a volume.");
      21          88 :   return params;
      22           0 : }
      23             : 
      24             : template <bool is_ad>
      25          44 : MaterialTensorAverageTempl<is_ad>::MaterialTensorAverageTempl(const InputParameters & parameters)
      26          44 :   : MaterialTensorIntegralTempl<is_ad>(parameters), _volume(0.0)
      27             : {
      28          44 : }
      29             : 
      30             : template <bool is_ad>
      31             : void
      32         212 : MaterialTensorAverageTempl<is_ad>::initialize()
      33             : {
      34         212 :   MaterialTensorIntegralTempl<is_ad>::initialize();
      35             : 
      36         212 :   _volume = 0.0;
      37         212 : }
      38             : 
      39             : template <bool is_ad>
      40             : void
      41         152 : MaterialTensorAverageTempl<is_ad>::execute()
      42             : {
      43         152 :   MaterialTensorIntegralTempl<is_ad>::execute();
      44             : 
      45         152 :   _volume += this->_current_elem_volume;
      46         152 : }
      47             : 
      48             : template <bool is_ad>
      49             : Real
      50         212 : MaterialTensorAverageTempl<is_ad>::getValue() const
      51             : {
      52         212 :   return _integral_value / _volume;
      53             : }
      54             : 
      55             : template <bool is_ad>
      56             : void
      57         212 : MaterialTensorAverageTempl<is_ad>::finalize()
      58             : {
      59         212 :   MaterialTensorIntegralTempl<is_ad>::gatherSum(_volume);
      60         212 :   MaterialTensorIntegralTempl<is_ad>::gatherSum(_integral_value);
      61         212 : }
      62             : 
      63             : template <bool is_ad>
      64             : void
      65           0 : MaterialTensorAverageTempl<is_ad>::threadJoin(const UserObject & y)
      66             : {
      67           0 :   MaterialTensorIntegralTempl<is_ad>::threadJoin(y);
      68             : 
      69             :   const auto & pps = static_cast<const MaterialTensorAverageTempl<is_ad> &>(y);
      70           0 :   _volume += pps._volume;
      71           0 : }
      72             : 
      73             : template class MaterialTensorAverageTempl<false>;
      74             : template class MaterialTensorAverageTempl<true>;

Generated by: LCOV version 1.14