LCOV - code coverage report
Current view: top level - src/hdgkernels - MassContinuityAssemblyHelper.C (source / functions) Hit Total Coverage
Test: idaholab/moose navier_stokes: #32971 (54bef8) with base c6cf66 Lines: 44 48 91.7 %
Date: 2026-05-29 20:37:52 Functions: 5 5 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 "MassContinuityAssemblyHelper.h"
      11             : #include "MooseTypes.h"
      12             : #include "MooseObject.h"
      13             : #include "MaterialPropertyInterface.h"
      14             : #include "MooseMesh.h"
      15             : 
      16             : using namespace libMesh;
      17             : 
      18             : InputParameters
      19        2605 : MassContinuityAssemblyHelper::validParams()
      20             : {
      21        2605 :   auto params = IPHDGAssemblyHelper::validParams();
      22        5210 :   params.addRequiredCoupledVar("interior_velocity_vars",
      23             :                                "The velocity variables on the element interiors");
      24        5210 :   params.addRequiredParam<std::vector<MooseFunctorName>>(
      25             :       "face_velocity_functors", "The velocity variables on element faces/facets");
      26        2605 :   return params;
      27           0 : }
      28             : 
      29        1310 : MassContinuityAssemblyHelper::MassContinuityAssemblyHelper(
      30             :     const MooseObject * const moose_obj,
      31             :     MooseVariableDependencyInterface * const mvdi,
      32             :     const TransientInterface * const ti,
      33             :     const MooseMesh & mesh,
      34             :     SystemBase & sys,
      35             :     const Assembly & assembly,
      36             :     const THREAD_ID tid,
      37             :     const std::set<SubdomainID> & block_ids,
      38        1310 :     const std::set<BoundaryID> & boundary_ids)
      39             :   : IPHDGAssemblyHelper(moose_obj, mvdi, ti, sys, assembly, tid, block_ids, boundary_ids),
      40             :     ADFunctorInterface(moose_obj),
      41        1310 :     _coord_sys(assembly.coordSystem()),
      42        1310 :     _rz_radial_coord(mesh.getAxisymmetricRadialCoord())
      43             : 
      44             : {
      45        1310 :   for (const auto & interior_vel_var_name :
      46        5240 :        moose_obj->getParam<std::vector<VariableName>>("interior_velocity_vars"))
      47             :   {
      48        2620 :     const auto & var = sys.getFieldVariable<Real>(tid, interior_vel_var_name);
      49        2620 :     _interior_vels.push_back(&var.adSln());
      50        2620 :     _interior_vel_grads.push_back(&var.adGradSln());
      51             :   }
      52        1310 :   for (const auto & face_vel_functor_name :
      53        5240 :        moose_obj->getParam<std::vector<MooseFunctorName>>("face_velocity_functors"))
      54        2620 :     _face_vels.push_back(&getFunctorByName<ADReal>(face_vel_functor_name));
      55             : 
      56        1310 :   if (mesh.dimension() != _interior_vels.size())
      57           0 :     moose_obj->paramError(
      58             :         "interior_velocity_vars",
      59             :         "The number of interior velocity variables must be equal to the mesh dimension");
      60        1310 :   if (mesh.dimension() != _face_vels.size())
      61           0 :     moose_obj->paramError(
      62             :         "face_velocity_functors",
      63             :         "The number of face velocity functors must be equal to the mesh dimension");
      64        1310 : }
      65             : 
      66             : void
      67     1895210 : MassContinuityAssemblyHelper::scalarVolume()
      68             : {
      69    11397630 :   for (const auto qp : make_range(_ip_qrule->n_points()))
      70             :   {
      71     9502420 :     ADReal divergence = 0;
      72    28507260 :     for (const auto d : index_range(_interior_vel_grads))
      73             :     {
      74    19004840 :       divergence += (*_interior_vel_grads[d])[qp](d);
      75    19004840 :       if (_coord_sys == Moose::COORD_RZ && (_rz_radial_coord == d))
      76           0 :         divergence += (*_interior_vels[d])[qp] / _ip_q_point[qp](_rz_radial_coord);
      77             :     }
      78     9502420 :     const auto qp_term = _ip_JxW[qp] * divergence;
      79    27974208 :     for (const auto i : index_range(_scalar_phi))
      80    36943576 :       _scalar_re(i) -= qp_term * _scalar_phi[i][qp];
      81             :   }
      82     1895210 : }
      83             : 
      84             : void
      85     5686174 : MassContinuityAssemblyHelper::scalarFace()
      86             : {
      87     5686174 : }
      88             : 
      89             : void
      90     5686174 : MassContinuityAssemblyHelper::lmFace()
      91             : {
      92    18979558 :   for (const auto qp : make_range(_ip_qrule_face->n_points()))
      93             :   {
      94             :     ADRealVectorValue interior_vel, face_vel;
      95    39880152 :     for (const auto d : index_range(_interior_vels))
      96             :     {
      97    26586768 :       interior_vel(d) = (*_interior_vels[d])[qp];
      98    26586768 :       face_vel(d) = (*_face_vels[d])(
      99    53173536 :           Moose::ElemSideQpArg{
     100    26586768 :               _ip_current_elem, _ip_current_side, qp, _ip_qrule_face, _ip_q_point_face[qp]},
     101    26586768 :           _ti.determineState());
     102             :     }
     103    26586768 :     const auto qp_term = (interior_vel - face_vel) * _ip_normals[qp] * _ip_JxW_face[qp];
     104   110362596 :     for (const auto i : index_range(_lm_re))
     105   194138424 :       _lm_re(i) += _lm_phi_face[i][qp] * qp_term;
     106             :   }
     107     5686174 : }

Generated by: LCOV version 1.14