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 "SideDiffusiveFluxAverage.h" 11 : 12 : registerMooseObject("MooseApp", SideDiffusiveFluxAverage); 13 : registerMooseObject("MooseApp", ADSideDiffusiveFluxAverage); 14 : registerMooseObjectRenamed("MooseApp", 15 : SideFluxAverage, 16 : "06/30/2021 24:00", 17 : SideDiffusiveFluxAverage); 18 : registerMooseObjectRenamed("MooseApp", 19 : ADSideFluxAverage, 20 : "06/30/2021 24:00", 21 : ADSideDiffusiveFluxAverage); 22 : 23 : template <bool is_ad> 24 : InputParameters 25 59601 : SideDiffusiveFluxAverageTempl<is_ad>::validParams() 26 : { 27 59601 : InputParameters params = SideDiffusiveFluxIntegralTempl<is_ad, Real>::validParams(); 28 59601 : params.addClassDescription( 29 : "Computes the average of the diffusive flux over the specified boundary"); 30 59601 : return params; 31 0 : } 32 : 33 : template <bool is_ad> 34 68 : SideDiffusiveFluxAverageTempl<is_ad>::SideDiffusiveFluxAverageTempl( 35 : const InputParameters & parameters) 36 68 : : SideDiffusiveFluxIntegralTempl<is_ad, Real>(parameters), _volume(0) 37 : { 38 68 : } 39 : 40 : template <bool is_ad> 41 : void 42 63 : SideDiffusiveFluxAverageTempl<is_ad>::initialize() 43 : { 44 63 : SideDiffusiveFluxIntegralTempl<is_ad, Real>::initialize(); 45 63 : _volume = 0; 46 63 : } 47 : 48 : template <bool is_ad> 49 : void 50 450 : SideDiffusiveFluxAverageTempl<is_ad>::execute() 51 : { 52 450 : SideDiffusiveFluxIntegralTempl<is_ad, Real>::execute(); 53 450 : _volume += this->_current_side_volume; 54 450 : } 55 : 56 : template <bool is_ad> 57 : Real 58 60 : SideDiffusiveFluxAverageTempl<is_ad>::getValue() const 59 : { 60 60 : return _integral_value / _volume; 61 : } 62 : 63 : template <bool is_ad> 64 : void 65 60 : SideDiffusiveFluxAverageTempl<is_ad>::finalize() 66 : { 67 60 : SideDiffusiveFluxIntegralTempl<is_ad, Real>::gatherSum(_integral_value); 68 60 : SideDiffusiveFluxIntegralTempl<is_ad, Real>::gatherSum(_volume); 69 60 : } 70 : 71 : template <bool is_ad> 72 : void 73 3 : SideDiffusiveFluxAverageTempl<is_ad>::threadJoin(const UserObject & y) 74 : { 75 3 : SideDiffusiveFluxIntegralTempl<is_ad, Real>::threadJoin(y); 76 3 : const auto & pps = static_cast<const SideDiffusiveFluxAverageTempl<is_ad> &>(y); 77 3 : _volume += pps._volume; 78 3 : } 79 : 80 : template class SideDiffusiveFluxAverageTempl<false>; 81 : template class SideDiffusiveFluxAverageTempl<true>;