LCOV - code coverage report
Current view: top level - src/hdgkernels - DiffusionLHDGKernel.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 1f9d31 Lines: 83 84 98.8 %
Date: 2025-09-02 20:01:20 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       88068 :   params.renameParam("variable", "u", "The diffusing specie concentration");
      30       58712 :   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         414 :     _source(getFunctor<Real>("source"))
      40             : {
      41         207 : }
      42             : 
      43             : void
      44         207 : DiffusionLHDGKernel::initialSetup()
      45             : {
      46             :   // This check must occur after FEProblemBase::init()
      47         207 :   checkCoupling();
      48         207 : }
      49             : 
      50             : void
      51      356368 : DiffusionLHDGKernel::computeResidual()
      52             : {
      53      356368 :   _vector_re.resize(_qu_dof_indices.size());
      54      356368 :   _scalar_re.resize(_u_dof_indices.size());
      55             : 
      56             :   // qu and u
      57      356368 :   vectorVolumeResidual(_qu_sol, _u_sol, _JxW, *_qrule, _vector_re);
      58      356368 :   scalarVolumeResidual(_qu_sol, _source, _JxW, *_qrule, _current_elem, _q_point, _scalar_re);
      59             : 
      60      356368 :   addResiduals(_assembly, _vector_re, _qu_dof_indices, _grad_u_var.scalingFactor());
      61      356368 :   addResiduals(_assembly, _scalar_re, _u_dof_indices, _u_var.scalingFactor());
      62      356368 : }
      63             : 
      64             : void
      65     1262904 : DiffusionLHDGKernel::computeResidualOnSide()
      66             : {
      67     1262904 :   _vector_re.resize(_qu_dof_indices.size());
      68     1262904 :   _scalar_re.resize(_u_dof_indices.size());
      69     1262904 :   _lm_re.resize(_lm_u_dof_indices.size());
      70             : 
      71             :   // qu, u, lm_u
      72     1262904 :   vectorFaceResidual(_lm_u_sol, _JxW_face, *_qrule_face, _normals, _vector_re);
      73     1262904 :   scalarFaceResidual(_qu_sol, _u_sol, _lm_u_sol, _JxW_face, *_qrule_face, _normals, _scalar_re);
      74     1262904 :   lmFaceResidual(_qu_sol, _u_sol, _lm_u_sol, _JxW_face, *_qrule_face, _normals, _lm_re);
      75             : 
      76     1262904 :   addResiduals(_assembly, _vector_re, _qu_dof_indices, _grad_u_var.scalingFactor());
      77     1262904 :   addResiduals(_assembly, _scalar_re, _u_dof_indices, _u_var.scalingFactor());
      78     1262904 :   addResiduals(_assembly, _lm_re, _lm_u_dof_indices, _u_face_var.scalingFactor());
      79     1262904 : }
      80             : 
      81             : void
      82      236336 : DiffusionLHDGKernel::computeJacobian()
      83             : {
      84      236336 :   _vector_vector_jac.resize(_qu_dof_indices.size(), _qu_dof_indices.size());
      85      236336 :   _vector_scalar_jac.resize(_qu_dof_indices.size(), _u_dof_indices.size());
      86      236336 :   _scalar_vector_jac.resize(_u_dof_indices.size(), _qu_dof_indices.size());
      87             : 
      88             :   // qu and u
      89      236336 :   vectorVolumeJacobian(_JxW, *_qrule, _vector_vector_jac, _vector_scalar_jac);
      90      236336 :   scalarVolumeJacobian(_JxW, *_qrule, _scalar_vector_jac);
      91             : 
      92      472672 :   addJacobian(
      93      236336 :       _assembly, _vector_vector_jac, _qu_dof_indices, _qu_dof_indices, _grad_u_var.scalingFactor());
      94      472672 :   addJacobian(
      95      236336 :       _assembly, _vector_scalar_jac, _qu_dof_indices, _u_dof_indices, _grad_u_var.scalingFactor());
      96      472672 :   addJacobian(
      97      236336 :       _assembly, _scalar_vector_jac, _u_dof_indices, _qu_dof_indices, _u_var.scalingFactor());
      98      236336 : }
      99             : 
     100             : void
     101      839056 : DiffusionLHDGKernel::computeJacobianOnSide()
     102             : {
     103      839056 :   _scalar_vector_jac.resize(_u_dof_indices.size(), _qu_dof_indices.size());
     104      839056 :   _scalar_scalar_jac.resize(_u_dof_indices.size(), _u_dof_indices.size());
     105      839056 :   _scalar_lm_jac.resize(_u_dof_indices.size(), _lm_u_dof_indices.size());
     106      839056 :   _lm_scalar_jac.resize(_lm_u_dof_indices.size(), _u_dof_indices.size());
     107      839056 :   _lm_lm_jac.resize(_lm_u_dof_indices.size(), _lm_u_dof_indices.size());
     108      839056 :   _vector_lm_jac.resize(_qu_dof_indices.size(), _lm_u_dof_indices.size());
     109      839056 :   _lm_vector_jac.resize(_lm_u_dof_indices.size(), _qu_dof_indices.size());
     110             : 
     111             :   // qu, u, lm_u
     112      839056 :   vectorFaceJacobian(_JxW_face, *_qrule_face, _normals, _vector_lm_jac);
     113      839056 :   scalarFaceJacobian(
     114      839056 :       _JxW_face, *_qrule_face, _normals, _scalar_vector_jac, _scalar_scalar_jac, _scalar_lm_jac);
     115      839056 :   lmFaceJacobian(_JxW_face, *_qrule_face, _normals, _lm_vector_jac, _lm_scalar_jac, _lm_lm_jac);
     116             : 
     117     1678112 :   addJacobian(
     118      839056 :       _assembly, _scalar_vector_jac, _u_dof_indices, _qu_dof_indices, _u_var.scalingFactor());
     119     1678112 :   addJacobian(
     120      839056 :       _assembly, _scalar_scalar_jac, _u_dof_indices, _u_dof_indices, _u_var.scalingFactor());
     121      839056 :   addJacobian(_assembly, _scalar_lm_jac, _u_dof_indices, _lm_u_dof_indices, _u_var.scalingFactor());
     122     1678112 :   addJacobian(
     123      839056 :       _assembly, _lm_scalar_jac, _lm_u_dof_indices, _u_dof_indices, _u_face_var.scalingFactor());
     124     1678112 :   addJacobian(
     125      839056 :       _assembly, _lm_lm_jac, _lm_u_dof_indices, _lm_u_dof_indices, _u_face_var.scalingFactor());
     126     1678112 :   addJacobian(
     127      839056 :       _assembly, _vector_lm_jac, _qu_dof_indices, _lm_u_dof_indices, _grad_u_var.scalingFactor());
     128     1678112 :   addJacobian(
     129      839056 :       _assembly, _lm_vector_jac, _lm_u_dof_indices, _qu_dof_indices, _u_face_var.scalingFactor());
     130      839056 : }
     131             : 
     132             : void
     133         392 : DiffusionLHDGKernel::jacobianSetup()
     134             : {
     135         392 :   _cached_elem = nullptr;
     136         392 : }
     137             : 
     138             : void
     139      709008 : DiffusionLHDGKernel::computeOffDiagJacobian(const unsigned int)
     140             : {
     141      709008 :   if (_cached_elem != _current_elem)
     142             :   {
     143      236336 :     computeJacobian();
     144      236336 :     _cached_elem = _current_elem;
     145             :   }
     146      709008 : }
     147             : 
     148             : std::set<std::string>
     149         206 : DiffusionLHDGKernel::additionalROVariables()
     150             : {
     151         824 :   return {_grad_u_var.name(), _u_face_var.name()};
     152         206 : }

Generated by: LCOV version 1.14