LCOV - code coverage report
Current view: top level - src/kernels - PorousFlowDesorpedMassVolumetricExpansion.C (source / functions) Hit Total Coverage
Test: idaholab/moose porous_flow: #31405 (292dce) with base fef103 Lines: 35 37 94.6 %
Date: 2025-09-04 07:55:56 Functions: 6 6 100.0 %
Legend: Lines: hit not hit

          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 "PorousFlowDesorpedMassVolumetricExpansion.h"
      11             : 
      12             : #include "MooseVariable.h"
      13             : 
      14             : registerMooseObject("PorousFlowApp", PorousFlowDesorpedMassVolumetricExpansion);
      15             : 
      16             : InputParameters
      17          38 : PorousFlowDesorpedMassVolumetricExpansion::validParams()
      18             : {
      19          38 :   InputParameters params = TimeKernel::validParams();
      20          76 :   params.addRequiredParam<UserObjectName>(
      21             :       "PorousFlowDictator", "The UserObject that holds the list of PorousFlow variable names.");
      22          76 :   params.addRequiredCoupledVar(
      23             :       "conc_var", "The variable that represents the concentration of desorped species");
      24          38 :   params.addClassDescription("Desorped_mass * rate_of_solid_volumetric_expansion");
      25          38 :   return params;
      26           0 : }
      27             : 
      28          22 : PorousFlowDesorpedMassVolumetricExpansion::PorousFlowDesorpedMassVolumetricExpansion(
      29          22 :     const InputParameters & parameters)
      30             :   : TimeKernel(parameters),
      31          22 :     _dictator(getUserObject<PorousFlowDictator>("PorousFlowDictator")),
      32          22 :     _conc_var_number(coupled("conc_var")),
      33          22 :     _conc(coupledValue("conc_var")),
      34          44 :     _porosity(getMaterialProperty<Real>("PorousFlow_porosity_qp")),
      35          44 :     _dporosity_dvar(getMaterialProperty<std::vector<Real>>("dPorousFlow_porosity_qp_dvar")),
      36          22 :     _dporosity_dgradvar(
      37          22 :         getMaterialProperty<std::vector<RealGradient>>("dPorousFlow_porosity_qp_dgradvar")),
      38          44 :     _strain_rate_qp(getMaterialProperty<Real>("PorousFlow_volumetric_strain_rate_qp")),
      39          44 :     _dstrain_rate_qp_dvar(getMaterialProperty<std::vector<RealGradient>>(
      40          22 :         "dPorousFlow_volumetric_strain_rate_qp_dvar"))
      41             : {
      42          22 : }
      43             : 
      44             : Real
      45       13320 : PorousFlowDesorpedMassVolumetricExpansion::computeQpResidual()
      46             : {
      47       13320 :   return _test[_i][_qp] * (1.0 - _porosity[_qp]) * _conc[_qp] * _strain_rate_qp[_qp];
      48             : }
      49             : 
      50             : Real
      51        2600 : PorousFlowDesorpedMassVolumetricExpansion::computeQpJacobian()
      52             : {
      53        2600 :   return computeQpJac(_var.number());
      54             : }
      55             : 
      56             : Real
      57        9280 : PorousFlowDesorpedMassVolumetricExpansion::computeQpOffDiagJacobian(unsigned int jvar)
      58             : {
      59        9280 :   return computeQpJac(jvar);
      60             : }
      61             : 
      62             : Real
      63       11880 : PorousFlowDesorpedMassVolumetricExpansion::computeQpJac(unsigned int jvar) const
      64             : {
      65             :   Real deriv = 0.0;
      66             : 
      67       11880 :   if (jvar == _conc_var_number)
      68         360 :     deriv = (1.0 - _porosity[_qp]) * _phi[_j][_qp] * _strain_rate_qp[_qp];
      69             : 
      70       11880 :   if (_dictator.notPorousFlowVariable(jvar))
      71           0 :     return _test[_i][_qp] * deriv;
      72       11880 :   const unsigned int pvar = _dictator.porousFlowVariableNum(jvar);
      73             : 
      74       11880 :   deriv -= _dporosity_dgradvar[_qp][pvar] * _grad_phi[_j][_qp] * _conc[_qp] * _strain_rate_qp[_qp];
      75       11880 :   deriv -= _dporosity_dvar[_qp][pvar] * _phi[_j][_qp] * _conc[_qp] * _strain_rate_qp[_qp];
      76       11880 :   deriv +=
      77       11880 :       (1.0 - _porosity[_qp]) * _conc[_qp] * _dstrain_rate_qp_dvar[_qp][pvar] * _grad_phi[_j][_qp];
      78             : 
      79       11880 :   return _test[_i][_qp] * deriv;
      80             : }

Generated by: LCOV version 1.14