https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Coupleable.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#ifdef MOOSE_KOKKOS_SCOPE
13#include "KokkosVariableValue.h"
14#endif
15
16#include <unordered_map>
17#include "MooseTypes.h"
18#include "MooseArray.h"
19#include "MooseVariableFE.h"
20#include "MooseVariableFV.h"
22#include "InputParameters.h"
23#include "HasMembers.h"
24
25#define usingCoupleableMembers \
26 using Coupleable::_zero; \
27 using Coupleable::_grad_zero; \
28 using Coupleable::_ad_zero; \
29 using Coupleable::_ad_grad_zero; \
30 using Coupleable::coupled; \
31 using Coupleable::isCoupled; \
32 using Coupleable::coupledComponents
33
34// Forward declarations
36class MooseObject;
37
38namespace libMesh
39{
40template <typename T>
41class DenseVector;
42}
43
44template <typename>
47
53{
54public:
61 Coupleable(const MooseObject * moose_object, bool nodal, bool is_fv = false);
62
63#ifdef MOOSE_KOKKOS_ENABLED
67 Coupleable(const Coupleable & object, const Moose::Kokkos::FunctorCopy & key);
68#endif
69
74 const std::unordered_map<std::string, std::vector<MooseVariableFieldBase *>> &
76 {
77 return _coupled_vars;
78 }
79
84 const std::vector<MooseVariableFieldBase *> & getCoupledMooseVars() const
85 {
87 }
88
93 const std::vector<MooseVariable *> & getCoupledStandardMooseVars() const
94 {
96 }
97
102 const std::vector<VectorMooseVariable *> & getCoupledVectorMooseVars() const
103 {
105 }
106
111 const std::vector<ArrayMooseVariable *> & getCoupledArrayMooseVars() const
112 {
114 }
115
117
119
121
123
124 const std::set<TagID> & getFEVariableCoupleableVectorTags() const
125 {
127 }
128
129 const std::set<TagID> & getFEVariableCoupleableMatrixTags() const
130 {
132 }
133
138
143
144protected:
149 virtual void coupledCallback(const std::string & /*var_name*/, bool /*is_old*/) const {}
150
157 virtual bool isCoupled(const std::string & var_name, unsigned int i = 0) const;
158
164 virtual bool isCoupledConstant(const std::string & var_name) const;
165
171 unsigned int coupledComponents(const std::string & var_name) const;
172
179 VariableName coupledName(const std::string & var_name, unsigned int comp = 0) const;
180
186 std::vector<VariableName> coupledNames(const std::string & var_name) const;
187
195 virtual unsigned int coupled(const std::string & var_name, unsigned int comp = 0) const;
196
202 std::vector<unsigned int> coupledIndices(const std::string & var_name) const;
203
211 virtual const VariableValue & coupledValue(const std::string & var_name,
212 unsigned int comp = 0) const;
213
219 std::vector<const VariableValue *> coupledValues(const std::string & var_name) const;
220
226 std::vector<const VectorVariableValue *> coupledVectorValues(const std::string & var_name) const;
227
234 template <bool is_ad>
235 const GenericVariableValue<is_ad> & coupledGenericValue(const std::string & var_name,
236 unsigned int comp = 0) const;
237
245 template <bool is_ad>
247 unsigned int comp = 0) const;
248
255 template <bool is_ad>
256 std::vector<const GenericVariableValue<is_ad> *>
257 coupledGenericValues(const std::string & var_name) const;
258
265 template <bool is_ad>
266 const GenericVariableValue<is_ad> & coupledGenericDofValue(const std::string & var_name,
267 unsigned int comp = 0) const;
268
276 template <bool is_ad>
277 const GenericVariableValue<is_ad> & coupledGenericDot(const std::string & var_name,
278 unsigned int comp = 0) const;
279
287 template <bool is_ad>
288 const GenericVariableValue<is_ad> & coupledGenericDotDot(const std::string & var_name,
289 unsigned int comp = 0) const;
290
297 virtual const VariableValue & coupledValueLower(const std::string & var_name,
298 unsigned int comp = 0) const;
299
306 const ADVariableValue & adCoupledValue(const std::string & var_name, unsigned int comp = 0) const;
307
314 std::vector<const ADVariableValue *> adCoupledValues(const std::string & var_name) const;
315
322 const ADVariableValue & adCoupledLowerValue(const std::string & var_name,
323 unsigned int comp = 0) const;
324
332 const ADVectorVariableValue & adCoupledVectorValue(const std::string & var_name,
333 unsigned int comp = 0) const;
334
341 std::vector<const ADVectorVariableValue *>
342 adCoupledVectorValues(const std::string & var_name) const;
343
352 virtual const VariableValue &
353 coupledVectorTagValue(const std::string & var_names, TagID tag, unsigned int index = 0) const;
354
355 virtual const VariableValue & coupledVectorTagValue(const std::string & var_names,
356 const std::string & tag_name,
357 unsigned int index = 0) const;
358
365 std::vector<const VariableValue *> coupledVectorTagValues(const std::string & var_names,
366 TagID tag) const;
367
368 std::vector<const VariableValue *> coupledVectorTagValues(const std::string & var_names,
369 const std::string & tag_name) const;
370
379 virtual const ArrayVariableValue & coupledVectorTagArrayValue(const std::string & var_names,
380 TagID tag,
381 unsigned int index = 0) const;
382
383 virtual const ArrayVariableValue & coupledVectorTagArrayValue(const std::string & var_names,
384 const std::string & tag_name,
385 unsigned int index = 0) const;
386
393 std::vector<const ArrayVariableValue *> coupledVectorTagArrayValues(const std::string & var_names,
394 TagID tag) const;
395
396 std::vector<const ArrayVariableValue *>
397 coupledVectorTagArrayValues(const std::string & var_names, const std::string & tag_name) const;
398
407 virtual const VariableGradient &
408 coupledVectorTagGradient(const std::string & var_names, TagID tag, unsigned int index = 0) const;
409
410 virtual const VariableGradient & coupledVectorTagGradient(const std::string & var_names,
411 const std::string & tag_name,
412 unsigned int index = 0) const;
413
420 std::vector<const VariableGradient *> coupledVectorTagGradients(const std::string & var_names,
421 TagID tag) const;
422
423 std::vector<const VariableGradient *>
424 coupledVectorTagGradients(const std::string & var_names, const std::string & tag_name) const;
425
435 virtual const ArrayVariableGradient & coupledVectorTagArrayGradient(const std::string & var_names,
436 TagID tag,
437 unsigned int index = 0) const;
438
439 virtual const ArrayVariableGradient & coupledVectorTagArrayGradient(const std::string & var_names,
440 const std::string & tag_name,
441 unsigned int index = 0) const;
442
449 std::vector<const ArrayVariableGradient *>
450 coupledVectorTagArrayGradients(const std::string & var_names, TagID tag) const;
451
452 std::vector<const ArrayVariableGradient *>
453 coupledVectorTagArrayGradients(const std::string & var_names, const std::string & tag_name) const;
454
462 virtual const VariableValue &
463 coupledVectorTagDofValue(const std::string & var_name, TagID tag, unsigned int index = 0) const;
464
465 virtual const VariableValue & coupledVectorTagDofValue(const std::string & var_names,
466 const std::string & tag_name,
467 unsigned int index = 0) const;
468
475 const ArrayVariableValue & coupledVectorTagArrayDofValue(const std::string & var_name,
476 const std::string & tag_name,
477 unsigned int comp = 0) const;
478
485 std::vector<const VariableValue *> coupledVectorTagDofValues(const std::string & var_names,
486 TagID tag) const;
487
488 std::vector<const VariableValue *> coupledVectorTagDofValues(const std::string & var_names,
489 const std::string & tag_name) const;
490
499 virtual const VariableValue &
500 coupledMatrixTagValue(const std::string & var_names, TagID tag, unsigned int index = 0) const;
501
502 virtual const VariableValue & coupledMatrixTagValue(const std::string & var_names,
503 const std::string & tag_name,
504 unsigned int index = 0) const;
505
512 std::vector<const VariableValue *> coupledMatrixTagValues(const std::string & var_names,
513 TagID tag) const;
514
515 std::vector<const VariableValue *> coupledMatrixTagValues(const std::string & var_names,
516 const std::string & tag_name) const;
517
525 virtual const VectorVariableValue & coupledVectorValue(const std::string & var_name,
526 unsigned int comp = 0) const;
527
535 virtual const ArrayVariableValue & coupledArrayValue(const std::string & var_name,
536 unsigned int comp = 0) const;
537
543 std::vector<const ArrayVariableValue *> coupledArrayValues(const std::string & var_name) const;
544
557 MooseWritableVariable & writableVariable(const std::string & var_name, unsigned int comp = 0);
558
568 virtual VariableValue & writableCoupledValue(const std::string & var_name, unsigned int comp = 0);
569
574
582 virtual const VariableValue & coupledValueOld(const std::string & var_name,
583 unsigned int comp = 0) const;
584
590 std::vector<const VariableValue *> coupledValuesOld(const std::string & var_name) const;
591
597 std::vector<const VectorVariableValue *>
598 coupledVectorValuesOld(const std::string & var_name) const;
599
607 virtual const VariableValue & coupledValueOlder(const std::string & var_name,
608 unsigned int comp = 0) const;
609
615 std::vector<const VariableValue *> coupledValuesOlder(const std::string & var_name) const;
616
623 virtual const VariableValue & coupledValuePreviousNL(const std::string & var_name,
624 unsigned int comp = 0) const;
625
633 virtual const VectorVariableValue & coupledVectorValueOld(const std::string & var_name,
634 unsigned int comp = 0) const;
635
643 virtual const VectorVariableValue & coupledVectorValueOlder(const std::string & var_name,
644 unsigned int comp = 0) const;
645
653 virtual const ArrayVariableValue & coupledArrayValueOld(const std::string & var_name,
654 unsigned int comp = 0) const;
655
663 virtual const ArrayVariableValue & coupledArrayValueOlder(const std::string & var_name,
664 unsigned int comp = 0) const;
665
673 virtual const VariableGradient & coupledGradient(const std::string & var_name,
674 unsigned int comp = 0) const;
675
681 std::vector<const VariableGradient *> coupledGradients(const std::string & var_name) const;
682
690 const ADVariableGradient & adCoupledGradient(const std::string & var_name,
691 unsigned int comp = 0) const;
692
700 const ADVariableGradient & adCoupledGradientDot(const std::string & var_name,
701 unsigned int comp = 0) const;
702
709 std::vector<const ADVariableGradient *> adCoupledGradients(const std::string & var_name) const;
710
718 template <bool is_ad>
719 const GenericVariableGradient<is_ad> & coupledGenericGradient(const std::string & var_name,
720 unsigned int comp = 0) const;
721
728 template <bool is_ad>
729 std::vector<const GenericVariableGradient<is_ad> *>
730 coupledGenericGradients(const std::string & var_name) const;
731
739 const ADVectorVariableGradient & adCoupledVectorGradient(const std::string & var_name,
740 unsigned int comp = 0) const;
741
748 const ADVariableSecond & adCoupledSecond(const std::string & var_name,
749 unsigned int comp = 0) const;
750
758 const ADVectorVariableSecond & adCoupledVectorSecond(const std::string & var_name,
759 unsigned int comp = 0) const;
760
768 virtual const VariableGradient & coupledGradientOld(const std::string & var_name,
769 unsigned int comp = 0) const;
770
776 std::vector<const VariableGradient *> coupledGradientsOld(const std::string & var_name) const;
777
785 virtual const VariableGradient & coupledGradientOlder(const std::string & var_name,
786 unsigned int comp = 0) const;
787
794 virtual const VariableGradient & coupledGradientPreviousNL(const std::string & var_name,
795 unsigned int comp = 0) const;
796
804 virtual const VariableGradient & coupledGradientDot(const std::string & var_name,
805 unsigned int comp = 0) const;
806
814 virtual const VariableGradient & coupledGradientDotDot(const std::string & var_name,
815 unsigned int comp = 0) const;
816
824 virtual const VectorVariableGradient & coupledVectorGradient(const std::string & var_name,
825 unsigned int comp = 0) const;
826
834 virtual const VectorVariableGradient & coupledVectorGradientOld(const std::string & var_name,
835 unsigned int comp = 0) const;
836
844 virtual const VectorVariableGradient & coupledVectorGradientOlder(const std::string & var_name,
845 unsigned int comp = 0) const;
846
854 virtual const ArrayVariableGradient & coupledArrayGradient(const std::string & var_name,
855 unsigned int comp = 0) const;
856
864 virtual const ArrayVariableGradient & coupledArrayGradientOld(const std::string & var_name,
865 unsigned int comp = 0) const;
866
874 virtual const ArrayVariableGradient & coupledArrayGradientOlder(const std::string & var_name,
875 unsigned int comp = 0) const;
876
884 virtual const ArrayVariableGradient & coupledArrayGradientDot(const std::string & var_name,
885 unsigned int comp = 0) const;
886
894 virtual const VectorVariableCurl & coupledCurl(const std::string & var_name,
895 unsigned int comp = 0) const;
896
904 virtual const VectorVariableCurl & coupledCurlOld(const std::string & var_name,
905 unsigned int comp = 0) const;
906
914 virtual const VectorVariableCurl & coupledCurlOlder(const std::string & var_name,
915 unsigned int comp = 0) const;
916
924 const ADVectorVariableCurl & adCoupledCurl(const std::string & var_name,
925 unsigned int comp = 0) const;
926
935 virtual const VectorVariableDivergence & coupledDiv(const std::string & var_name,
936 unsigned int comp = 0) const;
937
946 virtual const VectorVariableDivergence & coupledDivOld(const std::string & var_name,
947 unsigned int comp = 0) const;
948
957 virtual const VectorVariableDivergence & coupledDivOlder(const std::string & var_name,
958 unsigned int comp = 0) const;
959
967 virtual const VariableSecond & coupledSecond(const std::string & var_name,
968 unsigned int comp = 0) const;
969
978 virtual const VariableSecond & coupledSecondOld(const std::string & var_name,
979 unsigned int comp = 0) const;
980
989 virtual const VariableSecond & coupledSecondOlder(const std::string & var_name,
990 unsigned int comp = 0) const;
991
998 virtual const VariableSecond & coupledSecondPreviousNL(const std::string & var_name,
999 unsigned int comp = 0) const;
1000
1007 virtual const VariableValue & coupledDot(const std::string & var_name,
1008 unsigned int comp = 0) const;
1009
1015 std::vector<const VariableValue *> coupledDots(const std::string & var_name) const;
1016
1024 virtual const VariableValue & coupledDotDot(const std::string & var_name,
1025 unsigned int comp = 0) const;
1026
1033 virtual const VariableValue & coupledDotOld(const std::string & var_name,
1034 unsigned int comp = 0) const;
1035
1043 virtual const VariableValue & coupledDotDotOld(const std::string & var_name,
1044 unsigned int comp = 0) const;
1045
1053 const ADVariableValue & adCoupledDot(const std::string & var_name, unsigned int comp = 0) const;
1054
1060 std::vector<const ADVariableValue *> adCoupledDots(const std::string & var_name) const;
1061
1069 const ADVariableValue & adCoupledDotDot(const std::string & var_name,
1070 unsigned int comp = 0) const;
1071
1080 const ADVectorVariableValue & adCoupledVectorDot(const std::string & var_name,
1081 unsigned int comp = 0) const;
1082
1090 virtual const VectorVariableValue & coupledVectorDot(const std::string & var_name,
1091 unsigned int comp = 0) const;
1092
1100 virtual const VectorVariableValue & coupledVectorDotDot(const std::string & var_name,
1101 unsigned int comp = 0) const;
1102
1110 virtual const VectorVariableValue & coupledVectorDotOld(const std::string & var_name,
1111 unsigned int comp = 0) const;
1112
1120 virtual const VectorVariableValue & coupledVectorDotDotOld(const std::string & var_name,
1121 unsigned int comp = 0) const;
1122
1130 virtual const VariableValue & coupledVectorDotDu(const std::string & var_name,
1131 unsigned int comp = 0) const;
1132
1140 virtual const VariableValue & coupledVectorDotDotDu(const std::string & var_name,
1141 unsigned int comp = 0) const;
1142
1150 virtual const ArrayVariableValue & coupledArrayDot(const std::string & var_name,
1151 unsigned int comp = 0) const;
1152
1160 virtual const ArrayVariableValue & coupledArrayDotDot(const std::string & var_name,
1161 unsigned int comp = 0) const;
1162
1170 virtual const ArrayVariableValue & coupledArrayDotOld(const std::string & var_name,
1171 unsigned int comp = 0) const;
1172
1180 virtual const ArrayVariableValue & coupledArrayDotDotOld(const std::string & var_name,
1181 unsigned int comp = 0) const;
1182
1190 virtual const VariableValue & coupledDotDu(const std::string & var_name,
1191 unsigned int comp = 0) const;
1192
1200 virtual const VariableValue & coupledDotDotDu(const std::string & var_name,
1201 unsigned int comp = 0) const;
1202
1210 const VariableValue & coupledArrayDotDu(const std::string & var_name,
1211 unsigned int comp = 0) const;
1212
1219 template <typename T>
1220 const T & coupledNodalValue(const std::string & var_name, unsigned int comp = 0) const;
1221
1228 template <typename T>
1229 const typename Moose::ADType<T>::type & adCoupledNodalValue(const std::string & var_name,
1230 unsigned int comp = 0) const;
1231
1238 template <typename T>
1239 const T & coupledNodalValueOld(const std::string & var_name, unsigned int comp = 0) const;
1240
1247 template <typename T>
1248 const T & coupledNodalValueOlder(const std::string & var_name, unsigned int comp = 0) const;
1249
1256 template <typename T>
1257 const T & coupledNodalValuePreviousNL(const std::string & var_name, unsigned int comp = 0) const;
1258
1266 template <typename T>
1267 const T & coupledNodalDot(const std::string & var_name, unsigned int comp = 0) const;
1268
1276 virtual const VariableValue & coupledNodalDotDot(const std::string & var_name,
1277 unsigned int comp = 0) const;
1278
1286 virtual const VariableValue & coupledNodalDotOld(const std::string & var_name,
1287 unsigned int comp = 0) const;
1288
1296 virtual const VariableValue & coupledNodalDotDotOld(const std::string & var_name,
1297 unsigned int comp = 0) const;
1298 // coupled-dof-values-begin
1305 virtual const VariableValue & coupledDofValues(const std::string & var_name,
1306 unsigned int comp = 0) const;
1307
1314 std::vector<const VariableValue *> coupledAllDofValues(const std::string & var_name) const;
1315
1322 virtual const VariableValue & coupledDofValuesOld(const std::string & var_name,
1323 unsigned int comp = 0) const;
1324
1331 std::vector<const VariableValue *> coupledAllDofValuesOld(const std::string & var_name) const;
1332
1339 virtual const VariableValue & coupledDofValuesOlder(const std::string & var_name,
1340 unsigned int comp = 0) const;
1341
1348 std::vector<const VariableValue *> coupledAllDofValuesOlder(const std::string & var_name) const;
1349
1356 virtual const ArrayVariableValue & coupledArrayDofValues(const std::string & var_name,
1357 unsigned int comp = 0) const;
1358 // coupled-dof-values-end
1359
1366 virtual const ADVariableValue & adCoupledDofValues(const std::string & var_name,
1367 unsigned int comp = 0) const;
1368
1373 const ADVariableValue & adZeroValue() const;
1374
1379 const ADVariableGradient & adZeroGradient() const;
1380
1384 const ADVariableSecond & adZeroSecond() const;
1385
1390 template <bool is_ad>
1392
1397 template <bool is_ad>
1399
1404 template <bool is_ad>
1406
1407protected:
1408 // Reference to the interface's input parameters
1410
1412 const std::string & _c_name;
1414 const std::string & _c_type;
1415
1416 // Reference to FEProblemBase
1418
1420 const SystemBase * const _c_sys;
1421
1423 std::unordered_map<std::string, std::vector<MooseVariableFieldBase *>> _coupled_vars;
1424
1426 std::vector<MooseVariableFieldBase *> _coupled_moose_vars;
1427
1429 std::vector<MooseVariable *> _coupled_standard_moose_vars;
1430
1432 std::vector<VectorMooseVariable *> _coupled_vector_moose_vars;
1433
1435 std::vector<ArrayMooseVariable *> _coupled_array_moose_vars;
1436
1438 std::vector<MooseVariableField<Real> *> _coupled_fv_moose_vars;
1439
1441 const std::unordered_map<std::string, std::string> & _new_to_deprecated_coupled_vars;
1442
1445
1448
1449 // Argument to allow element-to-nodal coupling
1451
1454
1456 mutable std::unordered_map<std::string, std::vector<std::unique_ptr<VariableValue>>>
1458
1460 mutable std::unordered_map<std::string, std::unique_ptr<MooseArray<ADReal>>> _ad_default_value;
1461
1463 mutable std::unordered_map<std::string, std::unique_ptr<VectorVariableValue>>
1465
1467 mutable std::unordered_map<std::string, std::unique_ptr<ArrayVariableValue>> _default_array_value;
1468
1470 mutable std::unordered_map<std::string, std::unique_ptr<MooseArray<ADRealVectorValue>>>
1472
1478
1481
1484
1487
1490
1493
1496
1501
1505
1508
1518
1524
1527
1530
1533
1539
1542
1548 bool
1549 checkVar(const std::string & var_name, unsigned int comp = 0, unsigned int comp_bound = 0) const;
1550
1551private:
1555 template <typename T>
1556 const typename OutputTools<T>::VariableValue &
1557 vectorTagValueHelper(const std::string & var_names, TagID tag, unsigned int index = 0) const;
1558
1562 template <typename T>
1563 const typename OutputTools<T>::VariableValue & vectorTagValueHelper(const std::string & var_names,
1564 const std::string & tag_name,
1565 unsigned int index = 0) const;
1566
1570 template <typename T>
1571 const typename OutputTools<T>::VariableValue &
1572 vectorTagDofValueHelper(const std::string & var_name, TagID tag, unsigned int comp = 0) const;
1573
1577 template <typename T>
1579 const std::string & var_name, const std::string & tag_name, unsigned int comp = 0) const;
1580
1586 template <typename T>
1587 void
1588 requestStates(const std::string & var_name, const TagName & tag_name, const unsigned int comp);
1589
1590 enum class FuncAge
1591 {
1592 Curr,
1593 Old,
1594 Older,
1595 };
1596
1597 enum class VarType
1598 {
1599 Ignore,
1600 Gradient,
1601 Second,
1603 Dot,
1604 };
1605
1606 void checkFuncType(const std::string var_name, VarType t, FuncAge age) const;
1607
1608protected:
1613 virtual bool usesFaceCoupledValues() const { return false; }
1614
1623 const MooseVariableFieldBase * getFEVar(const std::string & var_name, unsigned int comp) const;
1624
1625 /*
1626 * Extract pointer to a base coupled field variable. Could be either a finite volume or finite
1627 * element variable
1628 * @param var_name Name of parameter desired
1629 * @param comp Component number of multiple coupled variables
1630 * @return Pointer to the desired variable
1631 */
1632 const MooseVariableFieldBase * getFieldVar(const std::string & var_name, unsigned int comp) const;
1633
1634 /*
1635 * Extract pointer to a base coupled field variable. Could be either a finite volume or finite
1636 * element variable
1637 * @param var_name Name of variable desired
1638 * @param comp Component number of multiple coupled variables
1639 * @return Pointer to the desired variable
1640 */
1641 MooseVariableFieldBase * getFieldVar(const std::string & var_name, unsigned int comp);
1642
1643 /*
1644 * Extract pointers to all components of a base coupled field variable.
1645 * Could be either a finite volume or finite element variable
1646 * @param var_name Name of variable desired
1647 * @return Pointers to the desired variables
1648 */
1649 std::vector<const MooseVariableFieldBase *> getFieldVars(const std::string & var_name) const;
1650
1654 template <typename T>
1655 const T * getVarHelper(const std::string & var_name, unsigned int comp) const;
1656
1660 template <typename T>
1661 T * getVarHelper(const std::string & var_name, unsigned int comp);
1662
1668 template <typename T>
1669 std::vector<const T *> getVarsHelper(const std::string & var_name) const;
1670
1677 MooseVariable * getVar(const std::string & var_name, unsigned int comp);
1678
1685 VectorMooseVariable * getVectorVar(const std::string & var_name, unsigned int comp);
1686
1693 ArrayMooseVariable * getArrayVar(const std::string & var_name, unsigned int comp);
1694
1701 const MooseVariable * getVar(const std::string & var_name, unsigned int comp) const;
1702
1709 const VectorMooseVariable * getVectorVar(const std::string & var_name, unsigned int comp) const;
1710
1717 const ArrayMooseVariable * getArrayVar(const std::string & var_name, unsigned int comp) const;
1718
1725 void validateExecutionerType(const std::string & name, const std::string & fn_name) const;
1726
1727 template <typename T, typename Func>
1728 std::vector<T> coupledVectorHelper(const std::string & var_name, const Func & func) const
1729 {
1730 const auto components = coupledComponents(var_name);
1731 std::vector<T> vals(components);
1732 for (MooseIndex(components) comp = 0; comp < components; ++comp)
1733 vals[comp] = func(comp);
1734 return vals;
1735 }
1736
1739
1740public:
1747 const ADVariableValue * getADDefaultValue(const std::string & var_name) const;
1748
1755 const ADVectorVariableValue * getADDefaultVectorValue(const std::string & var_name) const;
1756
1764
1772
1779 const ADVariableSecond & getADDefaultSecond() const;
1780
1787 const ADVectorVariableCurl & getADDefaultCurl() const;
1788
1789private:
1796 const VariableValue * getDefaultValue(const std::string & var_name, unsigned int comp) const;
1797
1804 const VectorVariableValue * getDefaultVectorValue(const std::string & var_name) const;
1805
1812 const ArrayVariableValue * getDefaultArrayValue(const std::string & var_name) const;
1813
1817 template <typename T>
1818 const T & getDefaultNodalValue(const std::string & var_name, unsigned int comp = 0) const;
1819
1820 template <typename T>
1821 const Moose::Functor<T> & getDefaultFunctor(const std::string & var_name) const;
1822
1825
1827 std::unordered_map<std::string, std::vector<unsigned int>> _optional_var_index;
1828
1830 std::unordered_map<std::string, std::vector<MooseVariableScalar *>> _c_coupled_scalar_vars;
1831
1833
1835
1837 const bool _is_fv;
1838
1839 const MooseObject * const _obj;
1840
1844
1846 std::vector<std::set<MooseWritableVariable *>> _writable_coupled_variables;
1847
1851private:
1853
1854#ifdef MOOSE_KOKKOS_SCOPE
1856 const std::string & tag_name,
1857 unsigned int comp) const;
1859 const std::string & tag_name) const;
1861 const std::string & tag_name,
1862 unsigned int comp) const;
1864 const std::string & tag_name) const;
1866
1867public:
1869 const std::string & tag_name,
1870 unsigned int comp = 0) const;
1872 kokkosCoupledVectorTagValuesByName(const std::string & var_name,
1873 const std::string & tag_name) const;
1875 const std::string & tag_name,
1876 unsigned int comp = 0) const;
1878 kokkosCoupledVectorTagGradientsByName(const std::string & var_name,
1879 const std::string & tag_name) const;
1881 const std::string & tag_name,
1882 unsigned int comp = 0) const;
1884 kokkosCoupledVectorTagNodalValuesByName(const std::string & var_name,
1885 const std::string & tag_name) const;
1887 const std::string & tag_name,
1888 unsigned int comp = 0) const;
1890 kokkosCoupledVectorTagDofValuesByName(const std::string & var_name,
1891 const std::string & tag_name) const;
1892
1894 const std::string & tag_param_name,
1895 unsigned int comp = 0) const;
1897 kokkosCoupledVectorTagValues(const std::string & var_name,
1898 const std::string & tag_param_name) const;
1900 const std::string & tag_param_name,
1901 unsigned int comp = 0) const;
1903 kokkosCoupledVectorTagGradients(const std::string & var_name,
1904 const std::string & tag_param_name) const;
1906 const std::string & tag_param_name,
1907 unsigned int comp = 0) const;
1909 kokkosCoupledVectorTagNodalValues(const std::string & var_name,
1910 const std::string & tag_param_name) const;
1912 const std::string & tag_param_name,
1913 unsigned int comp = 0) const;
1915 kokkosCoupledVectorTagDofValues(const std::string & var_name,
1916 const std::string & tag_param_name) const;
1917
1919 const std::string & var_name, const std::string & tag_name, unsigned int comp = 0) const;
1921 kokkosCoupledVectorTagVectorValuesByName(const std::string & var_name,
1922 const std::string & tag_name) const;
1924 const std::string & var_name, const std::string & tag_name, unsigned int comp = 0) const;
1927 const std::string & tag_name) const;
1929 const std::string & var_name, const std::string & tag_name, unsigned int comp = 0) const;
1932 const std::string & tag_name) const;
1934 const std::string & var_name, const std::string & tag_name, unsigned int comp = 0) const;
1937 const std::string & tag_name) const;
1938
1940 kokkosCoupledVectorTagVectorValue(const std::string & var_name,
1941 const std::string & tag_param_name,
1942 unsigned int comp = 0) const;
1944 kokkosCoupledVectorTagVectorValues(const std::string & var_name,
1945 const std::string & tag_param_name) const;
1947 kokkosCoupledVectorTagVectorGradient(const std::string & var_name,
1948 const std::string & tag_param_name,
1949 unsigned int comp = 0) const;
1951 kokkosCoupledVectorTagVectorGradients(const std::string & var_name,
1952 const std::string & tag_param_name) const;
1954 kokkosCoupledVectorTagVectorNodalValue(const std::string & var_name,
1955 const std::string & tag_param_name,
1956 unsigned int comp = 0) const;
1958 kokkosCoupledVectorTagVectorNodalValues(const std::string & var_name,
1959 const std::string & tag_param_name) const;
1961 kokkosCoupledVectorTagVectorDofValue(const std::string & var_name,
1962 const std::string & tag_param_name,
1963 unsigned int comp = 0) const;
1965 kokkosCoupledVectorTagVectorDofValues(const std::string & var_name,
1966 const std::string & tag_param_name) const;
1967
1969 unsigned int comp = 0) const;
1970 Moose::Kokkos::VariableValue kokkosCoupledValues(const std::string & var_name) const;
1972 unsigned int comp = 0) const;
1973 Moose::Kokkos::VariableGradient kokkosCoupledGradients(const std::string & var_name) const;
1975 unsigned int comp = 0) const;
1976 Moose::Kokkos::VariableValue kokkosCoupledNodalValues(const std::string & var_name) const;
1978 unsigned int comp = 0) const;
1979 Moose::Kokkos::VariableValue kokkosCoupledDofValues(const std::string & var_name) const;
1980
1982 unsigned int comp = 0) const;
1983 Moose::Kokkos::VariableValue kokkosCoupledValuesOld(const std::string & var_name) const;
1985 unsigned int comp = 0) const;
1988 unsigned int comp = 0) const;
1991 unsigned int comp = 0) const;
1992 Moose::Kokkos::VariableValue kokkosCoupledDofValuesOld(const std::string & var_name) const;
1993
1995 unsigned int comp = 0) const;
1996 Moose::Kokkos::VariableValue kokkosCoupledValuesOlder(const std::string & var_name) const;
1998 unsigned int comp = 0) const;
2001 unsigned int comp = 0) const;
2004 unsigned int comp = 0) const;
2006
2008 unsigned int comp = 0) const;
2009 Moose::Kokkos::VariableValue kokkosCoupledDots(const std::string & var_name) const;
2011 unsigned int comp = 0) const;
2012 Moose::Kokkos::VariableValue kokkosCoupledNodalDots(const std::string & var_name) const;
2013
2015 unsigned int comp = 0) const;
2017 unsigned int comp = 0) const;
2019 unsigned int comp = 0) const;
2021 unsigned int comp = 0) const;
2024 kokkosCoupledVectorGradients(const std::string & var_name) const;
2026 kokkosCoupledVectorNodalValues(const std::string & var_name) const;
2028 kokkosCoupledVectorDofValues(const std::string & var_name) const;
2029
2031 unsigned int comp = 0) const;
2033 unsigned int comp = 0) const;
2035 unsigned int comp = 0) const;
2037 unsigned int comp = 0) const;
2039 kokkosCoupledVectorValuesOld(const std::string & var_name) const;
2041 kokkosCoupledVectorGradientsOld(const std::string & var_name) const;
2043 kokkosCoupledVectorNodalValuesOld(const std::string & var_name) const;
2045 kokkosCoupledVectorDofValuesOld(const std::string & var_name) const;
2046
2048 unsigned int comp = 0) const;
2050 kokkosCoupledVectorGradientOlder(const std::string & var_name, unsigned int comp = 0) const;
2052 kokkosCoupledVectorNodalValueOlder(const std::string & var_name, unsigned int comp = 0) const;
2054 unsigned int comp = 0) const;
2056 kokkosCoupledVectorValuesOlder(const std::string & var_name) const;
2058 kokkosCoupledVectorGradientsOlder(const std::string & var_name) const;
2060 kokkosCoupledVectorNodalValuesOlder(const std::string & var_name) const;
2062 kokkosCoupledVectorDofValuesOlder(const std::string & var_name) const;
2063
2065 unsigned int comp = 0) const;
2067 unsigned int comp = 0) const;
2070 kokkosCoupledVectorNodalDots(const std::string & var_name) const;
2071
2073 const std::string & tag_name,
2074 unsigned int comp = 0) const;
2076 kokkosADCoupledVectorTagValuesByName(const std::string & var_name,
2077 const std::string & tag_name) const;
2079 const std::string & var_name, const std::string & tag_name, unsigned int comp = 0) const;
2081 kokkosADCoupledVectorTagGradientsByName(const std::string & var_name,
2082 const std::string & tag_name) const;
2084 const std::string & var_name, const std::string & tag_name, unsigned int comp = 0) const;
2086 kokkosADCoupledVectorTagNodalValuesByName(const std::string & var_name,
2087 const std::string & tag_name) const;
2089 const std::string & var_name, const std::string & tag_name, unsigned int comp = 0) const;
2091 kokkosADCoupledVectorTagDofValuesByName(const std::string & var_name,
2092 const std::string & tag_name) const;
2093
2095 const std::string & tag_param_name,
2096 unsigned int comp = 0) const;
2098 kokkosADCoupledVectorTagValues(const std::string & var_name,
2099 const std::string & tag_param_name) const;
2101 kokkosADCoupledVectorTagGradient(const std::string & var_name,
2102 const std::string & tag_param_name,
2103 unsigned int comp = 0) const;
2105 kokkosADCoupledVectorTagGradients(const std::string & var_name,
2106 const std::string & tag_param_name) const;
2108 kokkosADCoupledVectorTagNodalValue(const std::string & var_name,
2109 const std::string & tag_param_name,
2110 unsigned int comp = 0) const;
2112 kokkosADCoupledVectorTagNodalValues(const std::string & var_name,
2113 const std::string & tag_param_name) const;
2115 kokkosADCoupledVectorTagDofValue(const std::string & var_name,
2116 const std::string & tag_param_name,
2117 unsigned int comp = 0) const;
2119 kokkosADCoupledVectorTagDofValues(const std::string & var_name,
2120 const std::string & tag_param_name) const;
2121
2123 unsigned int comp = 0) const;
2124 Moose::Kokkos::ADVariableValue kokkosADCoupledValues(const std::string & var_name) const;
2126 unsigned int comp = 0) const;
2129 unsigned int comp = 0) const;
2132 unsigned int comp = 0) const;
2134
2136 unsigned int comp = 0) const;
2139 unsigned int comp = 0) const;
2142 unsigned int comp = 0) const;
2145 unsigned int comp = 0) const;
2147
2149 unsigned int comp = 0) const;
2152 unsigned int comp = 0) const;
2154 kokkosADCoupledGradientsOlder(const std::string & var_name) const;
2156 unsigned int comp = 0) const;
2158 kokkosADCoupledNodalValuesOlder(const std::string & var_name) const;
2160 unsigned int comp = 0) const;
2162
2164 unsigned int comp = 0) const;
2165 Moose::Kokkos::ADVariableValue kokkosADCoupledDots(const std::string & var_name) const;
2167 unsigned int comp = 0) const;
2169
2171 unsigned int comp = 0) const;
2172
2176#endif
2177};
2178
2179template <typename T>
2180T *
2181Coupleable::getVarHelper(const std::string & var_name_in, unsigned int comp)
2182{
2183 const auto & var_name = _c_parameters.checkForRename(var_name_in);
2184 auto name_to_use = var_name;
2185
2186 // First check for supplied name
2187 if (!checkVar(var_name, comp, 0))
2188 {
2189 // See if there is an associated deprecated name that the user may have used instead
2190 auto it = _new_to_deprecated_coupled_vars.find(var_name);
2191 if (it == _new_to_deprecated_coupled_vars.end())
2192 return nullptr;
2193 else
2194 {
2195 auto deprecated_name = it->second;
2196 if (checkVar(deprecated_name, comp, 0))
2197 name_to_use = deprecated_name;
2198 else
2199 return nullptr;
2200 }
2201 }
2202
2203 auto coupled_vars_it = _coupled_vars.find(name_to_use);
2204
2205 mooseAssert(coupled_vars_it != _coupled_vars.end(),
2206 "Trying to get a coupled var " << name_to_use << " that doesn't exist");
2207 mooseAssert(comp < coupled_vars_it->second.size(),
2208 "Component index outside of coupled variables vector");
2209 auto * const base_var = coupled_vars_it->second[comp];
2210
2211 if (auto coupled_var = dynamic_cast<T *>(base_var))
2212 return coupled_var;
2213 else
2214 {
2215 for (auto & var : _coupled_standard_moose_vars)
2216 if (var->name() == base_var->name())
2217 mooseError("The named variable is a standard variable, try a "
2218 "'coupled[Value/Gradient/Dot/etc]...' function instead");
2219 for (auto & var : _coupled_vector_moose_vars)
2220 if (var->name() == base_var->name())
2221 mooseError("The named variable is a vector variable, try a "
2222 "'coupledVector[Value/Gradient/Dot/etc]...' function instead");
2223 for (auto & var : _coupled_array_moose_vars)
2224 if (var->name() == base_var->name())
2225 mooseError("The named variable is an array variable, try a "
2226 "'coupledArray[Value/Gradient/Dot/etc]...' function instead");
2227 for (auto & var : _coupled_fv_moose_vars)
2228 if (var->name() == base_var->name())
2229 mooseError("The named variable is a finite volume variable, which the coupled[...] routine "
2230 "used does not support. Try using the functor system routines instead.");
2231 mooseError("Variable '",
2232 base_var->name(),
2233 "' is of a different C++ type than you tried to fetch it as.");
2234 }
2235}
2236
2237template <typename T>
2238const T *
2239Coupleable::getVarHelper(const std::string & var_name, unsigned int comp) const
2240{
2241 return const_cast<Coupleable *>(this)->getVarHelper<T>(var_name, comp);
2242}
2243
2244template <typename T>
2245std::vector<const T *>
2246Coupleable::getVarsHelper(const std::string & var_name) const
2247{
2248 const auto components = coupledComponents(var_name);
2249 std::vector<const T *> vars(components);
2250 for (const auto i : make_range(components))
2251 vars[i] = getVarHelper<T>(var_name, i);
2252 return vars;
2253}
MooseVariableField< Real > MooseWritableVariable
Definition Coupleable.h:46
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application.
Definition MooseError.h:311
OutputTools< Real >::VariablePhiValue VariablePhiValue
Definition MooseTypes.h:353
OutputTools< RealVectorValue >::VariableCurl VectorVariableCurl
Definition MooseTypes.h:368
OutputTools< Real >::VariableGradient VariableGradient
Definition MooseTypes.h:349
unsigned int TagID
Definition MooseTypes.h:238
OutputTools< RealEigenVector >::VariableValue ArrayVariableValue
Definition MooseTypes.h:382
Moose::GenericType< VariableValue, is_ad > GenericVariableValue
Definition MooseTypes.h:712
Moose::GenericType< VectorVariableValue, is_ad > GenericVectorVariableValue
Definition MooseTypes.h:714
Moose::GenericType< VariableSecond, is_ad > GenericVariableSecond
Definition MooseTypes.h:718
OutputTools< Real >::VariableValue VariableValue
Definition MooseTypes.h:348
OutputTools< RealVectorValue >::VariableDivergence VectorVariableDivergence
Definition MooseTypes.h:369
OutputTools< Real >::VariablePhiGradient VariablePhiGradient
Definition MooseTypes.h:354
Moose::GenericType< VariableGradient, is_ad > GenericVariableGradient
Definition MooseTypes.h:716
OutputTools< RealEigenVector >::VariableGradient ArrayVariableGradient
Definition MooseTypes.h:384
OutputTools< Real >::VariableSecond VariableSecond
Definition MooseTypes.h:350
OutputTools< RealVectorValue >::VariableGradient VectorVariableGradient
Definition MooseTypes.h:366
unsigned int THREAD_ID
Definition MooseTypes.h:237
OutputTools< Real >::VariablePhiSecond VariablePhiSecond
Definition MooseTypes.h:355
OutputTools< RealVectorValue >::VariableValue VectorVariableValue
Definition MooseTypes.h:365
char ** vars
Interface for objects that needs coupling capabilities.
Definition Coupleable.h:53
const ADVariableValue & adZeroValue() const
method that returns _zero to RESIDUAL computing objects and _ad_zero to JACOBIAN computing objects
virtual const VariableValue & coupledNodalDotOld(const std::string &var_name, unsigned int comp=0) const
Nodal values of old time derivative of a coupled variable.
std::unordered_map< std::string, std::vector< MooseVariableScalar * > > _c_coupled_scalar_vars
Scalar variables coupled into this object (for error checking)
std::unordered_map< std::string, std::unique_ptr< ArrayVariableValue > > _default_array_value
Will hold the default value for optional array coupled variables.
Moose::Kokkos::VariableValue kokkosCoupledNodalValuesOld(const std::string &var_name) const
virtual const ArrayVariableGradient & coupledArrayGradientDot(const std::string &var_name, unsigned int comp=0) const
Retun a gradient of a coupled array variable's time derivative.
virtual const VariableGradient & coupledGradientOlder(const std::string &var_name, unsigned int comp=0) const
Returns an old gradient from two time steps previous of a coupled variable.
bool hasWritableCoupledVariables() const
Checks whether the object has any writable coupled variables.
Definition Coupleable.h:142
std::vector< const VariableValue * > coupledVectorTagValues(const std::string &var_names, TagID tag) const
Returns the values for all the coupled variables desired for a given tag.
virtual const VectorVariableValue & coupledVectorValue(const std::string &var_name, unsigned int comp=0) const
Returns value of a coupled vector variable.
Definition Coupleable.C:855
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorTagVectorNodalValuesByName(const std::string &var_name, const std::string &tag_name) const
virtual const ADVariableValue & adCoupledDofValues(const std::string &var_name, unsigned int comp=0) const
Returns DOF value of a coupled variable for use in Automatic Differentiation.
const std::set< TagID > & getFEVariableCoupleableMatrixTags() const
Definition Coupleable.h:129
Moose::Kokkos::ADVariableValue kokkosADCoupledVectorTagDofValueByName(const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
const ADVariableValue * getADDefaultValue(const std::string &var_name) const
Helper method to return (and insert if necessary) the default value for Automatic Differentiation for...
Moose::Kokkos::VariableGradient kokkosCoupledGradientOld(const std::string &var_name, unsigned int comp=0) const
VectorVariableCurl _default_vector_curl
This will always be zero because the default values for optionally coupled variables is always consta...
const ADVariableValue & adCoupledDotDot(const std::string &var_name, unsigned int comp=0) const
Second time derivative of a coupled variable for ad simulations.
const GenericVariableGradient< is_ad > & coupledGenericGradient(const std::string &var_name, unsigned int comp=0) const
Returns gradient of a coupled variable for use in templated automatic differentiation.
Moose::Kokkos::VariableValue kokkosCoupledNodalDot(const std::string &var_name, unsigned int comp=0) const
bool _c_is_implicit
True if implicit value is required.
virtual const VectorVariableCurl & coupledCurlOld(const std::string &var_name, unsigned int comp=0) const
Returns an old curl from previous time step of a coupled variable.
Moose::Kokkos::VariableValue kokkosCoupledDofValuesOlder(const std::string &var_name) const
Moose::Kokkos::VariableValue kokkosCoupledVectorTagValueByName(const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
virtual const ArrayVariableGradient & coupledArrayGradient(const std::string &var_name, unsigned int comp=0) const
Returns gradient of a coupled array variable.
virtual const VectorVariableGradient & coupledVectorGradientOlder(const std::string &var_name, unsigned int comp=0) const
Returns an old gradient from two time steps previous of a coupled vector variable.
virtual const ArrayVariableGradient & coupledArrayGradientOld(const std::string &var_name, unsigned int comp=0) const
Returns an old gradient from previous time step of a coupled array variable.
virtual const VectorVariableValue & coupledVectorDotOld(const std::string &var_name, unsigned int comp=0) const
Old time derivative of a coupled vector variable.
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorNodalValues(const std::string &var_name) const
Moose::Kokkos::VariableGradient kokkosCoupledVectorTagGradient(const std::string &var_name, const std::string &tag_param_name, unsigned int comp=0) const
const GenericVariableValue< is_ad > & coupledGenericValue(const std::string &var_name, unsigned int comp=0) const
Returns value of a coupled variable for use in templated automatic differentiation classes.
Moose::Kokkos::VariableValue kokkosCoupledNodalValuesOlder(const std::string &var_name) const
virtual const ArrayVariableGradient & coupledVectorTagArrayGradient(const std::string &var_names, TagID tag, unsigned int index=0) const
Returns gradient of a coupled array variable for a given tag.
Definition Coupleable.C:720
virtual const VectorVariableValue & coupledVectorDotDotOld(const std::string &var_name, unsigned int comp=0) const
Old second time derivative of a coupled vector variable.
const ADVariableGradient & adCoupledGradient(const std::string &var_name, unsigned int comp=0) const
Returns gradient of a coupled variable for use in Automatic Differentiation.
Moose::Kokkos::VariableValue kokkosCoupledNodalValue(const std::string &var_name, unsigned int comp=0) const
Moose::Kokkos::Scalar< const Real > kokkosCoupledDotDu(const std::string &var_name, unsigned int comp=0) const
std::vector< ArrayMooseVariable * > _coupled_array_moose_vars
Vector of array coupled variables.
std::unordered_map< std::string, std::vector< unsigned int > > _optional_var_index
Unique indices for optionally coupled vars that weren't provided.
Moose::Kokkos::VariableValue kokkosCoupledDots(const std::string &var_name) const
virtual bool isCoupledConstant(const std::string &var_name) const
Returns true if a variable passed as a coupled value is really a constant.
Definition Coupleable.C:177
MooseArray< ADRealTensorValue > _ad_default_second
This will always be zero because the default values for optionally coupled variables is always consta...
Moose::Kokkos::ADVariableValue kokkosADCoupledVectorTagValuesByName(const std::string &var_name, const std::string &tag_name) const
Moose::Kokkos::ADVariableValue kokkosADCoupledVectorTagNodalValuesByName(const std::string &var_name, const std::string &tag_name) const
Moose::Kokkos::ADVariableValue kokkosADCoupledVectorTagDofValues(const std::string &var_name, const std::string &tag_param_name) const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorValue(const std::string &var_name, unsigned int comp=0) const
const OutputTools< T >::VariableValue & vectorTagDofValueHelper(const std::string &var_name, TagID tag, unsigned int comp=0) const
Generic helper method to get vector tag degree of freedom values based on tag ID.
Definition Coupleable.C:759
virtual const VectorVariableDivergence & coupledDivOld(const std::string &var_name, unsigned int comp=0) const
Returns an old divergence from previous time step of a coupled variable.
virtual const VariableValue & coupledDot(const std::string &var_name, unsigned int comp=0) const
Time derivative of a coupled variable.
Moose::Kokkos::VariableValue kokkosCoupledNodalValueOld(const std::string &var_name, unsigned int comp=0) const
virtual const ArrayVariableValue & coupledArrayValue(const std::string &var_name, unsigned int comp=0) const
Returns value of a coupled array variable.
Definition Coupleable.C:880
Moose::Kokkos::VariableGradient kokkosZeroGradient() const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorNodalValueOld(const std::string &var_name, unsigned int comp=0) const
Moose::Kokkos::VectorVariableGradient kokkosCoupledVectorGradientsOld(const std::string &var_name) const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorValuesOlder(const std::string &var_name) const
virtual const VariableValue & coupledVectorDotDotDu(const std::string &var_name, unsigned int comp=0) const
Second time derivative of a coupled vector variable with respect to the coefficients.
std::unordered_map< std::string, std::vector< std::unique_ptr< VariableValue > > > _default_value
Will hold the default value for optional coupled variables.
Moose::Kokkos::VariableValue kokkosCoupledVectorTagDofValueByName(const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
Moose::Kokkos::VectorVariableGradient kokkosCoupledVectorTagVectorGradientsByName(const std::string &var_name, const std::string &tag_name) const
virtual const ArrayVariableValue & coupledArrayDotOld(const std::string &var_name, unsigned int comp=0) const
Old time derivative of a coupled array variable.
void addFEVariableCoupleableVectorTag(TagID tag)
Definition Coupleable.h:116
const GenericVariableGradient< is_ad > & genericZeroGradient()
Returns zero gradient templated with automatic differentiation boolean.
Moose::Kokkos::VariableValue kokkosCoupledVectorTagNodalValuesByName(const std::string &var_name, const std::string &tag_name) const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorDofValues(const std::string &var_name) const
virtual const VariableValue & coupledValueOld(const std::string &var_name, unsigned int comp=0) const
Returns an old value from previous time step of a coupled variable.
virtual const VariableGradient & coupledGradientDot(const std::string &var_name, unsigned int comp=0) const
Time derivative of the gradient of a coupled variable.
const ArrayVariableValue & coupledVectorTagArrayDofValue(const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
Returns evaluations of a tagged vector at the requested variable's degree of freedom indices.
Definition Coupleable.C:814
const GenericVariableSecond< is_ad > & genericZeroSecond()
Returns zero second derivative templated with automatic differentiation boolean.
bool checkVar(const std::string &var_name, unsigned int comp=0, unsigned int comp_bound=0) const
Check that the right kind of variable is being coupled in.
Definition Coupleable.C:234
virtual const VariableValue & coupledValue(const std::string &var_name, unsigned int comp=0) const
Returns value of a coupled variable.
Definition Coupleable.C:528
Moose::Kokkos::ADVariableValue kokkosADCoupledDofValueOlder(const std::string &var_name, unsigned int comp=0) const
const ADVectorVariableValue & adCoupledVectorValue(const std::string &var_name, unsigned int comp=0) const
Returns value of a coupled vector variable for use in Automatic Differentiation.
std::vector< const ArrayVariableGradient * > coupledVectorTagArrayGradients(const std::string &var_names, TagID tag) const
Returns gradients for all the coupled variables desired for a given tag.
Moose::Kokkos::ADVariableValue kokkosADCoupledVectorTagNodalValue(const std::string &var_name, const std::string &tag_param_name, unsigned int comp=0) const
std::vector< const VariableValue * > coupledVectorTagDofValues(const std::string &var_names, TagID tag) const
Returns the dof values for all the coupled variables desired for a given tag.
std::vector< const VariableGradient * > coupledGradientsOld(const std::string &var_name) const
Returns the old gradients for all of a coupled variable's components.
Moose::Kokkos::VariableValue kokkosCoupledValues(const std::string &var_name) const
ArrayVariableValue _default_array_value_zero
This will always be zero because the default values for optionally coupled variables is always consta...
Moose::Kokkos::VariableValue kokkosCoupledNodalValues(const std::string &var_name) const
Moose::Kokkos::Variable kokkosCoupledVectorTagVectorVariable(const std::string &var_name, const std::string &tag_name, unsigned int comp) const
const GenericVariableValue< is_ad > & coupledGenericDofValue(const std::string &var_name, unsigned int comp=0) const
Returns DOF value of a coupled variable for use in templated automatic differentiation classes.
Moose::Kokkos::ADVariableGradient kokkosADCoupledGradientsOlder(const std::string &var_name) const
virtual const VariableGradient & coupledGradientPreviousNL(const std::string &var_name, unsigned int comp=0) const
Returns gradient of a coupled variable for previous Newton iterate.
VectorVariableDivergence _default_div
This will always be zero because the default values for optionally coupled variables is always consta...
Moose::Kokkos::VariableValue kokkosCoupledDofValue(const std::string &var_name, unsigned int comp=0) const
const ADVariableValue & adCoupledLowerValue(const std::string &var_name, unsigned int comp=0) const
Returns value of a coupled lower-dimensional variable for use in Automatic Differentiation.
std::vector< const ADVariableValue * > adCoupledValues(const std::string &var_name) const
Returns the values for all of a coupled variable's components for use in Automatic Differentiation.
const VariableValue & _zero
Zero value of a variable.
auto & getWritableCoupledVariables() const
returns a reference to the set of writable coupled variables
Definition Coupleable.h:137
Moose::Kokkos::VariableValue kokkosCoupledVectorTagDofValues(const std::string &var_name, const std::string &tag_param_name) const
std::unordered_map< std::string, std::vector< MooseVariableFieldBase * > > _coupled_vars
Coupled vars whose values we provide.
std::vector< const ADVariableValue * > adCoupledDots(const std::string &var_name) const
Returns the time derivatives for all of a coupled variable's components for ad simulations.
Moose::Kokkos::VariableValue kokkosCoupledVectorTagNodalValue(const std::string &var_name, const std::string &tag_param_name, unsigned int comp=0) const
Moose::Kokkos::VariableValue kokkosCoupledDofValueOlder(const std::string &var_name, unsigned int comp=0) const
Moose::Kokkos::ADVariableValue kokkosADCoupledDofValuesOld(const std::string &var_name) const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorNodalValuesOld(const std::string &var_name) const
const ADVariableValue & adCoupledValue(const std::string &var_name, unsigned int comp=0) const
Returns value of a coupled variable for use in Automatic Differentiation.
Moose::Kokkos::ADVariableValue kokkosADCoupledNodalValueOlder(const std::string &var_name, unsigned int comp=0) const
Moose::Kokkos::ADVariableValue kokkosADCoupledDofValue(const std::string &var_name, unsigned int comp=0) const
std::vector< T > coupledVectorHelper(const std::string &var_name, const Func &func) const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorValues(const std::string &var_name) const
const VariableGradient & _grad_zero
Zero gradient of a variable.
const ADVariableSecond & adCoupledSecond(const std::string &var_name, unsigned int comp=0) const
Returns second derivatives of a coupled variable for use in Automatic Differentiation.
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorTagVectorValue(const std::string &var_name, const std::string &tag_param_name, unsigned int comp=0) const
MooseArray< ADRealTensorValue > _ad_default_vector_gradient
This will always be zero because the default values for optionally coupled vector variables is always...
virtual const VariableValue & coupledNodalDotDotOld(const std::string &var_name, unsigned int comp=0) const
Nodal values of old second time derivative of a coupled variable.
virtual const VectorVariableDivergence & coupledDivOlder(const std::string &var_name, unsigned int comp=0) const
Returns an old divergence from two time steps previous of a coupled variable.
std::unordered_map< std::string, std::unique_ptr< MooseArray< ADReal > > > _ad_default_value
Will hold the default value for optional coupled variables for automatic differentiation.
virtual const VectorVariableCurl & coupledCurl(const std::string &var_name, unsigned int comp=0) const
Returns curl of a coupled variable.
Moose::Kokkos::ADVariableValue kokkosADCoupledNodalValue(const std::string &var_name, unsigned int comp=0) const
const MooseObject *const _obj
virtual const VariableValue & coupledValueOlder(const std::string &var_name, unsigned int comp=0) const
Returns an old value from two time steps previous of a coupled variable.
Moose::Kokkos::ADVariableValue kokkosADCoupledValuesOlder(const std::string &var_name) const
bool _c_nodal
True if we provide coupling to nodal values.
Moose::Kokkos::VariableGradient kokkosCoupledGradient(const std::string &var_name, unsigned int comp=0) const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorDot(const std::string &var_name, unsigned int comp=0) const
VectorVariableGradient _default_vector_gradient
This will always be zero because the default values for optionally coupled variables is always consta...
Moose::Kokkos::VectorVariableGradient kokkosCoupledVectorGradientsOlder(const std::string &var_name) const
std::set< TagID > & getFEVariableCoupleableVectorTags()
Definition Coupleable.h:120
Moose::Kokkos::VariableValue kokkosCoupledValueOlder(const std::string &var_name, unsigned int comp=0) const
const MooseArray< ADRealTensorValue > & _ad_second_zero
std::vector< const VariableGradient * > coupledGradients(const std::string &var_name) const
Returns the gradients for all of a coupled variable's components.
virtual const VariableSecond & coupledSecondPreviousNL(const std::string &var_name, unsigned int comp=0) const
Returns second derivative of a coupled variable for the previous Newton iterate.
const VectorVariableCurl & _vector_curl_zero
Zero value of the curl of a vector variable.
virtual const VariableSecond & coupledSecondOld(const std::string &var_name, unsigned int comp=0) const
Returns an old second spatial derivatives from previous time step of a coupled variable.
MooseArray< ADRealVectorValue > _ad_default_curl
This will always be zero because the default values for optionally coupled vector variables is always...
Moose::Kokkos::VariableGradient kokkosCoupledVectorTagGradientByName(const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
std::set< TagID > _fe_coupleable_matrix_tags
Moose::Kokkos::ADVariableValue kokkosADCoupledVectorTagDofValuesByName(const std::string &var_name, const std::string &tag_name) const
Moose::Kokkos::VariableGradient kokkosCoupledVectorTagGradients(const std::string &var_name, const std::string &tag_param_name) const
const ADVariableGradient & adZeroGradient() const
method that returns _grad_zero to RESIDUAL computing objects and _ad_grad_zero to JACOBIAN computing ...
virtual const VectorVariableGradient & coupledVectorGradient(const std::string &var_name, unsigned int comp=0) const
Returns gradient of a coupled vector variable.
const ADVectorVariableSecond & adCoupledVectorSecond(const std::string &var_name, unsigned int comp=0) const
Returns second derivatives of a coupled vector variable for use in Automatic Differentiation.
std::vector< const VectorVariableValue * > coupledVectorValuesOld(const std::string &var_name) const
Returns the old values for all of a coupled vector variable's components.
std::unordered_map< std::string, std::unique_ptr< MooseArray< ADRealVectorValue > > > _ad_default_vector_value
Will hold the default value for optional vector coupled variables for automatic differentiation.
Moose::Kokkos::ADVariableValue kokkosADCoupledNodalDots(const std::string &var_name) const
const ADVectorVariableValue & adCoupledVectorDot(const std::string &var_name, unsigned int comp=0) const
Time derivative of a vector coupled variable for ad simulations.
MooseVariable * getVar(const std::string &var_name, unsigned int comp)
Extract pointer to a coupled variable.
Definition Coupleable.C:319
Moose::Kokkos::Variable kokkosZeroVariable() const
Moose::Kokkos::ADVariableValue kokkosADCoupledNodalValuesOld(const std::string &var_name) const
const ADVariableSecond & adZeroSecond() const
Retrieve a zero second for automatic differentiation.
const T & coupledNodalDot(const std::string &var_name, unsigned int comp=0) const
Nodal values of time derivative of a coupled variable.
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorTagVectorDofValue(const std::string &var_name, const std::string &tag_param_name, unsigned int comp=0) const
Moose::Kokkos::VariableValue kokkosCoupledVectorTagDofValuesByName(const std::string &var_name, const std::string &tag_name) const
Moose::Kokkos::ADVariableValue kokkosADCoupledValues(const std::string &var_name) const
const T & coupledNodalValue(const std::string &var_name, unsigned int comp=0) const
Returns nodal values of a coupled variable.
const VariableValue * getDefaultValue(const std::string &var_name, unsigned int comp) const
Helper method to return (and insert if necessary) the default value for an uncoupled variable.
Definition Coupleable.C:366
Moose::Kokkos::ADVariableValue kokkosADCoupledNodalDot(const std::string &var_name, unsigned int comp=0) const
void validateExecutionerType(const std::string &name, const std::string &fn_name) const
Checks to make sure that the current Executioner has set "_is_transient" when old/older values are co...
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorValueOlder(const std::string &var_name, unsigned int comp=0) const
Moose::Kokkos::ADVariableGradient kokkosADCoupledGradients(const std::string &var_name) const
Moose::Kokkos::VariableValue kokkosCoupledNodalDots(const std::string &var_name) const
std::vector< const VariableValue * > coupledAllDofValuesOld(const std::string &var_name) const
Returns DoFs in the old solution vector of all of a coupled variable's components for the local eleme...
Moose::Kokkos::VectorVariableGradient kokkosCoupledVectorGradient(const std::string &var_name, unsigned int comp=0) const
void addFEVariableCoupleableMatrixTag(TagID tag)
Definition Coupleable.h:118
VectorVariableValue _default_vector_value_zero
This will always be zero because the default values for optionally coupled variables is always consta...
Moose::Kokkos::Variable kokkosCoupledVectorTagVariables(const std::string &var_name, const std::string &tag_name) const
virtual const VectorVariableValue & coupledVectorDot(const std::string &var_name, unsigned int comp=0) const
Time derivative of a coupled vector variable.
Moose::Kokkos::VariableValue kokkosCoupledVectorTagNodalValueByName(const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
const GenericVariableValue< is_ad > & coupledGenericDotDot(const std::string &var_name, unsigned int comp=0) const
Returns the second time derivative of a coupled variable for use in templated automatic differentiati...
std::unordered_map< std::string, std::unique_ptr< VectorVariableValue > > _default_vector_value
Will hold the default value for optional vector coupled variables.
Moose::Kokkos::ADVariableGradient kokkosADCoupledGradientOlder(const std::string &var_name, unsigned int comp=0) const
Moose::Kokkos::ADVariableValue kokkosADCoupledDot(const std::string &var_name, unsigned int comp=0) const
Moose::Kokkos::VariableValue kokkosCoupledVectorTagDofValue(const std::string &var_name, const std::string &tag_param_name, unsigned int comp=0) const
std::vector< const VariableGradient * > coupledVectorTagGradients(const std::string &var_names, TagID tag) const
Returns gradients for all the coupled variables desired for a given tag.
Moose::Kokkos::VariableValue kokkosCoupledDofValuesOld(const std::string &var_name) const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorTagVectorDofValuesByName(const std::string &var_name, const std::string &tag_name) const
const T & getDefaultNodalValue(const std::string &var_name, unsigned int comp=0) const
Get nodal default value.
Definition Coupleable.C:450
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorTagVectorValuesByName(const std::string &var_name, const std::string &tag_name) const
Moose::Kokkos::ADVariableGradient kokkosADCoupledVectorTagGradients(const std::string &var_name, const std::string &tag_param_name) const
Moose::Kokkos::VariableGradient kokkosCoupledGradientOlder(const std::string &var_name, unsigned int comp=0) const
const ADVariableSecond & getADDefaultSecond() const
Helper method to return (and insert if necessary) the default second derivatives for Automatic Differ...
Moose::Kokkos::ADVariableGradient kokkosADCoupledVectorTagGradient(const std::string &var_name, const std::string &tag_param_name, unsigned int comp=0) const
const std::string & _c_name
The name of the object this interface is part of.
virtual bool usesFaceCoupledValues() const
Whether this object evaluates coupled variables on element faces, so that it must request coupled AD ...
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorDofValueOlder(const std::string &var_name, unsigned int comp=0) const
Moose::Kokkos::VariableValue kokkosZeroNodalValue() const
std::vector< const GenericVariableValue< is_ad > * > coupledGenericValues(const std::string &var_name) const
Returns the values for all of a coupled variable's components for use in templated automatic differen...
Moose::Kokkos::VariableGradient kokkosCoupledGradientsOld(const std::string &var_name) const
const std::vector< ArrayMooseVariable * > & getCoupledArrayMooseVars() const
Get the list of array coupled variables.
Definition Coupleable.h:111
Moose::Kokkos::Variable kokkosCoupledVectorTagVectorVariables(const std::string &var_name, const std::string &tag_name) const
const VariablePhiGradient & _grad_phi_zero
Zero gradient of trial function.
virtual const VariableValue & coupledDofValuesOld(const std::string &var_name, unsigned int comp=0) const
Returns DoFs in the old solution vector of a coupled variable for the local element.
virtual const VariableValue & coupledDotDu(const std::string &var_name, unsigned int comp=0) const
Time derivative of a coupled variable with respect to the coefficients.
std::vector< unsigned int > coupledIndices(const std::string &var_name) const
Returns the indices for a coupled variable's components.
const T & coupledNodalValueOlder(const std::string &var_name, unsigned int comp=0) const
Returns an old nodal value from two time steps previous of a coupled variable.
Moose::Kokkos::ADVariableValue kokkosADCoupledValue(const std::string &var_name, unsigned int comp=0) const
const std::vector< MooseVariableFieldBase * > & getCoupledMooseVars() const
Get the list of all coupled variables.
Definition Coupleable.h:84
Moose::Kokkos::VariableValue kokkosCoupledValueOld(const std::string &var_name, unsigned int comp=0) const
Moose::Kokkos::ADVariableValue kokkosADCoupledVectorTagDofValue(const std::string &var_name, const std::string &tag_param_name, unsigned int comp=0) const
virtual const VariableValue & coupledValueLower(const std::string &var_name, unsigned int comp=0) const
Returns value of a coupled lower-dimensional variable.
Definition Coupleable.C:633
VectorMooseVariable * getVectorVar(const std::string &var_name, unsigned int comp)
Extract pointer to a coupled vector variable.
Definition Coupleable.C:325
Moose::Kokkos::VariableValue kokkosCoupledVectorTagValues(const std::string &var_name, const std::string &tag_param_name) const
std::vector< const ArrayVariableValue * > coupledVectorTagArrayValues(const std::string &var_names, TagID tag) const
Returns the values for all the coupled variables desired for a given tag.
const ADVariableGradient & getADDefaultGradient() const
Helper method to return (and insert if necessary) the default gradient for Automatic Differentiation ...
const GenericVariableValue< is_ad > & genericZeroValue()
Returns zero value templated with automatic differentiation boolean.
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorTagVectorValues(const std::string &var_name, const std::string &tag_param_name) const
const GenericVariableValue< is_ad > & coupledGenericDot(const std::string &var_name, unsigned int comp=0) const
Returns time derivative of a coupled variable for use in templated automatic differentiation classes.
virtual const VariableValue & coupledNodalDotDot(const std::string &var_name, unsigned int comp=0) const
Nodal values of second time derivative of a coupled variable.
std::vector< const VariableValue * > coupledDots(const std::string &var_name) const
Returns the time derivatives for all of a coupled variable's components.
std::vector< const ADVariableGradient * > adCoupledGradients(const std::string &var_name) const
Returns the gradients for all of a coupled variable's components for use in Automatic Differentiation...
const Moose::Functor< T > & getDefaultFunctor(const std::string &var_name) const
FEProblemBase & _c_fe_problem
const MooseVariableFieldBase * getFieldVar(const std::string &var_name, unsigned int comp) const
Definition Coupleable.C:307
const MooseVariableFieldBase * getFEVar(const std::string &var_name, unsigned int comp) const
Deprecated method.
Definition Coupleable.C:293
THREAD_ID _c_tid
Thread ID of the thread using this object.
virtual const VariableValue & coupledDotDotOld(const std::string &var_name, unsigned int comp=0) const
Old second time derivative of a coupled variable.
const ADVectorVariableCurl & adCoupledCurl(const std::string &var_name, unsigned int comp=0) const
Returns curl of a coupled variable for use in objects utilizing Automatic Differentiation.
const std::set< std::string > _older_state_tags
vector tag names for which we need to request older solution states from the system
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorNodalValue(const std::string &var_name, unsigned int comp=0) const
virtual const VariableSecond & coupledSecond(const std::string &var_name, unsigned int comp=0) const
Returns second spatial derivatives of a coupled variable.
const ADVectorVariableGradient & getADDefaultVectorGradient() const
Helper method to return (and insert if necessary) the default gradient for Automatic Differentiation ...
std::vector< const VariableValue * > coupledValues(const std::string &var_name) const
Returns the values for all of a coupled variable components.
virtual const VectorVariableCurl & coupledCurlOlder(const std::string &var_name, unsigned int comp=0) const
Returns an old curl from two time steps previous of a coupled variable.
Moose::Kokkos::VectorVariableGradient kokkosCoupledVectorTagVectorGradients(const std::string &var_name, const std::string &tag_param_name) const
const VariableSecond & _second_zero
Zero second derivative of a variable.
Moose::Kokkos::VectorVariableGradient kokkosCoupledVectorGradientOld(const std::string &var_name, unsigned int comp=0) const
const Real _kokkos_default_value_zero
kokkos-related variables and methods
Moose::Kokkos::VectorVariableGradient kokkosCoupledVectorTagVectorGradient(const std::string &var_name, const std::string &tag_param_name, unsigned int comp=0) const
VariableValue _default_value_zero
This will always be zero because the default values for optionally coupled variables is always consta...
ArrayVariableGradient _default_array_gradient
This will always be zero because the default values for optionally coupled variables is always consta...
virtual const VariableValue & coupledMatrixTagValue(const std::string &var_names, TagID tag, unsigned int index=0) const
Returns value of a coupled variable for a given tag.
Definition Coupleable.C:822
const ADVariableValue & adCoupledDot(const std::string &var_name, unsigned int comp=0) const
Time derivative of a coupled variable for ad simulations.
std::vector< const VariableValue * > coupledMatrixTagValues(const std::string &var_names, TagID tag) const
Returns the diagonal matrix values for all the coupled variables desired for a given tag.
VariableGradient _default_gradient
This will always be zero because the default values for optionally coupled variables is always consta...
Moose::Kokkos::VariableGradient kokkosCoupledVectorTagGradientsByName(const std::string &var_name, const std::string &tag_name) const
const InputParameters & _c_parameters
virtual const VariableGradient & coupledGradient(const std::string &var_name, unsigned int comp=0) const
Returns gradient of a coupled variable.
std::set< TagID > _fe_coupleable_vector_tags
std::vector< const T * > getVarsHelper(const std::string &var_name) const
Helper that can be used to retrieve all the component variables of a variable of arbitrary type T.
virtual const ArrayVariableValue & coupledArrayDotDot(const std::string &var_name, unsigned int comp=0) const
Second time derivative of a coupled array variable.
std::vector< const ArrayVariableValue * > coupledArrayValues(const std::string &var_name) const
Returns the values for all of a coupled array variable's components.
Definition Coupleable.C:902
Moose::Kokkos::ADVariableValue kokkosADCoupledVectorTagValue(const std::string &var_name, const std::string &tag_param_name, unsigned int comp=0) const
virtual const VariableValue & coupledVectorDotDu(const std::string &var_name, unsigned int comp=0) const
Time derivative of a coupled vector variable with respect to the coefficients.
virtual const VariableValue & coupledValuePreviousNL(const std::string &var_name, unsigned int comp=0) const
Returns value of previous Newton iterate of a coupled variable.
Moose::Kokkos::ADVariableValue kokkosADCoupledValuesOld(const std::string &var_name) const
Moose::Kokkos::VariableValue kokkosCoupledDot(const std::string &var_name, unsigned int comp=0) const
void checkFuncType(const std::string var_name, VarType t, FuncAge age) const
Definition Coupleable.C:217
Moose::Kokkos::ADVariableValue kokkosADCoupledValueOld(const std::string &var_name, unsigned int comp=0) const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorNodalDot(const std::string &var_name, unsigned int comp=0) const
const VectorVariableValue * getDefaultVectorValue(const std::string &var_name) const
Helper method to return (and insert if necessary) the default value for an uncoupled vector variable.
Definition Coupleable.C:393
const ADVariableGradient & adCoupledGradientDot(const std::string &var_name, unsigned int comp=0) const
Returns gradient of a coupled variable's time derivative for use in Automatic Differentiation.
Moose::Kokkos::ADVariableValue kokkosADCoupledNodalValueOld(const std::string &var_name, unsigned int comp=0) const
Moose::Kokkos::ADVariableValue kokkosADCoupledNodalValues(const std::string &var_name) const
virtual const ArrayVariableGradient & coupledArrayGradientOlder(const std::string &var_name, unsigned int comp=0) const
Returns an old gradient from two time steps previous of a coupled array variable.
virtual const VectorVariableDivergence & coupledDiv(const std::string &var_name, unsigned int comp=0) const
Returns divergence of a coupled variable.
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorNodalDots(const std::string &var_name) const
unsigned int _coupleable_max_qps
Maximum qps for any element in this system.
Moose::Kokkos::VariableValue kokkosCoupledDofValueOld(const std::string &var_name, unsigned int comp=0) const
virtual VariableValue & writableCoupledValue(const std::string &var_name, unsigned int comp=0)
Returns a writable reference to a coupled variable for writing to multiple AuxVariables from a single...
Definition Coupleable.C:946
virtual const ArrayVariableValue & coupledArrayValueOld(const std::string &var_name, unsigned int comp=0) const
Returns an old value from previous time step of a coupled array variable.
ArrayMooseVariable * getArrayVar(const std::string &var_name, unsigned int comp)
Extract pointer to a coupled array variable.
Definition Coupleable.C:337
Moose::Kokkos::ADVariableValue kokkosADCoupledValueOlder(const std::string &var_name, unsigned int comp=0) const
virtual const VariableGradient & coupledGradientOld(const std::string &var_name, unsigned int comp=0) const
Returns an old gradient from previous time step of a coupled variable.
virtual const VectorVariableValue & coupledVectorDotDot(const std::string &var_name, unsigned int comp=0) const
Second time derivative of a coupled vector variable.
Moose::Kokkos::ADVariableValue kokkosADCoupledVectorTagValueByName(const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorValueOld(const std::string &var_name, unsigned int comp=0) const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorNodalValueOlder(const std::string &var_name, unsigned int comp=0) const
virtual const VariableValue & coupledDofValuesOlder(const std::string &var_name, unsigned int comp=0) const
Returns DoFs in the older solution vector of a coupled variable for the local element.
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorTagVectorDofValues(const std::string &var_name, const std::string &tag_param_name) const
MooseWritableVariable & writableVariable(const std::string &var_name, unsigned int comp=0)
Returns a writable MooseVariable object for a nodal or elemental variable.
Definition Coupleable.C:909
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorTagVectorNodalValueByName(const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
Moose::Kokkos::VariableGradient kokkosCoupledGradientsOlder(const std::string &var_name) const
std::vector< VariableName > coupledNames(const std::string &var_name) const
Names of the variables in the Coupleable interface.
const bool _c_allow_element_to_nodal_coupling
virtual const ArrayVariableValue & coupledArrayDofValues(const std::string &var_name, unsigned int comp=0) const
Returns DoFs in the current solution vector of a coupled array variable for the local element.
std::vector< const VariableValue * > coupledAllDofValues(const std::string &var_name) const
Returns DoFs in the current solution vector of all of a coupled variable's components for the local e...
Moose::Kokkos::VectorVariableGradient kokkosCoupledVectorGradients(const std::string &var_name) const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorDots(const std::string &var_name) const
const SystemBase *const _c_sys
Pointer to the system object if the moose object this is an interface for has one.
const VariableValue & coupledArrayDotDu(const std::string &var_name, unsigned int comp=0) const
Time derivative of a coupled array variable with respect to the coefficients.
const ADVectorVariableGradient & adCoupledVectorGradient(const std::string &var_name, unsigned int comp=0) const
Returns gradient of a coupled vector variable for use in Automatic Differentiation.
Moose::Kokkos::ADVariableValue kokkosADCoupledDofValueOld(const std::string &var_name, unsigned int comp=0) const
const T & coupledNodalValueOld(const std::string &var_name, unsigned int comp=0) const
Returns an old nodal value from previous time step of a coupled variable.
Moose::Kokkos::VariableGradient kokkosCoupledGradients(const std::string &var_name) const
VariableName coupledName(const std::string &var_name, unsigned int comp=0) const
Names of the variable in the Coupleable interface.
virtual const VariableValue & coupledDotDot(const std::string &var_name, unsigned int comp=0) const
Second time derivative of a coupled variable.
const MooseArray< ADRealVectorValue > & _ad_grad_zero
const ADVectorVariableValue * getADDefaultVectorValue(const std::string &var_name) const
Helper method to return (and insert if necessary) the default vector value for Automatic Differentiat...
Moose::Kokkos::ADVariableGradient kokkosADCoupledVectorTagGradientsByName(const std::string &var_name, const std::string &tag_name) const
Moose::Kokkos::VariableValue kokkosCoupledVectorTagValue(const std::string &var_name, const std::string &tag_param_name, unsigned int comp=0) const
Moose::Kokkos::VariableValue kokkosCoupledVectorTagValuesByName(const std::string &var_name, const std::string &tag_name) const
Moose::Kokkos::Variable kokkosCoupledVectorTagVariable(const std::string &var_name, const std::string &tag_name, unsigned int comp) const
Moose::Kokkos::ADVariableValue kokkosADCoupledVectorTagNodalValues(const std::string &var_name, const std::string &tag_param_name) const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorDofValuesOld(const std::string &var_name) const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorTagVectorNodalValues(const std::string &var_name, const std::string &tag_param_name) const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorValuesOld(const std::string &var_name) const
const T * getVarHelper(const std::string &var_name, unsigned int comp) const
Helper that that be used to retrieve a variable of arbitrary type T.
unsigned int coupledComponents(const std::string &var_name) const
Number of coupled components.
Definition Coupleable.C:183
std::vector< const VectorVariableValue * > coupledVectorValues(const std::string &var_name) const
Returns the values for all of a coupled vector variable's components.
Moose::Kokkos::VariableValue kokkosZeroValue() const
Moose::Kokkos::VariableValue kokkosCoupledValuesOld(const std::string &var_name) const
std::vector< const VariableValue * > coupledAllDofValuesOlder(const std::string &var_name) const
Returns DoFs in the older solution vector of all of a coupled variable's components for the local ele...
Moose::Kokkos::VectorVariableGradient kokkosCoupledVectorGradientOlder(const std::string &var_name, unsigned int comp=0) const
std::vector< MooseVariable * > _coupled_standard_moose_vars
Vector of standard coupled variables.
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorTagVectorValueByName(const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
Moose::Kokkos::ADVariableValue kokkosADCoupledVectorTagValues(const std::string &var_name, const std::string &tag_param_name) const
const VectorVariableValue & _vector_zero
Zero value of a vector variable.
const GenericVectorVariableValue< is_ad > & coupledGenericVectorValue(const std::string &var_name, unsigned int comp=0) const
Returns value of a coupled vector variable for use in templated automatic differentiation classes.
const std::set< TagID > & getFEVariableCoupleableVectorTags() const
Definition Coupleable.h:124
virtual const ArrayVariableValue & coupledArrayValueOlder(const std::string &var_name, unsigned int comp=0) const
Returns an old value from two time steps previous of a coupled array variable.
const VariablePhiSecond & _second_phi_zero
Zero second derivative of a test function.
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorDofValueOld(const std::string &var_name, unsigned int comp=0) const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorDofValue(const std::string &var_name, unsigned int comp=0) const
Moose::Kokkos::ADVariableGradient kokkosADCoupledGradientOld(const std::string &var_name, unsigned int comp=0) const
Moose::Kokkos::ADVariableGradient kokkosADCoupledGradient(const std::string &var_name, unsigned int comp=0) const
virtual const ArrayVariableValue & coupledVectorTagArrayValue(const std::string &var_names, TagID tag, unsigned int index=0) const
Returns value of a coupled array variable for a given tag.
Definition Coupleable.C:666
virtual const VariableGradient & coupledGradientDotDot(const std::string &var_name, unsigned int comp=0) const
Second time derivative of the gradient of a coupled variable.
Moose::Kokkos::ADVariableGradient kokkosADCoupledVectorTagGradientByName(const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
const std::vector< MooseVariable * > & getCoupledStandardMooseVars() const
Get the list of standard coupled variables.
Definition Coupleable.h:93
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorNodalValuesOlder(const std::string &var_name) const
const std::unordered_map< std::string, std::vector< MooseVariableFieldBase * > > & getCoupledVars() const
Get the list of coupled variables.
Definition Coupleable.h:75
const VariablePhiValue & _phi_zero
std::vector< const ADVectorVariableValue * > adCoupledVectorValues(const std::string &var_name) const
Returns the values for all of a coupled vector variable's components for use in Automatic Differentia...
virtual unsigned int coupled(const std::string &var_name, unsigned int comp=0) const
Returns the index for a coupled variable by name.
Definition Coupleable.C:473
virtual const VariableValue & coupledDotOld(const std::string &var_name, unsigned int comp=0) const
Old time derivative of a coupled variable.
const std::vector< VectorMooseVariable * > & getCoupledVectorMooseVars() const
Get the list of vector coupled variables.
Definition Coupleable.h:102
std::vector< std::set< MooseWritableVariable * > > _writable_coupled_variables
keep a set of allocated writable variable references to make sure only one object can obtain them per...
std::vector< const VariableValue * > coupledValuesOlder(const std::string &var_name) const
Returns the older values for all of a coupled variable's components.
Moose::Kokkos::ADVariableValue kokkosADCoupledDots(const std::string &var_name) const
std::set< TagID > & getFEVariableCoupleableMatrixTags()
Definition Coupleable.h:122
const std::unordered_map< std::string, std::string > & _new_to_deprecated_coupled_vars
map from new to deprecated variable names
Moose::Kokkos::ADVariableValue kokkosADCoupledDofValues(const std::string &var_name) const
void requestStates(const std::string &var_name, const TagName &tag_name, const unsigned int comp)
Method that may request additional solution states from the variable's system depending on the value ...
Definition Coupleable.C:579
virtual void coupledCallback(const std::string &, bool) const
A call-back function provided by the derived object for actions before coupling a variable with funct...
Definition Coupleable.h:149
Moose::Kokkos::VariableValue kokkosCoupledValuesOlder(const std::string &var_name) const
Moose::Kokkos::VariableValue kokkosCoupledNodalValueOlder(const std::string &var_name, unsigned int comp=0) const
std::vector< MooseVariableFieldBase * > _coupled_moose_vars
Vector of all coupled variables.
Moose::Kokkos::ADVariableGradient kokkosADCoupledGradientsOld(const std::string &var_name) const
virtual bool isCoupled(const std::string &var_name, unsigned int i=0) const
Returns true if a variables has been coupled as name.
Definition Coupleable.C:154
virtual const VariableGradient & coupledVectorTagGradient(const std::string &var_names, TagID tag, unsigned int index=0) const
Returns gradient of a coupled variable for a given tag.
Definition Coupleable.C:682
const Moose::ADType< T >::type & adCoupledNodalValue(const std::string &var_name, unsigned int comp=0) const
Returns AD nodal values of a coupled variable.
bool _coupleable_neighbor
Whether or not this object is a "neighbor" object: ie all of it's coupled values should be neighbor v...
virtual const ArrayVariableValue & coupledArrayDotDotOld(const std::string &var_name, unsigned int comp=0) const
Old second time derivative of a coupled array variable.
const std::string & _c_type
The type of the object this interface is part of.
Moose::Kokkos::VariableValue kokkosCoupledVectorTagNodalValues(const std::string &var_name, const std::string &tag_param_name) const
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorDofValuesOlder(const std::string &var_name) const
const OutputTools< T >::VariableValue & vectorTagValueHelper(const std::string &var_names, TagID tag, unsigned int index=0) const
Generic helper method to get vector tag values based on tag ID.
Definition Coupleable.C:553
virtual const VariableValue & coupledVectorTagValue(const std::string &var_names, TagID tag, unsigned int index=0) const
Returns value of a coupled variable for a given tag.
Definition Coupleable.C:650
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorTagVectorDofValueByName(const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
std::vector< const MooseVariableFieldBase * > getFieldVars(const std::string &var_name) const
Definition Coupleable.C:313
std::vector< const VariableValue * > coupledValuesOld(const std::string &var_name) const
Returns the old values for all of a coupled variable's components.
Moose::Kokkos::ADVariableValue kokkosADCoupledDofValuesOlder(const std::string &var_name) const
virtual const VectorVariableGradient & coupledVectorGradientOld(const std::string &var_name, unsigned int comp=0) const
Returns an old gradient from previous time step of a coupled vector variable.
virtual const VariableValue & coupledVectorTagDofValue(const std::string &var_name, TagID tag, unsigned int index=0) const
Returns dof value of a coupled variable for a given tag.
Definition Coupleable.C:798
std::vector< const GenericVariableGradient< is_ad > * > coupledGenericGradients(const std::string &var_name) const
Returns the gradients for all of a coupled variable's components for use in templated automatic diffe...
virtual const VariableSecond & coupledSecondOlder(const std::string &var_name, unsigned int comp=0) const
Returns an old second derivative from two time steps previous of a coupled variable.
Moose::Kokkos::VariableValue kokkosCoupledDofValues(const std::string &var_name) const
std::vector< VectorMooseVariable * > _coupled_vector_moose_vars
Vector of vector coupled variables.
virtual const VariableValue & coupledDotDotDu(const std::string &var_name, unsigned int comp=0) const
Second time derivative of a coupled variable with respect to the coefficients.
const T & coupledNodalValuePreviousNL(const std::string &var_name, unsigned int comp=0) const
Returns nodal values of a coupled variable for previous Newton iterate.
const MooseArray< ADReal > & _ad_zero
const ADVectorVariableCurl & getADDefaultCurl() const
Helper method to return (and insert if necessary) the default curl value for Automatic Differentiatio...
Moose::Kokkos::VectorVariableValue kokkosCoupledVectorTagVectorNodalValue(const std::string &var_name, const std::string &tag_param_name, unsigned int comp=0) const
VariableSecond _default_second
This will always be zero because the default values for optionally coupled variables is always consta...
std::vector< MooseVariableField< Real > * > _coupled_fv_moose_vars
Vector of all finite volume coupled variables.
const bool _is_fv
Whether the MooseObject is a finite volume object.
virtual const VectorVariableValue & coupledVectorValueOld(const std::string &var_name, unsigned int comp=0) const
Returns an old value from previous time step of a coupled vector variable.
Moose::Kokkos::VectorVariableGradient kokkosCoupledVectorTagVectorGradientByName(const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
MooseArray< ADRealVectorValue > _ad_default_gradient
This will always be zero because the default values for optionally coupled variables is always consta...
void checkWritableVar(MooseWritableVariable *var)
Checks that the passed in variable is only accessed writable by one object in a given subdomain.
Definition Coupleable.C:984
const ArrayVariableValue * getDefaultArrayValue(const std::string &var_name) const
Helper method to return (and insert if necessary) the default value for an uncoupled array variable.
Definition Coupleable.C:428
Moose::Kokkos::ADVariableValue kokkosADCoupledVectorTagNodalValueByName(const std::string &var_name, const std::string &tag_name, unsigned int comp=0) const
virtual const VectorVariableValue & coupledVectorValueOlder(const std::string &var_name, unsigned int comp=0) const
Returns an old value from two time steps previous of a coupled vector variable.
virtual const VariableValue & coupledDofValues(const std::string &var_name, unsigned int comp=0) const
Returns DoFs in the current solution vector of a coupled variable for the local element.
Moose::Kokkos::ADVariableValue kokkosADCoupledNodalValuesOlder(const std::string &var_name) const
Moose::Kokkos::VariableValue kokkosCoupledValue(const std::string &var_name, unsigned int comp=0) const
virtual const ArrayVariableValue & coupledArrayDot(const std::string &var_name, unsigned int comp=0) const
Time derivative of a coupled array variable.
Specialization of SubProblem for solving nonlinear equations plus auxiliary equations.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
const std::string & checkForRename(const std::string &name) const
Checks whether the provided name is a renamed parameter name.
Every object that can be built by the factory should be derived from this class.
Definition MooseObject.h:31
This class provides an interface for common operations on field variables of both FE and FV types wit...
Class for stuff related to variables.
Class for scalar variables (they are different).
This is a wrapper that forwards calls to the implementation, which can be switched out at any time wi...
The Kokkos wrapper class that can hold the reference of an arithmetic scalar variable.
The Kokkos wrapper classes for MOOSE-like variable value access.
The Kokkos variable object that carries the coupled variable and tag information.
Base class for a system (of equations)
Definition SystemBase.h:87
const TagName OLDER_SOLUTION_TAG
Definition MooseTypes.C:27
const TagName OLD_SOLUTION_TAG
Definition MooseTypes.C:26
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...