LCOV - code coverage report
Current view: top level - src/dgkernels - ADDGDiffusion.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 2bf808 Lines: 38 40 95.0 %
Date: 2025-07-17 01:28:37 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       14376 : ADDGDiffusion::validParams()
      21             : {
      22       14376 :   InputParameters params = ADDGKernel::validParams();
      23             :   // See header file for sigma and epsilon
      24       14376 :   params.addRequiredParam<Real>("sigma", "sigma");
      25       14376 :   params.addRequiredParam<Real>("epsilon", "epsilon");
      26       43128 :   params.addParam<MaterialPropertyName>(
      27       28752 :       "diff", 1., "The diffusion (or thermal conductivity or viscosity) coefficient.");
      28       14376 :   params.addClassDescription("DG kernel for diffusion operator");
      29       14376 :   return params;
      30           0 : }
      31             : 
      32          59 : ADDGDiffusion::ADDGDiffusion(const InputParameters & parameters)
      33             :   : ADDGKernel(parameters),
      34          59 :     _epsilon(getParam<Real>("epsilon")),
      35          59 :     _sigma(getParam<Real>("sigma")),
      36          59 :     _diff(getADMaterialProperty<Real>("diff")),
      37         118 :     _diff_neighbor(getNeighborADMaterialProperty<Real>("diff"))
      38             : {
      39          59 : }
      40             : 
      41             : ADReal
      42      134448 : ADDGDiffusion::computeQpResidual(Moose::DGResidualType type)
      43             : {
      44      134448 :   ADReal r = 0.0;
      45             : 
      46      134448 :   const int elem_b_order = std::max(libMesh::Order(1), _var.order());
      47             :   const Real h_elem =
      48      134448 :       _current_elem_volume / _current_side_volume * 1.0 / Utility::pow<2>(elem_b_order);
      49             : 
      50      134448 :   switch (type)
      51             :   {
      52       67224 :     case Moose::Element:
      53      134448 :       r -= 0.5 *
      54      134448 :            (_diff[_qp] * _grad_u[_qp] * _normals[_qp] +
      55      268896 :             _diff_neighbor[_qp] * _grad_u_neighbor[_qp] * _normals[_qp]) *
      56      134448 :            _test[_i][_qp];
      57      134448 :       r += _epsilon * 0.5 * (_u[_qp] - _u_neighbor[_qp]) * _diff[_qp] * _grad_test[_i][_qp] *
      58      134448 :            _normals[_qp];
      59       67224 :       r += _sigma / h_elem * (_u[_qp] - _u_neighbor[_qp]) * _test[_i][_qp];
      60       67224 :       break;
      61             : 
      62       67224 :     case Moose::Neighbor:
      63      134448 :       r += 0.5 *
      64      134448 :            (_diff[_qp] * _grad_u[_qp] * _normals[_qp] +
      65      268896 :             _diff_neighbor[_qp] * _grad_u_neighbor[_qp] * _normals[_qp]) *
      66      134448 :            _test_neighbor[_i][_qp];
      67      134448 :       r += _epsilon * 0.5 * (_u[_qp] - _u_neighbor[_qp]) * _diff_neighbor[_qp] *
      68      134448 :            _grad_test_neighbor[_i][_qp] * _normals[_qp];
      69       67224 :       r -= _sigma / h_elem * (_u[_qp] - _u_neighbor[_qp]) * _test_neighbor[_i][_qp];
      70       67224 :       break;
      71             :   }
      72             : 
      73      268896 :   return r;
      74           0 : }

Generated by: LCOV version 1.14