https://mooseframework.inl.gov
MooseVariableFE.h
Go to the documentation of this file.
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 #include "MooseTypes.h"
13 #include "MooseVariableFEBase.h"
14 #include "SubProblem.h"
15 #include "MooseMesh.h"
16 #include "MooseVariableField.h"
17 #include "MooseVariableData.h"
18 
19 #include "libmesh/numeric_vector.h"
20 #include "libmesh/dof_map.h"
21 #include "libmesh/elem.h"
22 #include "libmesh/quadrature.h"
23 #include "libmesh/dense_vector.h"
24 #include "libmesh/enum_fe_family.h"
25 
26 class TimeIntegrator;
27 template <typename>
32 
45 template <typename OutputType>
46 class MooseVariableFE : public MooseVariableField<OutputType>
47 {
48 public:
52 
58 
63 
71 
79 
84 
89 
91 
93 
94  void clearDofIndices() override;
95 
96  void prepare() override;
97  void prepareNeighbor() override;
98  void prepareLowerD() override;
99  virtual void prepareIC() override;
100 
101  void prepareAux() override;
102 
103  void reinitNode() override;
104  void reinitAux() override;
105  void reinitAuxNeighbor() override;
106 
107  void reinitNodes(const std::vector<dof_id_type> & nodes) override;
108  void reinitNodesNeighbor(const std::vector<dof_id_type> & nodes) override;
109 
115  bool usesPhi() const { return true; }
121  bool usesGradPhi() const { return true; }
122 
126  bool usesSecondPhi() const;
127 
132  bool usesSecondPhiNeighbor() const override final;
133 
137  bool computingSecond() const override final { return usesSecondPhi(); }
138 
142  bool computingCurl() const override final;
143 
147  bool computingDiv() const override final;
148 
149  bool isNodal() const override { return _element_data->isNodal(); }
150  bool hasDoFsOnNodes() const override { return _element_data->hasDoFsOnNodes(); }
151  bool supportsQpBasedLoops() const override { return true; }
152  bool supportsGeometricInfoBasedLoops() const override { return false; }
153  libMesh::FEContinuity getContinuity() const override { return _element_data->getContinuity(); };
154  const Node * const & node() const { return _element_data->node(); }
155  const dof_id_type & nodalDofIndex() const override { return _element_data->nodalDofIndex(); }
156  virtual bool isNodalDefined() const override;
157 
158  const Node * const & nodeNeighbor() const { return _neighbor_data->node(); }
159  const dof_id_type & nodalDofIndexNeighbor() const override
160  {
161  return _neighbor_data->nodalDofIndex();
162  }
163  bool isNodalNeighborDefined() const;
164 
165  const Elem * const & currentElem() const override { return _element_data->currentElem(); }
166 
170  const unsigned int & currentSide() const { return _element_data->currentSide(); }
171 
175  const Elem * const & neighbor() const { return _neighbor_data->currentElem(); }
176 
177  virtual void getDofIndices(const Elem * elem,
178  std::vector<dof_id_type> & dof_indices) const override;
179  const std::vector<dof_id_type> & dofIndices() const final { return _element_data->dofIndices(); }
180  unsigned int numberOfDofs() const final { return _element_data->numberOfDofs(); }
181  const std::vector<dof_id_type> & dofIndicesNeighbor() const final
182  {
183  return _neighbor_data->dofIndices();
184  }
185  const std::vector<dof_id_type> & dofIndicesLower() const final
186  {
187  return _lower_data->dofIndices();
188  }
189 
190  void clearAllDofIndices() final;
191 
192  unsigned int numberOfDofsNeighbor() override { return _neighbor_data->dofIndices().size(); }
193 
194  const FieldVariablePhiValue & phi() const override { return _element_data->phi(); }
195  const FieldVariablePhiGradient & gradPhi() const override final
196  {
197  return _element_data->gradPhi();
198  }
200  {
201  return _element_data->arrayGradPhi();
202  }
203  const FieldVariablePhiSecond & secondPhi() const override final;
204  const FieldVariablePhiCurl & curlPhi() const override final;
205  const FieldVariablePhiDivergence & divPhi() const override final;
206 
207  const FieldVariablePhiValue & phiFace() const override final { return _element_data->phiFace(); }
208  const FieldVariablePhiGradient & gradPhiFace() const override final
209  {
210  return _element_data->gradPhiFace();
211  }
213  {
214  return _element_data->arrayGradPhiFace();
215  }
216  const FieldVariablePhiSecond & secondPhiFace() const override final;
217  const FieldVariablePhiCurl & curlPhiFace() const;
218  const FieldVariablePhiDivergence & divPhiFace() const;
219 
220  const FieldVariablePhiValue & phiNeighbor() const override final { return _neighbor_data->phi(); }
221  const FieldVariablePhiGradient & gradPhiNeighbor() const override final
222  {
223  return _neighbor_data->gradPhi();
224  }
226  {
227  return _neighbor_data->arrayGradPhi();
228  }
229  const FieldVariablePhiSecond & secondPhiNeighbor() const override final;
230  const FieldVariablePhiCurl & curlPhiNeighbor() const;
232 
233  const FieldVariablePhiValue & phiFaceNeighbor() const override final
234  {
235  return _neighbor_data->phiFace();
236  }
237  const FieldVariablePhiGradient & gradPhiFaceNeighbor() const override final
238  {
239  return _neighbor_data->gradPhiFace();
240  }
242  {
243  return _neighbor_data->arrayGradPhiFace();
244  }
245  const FieldVariablePhiSecond & secondPhiFaceNeighbor() const override final;
248 
249  virtual const FieldVariablePhiValue & phiLower() const override { return _lower_data->phi(); }
250  const FieldVariablePhiGradient & gradPhiLower() const { return _lower_data->gradPhi(); }
251 
253  {
254  return _element_data->adGradPhi();
255  }
256 
258  {
259  return _element_data->adGradPhiFace();
260  }
261 
263  {
264  return _neighbor_data->adGradPhiFace();
265  }
266 
267  // damping
268  const FieldVariableValue & increment() const { return _element_data->increment(); }
269 
270  const FieldVariableValue & vectorTagValue(TagID tag) const override
271  {
272  return _element_data->vectorTagValue(tag);
273  }
275  {
276  return _element_data->vectorTagGradient(tag);
277  }
278  const DofValues & vectorTagDofValue(TagID tag) const override
279  {
280  return _element_data->vectorTagDofValue(tag);
281  }
282  const FieldVariableValue & matrixTagValue(TagID tag) const override
283  {
284  return _element_data->matrixTagValue(tag);
285  }
286 
288  const FieldVariableValue & sln() const override { return _element_data->sln(Moose::Current); }
289  const FieldVariableValue & slnOld() const override { return _element_data->sln(Moose::Old); }
290  const FieldVariableValue & slnOlder() const override { return _element_data->sln(Moose::Older); }
292 
294  const FieldVariableGradient & gradSln() const override
295  {
296  return _element_data->gradSln(Moose::Current);
297  }
298  const FieldVariableGradient & gradSlnOld() const override
299  {
300  return _element_data->gradSln(Moose::Old);
301  }
303  {
304  return _element_data->gradSln(Moose::Older);
305  }
307  {
308  return _element_data->gradSln(Moose::PreviousNL);
309  }
310 
312  const FieldVariableGradient & gradSlnDot() const { return _element_data->gradSlnDot(); }
313  const FieldVariableGradient & gradSlnDotDot() const { return _element_data->gradSlnDotDot(); }
314 
316  const FieldVariableSecond & secondSln() const { return _element_data->secondSln(Moose::Current); }
317  const FieldVariableSecond & secondSlnOld() const { return _element_data->secondSln(Moose::Old); }
319  {
320  return _element_data->secondSln(Moose::Older);
321  }
323  {
324  return _element_data->secondSln(Moose::PreviousNL);
325  }
326 
328  const FieldVariableCurl & curlSln() const { return _element_data->curlSln(Moose::Current); }
329  const FieldVariableCurl & curlSlnOld() const { return _element_data->curlSln(Moose::Old); }
330  const FieldVariableCurl & curlSlnOlder() const { return _element_data->curlSln(Moose::Older); }
331 
333  const FieldVariableDivergence & divSln() const { return _element_data->divSln(Moose::Current); }
334  const FieldVariableDivergence & divSlnOld() const { return _element_data->divSln(Moose::Old); }
336  {
337  return _element_data->divSln(Moose::Older);
338  }
339 
342  {
343  return _element_data->adSln();
344  }
345 
347  {
348  return _element_data->adGradSln();
349  }
351  {
352  return _element_data->adSecondSln();
353  }
355  {
356  return _element_data->adUDot();
357  }
359  {
360  return _element_data->adUDotDot();
361  }
363  {
364  return _element_data->adGradSlnDot();
365  }
367  {
368  return _element_data->adCurlSln();
369  }
370 
373  {
374  return _neighbor_data->adSln();
375  }
377  {
378  return _neighbor_data->adGradSln();
379  }
381  {
382  return _neighbor_data->adSecondSln();
383  }
385  {
386  return _neighbor_data->adUDot();
387  }
389  {
390  return _neighbor_data->adUDotDot();
391  }
393  {
394  return _neighbor_data->adGradSlnDot();
395  }
397  {
398  return _neighbor_data->adCurlSln();
399  }
400 
402  const FieldVariableValue & uDot() const { return _element_data->uDot(); }
403  const FieldVariableValue & uDotDot() const { return _element_data->uDotDot(); }
404  const FieldVariableValue & uDotOld() const { return _element_data->uDotOld(); }
405  const FieldVariableValue & uDotDotOld() const { return _element_data->uDotDotOld(); }
406  const VariableValue & duDotDu() const { return _element_data->duDotDu(); }
407  const VariableValue & duDotDotDu() const { return _element_data->duDotDotDu(); }
408 
410  const FieldVariableValue & slnNeighbor() const override
411  {
412  return _neighbor_data->sln(Moose::Current);
413  }
414  const FieldVariableValue & slnOldNeighbor() const override
415  {
416  return _neighbor_data->sln(Moose::Old);
417  }
420  {
421  return _neighbor_data->sln(Moose::PreviousNL);
422  }
423 
425  const FieldVariableGradient & gradSlnNeighbor() const override
426  {
427  return _neighbor_data->gradSln(Moose::Current);
428  }
429  const FieldVariableGradient & gradSlnOldNeighbor() const override
430  {
431  return _neighbor_data->gradSln(Moose::Old);
432  }
434  {
435  return _neighbor_data->gradSln(Moose::Older);
436  }
438  {
439  return _neighbor_data->gradSln(Moose::PreviousNL);
440  }
441 
443  const FieldVariableGradient & gradSlnNeighborDot() const { return _neighbor_data->gradSlnDot(); }
445  {
446  return _neighbor_data->gradSlnDotDot();
447  }
448 
451  {
452  return _neighbor_data->secondSln(Moose::Current);
453  }
455  {
456  return _neighbor_data->secondSln(Moose::Old);
457  }
459  {
460  return _neighbor_data->secondSln(Moose::Older);
461  }
463  {
464  return _neighbor_data->secondSln(Moose::PreviousNL);
465  }
466 
469  {
470  return _neighbor_data->curlSln(Moose::Current);
471  }
473  {
474  return _neighbor_data->curlSln(Moose::Old);
475  }
477  {
478  return _neighbor_data->curlSln(Moose::Older);
479  }
480 
483  {
484  return _neighbor_data->divSln(Moose::Current);
485  }
487  {
488  return _neighbor_data->divSln(Moose::Old);
489  }
491  {
492  return _neighbor_data->divSln(Moose::Older);
493  }
494 
496  const FieldVariableValue & uDotNeighbor() const { return _neighbor_data->uDot(); }
497  const FieldVariableValue & uDotDotNeighbor() const { return _neighbor_data->uDotDot(); }
498  const FieldVariableValue & uDotOldNeighbor() const { return _neighbor_data->uDotOld(); }
499  const FieldVariableValue & uDotDotOldNeighbor() const { return _neighbor_data->uDotDotOld(); }
500  const VariableValue & duDotDuNeighbor() const { return _neighbor_data->duDotDu(); }
501  const VariableValue & duDotDotDuNeighbor() const { return _neighbor_data->duDotDotDu(); }
502 
504  const ADTemplateVariableValue<OutputType> & adSlnLower() const { return _lower_data->adSln(); }
505  const FieldVariableValue & slnLower() const { return _lower_data->sln(Moose::Current); }
506  const FieldVariableValue & slnLowerOld() const { return _lower_data->sln(Moose::Old); }
507 
509  virtual void computeElemValues() override;
510  virtual void computeElemValuesFace() override;
511  virtual void computeNeighborValuesFace() override;
512  virtual void computeNeighborValues() override;
513  virtual void computeLowerDValues() override;
514 
515  virtual void setNodalValue(const OutputType & value, unsigned int idx = 0) override;
516 
517  virtual void setDofValue(const DofValue & value, unsigned int index) override;
518 
522  virtual void setDofValues(const DenseVector<DofValue> & values) override;
523  virtual void setLowerDofValues(const DenseVector<DofValue> & values) override;
524 
529 
533  DofValue getNodalValue(const Node & node) const;
537  DofValue getNodalValueOld(const Node & node) const;
541  DofValue getNodalValueOlder(const Node & node) const;
548  DofValue getElementalValue(const Elem * elem, unsigned int idx = 0) const;
555  DofValue getElementalValueOld(const Elem * elem, unsigned int idx = 0) const;
562  DofValue getElementalValueOlder(const Elem * elem, unsigned int idx = 0) const;
563 
567  virtual void insert(libMesh::NumericVector<libMesh::Number> & vector) override;
568  virtual void insertLower(libMesh::NumericVector<libMesh::Number> & vector) override;
569 
573  virtual void add(libMesh::NumericVector<libMesh::Number> & vector) override;
574 
578  void addSolution(const DenseVector<libMesh::Number> & v);
579 
583  void addSolutionNeighbor(const DenseVector<libMesh::Number> & v);
584 
585  const DofValues & dofValue() const;
586  const DofValues & dofValues() const override;
587  const DofValues & dofValuesOld() const override;
588  const DofValues & dofValuesOlder() const override;
589  const DofValues & dofValuesPreviousNL() const override;
590  const DofValues & dofValuesNeighbor() const override;
591  const DofValues & dofValuesOldNeighbor() const override;
592  const DofValues & dofValuesOlderNeighbor() const override;
593  const DofValues & dofValuesPreviousNLNeighbor() const override;
594  const DofValues & dofValuesDot() const override;
595  const DofValues & dofValuesDotNeighbor() const override;
596  const DofValues & dofValuesDotNeighborResidual() const;
597  const DofValues & dofValuesDotOld() const override;
598  const DofValues & dofValuesDotOldNeighbor() const override;
599  const DofValues & dofValuesDotDot() const override;
600  const DofValues & dofValuesDotDotNeighbor() const override;
602  const DofValues & dofValuesDotDotOld() const override;
603  const DofValues & dofValuesDotDotOldNeighbor() const override;
604  const MooseArray<libMesh::Number> & dofValuesDuDotDu() const override;
605  const MooseArray<libMesh::Number> & dofValuesDuDotDuNeighbor() const override;
606  const MooseArray<libMesh::Number> & dofValuesDuDotDotDu() const override;
608 
609  const ADDofValues & adDofValues() const override;
610  const ADDofValues & adDofValuesNeighbor() const override;
611  const ADDofValues & adDofValuesDot() const override;
612 
617 
622 
629  OutputType getValue(const Elem * elem, const std::vector<std::vector<OutputShape>> & phi) const;
630 
638  const Elem * elem,
639  const std::vector<std::vector<typename OutputTools<OutputType>::OutputShapeGradient>> &
640  grad_phi) const;
641 
645  virtual std::size_t phiSize() const final { return _element_data->phiSize(); }
649  virtual std::size_t phiFaceSize() const final { return _element_data->phiFaceSize(); }
653  virtual std::size_t phiNeighborSize() const final { return _neighbor_data->phiSize(); }
657  virtual std::size_t phiFaceNeighborSize() const final { return _neighbor_data->phiFaceSize(); }
658 
659  std::size_t phiLowerSize() const final { return _lower_data->phiSize(); }
660 
664  const OutputType & nodalValue() const;
665  const OutputType & nodalValueOld() const;
666  const OutputType & nodalValueOlder() const;
667  const OutputType & nodalValuePreviousNL() const;
668  const OutputType & nodalValueDot() const;
669  const OutputType & nodalValueDotDot() const;
670  const OutputType & nodalValueDotOld() const;
671  const OutputType & nodalValueDotDotOld() const;
672  const OutputType & nodalValueDuDotDu() const;
673  const OutputType & nodalValueDuDotDotDu() const;
674  const OutputType & nodalValueNeighbor() const;
675  const OutputType & nodalValueOldNeighbor() const;
676  const OutputType & nodalValueOlderNeighbor() const;
677  const OutputType & nodalValuePreviousNLNeighbor() const;
678  const OutputType & nodalValueDotNeighbor() const;
679  const OutputType & nodalValueDotNeighborResidual() const;
680  const OutputType & nodalValueDotDotNeighbor() const;
681  const OutputType & nodalValueDotDotNeighborResidual() const;
682  const OutputType & nodalValueDotOldNeighbor() const;
683  const OutputType & nodalValueDotDotOldNeighbor() const;
684  const OutputType & nodalValueDuDotDuNeighbor() const;
685  const OutputType & nodalValueDuDotDotDuNeighbor() const;
686 
687  const MooseArray<OutputType> & nodalValueArray() const override
688  {
689  return _element_data->nodalValueArray(Moose::Current);
690  }
692  {
693  return _element_data->nodalValueArray(Moose::Old);
694  }
696  {
697  return _element_data->nodalValueArray(Moose::Older);
698  }
699 
700  const DofValues & nodalVectorTagValue(TagID tag) const override;
701  const DofValues & nodalMatrixTagValue(TagID tag) const override;
702 
703  const typename Moose::ADType<OutputType>::type & adNodalValue() const;
704 
705  virtual void computeNodalValues() override;
706  virtual void computeNodalNeighborValues() override;
707 
708  unsigned int oldestSolutionStateRequested() const override final;
709 
710  void setActiveTags(const std::set<TagID> & vtags) override;
711 
712  virtual void meshChanged() override;
713  virtual void residualSetup() override;
714  virtual void jacobianSetup() override;
715 
716  virtual void sizeMatrixTagData() override;
717 
718  bool supportsFaceArg() const override final { return true; }
719  bool supportsElemSideQpArg() const override final { return true; }
720 
721 protected:
723 
725  std::unique_ptr<MooseVariableData<OutputType>> _element_data;
726 
728  std::unique_ptr<MooseVariableData<OutputType>> _neighbor_data;
729 
731  std::unique_ptr<MooseVariableData<OutputType>> _lower_data;
732 
744 
751  ValueType
752  faceEvaluate(const FaceArg &, const StateArg &, const std::vector<ValueType> & cache_data) const;
753 
754  ValueType evaluate(const ElemQpArg & elem_qp, const StateArg & state) const override final;
755  ValueType evaluate(const ElemSideQpArg & elem_side_qp,
756  const StateArg & state) const override final;
757  ValueType evaluate(const ElemArg &, const StateArg &) const override final;
758  ValueType evaluate(const ElemPointArg &, const StateArg &) const override final;
759  ValueType evaluate(const NodeArg & node_arg, const StateArg & state) const override final;
760  ValueType evaluate(const FaceArg &, const StateArg &) const override final;
761 
762  GradientType evaluateGradient(const ElemQpArg & elem_qp, const StateArg & state) const override;
763  GradientType evaluateGradient(const ElemSideQpArg & elem_side_qp,
764  const StateArg & state) const override final;
765  GradientType evaluateGradient(const ElemArg &, const StateArg &) const override final;
766 
767  DotType evaluateDot(const ElemQpArg & elem_qp, const StateArg & state) const override final;
768  DotType evaluateDot(const ElemSideQpArg & elem_side_qp,
769  const StateArg & state) const override final;
770  DotType evaluateDot(const ElemArg &, const StateArg &) const override final;
771  DotType evaluateDot(const FaceArg &, const StateArg &) const override final;
772 
773  GradientType evaluateGradDot(const ElemArg &, const StateArg &) const override final;
774 
775 private:
780  template <typename Shapes, typename Solution, typename GradShapes, typename GradSolution>
781  void computeSolution(const Elem * elem,
782  unsigned int n_qp,
783  const StateArg & state,
784  const Shapes & phi,
785  Solution & local_soln,
786  const GradShapes & grad_phi,
787  GradSolution & grad_local_soln,
788  Solution & dot_local_soln,
789  GradSolution & grad_dot_local_soln) const;
790 
794  void
795  evaluateOnElement(const ElemQpArg & elem_qp, const StateArg & state, bool cache_eligible) const;
796 
800  void evaluateOnElementSide(const ElemSideQpArg & elem_side_qp,
801  const StateArg & state,
802  bool cache_eligible) const;
803 
807  mutable const Elem * _current_elem_qp_functor_elem = nullptr;
808 
810  mutable std::vector<ValueType> _current_elem_qp_functor_sln;
811 
813  mutable std::vector<GradientType> _current_elem_qp_functor_gradient;
814 
816  mutable std::vector<DotType> _current_elem_qp_functor_dot;
817 
819  mutable std::vector<GradientType> _current_elem_qp_functor_grad_dot;
820 
824  mutable std::pair<const Elem *, unsigned int> _current_elem_side_qp_functor_elem_side{
825  nullptr, libMesh::invalid_uint};
826 
828  mutable std::vector<ValueType> _current_elem_side_qp_functor_sln;
829 
831  mutable std::vector<GradientType> _current_elem_side_qp_functor_gradient;
832 
834  mutable std::vector<DotType> _current_elem_side_qp_functor_dot;
835 
838  mutable std::vector<GradientType> _current_elem_side_qp_functor_grad_dot;
839 };
840 
841 template <typename OutputType>
842 inline const typename MooseVariableFE<OutputType>::ADDofValues &
844 {
845  return _element_data->adDofValues();
846 }
847 
848 template <typename OutputType>
849 inline const typename MooseVariableFE<OutputType>::ADDofValues &
851 {
852  return _neighbor_data->adDofValues();
853 }
854 
855 template <typename OutputType>
856 inline const typename MooseVariableFE<OutputType>::ADDofValues &
858 {
859  return _element_data->adDofValuesDot();
860 }
861 
862 template <typename OutputType>
863 inline const typename Moose::ADType<OutputType>::type &
865 {
866  return _element_data->adNodalValue();
867 }
868 
869 template <typename OutputType>
870 void
871 MooseVariableFE<OutputType>::setActiveTags(const std::set<TagID> & vtags)
872 {
873  _element_data->setActiveTags(vtags);
874  _neighbor_data->setActiveTags(vtags);
875  _lower_data->setActiveTags(vtags);
876 }
877 
878 // Declare all the specializations, as the template specialization declarations below must know
879 template <>
881 template <>
883 template <>
885 template <>
888  const std::vector<std::vector<Real>> & phi) const;
889 template <>
891  const Elem * elem, const std::vector<std::vector<RealVectorValue>> & grad_phi) const;
892 template <>
894  const StateArg &,
895  bool) const;
896 template <>
898  const StateArg &,
899  bool) const;
900 template <>
902 MooseVariableFE<RealEigenVector>::evaluate(const ElemQpArg &, const StateArg &) const;
903 template <>
905 MooseVariableFE<RealEigenVector>::evaluate(const ElemSideQpArg &, const StateArg &) const;
906 template <>
908 MooseVariableFE<RealEigenVector>::evaluateGradient(const ElemQpArg &, const StateArg &) const;
909 template <>
911 MooseVariableFE<RealEigenVector>::evaluateGradient(const ElemSideQpArg &, const StateArg &) const;
912 template <>
914 MooseVariableFE<RealEigenVector>::evaluateDot(const ElemQpArg &, const StateArg &) const;
915 template <>
917 MooseVariableFE<RealEigenVector>::evaluateDot(const ElemSideQpArg &, const StateArg &) const;
918 
919 // Prevent implicit instantiation in other translation units where these classes are used
920 extern template class MooseVariableFE<Real>;
921 extern template class MooseVariableFE<RealVectorValue>;
922 extern template class MooseVariableFE<RealEigenVector>;
typename MooseVariableField< Real >::FieldVariablePhiValue FieldVariablePhiValue
typename OutputTools< typename Moose::ADType< T >::type >::VariableSecond ADTemplateVariableSecond
Definition: MooseTypes.h:654
const ADDofValues & adDofValuesDot() const override
Return the AD time derivatives at dofs.
const FieldVariableValue & vectorTagValue(TagID tag) const override
tag values getters
void computeSolution(const Elem *elem, unsigned int n_qp, const StateArg &state, const Shapes &phi, Solution &local_soln, const GradShapes &grad_phi, GradSolution &grad_local_soln, Solution &dot_local_soln, GradSolution &grad_dot_local_soln) const
Compute the solution, gradient, time derivative, and gradient of the time derivative with provided sh...
virtual void setDofValues(const DenseVector< DofValue > &values) override
Set local DOF values and evaluate the values on quadrature points.
const ADTemplateVariableGradient< OutputType > & adGradSlnDot() const override
AD grad of time derivative solution getter.
const FieldVariableValue & uDotDotNeighbor() const
const FieldVariableCurl & curlSlnNeighbor() const
neighbor solution curls
const Node *const & node() const
typename MooseVariableField< Real >::OutputShapeGradient OutputShapeGradient
typename OutputTools< typename Moose::ADType< T >::type >::VariableCurl ADTemplateVariableCurl
Definition: MooseTypes.h:656
const MooseArray< libMesh::Number > & dofValuesDuDotDotDu() const override
const FieldVariableSecond & secondSlnOlderNeighbor() const
GradientType evaluateGradDot(const ElemArg &, const StateArg &) const override final
Evaluate the functor gradient-dot with a given element.
bool computingCurl() const override final
Whether or not this variable is computing the curl.
bool isNodalNeighborDefined() const
const OutputType & nodalValueDuDotDotDu() const
const DofValues & nodalVectorTagValue(TagID tag) const override
bool computingDiv() const override final
Whether or not this variable is computing the divergence.
const ADTemplateVariableTestGradient< OutputShape > & adGradPhiFace() const
OutputTools< OutputType >::OutputGradient getGradient(const Elem *elem, const std::vector< std::vector< typename OutputTools< OutputType >::OutputShapeGradient >> &grad_phi) const
Compute the variable gradient value at a point on an element.
ValueType evaluate(const ElemQpArg &elem_qp, const StateArg &state) const override final
const FieldVariableGradient & gradSlnPreviousNL() const
typename MooseVariableField< Real >::OutputGradient OutputGradient
const unsigned int invalid_uint
const FieldVariablePhiValue & phiNeighbor() const override final
Return the variable&#39;s shape functions on a neighboring element.
const OutputType & nodalValueOld() const
Class for stuff related to variables.
Definition: Adaptivity.h:33
typename MooseVariableField< Real >::FieldVariablePhiSecond FieldVariablePhiSecond
unsigned int TagID
Definition: MooseTypes.h:238
const OutputType & nodalValueDuDotDu() const
const OutputType & nodalValueDotDotOld() const
const FieldVariablePhiDivergence & divPhiNeighbor() const
const OutputType & nodalValueDot() const
Class for stuff related to variables.
const MooseArray< libMesh::Number > & dofValuesDuDotDu() const override
const FieldVariableSecond & secondSlnPreviousNLNeighbor() const
OutputType getValue(const Elem *elem, const std::vector< std::vector< OutputShape >> &phi) const
Compute the variable value at a point on an element.
const FieldVariableCurl & curlSlnOldNeighbor() const
DofValue getElementalValueOlder(const Elem *elem, unsigned int idx=0) const
Get the older value of this variable on an element.
virtual void setNodalValue(const OutputType &value, unsigned int idx=0) override
virtual void computeLowerDValues() override
compute values at quadrature points on the lower dimensional element
const FieldVariableGradient & gradSlnNeighborDotDot() const
std::vector< DotType > _current_elem_qp_functor_dot
The values of the time derivative for the _current_elem_qp_functor_elem.
const DofValues & dofValuesDotDotNeighborResidual() const
const OutputType & nodalValueNeighbor() const
typename MooseVariableField< Real >::FieldVariablePhiCurl FieldVariablePhiCurl
const FieldVariableGradient & gradSln() const override
element gradients
const FieldVariablePhiCurl & curlPhiFaceNeighbor() const
const FieldVariableValue & slnNeighbor() const override
neighbor solutions
const MooseArray< libMesh::Number > & dofValuesDuDotDuNeighbor() const override
const VariableValue & duDotDuNeighbor() const
const InputParameters & parameters() const
Get the parameters of the object.
Definition: MooseBase.h:131
void reinitAux() override
const FieldVariableSecond & secondSlnOld() const
const FieldVariableValue & slnOlderNeighbor() const
const OutputType & nodalValuePreviousNLNeighbor() const
void addSolution(const DenseVector< libMesh::Number > &v)
Add passed in local DOF values onto the current solution.
const ADTemplateVariableSecond< OutputType > & adSecondSlnNeighbor() const override
AD second neighbor solution getter.
virtual std::size_t phiFaceNeighborSize() const final
Return phiFaceNeighbor size.
void reinitNodes(const std::vector< dof_id_type > &nodes) override
const std::vector< dof_id_type > & dofIndicesLower() const final
Get dof indices for the current lower dimensional element (this is meaningful when performing mortar ...
virtual void sizeMatrixTagData() override
Size data structures related to matrix tagging.
const OutputType & nodalValueDuDotDuNeighbor() const
const OutputType & nodalValueDuDotDotDuNeighbor() const
std::unique_ptr< MooseVariableData< OutputType > > _neighbor_data
Holder for all the data associated with the neighbor element.
virtual void setDofValue(const DofValue &value, unsigned int index) override
Degree of freedom value setters.
void prepareNeighbor() override
Prepare the neighbor element degrees of freedom.
MooseVariableFE(const InputParameters &parameters)
const FieldVariablePhiGradient & gradPhiNeighbor() const override final
Return the gradients of the variable&#39;s shape functions on a neighboring element.
const OutputType & nodalValueDotDotNeighbor() const
const DofValues & dofValuesOlder() const override
void insertNodalValue(libMesh::NumericVector< libMesh::Number > &residual, const DofValue &v)
Write a nodal value to the passed-in solution vector.
typename OutputTools< typename Moose::ADType< T >::type >::VariableValue ADTemplateVariableValue
Definition: MooseTypes.h:648
const FieldVariableValue & slnLowerOld() const
const FieldVariableDivergence & divSlnOld() const
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system...
const DofValues & dofValuesDotDotOldNeighbor() const override
const MooseArray< libMesh::Number > & dofValuesDuDotDotDuNeighbor() const override
const FieldVariableGradient & gradSlnPreviousNLNeighbor() const
typename MooseVariableField< Real >::FieldVariableValue FieldVariableValue
const OutputType & nodalValueDotDotOldNeighbor() const
const ADTemplateVariableValue< OutputType > & adSlnNeighbor() const override
neighbor AD
const FieldVariablePhiSecond & secondPhi() const override final
Return the rank-2 tensor of second derivatives of the variable&#39;s elemental shape functions.
const MappedArrayVariablePhiGradient & arrayGradPhiFaceNeighbor() const
const FieldVariableValue & uDotOld() const
typename MooseVariableField< Real >::OutputShapeSecond OutputShapeSecond
const FieldVariablePhiDivergence & divPhi() const override final
Divergence of the shape functions.
typename MooseVariableField< Real >::FieldVariableGradient FieldVariableGradient
bool hasDoFsOnNodes() const override
Does this variable have DoFs on nodes.
A structure that is used to evaluate Moose functors at an arbitrary physical point contained within a...
virtual void prepareIC() override
Prepare the initial condition.
bool supportsQpBasedLoops() const override
Whether this variable supports QP-indexed loops.
bool usesSecondPhiNeighbor() const override final
Whether or not this variable is actually using the shape function second derivative on a neighbor...
const ADTemplateVariableValue< OutputType > & adUDotNeighbor() const override
AD neighbor time derivative getter.
const FieldVariableCurl & curlSlnOld() const
const ADTemplateVariableValue< OutputType > & adUDot() const override
AD time derivative getter.
const ADTemplateVariableGradient< OutputType > & adGradSlnNeighborDot() const override
AD grad of time derivative neighbor solution getter.
const DofValues & dofValuesOld() const override
typename MooseVariableField< Real >::OutputSecond OutputSecond
void addSolutionNeighbor(const DenseVector< libMesh::Number > &v)
Add passed in local neighbor DOF values onto the current solution.
const DofValues & nodalMatrixTagValue(TagID tag) const override
virtual void jacobianSetup() override
typename FunctorReturnType< T, FunctorEvaluationKind::Gradient >::type GradientType
This rigmarole makes it so that a user can create functors that return containers (std::vector...
Definition: MooseFunctor.h:149
std::vector< GradientType > _current_elem_qp_functor_grad_dot
The values of the gradient of the time derivative for the _current_elem_qp_functor_elem.
const ADTemplateVariableSecond< OutputType > & adSecondSln() const override
AD second solution getter.
bool supportsFaceArg() const override final
Whether this functor supports evaluation with FaceArg.
std::pair< const Elem *, unsigned int > _current_elem_side_qp_functor_elem_side
Keep track of the current elem-side-qp functor element and side in order to enable local caching (e...
const DofValues & dofValuesDotOldNeighbor() const override
const FieldVariableGradient & gradSlnOlderNeighbor() const
const ADDofValues & adDofValuesNeighbor() const override
Return the AD neighbor dof values.
virtual void computeNodalValues() override
Compute nodal values of this variable.
const DofValues & dofValuesDot() const override
const FieldVariableSecond & secondSlnOldNeighbor() const
bool usesSecondPhi() const
Whether or not this variable is computing any second derivatives.
const MooseArray< OutputType > & nodalValueOldArray() const override
const FieldVariablePhiCurl & curlPhiNeighbor() const
virtual void insertLower(libMesh::NumericVector< libMesh::Number > &vector) override
Insert the currently cached degree of freedom values for a lower-dimensional element into the provide...
const FieldVariableValue & uDot() const
element dots
const DofValues & dofValue() const
MooseVariableFE< RealVectorValue > VectorMooseVariable
const FieldVariablePhiGradient & gradPhiFaceNeighbor() const override final
Return the gradients of the variable&#39;s shape functions on a neighboring element face.
GradientType evaluateGradient(const ElemQpArg &elem_qp, const StateArg &state) const override
void prepareLowerD() override
Prepare a lower dimensional element&#39;s degrees of freedom.
const FieldVariableCurl & curlSln() const
element curls
typename MooseVariableField< Real >::FieldVariableTestValue FieldVariableTestValue
std::vector< DotType > _current_elem_side_qp_functor_dot
The values of the time derivative for the _current_elem_side_qp_functor_elem_side.
ValueType faceEvaluate(const FaceArg &, const StateArg &, const std::vector< ValueType > &cache_data) const
A common method that both evaluate(FaceArg) and evaluateDot(FaceArg) can call.
unsigned int numberOfDofsNeighbor() override
const VariableValue & duDotDotDu() const
const ADTemplateVariableCurl< OutputType > & adCurlSln() const override
AD curl solution getter.
libMesh::TensorTools::DecrementRank< OutputShape >::type OutputShapeDivergence
const MappedArrayVariablePhiGradient & arrayGradPhi() const
typename MooseVariableField< Real >::FieldVariableDivergence FieldVariableDivergence
const FieldVariablePhiCurl & curlPhiFace() const
const MooseArray< OutputType > & nodalValueOlderArray() const override
const OutputType & nodalValueDotDot() const
const FieldVariableValue & uDotDotOldNeighbor() const
const OutputType & nodalValueDotDotNeighborResidual() const
DofValue getNodalValueOlder(const Node &node) const
Get the t-2 value of this variable at given node.
const DofValues & dofValuesOlderNeighbor() const override
const std::vector< dof_id_type > & dofIndices() const final
Get local DoF indices.
const ADTemplateVariableTestGradient< OutputShape > & adGradPhiFaceNeighbor() const
const FieldVariableDivergence & divSlnOlder() const
const FieldVariableSecond & secondSlnPreviousNL() const
const OutputType & nodalValueOlder() const
A structure defining a "face" evaluation calling argument for Moose functors.
void reinitAuxNeighbor() override
DofValue getNodalValueOld(const Node &node) const
Get the old value of this variable at given node.
const MappedArrayVariablePhiGradient & arrayGradPhiNeighbor() const
const DofValues & dofValuesDotDotOld() const override
virtual void getDofIndices(const Elem *elem, std::vector< dof_id_type > &dof_indices) const override
virtual void computeElemValuesFace() override
Compute values at facial quadrature points.
const FieldVariableValue & slnPreviousNL() const
const OutputType & nodalValueDotNeighbor() const
unsigned int numberOfDofs() const final
Get the number of local DoFs.
const FieldVariableValue & uDotDot() const
const FieldVariableValue & sln() const override
element solutions
void setActiveTags(const std::set< TagID > &vtags) override
Set the active vector tags.
const FieldVariableSecond & secondSlnNeighbor() const
neighbor solution seconds
const FieldVariablePhiValue & phi() const override
Return the variable&#39;s elemental shape functions.
libMesh::FEContinuity getContinuity() const override
Return the continuity of this variable.
const DofValues & dofValuesDotNeighborResidual() const
MooseVariableFE< RealEigenVector > ArrayMooseVariable
std::vector< std::vector< Eigen::Map< RealDIMValue > > > MappedArrayVariablePhiGradient
Definition: MooseTypes.h:386
std::size_t phiLowerSize() const final
Return the number of shape functions on the lower dimensional element for this variable.
typename OutputTools< typename Moose::ADType< T >::type >::VariableTestGradient ADTemplateVariableTestGradient
Definition: MooseTypes.h:676
typename MooseVariableField< Real >::FieldVariableTestDivergence FieldVariableTestDivergence
const FieldVariableSecond & secondSlnOlder() const
std::vector< GradientType > _current_elem_side_qp_functor_grad_dot
The values of the gradient of the time derivative for the _current_elem_side_qp_functor_elem_side.
typename MooseVariableField< Real >::FieldVariableTestSecond FieldVariableTestSecond
typename MooseVariableField< Real >::OutputShapeDivergence OutputShapeDivergence
const FieldVariableValue & uDotDotOld() const
typename OutputTools< typename Moose::ADType< T >::type >::VariableGradient ADTemplateVariableGradient
Definition: MooseTypes.h:651
const unsigned int & currentSide() const
Current side this variable is being evaluated on.
virtual void computeNodalNeighborValues() override
Compute nodal values of this variable in the neighbor.
typename MooseVariableField< Real >::FieldVariableSecond FieldVariableSecond
const FieldVariableGradient & vectorTagGradient(TagID tag) const
A structure that is used to evaluate Moose functors logically at an element/cell center.
virtual void meshChanged() override
Called on this object when the mesh changes.
const ADTemplateVariableValue< OutputType > & adSln() const override
AD.
std::vector< ValueType > _current_elem_qp_functor_sln
The values of the solution for the _current_elem_qp_functor_elem.
const FieldVariablePhiSecond & secondPhiFace() const override final
Return the rank-2 tensor of second derivatives of the variable&#39;s shape functions on an element face...
const Node *const & nodeNeighbor() const
Argument for requesting functor evaluation at a quadrature point location in an element.
const FieldVariableValue & uDotNeighbor() const
neighbor dots
const OutputType & nodalValue() const
Methods for retrieving values of variables at the nodes.
const FieldVariableValue & increment() const
typename MooseVariableField< Real >::FieldVariableCurl FieldVariableCurl
virtual void add(libMesh::NumericVector< libMesh::Number > &vector) override
Add the current local DOF values to the input vector.
void reinitNodesNeighbor(const std::vector< dof_id_type > &nodes) override
const DofValues & dofValuesNeighbor() const override
const FieldVariablePhiSecond & secondPhiNeighbor() const override final
Return the rank-2 tensor of second derivatives of the variable&#39;s shape functions on a neighboring ele...
std::unique_ptr< MooseVariableData< OutputType > > _lower_data
Holder for all the data associated with the lower dimeensional element.
const FieldVariableSecond & secondSln() const
element seconds
virtual std::size_t phiFaceSize() const final
Return phiFace size.
const DofValues & dofValuesDotDot() const override
typename MooseVariableField< Real >::FieldVariableTestGradient FieldVariableTestGradient
void computeIncrementAtQps(const libMesh::NumericVector< libMesh::Number > &increment_vec)
Compute and store incremental change in solution at QPs based on increment_vec.
bool supportsGeometricInfoBasedLoops() const override
Whether this variable supports geometric-info-based loops, such as ElemInfo/FaceInfo loops...
void clearDofIndices() override
Clear out the dof indices.
const FieldVariableValue & slnLower() const
const FieldVariableGradient & gradSlnOldNeighbor() const override
MooseVariableFE< Real > MooseVariable
const ADTemplateVariableValue< OutputType > & adUDotDot() const override
AD second time derivative getter.
const FieldVariableGradient & gradSlnOld() const override
typename MooseVariableField< Real >::FieldVariablePhiGradient FieldVariablePhiGradient
const ADTemplateVariableGradient< OutputType > & adGradSlnNeighbor() const override
AD grad neighbor solution getter.
bool isNodal() const override
Is this variable nodal.
const FieldVariableGradient & gradSlnNeighbor() const override
neighbor solution gradients
void evaluateOnElement(const ElemQpArg &elem_qp, const StateArg &state, bool cache_eligible) const
Evaluate solution and gradient for the elem_qp argument.
void computeIncrementAtNode(const libMesh::NumericVector< libMesh::Number > &increment_vec)
Compute and store incremental change at the current node based on increment_vec.
virtual void computeNeighborValuesFace() override
Compute values at facial quadrature points for the neighbor.
const Elem *const & neighbor() const
Current neighboring element.
typename MooseVariableDataBase< OutputType >::ADDofValue ADDofValue
Eigen::Matrix< Real, Eigen::Dynamic, Moose::dim > RealVectorArrayValue
Definition: MooseTypes.h:149
OutputTools< Real >::VariableValue VariableValue
Definition: MooseTypes.h:343
const MooseArray< OutputType > & nodalValueArray() const override
Methods for retrieving values of variables at the nodes in a MooseArray for AuxKernelBase.
const FieldVariableValue & slnOlder() const override
const FieldVariablePhiSecond & secondPhiFaceNeighbor() const override final
Return the rank-2 tensor of second derivatives of the variable&#39;s shape functions on a neighboring ele...
virtual std::size_t phiSize() const final
Return phi size.
const dof_id_type & nodalDofIndexNeighbor() const override
const OutputType & nodalValueDotOldNeighbor() const
virtual void insert(libMesh::NumericVector< libMesh::Number > &vector) override
Set the current local DOF values to the input vector.
Base class for time integrators.
const OutputType & nodalValueOldNeighbor() const
const DofValues & dofValuesPreviousNL() const override
virtual bool isNodalDefined() const override
Is this variable defined at nodes.
const ADTemplateVariableCurl< OutputType > & adCurlSlnNeighbor() const override
AD curl neighbor solution getter.
const DofValues & dofValues() const override
dof values getters
const dof_id_type & nodalDofIndex() const override
const FieldVariableGradient & gradSlnNeighborDot() const
neighbor grad dots
const FieldVariableGradient & gradSlnDotDot() const
const ADTemplateVariableGradient< OutputType > & adGradSln() const override
AD grad solution getter.
const FieldVariableCurl & curlSlnOlder() const
const FieldVariablePhiCurl & curlPhi() const override final
Curl of the shape functions.
static InputParameters validParams()
virtual void computeNeighborValues() override
Compute values at quadrature points for the neighbor.
typename MooseVariableDataBase< OutputType >::ADDofValues ADDofValues
virtual void setLowerDofValues(const DenseVector< DofValue > &values) override
Set local DOF values for a lower dimensional element and evaluate the values on quadrature points...
const std::vector< dof_id_type > & dofIndicesNeighbor() const final
Get neighbor DOF indices for currently selected element.
typename MooseVariableField< Real >::OutputShape OutputShape
std::vector< GradientType > _current_elem_qp_functor_gradient
The values of the gradient for the _current_elem_qp_functor_elem.
const FieldVariableValue & matrixTagValue(TagID tag) const override
const FieldVariablePhiDivergence & divPhiFaceNeighbor() const
bool computingSecond() const override final
Whether or not this variable is computing any second derivatives.
DofValue getElementalValueOld(const Elem *elem, unsigned int idx=0) const
Get the old value of this variable on an element.
std::vector< GradientType > _current_elem_side_qp_functor_gradient
The values of the gradient for the _current_elem_side_qp_functor_elem_side.
const FieldVariableDivergence & divSlnOldNeighbor() const
DofValue getNodalValue(const Node &node) const
Get the value of this variable at given node.
virtual const FieldVariablePhiValue & phiLower() const override
Return the variable&#39;s shape functions on a lower-dimensional element.
const FieldVariablePhiGradient & gradPhiLower() const
bool usesGradPhi() const
Whether or not this variable is actually using the shape function gradient.
const ADTemplateVariableTestGradient< OutputShape > & adGradPhi() const
const FieldVariableValue & uDotOldNeighbor() const
const VariableValue & duDotDu() const
bool supportsElemSideQpArg() const override final
Whether this functor supports evaluation with ElemSideQpArg.
const Elem * _current_elem_qp_functor_elem
Keep track of the current elem-qp functor element in order to enable local caching (e...
void evaluateOnElementSide(const ElemSideQpArg &elem_side_qp, const StateArg &state, bool cache_eligible) const
Evaluate solution and gradient for the elem_side_qp argument.
const DofValues & vectorTagDofValue(TagID tag) const override
State argument for evaluating functors.
const FieldVariablePhiValue & phiFace() const override final
Return the variable&#39;s shape functions on an element face.
bool usesPhi() const
Whether or not this variable is actually using the shape function value.
const DofValues & dofValuesDotOld() const override
const FieldVariableGradient & gradSlnOlder() const
typename MooseVariableDataBase< OutputType >::DofValues DofValues
Eigen::Matrix< Real, Eigen::Dynamic, 1 > RealEigenVector
Definition: MooseTypes.h:147
void prepare() override
Prepare the elemental degrees of freedom.
const FieldVariableDivergence & divSlnOlderNeighbor() const
const DofValues & dofValuesDotNeighbor() const override
const FieldVariableGradient & gradSlnDot() const
element gradient dots
std::vector< ValueType > _current_elem_side_qp_functor_sln
The values of the solution for the _current_elem_side_qp_functor_elem_side.
const ADDofValues & adDofValues() const override
Return the AD dof values.
const VariableValue & duDotDotDuNeighbor() const
void reinitNode() override
const Moose::ADType< OutputType >::type & adNodalValue() const
libMesh::TensorTools::DecrementRank< OutputType >::type OutputDivergence
const FieldVariablePhiGradient & gradPhi() const override final
Return the gradients of the variable&#39;s elemental shape functions.
const FieldVariableCurl & curlSlnOlderNeighbor() const
typename MooseVariableField< Real >::FieldVariableTestCurl FieldVariableTestCurl
const OutputType & nodalValueDotNeighborResidual() const
unsigned int oldestSolutionStateRequested() const override final
The oldest solution state that is requested for this variable (0 = current, 1 = old, 2 = older, etc).
const ADTemplateVariableValue< OutputType > & adSlnLower() const
lower-d element solution
typename MooseVariableField< Real >::OutputDivergence OutputDivergence
const FieldVariableDivergence & divSln() const
element divergence
std::unique_ptr< MooseVariableData< OutputType > > _element_data
Holder for all the data associated with the "main" element.
const FieldVariableValue & slnOld() const override
virtual void residualSetup() override
typename MooseVariableDataBase< OutputType >::DofValue DofValue
typename MooseVariableField< Real >::FieldVariablePhiDivergence FieldVariablePhiDivergence
const DofValues & dofValuesPreviousNLNeighbor() const override
DofValue getElementalValue(const Elem *elem, unsigned int idx=0) const
Get the current value of this variable on an element.
const Elem *const & currentElem() const override
Current element this variable is evaluated at.
const OutputType & nodalValueOlderNeighbor() const
const DofValues & dofValuesOldNeighbor() const override
const OutputType & nodalValueDotOld() const
const FieldVariableValue & slnOldNeighbor() const override
DotType evaluateDot(const ElemQpArg &elem_qp, const StateArg &state) const override final
const DofValues & dofValuesDotDotNeighbor() const override
virtual std::size_t phiNeighborSize() const final
Return phiNeighbor size.
Argument for requesting functor evaluation at quadrature point locations on an element side...
const FieldVariableValue & slnPreviousNLNeighbor() const
virtual void computeElemValues() override
Actually compute variable values from the solution vectors.
Moose::ShapeType< OutputType >::type OutputShape
const MappedArrayVariablePhiGradient & arrayGradPhiFace() const
typename Moose::ADType< Real >::type FunctorArg
const FieldVariableDivergence & divSlnNeighbor() const
neighbor solution divergence
const FieldVariablePhiGradient & gradPhiFace() const override final
Return the gradients of the variable&#39;s shape functions on an element face.
uint8_t dof_id_type
const FieldVariablePhiDivergence & divPhiFace() const
const FieldVariablePhiValue & phiFaceNeighbor() const override final
Return the variable&#39;s shape functions on a neighboring element face.
const OutputType & nodalValuePreviousNL() const
const ADTemplateVariableValue< OutputType > & adUDotDotNeighbor() const override
AD neighbor second time derivative getter.
void prepareAux() override
void clearAllDofIndices() final