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 "PorousFlowFullySaturatedHeatAdvection.h" 11 : 12 : registerMooseObject("PorousFlowApp", PorousFlowFullySaturatedHeatAdvection); 13 : registerMooseObject("PorousFlowApp", ADPorousFlowFullySaturatedHeatAdvection); 14 : 15 : template <bool is_ad> 16 : InputParameters 17 231 : PorousFlowFullySaturatedHeatAdvectionTempl<is_ad>::validParams() 18 : { 19 231 : InputParameters params = PorousFlowFullySaturatedDarcyBaseTempl<is_ad>::validParams(); 20 231 : params.addClassDescription("Heat flux that arises from the advection of a fully-saturated single " 21 : "phase fluid. No upwinding is used"); 22 231 : return params; 23 0 : } 24 : 25 : template <bool is_ad> 26 122 : PorousFlowFullySaturatedHeatAdvectionTempl<is_ad>::PorousFlowFullySaturatedHeatAdvectionTempl( 27 : const InputParameters & parameters) 28 : : PorousFlowFullySaturatedDarcyBaseTempl<is_ad>(parameters), 29 122 : _enthalpy(this->template getGenericMaterialProperty<std::vector<Real>, is_ad>( 30 : "PorousFlow_fluid_phase_enthalpy_qp")), 31 122 : _denthalpy_dvar(is_ad ? nullptr 32 115 : : &this->template getMaterialProperty<std::vector<std::vector<Real>>>( 33 122 : "dPorousFlow_fluid_phase_enthalpy_qp_dvar")) 34 : { 35 122 : } 36 : 37 : template <bool is_ad> 38 : GenericReal<is_ad> 39 61200316 : PorousFlowFullySaturatedHeatAdvectionTempl<is_ad>::mobility() const 40 : { 41 : const unsigned ph = 0; 42 61200316 : return _enthalpy[_qp][ph] * PorousFlowFullySaturatedDarcyBaseTempl<is_ad>::mobility(); 43 : } 44 : 45 : template <bool is_ad> 46 : Real 47 57860672 : PorousFlowFullySaturatedHeatAdvectionTempl<is_ad>::dmobility(unsigned pvar) const 48 : { 49 : if constexpr (!is_ad) 50 : { 51 : const unsigned ph = 0; 52 57860672 : const Real darcy_mob = PorousFlowFullySaturatedDarcyBaseTempl<is_ad>::mobility(); 53 57860672 : const Real ddarcy_mob = PorousFlowFullySaturatedDarcyBaseTempl<is_ad>::dmobility(pvar); 54 57860672 : return (*_denthalpy_dvar)[_qp][ph][pvar] * darcy_mob + _enthalpy[_qp][ph] * ddarcy_mob; 55 : } 56 : else 57 : libmesh_ignore(pvar); 58 0 : return 0.0; 59 : } 60 : 61 : template class PorousFlowFullySaturatedHeatAdvectionTempl<false>; 62 : template class PorousFlowFullySaturatedHeatAdvectionTempl<true>;