LCOV - code coverage report
Current view: top level - src/variables - MooseVariableField.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: fef103 Lines: 29 34 85.3 %
Date: 2025-09-03 20:01:23 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      207581 : MooseVariableField<OutputType>::validParams()
      21             : {
      22      207581 :   return MooseVariableFieldBase::validParams();
      23             : }
      24             : 
      25             : template <typename OutputType>
      26      186618 : MooseVariableField<OutputType>::MooseVariableField(const InputParameters & parameters)
      27             :   : MooseVariableFieldBase(parameters),
      28             :     Moose::FunctorBase<typename Moose::ADType<OutputType>::type>(name()),
      29             :     MeshChangedInterface(parameters),
      30      746472 :     _time_integrator(_sys.queryTimeIntegrator(_var_num))
      31             : {
      32      373236 : }
      33             : 
      34             : template <typename OutputType>
      35             : void
      36     7837968 : MooseVariableField<OutputType>::residualSetup()
      37             : {
      38     7837968 :   MooseVariableFieldBase::residualSetup();
      39     7837968 :   FunctorBase<typename Moose::ADType<OutputType>::type>::residualSetup();
      40     7837968 : }
      41             : 
      42             : template <typename OutputType>
      43             : void
      44     1308464 : MooseVariableField<OutputType>::jacobianSetup()
      45             : {
      46     1308464 :   MooseVariableFieldBase::jacobianSetup();
      47     1308464 :   FunctorBase<typename Moose::ADType<OutputType>::type>::jacobianSetup();
      48     1308464 : }
      49             : 
      50             : template <typename OutputType>
      51             : void
      52     1244389 : MooseVariableField<OutputType>::timestepSetup()
      53             : {
      54     1244389 :   MooseVariableFieldBase::timestepSetup();
      55     1244389 :   FunctorBase<typename Moose::ADType<OutputType>::type>::timestepSetup();
      56     1244389 : }
      57             : 
      58             : template <typename OutputType>
      59             : Moose::VarFieldType
      60   154980882 : MooseVariableField<OutputType>::fieldType() const
      61             : {
      62             :   if (std::is_same<OutputType, Real>::value)
      63   145812549 :     return Moose::VarFieldType::VAR_FIELD_STANDARD;
      64             :   else if (std::is_same<OutputType, RealVectorValue>::value)
      65     6542875 :     return Moose::VarFieldType::VAR_FIELD_VECTOR;
      66             :   else if (std::is_same<OutputType, RealEigenVector>::value)
      67     2625458 :     return Moose::VarFieldType::VAR_FIELD_ARRAY;
      68             :   else
      69             :     mooseError("Unknown variable field type");
      70             : }
      71             : 
      72             : template <typename OutputType>
      73             : bool
      74     1188742 : MooseVariableField<OutputType>::isArray() const
      75             : {
      76     1188742 :   const auto is_array = MooseVariableBase::isArray();
      77     1188742 :   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     1188742 :   return is_array;
      81             : }
      82             : 
      83             : template <typename OutputType>
      84             : bool
      85      402817 : MooseVariableField<OutputType>::isVector() const
      86             : {
      87      402817 :   return std::is_same<OutputType, RealVectorValue>::value;
      88             : }
      89             : 
      90             : template <>
      91             : template <>
      92             : const MooseArray<Real> &
      93         279 : MooseVariableField<Real>::genericDofValues<false>() const
      94             : {
      95         279 :   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