LCOV - code coverage report
Current view: top level - src/bcs - ADBoundaryFlux3EqnBC.C (source / functions) Hit Total Coverage
Test: idaholab/moose thermal_hydraulics: #30301 (3b550b) with base 2ad78d Lines: 40 41 97.6 %
Date: 2025-07-30 13:02:48 Functions: 6 6 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 "ADBoundaryFlux3EqnBC.h"
      11             : #include "MooseVariable.h"
      12             : #include "THMIndicesVACE.h"
      13             : 
      14             : registerMooseObject("ThermalHydraulicsApp", ADBoundaryFlux3EqnBC);
      15             : 
      16             : InputParameters
      17       21883 : ADBoundaryFlux3EqnBC::validParams()
      18             : {
      19       21883 :   InputParameters params = ADOneDIntegratedBC::validParams();
      20             : 
      21       21883 :   params.addClassDescription(
      22             :       "Boundary conditions for the 1-D, 1-phase, variable-area Euler equations");
      23             : 
      24       43766 :   params.addRequiredCoupledVar("A_linear", "Cross-sectional area, linear");
      25       43766 :   params.addRequiredCoupledVar("rhoA", "Conserved variable: rho*A");
      26       43766 :   params.addRequiredCoupledVar("rhouA", "Conserved variable: rho*u*A");
      27       43766 :   params.addRequiredCoupledVar("rhoEA", "Conserved variable: rho*E*A");
      28             : 
      29       43766 :   params.addRequiredParam<UserObjectName>("boundary_flux", "Name of boundary flux user object");
      30             : 
      31       21883 :   return params;
      32           0 : }
      33             : 
      34       17135 : ADBoundaryFlux3EqnBC::ADBoundaryFlux3EqnBC(const InputParameters & parameters)
      35             :   : ADOneDIntegratedBC(parameters),
      36             : 
      37       17135 :     _A_linear(adCoupledValue("A_linear")),
      38             : 
      39       34270 :     _rhoA(getADMaterialProperty<Real>("rhoA")),
      40       34270 :     _rhouA(getADMaterialProperty<Real>("rhouA")),
      41       34270 :     _rhoEA(getADMaterialProperty<Real>("rhoEA")),
      42             : 
      43       17135 :     _rhoA_var(coupled("rhoA")),
      44       17135 :     _rhouA_var(coupled("rhouA")),
      45       17135 :     _rhoEA_var(coupled("rhoEA")),
      46             : 
      47       34270 :     _flux(getUserObject<ADBoundaryFluxBase>("boundary_flux"))
      48             : {
      49       17135 : }
      50             : 
      51             : void
      52       16754 : ADBoundaryFlux3EqnBC::initialSetup()
      53             : {
      54       16754 :   ADOneDIntegratedBC::initialSetup();
      55             : 
      56       16754 :   const auto jmap = getIndexMapping();
      57       16754 :   _equation_index = jmap.at(_var.number());
      58       16754 : }
      59             : 
      60             : ADReal
      61      559237 : ADBoundaryFlux3EqnBC::computeQpResidual()
      62             : {
      63      559237 :   const auto & flux = _flux.getFlux(
      64     1118474 :       _current_side, _current_elem->id(), fluxInputVector(), MetaPhysicL::raw_value(_normals[_qp]));
      65             : 
      66     1118474 :   return flux[_equation_index] * _normal * _test[_i][_qp];
      67             : }
      68             : 
      69             : std::vector<ADReal>
      70      557397 : ADBoundaryFlux3EqnBC::fluxInputVector() const
      71             : {
      72      557397 :   std::vector<ADReal> U(THMVACE1D::N_FLUX_INPUTS, 0);
      73      557397 :   U[THMVACE1D::RHOA] = _rhoA[_qp];
      74      557397 :   U[THMVACE1D::RHOUA] = _rhouA[_qp];
      75      557397 :   U[THMVACE1D::RHOEA] = _rhoEA[_qp];
      76      557397 :   U[THMVACE1D::AREA] = _A_linear[_qp];
      77             : 
      78      557397 :   return U;
      79             : }
      80             : 
      81             : std::map<unsigned int, unsigned int>
      82       16578 : ADBoundaryFlux3EqnBC::getIndexMapping() const
      83             : {
      84             :   std::map<unsigned int, unsigned int> jmap;
      85       16578 :   jmap.insert(std::pair<unsigned int, unsigned int>(_rhoA_var, THMVACE1D::MASS));
      86       16578 :   jmap.insert(std::pair<unsigned int, unsigned int>(_rhouA_var, THMVACE1D::MOMENTUM));
      87       16578 :   jmap.insert(std::pair<unsigned int, unsigned int>(_rhoEA_var, THMVACE1D::ENERGY));
      88             : 
      89       16578 :   return jmap;
      90             : }

Generated by: LCOV version 1.14