LCOV - code coverage report
Current view: top level - src/dgkernels - HFEMTrialJump.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 2bf808 Lines: 33 39 84.6 %
Date: 2025-07-17 01:28:37 Functions: 4 4 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 "HFEMTrialJump.h"
      11             : 
      12             : registerMooseObject("MooseApp", HFEMTrialJump);
      13             : 
      14             : InputParameters
      15       14336 : HFEMTrialJump::validParams()
      16             : {
      17       14336 :   InputParameters params = DGKernel::validParams();
      18       14336 :   params.addRequiredCoupledVar("interior_variable", "interior variable to find jumps in");
      19       14336 :   params.addClassDescription("Imposes constraints for HFEM with side-discontinuous variables.");
      20       14336 :   return params;
      21           0 : }
      22             : 
      23          37 : HFEMTrialJump::HFEMTrialJump(const InputParameters & parameters)
      24             :   : DGKernel(parameters),
      25          37 :     _interior_var(*getVar("interior_variable", 0)),
      26          37 :     _interior(_is_implicit ? _interior_var.sln() : _interior_var.slnOld()),
      27          37 :     _interior_neighbor(_is_implicit ? _interior_var.slnNeighbor() : _interior_var.slnOldNeighbor()),
      28          37 :     _phi_interior(_interior_var.phiFace()),
      29          37 :     _phi_interior_neighbor(_assembly.phiFaceNeighbor(_interior_var)),
      30          37 :     _test_interior(_interior_var.phiFace()),
      31          74 :     _interior_id(coupled("interior_variable"))
      32             : {
      33          37 : }
      34             : 
      35             : Real
      36     1263744 : HFEMTrialJump::computeQpResidual(Moose::DGResidualType type)
      37             : {
      38             :   // Use normal vector at qp 0 to make solution depend on geometry
      39             :   // (well, geometry and quadrature rule, with curved boundaries...)
      40             :   // rather than element numbering
      41     1263744 :   const Real sign = (_normals[0] > Point()) ? 1 : -1;
      42             : 
      43     1263744 :   switch (type)
      44             :   {
      45      631872 :     case Moose::Element:
      46      631872 :       return sign * _test[_i][_qp] * (_interior_neighbor[_qp] - _interior[_qp]);
      47             :       break;
      48             : 
      49      631872 :     case Moose::Neighbor:
      50      631872 :       return 0;
      51             :       break;
      52             :   }
      53           0 :   return 0;
      54             : }
      55             : 
      56             : Real
      57      266880 : HFEMTrialJump::computeQpOffDiagJacobian(Moose::DGJacobianType type, unsigned int jvar)
      58             : {
      59      266880 :   if (jvar != _interior_id)
      60           0 :     return 0;
      61             : 
      62      266880 :   const Real sign = (_normals[0] > Point()) ? 1 : -1;
      63             : 
      64      266880 :   switch (type)
      65             :   {
      66       66720 :     case Moose::ElementElement:
      67       66720 :       return -sign * _test[_i][_qp] * _phi_interior[_j][_qp];
      68             : 
      69       66720 :     case Moose::NeighborElement:
      70       66720 :       return 0;
      71             : 
      72       66720 :     case Moose::ElementNeighbor:
      73       66720 :       return sign * _test[_i][_qp] * _phi_interior_neighbor[_j][_qp];
      74             : 
      75       66720 :     case Moose::NeighborNeighbor:
      76       66720 :       return 0;
      77             : 
      78           0 :     default:
      79           0 :       break;
      80             :   }
      81             : 
      82           0 :   return 0;
      83             : }

Generated by: LCOV version 1.14