LCOV - code coverage report
Current view: top level - src/hdgkernels - DiffusionLHDGKernel.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: #32971 (54bef8) with base c6cf66 Lines: 83 84 98.8 %
Date: 2026-05-29 20:35:17 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        3284 : DiffusionLHDGKernel::validParams()
      26             : {
      27        3284 :   auto params = HDGKernel::validParams();
      28        3284 :   params += DiffusionLHDGAssemblyHelper::validParams();
      29       19704 :   params.renameParam("variable", "u", "The diffusing specie concentration");
      30       13136 :   params.addParam<MooseFunctorName>("source", 0, "Source for the diffusing species");
      31        3284 :   params.addClassDescription("Adds the element and interior face weak forms for a hybridized local "
      32             :                              "discontinuous Galerkin discretization of a diffusion term.");
      33        3284 :   return params;
      34           0 : }
      35             : 
      36         112 : DiffusionLHDGKernel::DiffusionLHDGKernel(const InputParameters & params)
      37             :   : HDGKernel(params),
      38         112 :     DiffusionLHDGAssemblyHelper(this, this, this, this, _fe_problem, _sys, _tid),
      39         224 :     _source(getFunctor<Real>("source"))
      40             : {
      41         112 : }
      42             : 
      43             : void
      44         112 : DiffusionLHDGKernel::initialSetup()
      45             : {
      46             :   // This check must occur after FEProblemBase::init()
      47         112 :   checkCoupling();
      48         112 : }
      49             : 
      50             : void
      51      155130 : DiffusionLHDGKernel::computeResidual()
      52             : {
      53      155130 :   _vector_re.resize(_qu_dof_indices.size());
      54      155130 :   _scalar_re.resize(_u_dof_indices.size());
      55             : 
      56             :   // qu and u
      57      155130 :   vectorVolumeResidual(_qu_sol, _u_sol, _JxW, *_qrule, _vector_re);
      58      155130 :   scalarVolumeResidual(_qu_sol, _source, _JxW, *_qrule, _current_elem, _q_point, _scalar_re);
      59             : 
      60      155130 :   addResiduals(_assembly, _vector_re, _qu_dof_indices, _grad_u_var.scalingFactor());
      61      155130 :   addResiduals(_assembly, _scalar_re, _u_dof_indices, _u_var.scalingFactor());
      62      155130 : }
      63             : 
      64             : void
      65      547202 : DiffusionLHDGKernel::computeResidualOnSide()
      66             : {
      67      547202 :   _vector_re.resize(_qu_dof_indices.size());
      68      547202 :   _scalar_re.resize(_u_dof_indices.size());
      69      547202 :   _lm_re.resize(_lm_u_dof_indices.size());
      70             : 
      71             :   // qu, u, lm_u
      72      547202 :   vectorFaceResidual(_lm_u_sol, _JxW_face, *_qrule_face, _normals, _vector_re);
      73      547202 :   scalarFaceResidual(_qu_sol, _u_sol, _lm_u_sol, _JxW_face, *_qrule_face, _normals, _scalar_re);
      74      547202 :   lmFaceResidual(_qu_sol, _u_sol, _lm_u_sol, _JxW_face, *_qrule_face, _normals, _lm_re);
      75             : 
      76      547202 :   addResiduals(_assembly, _vector_re, _qu_dof_indices, _grad_u_var.scalingFactor());
      77      547202 :   addResiduals(_assembly, _scalar_re, _u_dof_indices, _u_var.scalingFactor());
      78      547202 :   addResiduals(_assembly, _lm_re, _lm_u_dof_indices, _u_face_var.scalingFactor());
      79      547202 : }
      80             : 
      81             : void
      82      101652 : DiffusionLHDGKernel::computeJacobian()
      83             : {
      84      101652 :   _vector_vector_jac.resize(_qu_dof_indices.size(), _qu_dof_indices.size());
      85      101652 :   _vector_scalar_jac.resize(_qu_dof_indices.size(), _u_dof_indices.size());
      86      101652 :   _scalar_vector_jac.resize(_u_dof_indices.size(), _qu_dof_indices.size());
      87             : 
      88             :   // qu and u
      89      101652 :   vectorVolumeJacobian(_JxW, *_qrule, _vector_vector_jac, _vector_scalar_jac);
      90      101652 :   scalarVolumeJacobian(_JxW, *_qrule, _scalar_vector_jac);
      91             : 
      92      203304 :   addJacobian(
      93      101652 :       _assembly, _vector_vector_jac, _qu_dof_indices, _qu_dof_indices, _grad_u_var.scalingFactor());
      94      203304 :   addJacobian(
      95      101652 :       _assembly, _vector_scalar_jac, _qu_dof_indices, _u_dof_indices, _grad_u_var.scalingFactor());
      96      203304 :   addJacobian(
      97      101652 :       _assembly, _scalar_vector_jac, _u_dof_indices, _qu_dof_indices, _u_var.scalingFactor());
      98      101652 : }
      99             : 
     100             : void
     101      360260 : DiffusionLHDGKernel::computeJacobianOnSide()
     102             : {
     103      360260 :   _scalar_vector_jac.resize(_u_dof_indices.size(), _qu_dof_indices.size());
     104      360260 :   _scalar_scalar_jac.resize(_u_dof_indices.size(), _u_dof_indices.size());
     105      360260 :   _scalar_lm_jac.resize(_u_dof_indices.size(), _lm_u_dof_indices.size());
     106      360260 :   _lm_scalar_jac.resize(_lm_u_dof_indices.size(), _u_dof_indices.size());
     107      360260 :   _lm_lm_jac.resize(_lm_u_dof_indices.size(), _lm_u_dof_indices.size());
     108      360260 :   _vector_lm_jac.resize(_qu_dof_indices.size(), _lm_u_dof_indices.size());
     109      360260 :   _lm_vector_jac.resize(_lm_u_dof_indices.size(), _qu_dof_indices.size());
     110             : 
     111             :   // qu, u, lm_u
     112      360260 :   vectorFaceJacobian(_JxW_face, *_qrule_face, _normals, _vector_lm_jac);
     113      360260 :   scalarFaceJacobian(
     114      360260 :       _JxW_face, *_qrule_face, _normals, _scalar_vector_jac, _scalar_scalar_jac, _scalar_lm_jac);
     115      360260 :   lmFaceJacobian(_JxW_face, *_qrule_face, _normals, _lm_vector_jac, _lm_scalar_jac, _lm_lm_jac);
     116             : 
     117      720520 :   addJacobian(
     118      360260 :       _assembly, _scalar_vector_jac, _u_dof_indices, _qu_dof_indices, _u_var.scalingFactor());
     119      720520 :   addJacobian(
     120      360260 :       _assembly, _scalar_scalar_jac, _u_dof_indices, _u_dof_indices, _u_var.scalingFactor());
     121      360260 :   addJacobian(_assembly, _scalar_lm_jac, _u_dof_indices, _lm_u_dof_indices, _u_var.scalingFactor());
     122      720520 :   addJacobian(
     123      360260 :       _assembly, _lm_scalar_jac, _lm_u_dof_indices, _u_dof_indices, _u_face_var.scalingFactor());
     124      720520 :   addJacobian(
     125      360260 :       _assembly, _lm_lm_jac, _lm_u_dof_indices, _lm_u_dof_indices, _u_face_var.scalingFactor());
     126      720520 :   addJacobian(
     127      360260 :       _assembly, _vector_lm_jac, _qu_dof_indices, _lm_u_dof_indices, _grad_u_var.scalingFactor());
     128      720520 :   addJacobian(
     129      360260 :       _assembly, _lm_vector_jac, _lm_u_dof_indices, _qu_dof_indices, _u_face_var.scalingFactor());
     130      360260 : }
     131             : 
     132             : void
     133         209 : DiffusionLHDGKernel::jacobianSetup()
     134             : {
     135         209 :   _cached_elem = nullptr;
     136         209 : }
     137             : 
     138             : void
     139      304956 : DiffusionLHDGKernel::computeOffDiagJacobian(const unsigned int)
     140             : {
     141      304956 :   if (_cached_elem != _current_elem)
     142             :   {
     143      101652 :     computeJacobian();
     144      101652 :     _cached_elem = _current_elem;
     145             :   }
     146      304956 : }
     147             : 
     148             : std::set<std::string>
     149         111 : DiffusionLHDGKernel::additionalROVariables()
     150             : {
     151         444 :   return {_grad_u_var.name(), _u_face_var.name()};
     152         111 : }

Generated by: LCOV version 1.14