LCOV - code coverage report
Current view: top level - src/postprocessors - MaterialTensorAverage.C (source / functions) Hit Total Coverage
Test: idaholab/moose tensor_mechanics: d6b47a Lines: 21 26 80.8 %
Date: 2024-02-27 11:53:14 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://www.mooseframework.org
       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("TensorMechanicsApp", MaterialTensorAverage);
      13             : registerMooseObject("TensorMechanicsApp", ADMaterialTensorAverage);
      14             : 
      15             : template <bool is_ad>
      16             : InputParameters
      17          12 : MaterialTensorAverageTempl<is_ad>::validParams()
      18             : {
      19          12 :   InputParameters params = MaterialTensorIntegralTempl<is_ad>::validParams();
      20          12 :   params.addClassDescription("Computes the average of a RankTwoTensor component over a volume.");
      21          12 :   return params;
      22           0 : }
      23             : 
      24             : template <bool is_ad>
      25           6 : MaterialTensorAverageTempl<is_ad>::MaterialTensorAverageTempl(const InputParameters & parameters)
      26           6 :   : MaterialTensorIntegralTempl<is_ad>(parameters), _volume(0.0)
      27             : {
      28           6 : }
      29             : 
      30             : template <bool is_ad>
      31             : void
      32          30 : MaterialTensorAverageTempl<is_ad>::initialize()
      33             : {
      34          30 :   MaterialTensorIntegralTempl<is_ad>::initialize();
      35             : 
      36          30 :   _volume = 0.0;
      37          30 : }
      38             : 
      39             : template <bool is_ad>
      40             : void
      41          20 : MaterialTensorAverageTempl<is_ad>::execute()
      42             : {
      43          20 :   MaterialTensorIntegralTempl<is_ad>::execute();
      44             : 
      45          20 :   _volume += this->_current_elem_volume;
      46          20 : }
      47             : 
      48             : template <bool is_ad>
      49             : Real
      50          30 : MaterialTensorAverageTempl<is_ad>::getValue() const
      51             : {
      52          30 :   return _integral_value / _volume;
      53             : }
      54             : 
      55             : template <bool is_ad>
      56             : void
      57          30 : MaterialTensorAverageTempl<is_ad>::finalize()
      58             : {
      59          30 :   MaterialTensorIntegralTempl<is_ad>::gatherSum(_volume);
      60          30 :   MaterialTensorIntegralTempl<is_ad>::gatherSum(_integral_value);
      61          30 : }
      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