LCOV - code coverage report
Current view: top level - include/fvbcs - FVBoundaryCondition.h (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 2bf808 Lines: 1 1 100.0 %
Date: 2025-07-17 01:28:37 Functions: 1 1 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             : #pragma once
      11             : 
      12             : // MOOSE
      13             : #include "MooseObject.h"
      14             : #include "SetupInterface.h"
      15             : #include "ParallelUniqueId.h"
      16             : #include "FunctionInterface.h"
      17             : #include "DistributionInterface.h"
      18             : #include "UserObjectInterface.h"
      19             : #include "TransientInterface.h"
      20             : #include "PostprocessorInterface.h"
      21             : #include "VectorPostprocessorInterface.h"
      22             : #include "GeometricSearchInterface.h"
      23             : #include "BoundaryRestrictableRequired.h"
      24             : #include "MeshChangedInterface.h"
      25             : #include "TaggingInterface.h"
      26             : #include "MooseVariableDependencyInterface.h"
      27             : #include "ADFunctorInterface.h"
      28             : #include "FaceArgInterface.h"
      29             : #include "MooseVariableInterface.h"
      30             : 
      31             : // Forward declarations
      32             : template <typename>
      33             : class MooseVariableFE;
      34             : typedef MooseVariableFE<Real> MooseVariable;
      35             : typedef MooseVariableFE<VectorValue<Real>> VectorMooseVariable;
      36             : class MooseMesh;
      37             : class Problem;
      38             : class SubProblem;
      39             : class SystemBase;
      40             : class Assembly;
      41             : class FEProblemBase;
      42             : 
      43             : /**
      44             :  * Base class for creating new types of boundary conditions.
      45             :  */
      46             : class FVBoundaryCondition : public MooseObject,
      47             :                             public BoundaryRestrictableRequired,
      48             :                             public SetupInterface,
      49             :                             public FunctionInterface,
      50             :                             public DistributionInterface,
      51             :                             public UserObjectInterface,
      52             :                             public TransientInterface,
      53             :                             public PostprocessorInterface,
      54             :                             public VectorPostprocessorInterface,
      55             :                             public GeometricSearchInterface,
      56             :                             public MeshChangedInterface,
      57             :                             public TaggingInterface,
      58             :                             public MooseVariableInterface<Real>,
      59             :                             public MooseVariableDependencyInterface,
      60             :                             public ADFunctorInterface,
      61             :                             public FaceArgProducerInterface
      62             : {
      63             : public:
      64             :   /**
      65             :    * Class constructor.
      66             :    * @param parameters The InputParameters for the object
      67             :    * @param nodal Whether this BC is applied to nodes or not
      68             :    */
      69             :   FVBoundaryCondition(const InputParameters & parameters);
      70             : 
      71             :   static InputParameters validParams();
      72             : 
      73             :   /**
      74             :    * Get a reference to the subproblem
      75             :    * @return Reference to SubProblem
      76             :    */
      77             :   const SubProblem & subProblem() const { return _subproblem; }
      78             : 
      79          37 :   const MooseVariableFV<Real> & variable() const { return _var; }
      80             : 
      81             :   bool hasFaceSide(const FaceInfo & fi, bool fi_elem_side) const override;
      82             : 
      83             : protected:
      84             :   /**
      85             :    * Determine the single sided face argument when evaluating a functor on a face.
      86             :    * This is used to perform evaluations of material properties with the actual face values of
      87             :    * their dependences, rather than interpolate the material property to the boundary.
      88             :    * @param fi the FaceInfo for this face
      89             :    * @param limiter_type the limiter type, to be specified if more than the default average
      90             :    *        interpolation is required for the parameters of the functor
      91             :    * @param correct_skewness whether to perform skew correction at the face
      92             :    */
      93             :   Moose::FaceArg singleSidedFaceArg(
      94             :       const FaceInfo * fi = nullptr,
      95             :       Moose::FV::LimiterType limiter_type = Moose::FV::LimiterType::CentralDifference,
      96             :       bool correct_skewness = false,
      97             :       const Moose::StateArg * state_limiter = nullptr) const;
      98             : 
      99             :   MooseVariableFV<Real> & _var;
     100             : 
     101             :   /// Reference to SubProblem
     102             :   SubProblem & _subproblem;
     103             : 
     104             :   /// Reference to the ruling finite volume problem
     105             :   FEProblemBase & _fv_problem;
     106             : 
     107             :   /// Reference to SystemBase
     108             :   SystemBase & _sys;
     109             : 
     110             :   /// Thread id
     111             :   THREAD_ID _tid;
     112             : 
     113             :   /// Reference to assembly
     114             :   Assembly & _assembly;
     115             : 
     116             :   /// Mesh this BC is defined on
     117             :   MooseMesh & _mesh;
     118             : 
     119             :   /// Holds information for the face we are currently examining
     120             :   const FaceInfo * _face_info = nullptr;
     121             : };

Generated by: LCOV version 1.14