LCOV - code coverage report
Current view: top level - src/hdgkernels - DiffusionLHDGKernel.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 419b9d Lines: 87 88 98.9 %
Date: 2025-08-08 20:01:16 Functions: 10 10 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 "DiffusionLHDGAssemblyHelper.h"
      11             : #include "DiffusionLHDGKernel.h"
      12             : #include "MooseVariableFE.h"
      13             : #include "MooseVariableScalar.h"
      14             : #include "SystemBase.h"
      15             : #include "MooseMesh.h"
      16             : #include "MooseObject.h"
      17             : #include "MaterialPropertyInterface.h"
      18             : #include "NonlinearThread.h"
      19             : 
      20             : using namespace libMesh;
      21             : 
      22             : registerMooseObject("MooseApp", DiffusionLHDGKernel);
      23             : 
      24             : InputParameters
      25       14678 : DiffusionLHDGKernel::validParams()
      26             : {
      27       14678 :   auto params = HDGKernel::validParams();
      28       14678 :   params += DiffusionLHDGAssemblyHelper::validParams();
      29       14678 :   params.renameParam("variable", "u", "The diffusing specie concentration");
      30       14678 :   params.addParam<MooseFunctorName>("source", 0, "Source for the diffusing species");
      31       14678 :   params.addClassDescription("Adds the element and interior face weak forms for a hybridized local "
      32             :                              "discontinuous Galerkin discretization of a diffusion term.");
      33       14678 :   return params;
      34           0 : }
      35             : 
      36         207 : DiffusionLHDGKernel::DiffusionLHDGKernel(const InputParameters & params)
      37             :   : HDGKernel(params),
      38         207 :     DiffusionLHDGAssemblyHelper(this, this, this, this, _fe_problem, _sys, _tid),
      39         207 :     _source(getFunctor<Real>("source")),
      40         207 :     _qrule_face(_assembly.qRuleFace()),
      41         207 :     _q_point_face(_assembly.qPointsFace()),
      42         207 :     _JxW_face(_assembly.JxWFace()),
      43         414 :     _normals(_assembly.normals())
      44             : {
      45         207 : }
      46             : 
      47             : void
      48         207 : DiffusionLHDGKernel::initialSetup()
      49             : {
      50             :   // This check must occur after FEProblemBase::init()
      51         207 :   checkCoupling();
      52         207 : }
      53             : 
      54             : void
      55      356368 : DiffusionLHDGKernel::computeResidual()
      56             : {
      57      356368 :   _vector_re.resize(_qu_dof_indices.size());
      58      356368 :   _scalar_re.resize(_u_dof_indices.size());
      59             : 
      60             :   // qu and u
      61      356368 :   vectorVolumeResidual(_qu_sol, _u_sol, _JxW, *_qrule, _vector_re);
      62      356368 :   scalarVolumeResidual(_qu_sol, _source, _JxW, *_qrule, _current_elem, _q_point, _scalar_re);
      63             : 
      64      356368 :   addResiduals(_assembly, _vector_re, _qu_dof_indices, _grad_u_var.scalingFactor());
      65      356368 :   addResiduals(_assembly, _scalar_re, _u_dof_indices, _u_var.scalingFactor());
      66      356368 : }
      67             : 
      68             : void
      69     1262904 : DiffusionLHDGKernel::computeResidualOnSide()
      70             : {
      71     1262904 :   _vector_re.resize(_qu_dof_indices.size());
      72     1262904 :   _scalar_re.resize(_u_dof_indices.size());
      73     1262904 :   _lm_re.resize(_lm_u_dof_indices.size());
      74             : 
      75             :   // qu, u, lm_u
      76     1262904 :   vectorFaceResidual(_lm_u_sol, _JxW_face, *_qrule_face, _normals, _vector_re);
      77     1262904 :   scalarFaceResidual(_qu_sol, _u_sol, _lm_u_sol, _JxW_face, *_qrule_face, _normals, _scalar_re);
      78     1262904 :   lmFaceResidual(_qu_sol, _u_sol, _lm_u_sol, _JxW_face, *_qrule_face, _normals, _lm_re);
      79             : 
      80     1262904 :   addResiduals(_assembly, _vector_re, _qu_dof_indices, _grad_u_var.scalingFactor());
      81     1262904 :   addResiduals(_assembly, _scalar_re, _u_dof_indices, _u_var.scalingFactor());
      82     1262904 :   addResiduals(_assembly, _lm_re, _lm_u_dof_indices, _u_face_var.scalingFactor());
      83     1262904 : }
      84             : 
      85             : void
      86      236336 : DiffusionLHDGKernel::computeJacobian()
      87             : {
      88      236336 :   _vector_vector_jac.resize(_qu_dof_indices.size(), _qu_dof_indices.size());
      89      236336 :   _vector_scalar_jac.resize(_qu_dof_indices.size(), _u_dof_indices.size());
      90      236336 :   _scalar_vector_jac.resize(_u_dof_indices.size(), _qu_dof_indices.size());
      91             : 
      92             :   // qu and u
      93      236336 :   vectorVolumeJacobian(_JxW, *_qrule, _vector_vector_jac, _vector_scalar_jac);
      94      236336 :   scalarVolumeJacobian(_JxW, *_qrule, _scalar_vector_jac);
      95             : 
      96      472672 :   addJacobian(
      97      236336 :       _assembly, _vector_vector_jac, _qu_dof_indices, _qu_dof_indices, _grad_u_var.scalingFactor());
      98      472672 :   addJacobian(
      99      236336 :       _assembly, _vector_scalar_jac, _qu_dof_indices, _u_dof_indices, _grad_u_var.scalingFactor());
     100      472672 :   addJacobian(
     101      236336 :       _assembly, _scalar_vector_jac, _u_dof_indices, _qu_dof_indices, _u_var.scalingFactor());
     102      236336 : }
     103             : 
     104             : void
     105      839056 : DiffusionLHDGKernel::computeJacobianOnSide()
     106             : {
     107      839056 :   _scalar_vector_jac.resize(_u_dof_indices.size(), _qu_dof_indices.size());
     108      839056 :   _scalar_scalar_jac.resize(_u_dof_indices.size(), _u_dof_indices.size());
     109      839056 :   _scalar_lm_jac.resize(_u_dof_indices.size(), _lm_u_dof_indices.size());
     110      839056 :   _lm_scalar_jac.resize(_lm_u_dof_indices.size(), _u_dof_indices.size());
     111      839056 :   _lm_lm_jac.resize(_lm_u_dof_indices.size(), _lm_u_dof_indices.size());
     112      839056 :   _vector_lm_jac.resize(_qu_dof_indices.size(), _lm_u_dof_indices.size());
     113      839056 :   _lm_vector_jac.resize(_lm_u_dof_indices.size(), _qu_dof_indices.size());
     114             : 
     115             :   // qu, u, lm_u
     116      839056 :   vectorFaceJacobian(_JxW_face, *_qrule_face, _normals, _vector_lm_jac);
     117      839056 :   scalarFaceJacobian(
     118      839056 :       _JxW_face, *_qrule_face, _normals, _scalar_vector_jac, _scalar_scalar_jac, _scalar_lm_jac);
     119      839056 :   lmFaceJacobian(_JxW_face, *_qrule_face, _normals, _lm_vector_jac, _lm_scalar_jac, _lm_lm_jac);
     120             : 
     121     1678112 :   addJacobian(
     122      839056 :       _assembly, _scalar_vector_jac, _u_dof_indices, _qu_dof_indices, _u_var.scalingFactor());
     123     1678112 :   addJacobian(
     124      839056 :       _assembly, _scalar_scalar_jac, _u_dof_indices, _u_dof_indices, _u_var.scalingFactor());
     125      839056 :   addJacobian(_assembly, _scalar_lm_jac, _u_dof_indices, _lm_u_dof_indices, _u_var.scalingFactor());
     126     1678112 :   addJacobian(
     127      839056 :       _assembly, _lm_scalar_jac, _lm_u_dof_indices, _u_dof_indices, _u_face_var.scalingFactor());
     128     1678112 :   addJacobian(
     129      839056 :       _assembly, _lm_lm_jac, _lm_u_dof_indices, _lm_u_dof_indices, _u_face_var.scalingFactor());
     130     1678112 :   addJacobian(
     131      839056 :       _assembly, _vector_lm_jac, _qu_dof_indices, _lm_u_dof_indices, _grad_u_var.scalingFactor());
     132     1678112 :   addJacobian(
     133      839056 :       _assembly, _lm_vector_jac, _lm_u_dof_indices, _qu_dof_indices, _u_face_var.scalingFactor());
     134      839056 : }
     135             : 
     136             : void
     137         392 : DiffusionLHDGKernel::jacobianSetup()
     138             : {
     139         392 :   _cached_elem = nullptr;
     140         392 : }
     141             : 
     142             : void
     143      709008 : DiffusionLHDGKernel::computeOffDiagJacobian(const unsigned int)
     144             : {
     145      709008 :   if (_cached_elem != _current_elem)
     146             :   {
     147      236336 :     computeJacobian();
     148      236336 :     _cached_elem = _current_elem;
     149             :   }
     150      709008 : }
     151             : 
     152             : std::set<std::string>
     153         206 : DiffusionLHDGKernel::additionalROVariables()
     154             : {
     155         618 :   return {_grad_u_var.name(), _u_face_var.name()};
     156         206 : }

Generated by: LCOV version 1.14