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 "PorousFlowHeatAdvection.h" 11 : 12 : registerMooseObject("PorousFlowApp", PorousFlowHeatAdvection); 13 : 14 : InputParameters 15 338 : PorousFlowHeatAdvection::validParams() 16 : { 17 338 : InputParameters params = PorousFlowDarcyBase::validParams(); 18 338 : params.addClassDescription("Fully-upwinded heat flux, advected by the fluid"); 19 338 : return params; 20 0 : } 21 : 22 179 : PorousFlowHeatAdvection::PorousFlowHeatAdvection(const InputParameters & parameters) 23 : : PorousFlowDarcyBase(parameters), 24 179 : _enthalpy(getMaterialProperty<std::vector<Real>>("PorousFlow_fluid_phase_enthalpy_nodal")), 25 358 : _denthalpy_dvar(getMaterialProperty<std::vector<std::vector<Real>>>( 26 : "dPorousFlow_fluid_phase_enthalpy_nodal_dvar")), 27 179 : _relative_permeability( 28 179 : getMaterialProperty<std::vector<Real>>("PorousFlow_relative_permeability_nodal")), 29 358 : _drelative_permeability_dvar(getMaterialProperty<std::vector<std::vector<Real>>>( 30 179 : "dPorousFlow_relative_permeability_nodal_dvar")) 31 : { 32 179 : } 33 : 34 : Real 35 664444 : PorousFlowHeatAdvection::mobility(unsigned nodenum, unsigned phase) const 36 : { 37 664444 : return _enthalpy[nodenum][phase] * _fluid_density_node[nodenum][phase] * 38 664444 : _relative_permeability[nodenum][phase] / _fluid_viscosity[nodenum][phase]; 39 : } 40 : 41 : Real 42 416541 : PorousFlowHeatAdvection::dmobility(unsigned nodenum, unsigned phase, unsigned pvar) const 43 : { 44 416541 : Real dm = _denthalpy_dvar[nodenum][phase][pvar] * _fluid_density_node[nodenum][phase] * 45 416541 : _relative_permeability[nodenum][phase] / _fluid_viscosity[nodenum][phase]; 46 416541 : dm += _enthalpy[nodenum][phase] * _dfluid_density_node_dvar[nodenum][phase][pvar] * 47 416541 : _relative_permeability[nodenum][phase] / _fluid_viscosity[nodenum][phase]; 48 416541 : dm += _enthalpy[nodenum][phase] * _fluid_density_node[nodenum][phase] * 49 416541 : _drelative_permeability_dvar[nodenum][phase][pvar] / _fluid_viscosity[nodenum][phase]; 50 416541 : dm -= _enthalpy[nodenum][phase] * _fluid_density_node[nodenum][phase] * 51 416541 : _relative_permeability[nodenum][phase] * _dfluid_viscosity_dvar[nodenum][phase][pvar] / 52 : std::pow(_fluid_viscosity[nodenum][phase], 2); 53 416541 : return dm; 54 : }