LCOV - code coverage report
Current view: top level - src/interfacekernels - PerpendicularElectricFieldInterface.C (source / functions) Hit Total Coverage
Test: idaholab/moose electromagnetics: #31405 (292dce) with base fef103 Lines: 44 45 97.8 %
Date: 2025-09-04 07:52:56 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 "PerpendicularElectricFieldInterface.h"
      11             : 
      12             : registerMooseObject("ElectromagneticsApp", PerpendicularElectricFieldInterface);
      13             : 
      14             : InputParameters
      15         164 : PerpendicularElectricFieldInterface::validParams()
      16             : {
      17         164 :   InputParameters params = VectorInterfaceKernel::validParams();
      18         164 :   params.addClassDescription(
      19             :       "VectorInterfaceKernel that implements the condition $\\epsilon_1 \\vec{E}_{1}^{\\perp} - "
      20             :       "\\epsilon_2 \\vec{E}_{2}^{\\perp} = \\sigma_f$");
      21         328 :   params.addParam<Real>("free_charge", 0.0, "Free charge on the interface (default = 0).");
      22         328 :   params.addParam<Real>(
      23         328 :       "primary_epsilon", 1.0, "Permittivity on the primary side of the interface (default = 1.0).");
      24         328 :   params.addParam<Real>("secondary_epsilon",
      25         328 :                         1.0,
      26             :                         "Permittivity on the secondary side of the interface (default = 1.0).");
      27         164 :   return params;
      28           0 : }
      29             : 
      30          88 : PerpendicularElectricFieldInterface::PerpendicularElectricFieldInterface(
      31          88 :     const InputParameters & parameters)
      32             :   : VectorInterfaceKernel(parameters),
      33             : 
      34          88 :     _free_charge(getParam<Real>("free_charge")),
      35         176 :     _primary_eps(getParam<Real>("primary_epsilon")),
      36         264 :     _secondary_eps(getParam<Real>("secondary_epsilon"))
      37             : {
      38          88 : }
      39             : 
      40             : Real
      41      518400 : PerpendicularElectricFieldInterface::computeQpResidual(Moose::DGResidualType type)
      42             : {
      43      518400 :   _u_perp = (_u[_qp] * _normals[_qp]) * _normals[_qp];
      44      518400 :   _secondary_perp = (_neighbor_value[_qp] * _normals[_qp]) * _normals[_qp];
      45      518400 :   _free_charge_dot_n = _free_charge * _normals[_qp];
      46             : 
      47             :   Real res = 0;
      48             : 
      49      518400 :   switch (type)
      50             :   {
      51      259200 :     case Moose::Element:
      52      259200 :       res = _test[_i][_qp] *
      53             :             (_primary_eps * _u_perp - _secondary_eps * _secondary_perp - _free_charge_dot_n);
      54      259200 :       break;
      55             : 
      56      259200 :     case Moose::Neighbor:
      57      259200 :       res = _test_neighbor[_i][_qp] *
      58             :             -(_primary_eps * _u_perp - _secondary_eps * _secondary_perp - _free_charge_dot_n);
      59      259200 :       break;
      60             :   }
      61             : 
      62      518400 :   return res;
      63             : }
      64             : 
      65             : Real
      66     6220800 : PerpendicularElectricFieldInterface::computeQpJacobian(Moose::DGJacobianType type)
      67             : {
      68     6220800 :   _phi_u_perp = (_phi[_j][_qp] * _normals[_qp]) * _normals[_qp];
      69     6220800 :   _phi_secondary_perp = (_phi_neighbor[_j][_qp] * _normals[_qp]) * _normals[_qp];
      70             : 
      71             :   Real jac = 0;
      72             : 
      73     6220800 :   switch (type)
      74             :   {
      75     1555200 :     case Moose::ElementElement:
      76     1555200 :       jac = _test[_i][_qp] * _primary_eps * _phi_u_perp;
      77     1555200 :       break;
      78             : 
      79     1555200 :     case Moose::NeighborNeighbor:
      80     1555200 :       jac = _test_neighbor[_i][_qp] * _secondary_eps * _phi_secondary_perp;
      81     1555200 :       break;
      82             : 
      83     1555200 :     case Moose::NeighborElement:
      84     1555200 :       jac = _test_neighbor[_i][_qp] * -_primary_eps * _phi_u_perp;
      85     1555200 :       break;
      86             : 
      87     1555200 :     case Moose::ElementNeighbor:
      88     1555200 :       jac = _test[_i][_qp] * -_secondary_eps * _phi_secondary_perp;
      89     1555200 :       break;
      90             :   }
      91             : 
      92     6220800 :   return jac;
      93             : }

Generated by: LCOV version 1.14