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