LCOV - code coverage report
Current view: top level - src/dgkernels - ADDGDiffusion.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: #32971 (54bef8) with base c6cf66 Lines: 38 40 95.0 %
Date: 2026-05-29 20:35:17 Functions: 3 3 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 "ADDGDiffusion.h"
      11             : 
      12             : // MOOSE includes
      13             : #include "MooseVariableFE.h"
      14             : 
      15             : #include "libmesh/utility.h"
      16             : 
      17             : registerMooseObject("MooseApp", ADDGDiffusion);
      18             : 
      19             : InputParameters
      20        3208 : ADDGDiffusion::validParams()
      21             : {
      22        3208 :   InputParameters params = ADDGKernel::validParams();
      23             :   // See header file for sigma and epsilon
      24       12832 :   params.addRequiredParam<Real>("sigma", "sigma");
      25       12832 :   params.addRequiredParam<Real>("epsilon", "epsilon");
      26        9624 :   params.addParam<MaterialPropertyName>(
      27        6416 :       "diff", 1., "The diffusion (or thermal conductivity or viscosity) coefficient.");
      28        3208 :   params.addClassDescription("DG kernel for diffusion operator");
      29        3208 :   return params;
      30           0 : }
      31             : 
      32          78 : ADDGDiffusion::ADDGDiffusion(const InputParameters & parameters)
      33             :   : ADDGKernel(parameters),
      34          78 :     _epsilon(getParam<Real>("epsilon")),
      35         156 :     _sigma(getParam<Real>("sigma")),
      36         156 :     _diff(getADMaterialProperty<Real>("diff")),
      37         234 :     _diff_neighbor(getNeighborADMaterialProperty<Real>("diff"))
      38             : {
      39          78 : }
      40             : 
      41             : ADReal
      42     2624880 : ADDGDiffusion::computeQpResidual(Moose::DGResidualType type)
      43             : {
      44     2624880 :   ADReal r = 0.0;
      45             : 
      46     2624880 :   const int elem_b_order = std::max(libMesh::Order(1), _var.order());
      47             :   const Real h_elem =
      48     2624880 :       _current_elem_volume / _current_side_volume * 1.0 / Utility::pow<2>(elem_b_order);
      49             : 
      50     2624880 :   switch (type)
      51             :   {
      52     1312440 :     case Moose::Element:
      53     2624880 :       r -= 0.5 *
      54     2624880 :            (_diff[_qp] * _grad_u[_qp] * _normals[_qp] +
      55     5249760 :             _diff_neighbor[_qp] * _grad_u_neighbor[_qp] * _normals[_qp]) *
      56     2624880 :            _test[_i][_qp];
      57     2624880 :       r += _epsilon * 0.5 * (_u[_qp] - _u_neighbor[_qp]) * _diff[_qp] * _grad_test[_i][_qp] *
      58     2624880 :            _normals[_qp];
      59     1312440 :       r += _sigma / h_elem * (_u[_qp] - _u_neighbor[_qp]) * _test[_i][_qp];
      60     1312440 :       break;
      61             : 
      62     1312440 :     case Moose::Neighbor:
      63     2624880 :       r += 0.5 *
      64     2624880 :            (_diff[_qp] * _grad_u[_qp] * _normals[_qp] +
      65     5249760 :             _diff_neighbor[_qp] * _grad_u_neighbor[_qp] * _normals[_qp]) *
      66     2624880 :            _test_neighbor[_i][_qp];
      67     2624880 :       r += _epsilon * 0.5 * (_u[_qp] - _u_neighbor[_qp]) * _diff_neighbor[_qp] *
      68     2624880 :            _grad_test_neighbor[_i][_qp] * _normals[_qp];
      69     1312440 :       r -= _sigma / h_elem * (_u[_qp] - _u_neighbor[_qp]) * _test_neighbor[_i][_qp];
      70     1312440 :       break;
      71             :   }
      72             : 
      73     5249760 :   return r;
      74           0 : }

Generated by: LCOV version 1.14