LCOV - code coverage report
Current view: top level - src/variables - MooseVariableField.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: #32971 (54bef8) with base c6cf66 Lines: 29 34 85.3 %
Date: 2026-05-29 20:35:17 Functions: 26 30 86.7 %
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 "MooseVariableField.h"
      11             : #include "SystemBase.h"
      12             : #include "TimeIntegrator.h"
      13             : 
      14             : #include "libmesh/fe_base.h"
      15             : 
      16             : using namespace Moose;
      17             : 
      18             : template <typename OutputType>
      19             : InputParameters
      20      144625 : MooseVariableField<OutputType>::validParams()
      21             : {
      22      144625 :   return MooseVariableFieldBase::validParams();
      23             : }
      24             : 
      25             : template <typename OutputType>
      26      180720 : MooseVariableField<OutputType>::MooseVariableField(const InputParameters & parameters)
      27             :   : MooseVariableFieldBase(parameters),
      28             :     Moose::FunctorBase<typename Moose::ADType<OutputType>::type>(name()),
      29             :     MeshChangedInterface(parameters),
      30      722880 :     _time_integrator(_sys.queryTimeIntegrator(_var_num))
      31             : {
      32      361440 : }
      33             : 
      34             : template <typename OutputType>
      35             : void
      36     7433477 : MooseVariableField<OutputType>::residualSetup()
      37             : {
      38     7433477 :   MooseVariableFieldBase::residualSetup();
      39     7433477 :   FunctorBase<typename Moose::ADType<OutputType>::type>::residualSetup();
      40     7433477 : }
      41             : 
      42             : template <typename OutputType>
      43             : void
      44     1232525 : MooseVariableField<OutputType>::jacobianSetup()
      45             : {
      46     1232525 :   MooseVariableFieldBase::jacobianSetup();
      47     1232525 :   FunctorBase<typename Moose::ADType<OutputType>::type>::jacobianSetup();
      48     1232525 : }
      49             : 
      50             : template <typename OutputType>
      51             : void
      52     1163013 : MooseVariableField<OutputType>::timestepSetup()
      53             : {
      54     1163013 :   MooseVariableFieldBase::timestepSetup();
      55     1163013 :   FunctorBase<typename Moose::ADType<OutputType>::type>::timestepSetup();
      56     1163013 : }
      57             : 
      58             : template <typename OutputType>
      59             : Moose::VarFieldType
      60   134136292 : MooseVariableField<OutputType>::fieldType() const
      61             : {
      62             :   if (std::is_same<OutputType, Real>::value)
      63   126092358 :     return Moose::VarFieldType::VAR_FIELD_STANDARD;
      64             :   else if (std::is_same<OutputType, RealVectorValue>::value)
      65     5622868 :     return Moose::VarFieldType::VAR_FIELD_VECTOR;
      66             :   else if (std::is_same<OutputType, RealEigenVector>::value)
      67     2421066 :     return Moose::VarFieldType::VAR_FIELD_ARRAY;
      68             :   else
      69             :     mooseError("Unknown variable field type");
      70             : }
      71             : 
      72             : template <typename OutputType>
      73             : bool
      74     1126966 : MooseVariableField<OutputType>::isArray() const
      75             : {
      76     1126966 :   const auto is_array = MooseVariableBase::isArray();
      77     1126966 :   if (std::is_same<OutputType, RealEigenVector>::value != is_array)
      78           0 :     mooseError("A variable is marked as an array variable in a base class, but in a derived class "
      79             :                "the output type is not consistent.");
      80     1126966 :   return is_array;
      81             : }
      82             : 
      83             : template <typename OutputType>
      84             : bool
      85      379944 : MooseVariableField<OutputType>::isVector() const
      86             : {
      87      379944 :   return std::is_same<OutputType, RealVectorValue>::value;
      88             : }
      89             : 
      90             : template <>
      91             : template <>
      92             : const MooseArray<Real> &
      93         332 : MooseVariableField<Real>::genericDofValues<false>() const
      94             : {
      95         332 :   return dofValues();
      96             : }
      97             : 
      98             : template <>
      99             : template <>
     100             : const MooseArray<Real> &
     101           0 : MooseVariableField<RealVectorValue>::genericDofValues<false>() const
     102             : {
     103           0 :   return dofValues();
     104             : }
     105             : 
     106             : template <>
     107             : template <>
     108             : const MooseArray<Real> &
     109           0 : MooseVariableField<RealEigenVector>::genericDofValues<false>() const
     110             : {
     111           0 :   mooseError("genericDofValues not implemented for array variables");
     112             : }
     113             : 
     114             : template class MooseVariableField<Real>;
     115             : template class MooseVariableField<RealVectorValue>;
     116             : template class MooseVariableField<RealEigenVector>;

Generated by: LCOV version 1.14