Line data Source code
1 : //* This file is part of the MOOSE framework
2 : //* https://www.mooseframework.org
3 : //*
4 : //* All rights reserved, see COPYRIGHT for full restrictions
5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 : //*
7 : //* Licensed under LGPL 2.1, please see LICENSE for details
8 : //* https://www.gnu.org/licenses/lgpl-2.1.html
9 :
10 : #include "KokkosVariableValue.h"
11 :
12 : #include "Coupleable.h"
13 : #include "SystemBase.h"
14 : #include "FEProblemBase.h"
15 :
16 : using CoupleableKey = Moose::Kokkos::Variable::CoupleableKey;
17 :
18 : Moose::Kokkos::Variable
19 3137 : Coupleable::kokkosCoupledVectorTagVariable(const std::string & var_name,
20 : const std::string & tag_name,
21 : unsigned int comp) const
22 : {
23 3137 : Moose::Kokkos::Variable variable;
24 :
25 3137 : if (isCoupled(var_name))
26 : {
27 1403 : auto var = const_cast<MooseVariableField<Real> *>(
28 1642 : getVarHelper<MooseVariableField<Real>>(var_name, comp));
29 :
30 3045 : if (tag_name == Moose::OLD_SOLUTION_TAG)
31 51 : var->sys().needSolutionState(1);
32 2994 : else if (tag_name == Moose::OLDER_SOLUTION_TAG)
33 34 : var->sys().needSolutionState(2);
34 :
35 3045 : const auto tag = _c_fe_problem.getVectorTagID(tag_name);
36 :
37 3045 : const_cast<Coupleable *>(this)->addFEVariableCoupleableVectorTag(tag);
38 :
39 3045 : variable.init(*var, tag);
40 : }
41 : else
42 : {
43 184 : std::vector<Real> default_value = {_c_parameters.defaultCoupledValue(var_name, comp)};
44 :
45 92 : variable.init(default_value, CoupleableKey{});
46 92 : }
47 :
48 3137 : return variable;
49 0 : }
50 :
51 : Moose::Kokkos::Variable
52 135 : Coupleable::kokkosCoupledVectorTagVariables(const std::string & var_name,
53 : const std::string & tag_name) const
54 : {
55 135 : Moose::Kokkos::Variable variable;
56 :
57 135 : const auto components = coupledComponents(var_name);
58 :
59 135 : if (isCoupled(var_name))
60 : {
61 135 : std::vector<const MooseVariableFieldBase *> vars;
62 :
63 353 : for (unsigned int comp = 0; comp < components; ++comp)
64 : {
65 88 : auto var = const_cast<MooseVariableField<Real> *>(
66 130 : getVarHelper<MooseVariableField<Real>>(var_name, comp));
67 :
68 218 : if (tag_name == Moose::OLD_SOLUTION_TAG)
69 0 : var->sys().needSolutionState(1);
70 218 : else if (tag_name == Moose::OLDER_SOLUTION_TAG)
71 0 : var->sys().needSolutionState(2);
72 :
73 218 : vars.push_back(var);
74 : }
75 :
76 135 : const auto tag = _c_fe_problem.getVectorTagID(tag_name);
77 :
78 135 : const_cast<Coupleable *>(this)->addFEVariableCoupleableVectorTag(tag);
79 :
80 135 : variable.init(vars, tag);
81 135 : }
82 : else
83 : {
84 0 : std::vector<Real> default_values(components);
85 :
86 0 : for (unsigned int comp = 0; comp < components; ++comp)
87 0 : default_values[comp] = _c_parameters.defaultCoupledValue(var_name, comp);
88 :
89 0 : variable.init(default_values, CoupleableKey{});
90 0 : }
91 :
92 135 : return variable;
93 0 : }
94 :
95 : Moose::Kokkos::Variable
96 121 : Coupleable::kokkosCoupledVectorTagVectorVariable(const std::string & var_name,
97 : const std::string & tag_name,
98 : unsigned int comp) const
99 : {
100 121 : Moose::Kokkos::Variable variable;
101 :
102 121 : if (isCoupled(var_name))
103 : {
104 38 : auto var = const_cast<MooseVariableField<RealVectorValue> *>(
105 42 : getVarHelper<MooseVariableField<RealVectorValue>>(var_name, comp));
106 :
107 80 : if (tag_name == Moose::OLD_SOLUTION_TAG)
108 17 : var->sys().needSolutionState(1);
109 63 : else if (tag_name == Moose::OLDER_SOLUTION_TAG)
110 17 : var->sys().needSolutionState(2);
111 :
112 80 : const auto tag = _c_fe_problem.getVectorTagID(tag_name);
113 :
114 80 : const_cast<Coupleable *>(this)->addFEVariableCoupleableVectorTag(tag);
115 :
116 80 : variable.init(*var, tag);
117 : }
118 : else
119 : {
120 41 : Moose::Kokkos::Real3 default_value = (*getDefaultVectorValue(var_name))[0];
121 :
122 123 : variable.init({default_value}, CoupleableKey{});
123 : }
124 :
125 121 : return variable;
126 0 : }
127 :
128 : Moose::Kokkos::Variable
129 0 : Coupleable::kokkosCoupledVectorTagVectorVariables(const std::string & var_name,
130 : const std::string & tag_name) const
131 : {
132 0 : Moose::Kokkos::Variable variable;
133 :
134 0 : const auto components = coupledComponents(var_name);
135 :
136 0 : if (isCoupled(var_name))
137 : {
138 0 : std::vector<const MooseVariableFieldBase *> vars;
139 :
140 0 : for (unsigned int comp = 0; comp < components; ++comp)
141 : {
142 0 : auto var = const_cast<MooseVariableField<RealVectorValue> *>(
143 0 : getVarHelper<MooseVariableField<RealVectorValue>>(var_name, comp));
144 :
145 0 : if (tag_name == Moose::OLD_SOLUTION_TAG)
146 0 : var->sys().needSolutionState(1);
147 0 : else if (tag_name == Moose::OLDER_SOLUTION_TAG)
148 0 : var->sys().needSolutionState(2);
149 :
150 0 : vars.push_back(var);
151 : }
152 :
153 0 : const auto tag = _c_fe_problem.getVectorTagID(tag_name);
154 :
155 0 : const_cast<Coupleable *>(this)->addFEVariableCoupleableVectorTag(tag);
156 :
157 0 : variable.init(vars, tag);
158 0 : }
159 : else
160 : {
161 0 : Moose::Kokkos::Real3 default_value = (*getDefaultVectorValue(var_name))[0];
162 :
163 0 : variable.init({default_value}, CoupleableKey{});
164 : }
165 :
166 0 : return variable;
167 0 : }
168 :
169 : Moose::Kokkos::Variable
170 306 : Coupleable::kokkosZeroVariable() const
171 : {
172 306 : Moose::Kokkos::Variable variable;
173 :
174 612 : variable.init(std::vector<Real>{0}, CoupleableKey{});
175 :
176 306 : return variable;
177 0 : }
178 :
179 : Moose::Kokkos::VariableValue
180 1386 : Coupleable::kokkosCoupledVectorTagValueByName(const std::string & var_name,
181 : const std::string & tag_name,
182 : unsigned int comp) const
183 : {
184 1386 : auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
185 :
186 2772 : return Moose::Kokkos::VariableValue(variable);
187 1386 : }
188 :
189 : Moose::Kokkos::VariableValue
190 135 : Coupleable::kokkosCoupledVectorTagValuesByName(const std::string & var_name,
191 : const std::string & tag_name) const
192 : {
193 135 : auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
194 :
195 270 : return Moose::Kokkos::VariableValue(variable);
196 135 : }
197 :
198 : Moose::Kokkos::VariableGradient
199 680 : Coupleable::kokkosCoupledVectorTagGradientByName(const std::string & var_name,
200 : const std::string & tag_name,
201 : unsigned int comp) const
202 : {
203 680 : auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
204 :
205 1360 : return Moose::Kokkos::VariableGradient(variable);
206 680 : }
207 :
208 : Moose::Kokkos::VariableGradient
209 0 : Coupleable::kokkosCoupledVectorTagGradientsByName(const std::string & var_name,
210 : const std::string & tag_name) const
211 : {
212 0 : auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
213 :
214 0 : return Moose::Kokkos::VariableGradient(variable);
215 0 : }
216 :
217 : Moose::Kokkos::VariableValue
218 850 : Coupleable::kokkosCoupledVectorTagNodalValueByName(const std::string & var_name,
219 : const std::string & tag_name,
220 : unsigned int comp) const
221 : {
222 850 : auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
223 :
224 850 : if (!variable.nodal())
225 0 : mooseError("Cannot get nodal values from the coupled variable '",
226 : var_name,
227 : "', because the associated variable is not nodal.");
228 :
229 1700 : return Moose::Kokkos::VariableValue(variable, true);
230 850 : }
231 :
232 : Moose::Kokkos::VariableValue
233 0 : Coupleable::kokkosCoupledVectorTagNodalValuesByName(const std::string & var_name,
234 : const std::string & tag_name) const
235 : {
236 0 : auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
237 :
238 0 : if (!variable.nodal())
239 0 : mooseError("Cannot get nodal values from the coupled variable '",
240 : var_name,
241 : "', because the associated variable is not nodal.");
242 :
243 0 : return Moose::Kokkos::VariableValue(variable, true);
244 0 : }
245 :
246 : Moose::Kokkos::VariableValue
247 83 : Coupleable::kokkosCoupledVectorTagDofValueByName(const std::string & var_name,
248 : const std::string & tag_name,
249 : unsigned int comp) const
250 : {
251 83 : auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
252 :
253 166 : return Moose::Kokkos::VariableValue(variable, true);
254 83 : }
255 :
256 : Moose::Kokkos::VariableValue
257 0 : Coupleable::kokkosCoupledVectorTagDofValuesByName(const std::string & var_name,
258 : const std::string & tag_name) const
259 : {
260 0 : auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
261 :
262 0 : return Moose::Kokkos::VariableValue(variable, true);
263 0 : }
264 :
265 : Moose::Kokkos::VariableValue
266 204 : Coupleable::kokkosCoupledVectorTagValue(const std::string & var_name,
267 : const std::string & tag_param_name,
268 : unsigned int comp) const
269 : {
270 204 : if (!_c_parameters.isParamValid(tag_param_name))
271 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
272 :
273 204 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
274 :
275 408 : return kokkosCoupledVectorTagValueByName(var_name, tag_name, comp);
276 204 : }
277 :
278 : Moose::Kokkos::VariableValue
279 0 : Coupleable::kokkosCoupledVectorTagValues(const std::string & var_name,
280 : const std::string & tag_param_name) const
281 : {
282 0 : if (!_c_parameters.isParamValid(tag_param_name))
283 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
284 :
285 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
286 :
287 0 : return kokkosCoupledVectorTagValuesByName(var_name, tag_name);
288 0 : }
289 :
290 : Moose::Kokkos::VariableGradient
291 0 : Coupleable::kokkosCoupledVectorTagGradient(const std::string & var_name,
292 : const std::string & tag_param_name,
293 : unsigned int comp) const
294 : {
295 0 : if (!_c_parameters.isParamValid(tag_param_name))
296 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
297 :
298 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
299 :
300 0 : return kokkosCoupledVectorTagGradientByName(var_name, tag_name, comp);
301 0 : }
302 :
303 : Moose::Kokkos::VariableGradient
304 0 : Coupleable::kokkosCoupledVectorTagGradients(const std::string & var_name,
305 : const std::string & tag_param_name) const
306 : {
307 0 : if (!_c_parameters.isParamValid(tag_param_name))
308 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
309 :
310 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
311 :
312 0 : return kokkosCoupledVectorTagGradientsByName(var_name, tag_name);
313 0 : }
314 :
315 : Moose::Kokkos::VariableValue
316 100 : Coupleable::kokkosCoupledVectorTagNodalValue(const std::string & var_name,
317 : const std::string & tag_param_name,
318 : unsigned int comp) const
319 : {
320 100 : if (!_c_parameters.isParamValid(tag_param_name))
321 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
322 :
323 100 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
324 :
325 200 : return kokkosCoupledVectorTagNodalValueByName(var_name, tag_name, comp);
326 100 : }
327 :
328 : Moose::Kokkos::VariableValue
329 0 : Coupleable::kokkosCoupledVectorTagNodalValues(const std::string & var_name,
330 : const std::string & tag_param_name) const
331 : {
332 0 : if (!_c_parameters.isParamValid(tag_param_name))
333 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
334 :
335 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
336 :
337 0 : return kokkosCoupledVectorTagNodalValuesByName(var_name, tag_name);
338 0 : }
339 :
340 : Moose::Kokkos::VariableValue
341 0 : Coupleable::kokkosCoupledVectorTagDofValue(const std::string & var_name,
342 : const std::string & tag_param_name,
343 : unsigned int comp) const
344 : {
345 0 : if (!_c_parameters.isParamValid(tag_param_name))
346 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
347 :
348 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
349 :
350 0 : return kokkosCoupledVectorTagDofValueByName(var_name, tag_name, comp);
351 0 : }
352 :
353 : Moose::Kokkos::VariableValue
354 0 : Coupleable::kokkosCoupledVectorTagDofValues(const std::string & var_name,
355 : const std::string & tag_param_name) const
356 : {
357 0 : if (!_c_parameters.isParamValid(tag_param_name))
358 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
359 :
360 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
361 :
362 0 : return kokkosCoupledVectorTagDofValuesByName(var_name, tag_name);
363 0 : }
364 :
365 : Moose::Kokkos::VectorVariableValue
366 0 : Coupleable::kokkosCoupledVectorTagVectorValueByName(const std::string & var_name,
367 : const std::string & tag_name,
368 : unsigned int comp) const
369 : {
370 0 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, tag_name, comp);
371 :
372 0 : return Moose::Kokkos::VectorVariableValue(variable);
373 0 : }
374 :
375 : Moose::Kokkos::VectorVariableValue
376 0 : Coupleable::kokkosCoupledVectorTagVectorValuesByName(const std::string & var_name,
377 : const std::string & tag_name) const
378 : {
379 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, tag_name);
380 :
381 0 : return Moose::Kokkos::VectorVariableValue(variable);
382 0 : }
383 :
384 : Moose::Kokkos::VectorVariableGradient
385 0 : Coupleable::kokkosCoupledVectorTagVectorGradientByName(const std::string & var_name,
386 : const std::string & tag_name,
387 : unsigned int comp) const
388 : {
389 0 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, tag_name, comp);
390 :
391 0 : return Moose::Kokkos::VectorVariableGradient(variable);
392 0 : }
393 :
394 : Moose::Kokkos::VectorVariableGradient
395 0 : Coupleable::kokkosCoupledVectorTagVectorGradientsByName(const std::string & var_name,
396 : const std::string & tag_name) const
397 : {
398 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, tag_name);
399 :
400 0 : return Moose::Kokkos::VectorVariableGradient(variable);
401 0 : }
402 :
403 : Moose::Kokkos::VectorVariableValue
404 0 : Coupleable::kokkosCoupledVectorTagVectorNodalValueByName(const std::string & var_name,
405 : const std::string & tag_name,
406 : unsigned int comp) const
407 : {
408 0 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, tag_name, comp);
409 :
410 0 : if (!variable.nodal())
411 0 : mooseError("Cannot get nodal values from the coupled vector variable '",
412 : var_name,
413 : "', because the associated variable is not nodal.");
414 :
415 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
416 0 : }
417 :
418 : Moose::Kokkos::VectorVariableValue
419 0 : Coupleable::kokkosCoupledVectorTagVectorNodalValuesByName(const std::string & var_name,
420 : const std::string & tag_name) const
421 : {
422 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, tag_name);
423 :
424 0 : if (!variable.nodal())
425 0 : mooseError("Cannot get nodal values from the coupled vector variable '",
426 : var_name,
427 : "', because the associated variable is not nodal.");
428 :
429 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
430 0 : }
431 :
432 : Moose::Kokkos::VectorVariableValue
433 0 : Coupleable::kokkosCoupledVectorTagVectorDofValueByName(const std::string & var_name,
434 : const std::string & tag_name,
435 : unsigned int comp) const
436 : {
437 0 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, tag_name, comp);
438 :
439 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
440 0 : }
441 :
442 : Moose::Kokkos::VectorVariableValue
443 0 : Coupleable::kokkosCoupledVectorTagVectorDofValuesByName(const std::string & var_name,
444 : const std::string & tag_name) const
445 : {
446 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, tag_name);
447 :
448 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
449 0 : }
450 :
451 : Moose::Kokkos::VectorVariableValue
452 0 : Coupleable::kokkosCoupledVectorTagVectorValue(const std::string & var_name,
453 : const std::string & tag_param_name,
454 : unsigned int comp) const
455 : {
456 0 : if (!_c_parameters.isParamValid(tag_param_name))
457 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
458 :
459 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
460 :
461 0 : return kokkosCoupledVectorTagVectorValueByName(var_name, tag_name, comp);
462 0 : }
463 :
464 : Moose::Kokkos::VectorVariableValue
465 0 : Coupleable::kokkosCoupledVectorTagVectorValues(const std::string & var_name,
466 : const std::string & tag_param_name) const
467 : {
468 0 : if (!_c_parameters.isParamValid(tag_param_name))
469 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
470 :
471 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
472 :
473 0 : return kokkosCoupledVectorTagVectorValuesByName(var_name, tag_name);
474 0 : }
475 :
476 : Moose::Kokkos::VectorVariableGradient
477 0 : Coupleable::kokkosCoupledVectorTagVectorGradient(const std::string & var_name,
478 : const std::string & tag_param_name,
479 : unsigned int comp) const
480 : {
481 0 : if (!_c_parameters.isParamValid(tag_param_name))
482 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
483 :
484 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
485 :
486 0 : return kokkosCoupledVectorTagVectorGradientByName(var_name, tag_name, comp);
487 0 : }
488 :
489 : Moose::Kokkos::VectorVariableGradient
490 0 : Coupleable::kokkosCoupledVectorTagVectorGradients(const std::string & var_name,
491 : const std::string & tag_param_name) const
492 : {
493 0 : if (!_c_parameters.isParamValid(tag_param_name))
494 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
495 :
496 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
497 :
498 0 : return kokkosCoupledVectorTagVectorGradientsByName(var_name, tag_name);
499 0 : }
500 :
501 : Moose::Kokkos::VectorVariableValue
502 0 : Coupleable::kokkosCoupledVectorTagVectorNodalValue(const std::string & var_name,
503 : const std::string & tag_param_name,
504 : unsigned int comp) const
505 : {
506 0 : if (!_c_parameters.isParamValid(tag_param_name))
507 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
508 :
509 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
510 :
511 0 : return kokkosCoupledVectorTagVectorNodalValueByName(var_name, tag_name, comp);
512 0 : }
513 :
514 : Moose::Kokkos::VectorVariableValue
515 0 : Coupleable::kokkosCoupledVectorTagVectorNodalValues(const std::string & var_name,
516 : const std::string & tag_param_name) const
517 : {
518 0 : if (!_c_parameters.isParamValid(tag_param_name))
519 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
520 :
521 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
522 :
523 0 : return kokkosCoupledVectorTagVectorNodalValuesByName(var_name, tag_name);
524 0 : }
525 :
526 : Moose::Kokkos::VectorVariableValue
527 0 : Coupleable::kokkosCoupledVectorTagVectorDofValue(const std::string & var_name,
528 : const std::string & tag_param_name,
529 : unsigned int comp) const
530 : {
531 0 : if (!_c_parameters.isParamValid(tag_param_name))
532 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
533 :
534 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
535 :
536 0 : return kokkosCoupledVectorTagVectorDofValueByName(var_name, tag_name, comp);
537 0 : }
538 :
539 : Moose::Kokkos::VectorVariableValue
540 0 : Coupleable::kokkosCoupledVectorTagVectorDofValues(const std::string & var_name,
541 : const std::string & tag_param_name) const
542 : {
543 0 : if (!_c_parameters.isParamValid(tag_param_name))
544 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
545 :
546 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
547 :
548 0 : return kokkosCoupledVectorTagVectorDofValuesByName(var_name, tag_name);
549 0 : }
550 :
551 : Moose::Kokkos::VariableValue
552 1578 : Coupleable::kokkosCoupledValue(const std::string & var_name, unsigned int comp) const
553 : {
554 1578 : return _c_nodal ? kokkosCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_TAG, comp)
555 865 : : kokkosCoupledVectorTagValueByName(var_name, Moose::SOLUTION_TAG, comp);
556 : }
557 :
558 : Moose::Kokkos::VariableValue
559 135 : Coupleable::kokkosCoupledValues(const std::string & var_name) const
560 : {
561 135 : return _c_nodal ? kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_TAG)
562 79 : : kokkosCoupledVectorTagValuesByName(var_name, Moose::SOLUTION_TAG);
563 : }
564 :
565 : Moose::Kokkos::VariableGradient
566 680 : Coupleable::kokkosCoupledGradient(const std::string & var_name, unsigned int comp) const
567 : {
568 680 : return kokkosCoupledVectorTagGradientByName(var_name, Moose::SOLUTION_TAG, comp);
569 : }
570 :
571 : Moose::Kokkos::VariableGradient
572 0 : Coupleable::kokkosCoupledGradients(const std::string & var_name) const
573 : {
574 0 : return kokkosCoupledVectorTagGradientsByName(var_name, Moose::SOLUTION_TAG);
575 : }
576 :
577 : Moose::Kokkos::VariableValue
578 274 : Coupleable::kokkosCoupledNodalValue(const std::string & var_name, unsigned int comp) const
579 : {
580 274 : return kokkosCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_TAG, comp);
581 : }
582 :
583 : Moose::Kokkos::VariableValue
584 0 : Coupleable::kokkosCoupledNodalValues(const std::string & var_name) const
585 : {
586 0 : return kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_TAG);
587 : }
588 :
589 : Moose::Kokkos::VariableValue
590 49 : Coupleable::kokkosCoupledDofValue(const std::string & var_name, unsigned int comp) const
591 : {
592 49 : return kokkosCoupledVectorTagDofValueByName(var_name, Moose::SOLUTION_TAG, comp);
593 : }
594 :
595 : Moose::Kokkos::VariableValue
596 0 : Coupleable::kokkosCoupledDofValues(const std::string & var_name) const
597 : {
598 0 : return kokkosCoupledVectorTagDofValuesByName(var_name, Moose::SOLUTION_TAG);
599 : }
600 :
601 : Moose::Kokkos::VariableValue
602 34 : Coupleable::kokkosCoupledValueOld(const std::string & var_name, unsigned int comp) const
603 : {
604 34 : return _c_nodal ? kokkosCoupledVectorTagNodalValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp)
605 18 : : kokkosCoupledVectorTagValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
606 : }
607 :
608 : Moose::Kokkos::VariableValue
609 0 : Coupleable::kokkosCoupledValuesOld(const std::string & var_name) const
610 : {
611 0 : return _c_nodal ? kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::OLD_SOLUTION_TAG)
612 0 : : kokkosCoupledVectorTagValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
613 : }
614 :
615 : Moose::Kokkos::VariableGradient
616 0 : Coupleable::kokkosCoupledGradientOld(const std::string & var_name, unsigned int comp) const
617 : {
618 0 : return kokkosCoupledVectorTagGradientByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
619 : }
620 :
621 : Moose::Kokkos::VariableGradient
622 0 : Coupleable::kokkosCoupledGradientsOld(const std::string & var_name) const
623 : {
624 0 : return kokkosCoupledVectorTagGradientsByName(var_name, Moose::OLD_SOLUTION_TAG);
625 : }
626 :
627 : Moose::Kokkos::VariableValue
628 0 : Coupleable::kokkosCoupledNodalValueOld(const std::string & var_name, unsigned int comp) const
629 : {
630 0 : return kokkosCoupledVectorTagNodalValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
631 : }
632 :
633 : Moose::Kokkos::VariableValue
634 0 : Coupleable::kokkosCoupledNodalValuesOld(const std::string & var_name) const
635 : {
636 0 : return kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
637 : }
638 :
639 : Moose::Kokkos::VariableValue
640 17 : Coupleable::kokkosCoupledDofValueOld(const std::string & var_name, unsigned int comp) const
641 : {
642 17 : return kokkosCoupledVectorTagDofValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
643 : }
644 :
645 : Moose::Kokkos::VariableValue
646 0 : Coupleable::kokkosCoupledDofValuesOld(const std::string & var_name) const
647 : {
648 0 : return kokkosCoupledVectorTagDofValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
649 : }
650 :
651 : Moose::Kokkos::VariableValue
652 17 : Coupleable::kokkosCoupledValueOlder(const std::string & var_name, unsigned int comp) const
653 : {
654 17 : return _c_nodal
655 9 : ? kokkosCoupledVectorTagNodalValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp)
656 9 : : kokkosCoupledVectorTagValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
657 : }
658 :
659 : Moose::Kokkos::VariableValue
660 0 : Coupleable::kokkosCoupledValuesOlder(const std::string & var_name) const
661 : {
662 0 : return _c_nodal ? kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::OLDER_SOLUTION_TAG)
663 0 : : kokkosCoupledVectorTagValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
664 : }
665 :
666 : Moose::Kokkos::VariableGradient
667 0 : Coupleable::kokkosCoupledGradientOlder(const std::string & var_name, unsigned int comp) const
668 : {
669 0 : return kokkosCoupledVectorTagGradientByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
670 : }
671 :
672 : Moose::Kokkos::VariableGradient
673 0 : Coupleable::kokkosCoupledGradientsOlder(const std::string & var_name) const
674 : {
675 0 : return kokkosCoupledVectorTagGradientsByName(var_name, Moose::OLDER_SOLUTION_TAG);
676 : }
677 :
678 : Moose::Kokkos::VariableValue
679 0 : Coupleable::kokkosCoupledNodalValueOlder(const std::string & var_name, unsigned int comp) const
680 : {
681 0 : return kokkosCoupledVectorTagNodalValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
682 : }
683 :
684 : Moose::Kokkos::VariableValue
685 0 : Coupleable::kokkosCoupledNodalValuesOlder(const std::string & var_name) const
686 : {
687 0 : return kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
688 : }
689 :
690 : Moose::Kokkos::VariableValue
691 17 : Coupleable::kokkosCoupledDofValueOlder(const std::string & var_name, unsigned int comp) const
692 : {
693 17 : return kokkosCoupledVectorTagDofValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
694 : }
695 :
696 : Moose::Kokkos::VariableValue
697 0 : Coupleable::kokkosCoupledDofValuesOlder(const std::string & var_name) const
698 : {
699 0 : return kokkosCoupledVectorTagDofValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
700 : }
701 :
702 : Moose::Kokkos::VariableValue
703 29 : Coupleable::kokkosCoupledDot(const std::string & var_name, unsigned int comp) const
704 : {
705 29 : return _c_nodal ? kokkosCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp)
706 15 : : kokkosCoupledVectorTagValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp);
707 : }
708 :
709 : Moose::Kokkos::VariableValue
710 0 : Coupleable::kokkosCoupledDots(const std::string & var_name) const
711 : {
712 0 : return _c_nodal ? kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_DOT_TAG)
713 0 : : kokkosCoupledVectorTagValuesByName(var_name, Moose::SOLUTION_DOT_TAG);
714 : }
715 :
716 : Moose::Kokkos::VariableValue
717 0 : Coupleable::kokkosCoupledNodalDot(const std::string & var_name, unsigned int comp) const
718 : {
719 0 : return kokkosCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp);
720 : }
721 :
722 : Moose::Kokkos::VariableValue
723 0 : Coupleable::kokkosCoupledNodalDots(const std::string & var_name) const
724 : {
725 0 : return kokkosCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_DOT_TAG);
726 : }
727 :
728 : Moose::Kokkos::VectorVariableValue
729 70 : Coupleable::kokkosCoupledVectorValue(const std::string & var_name, unsigned int comp) const
730 : {
731 70 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::SOLUTION_TAG, comp);
732 :
733 140 : return Moose::Kokkos::VectorVariableValue(variable, _c_nodal);
734 70 : }
735 :
736 : Moose::Kokkos::VectorVariableGradient
737 17 : Coupleable::kokkosCoupledVectorGradient(const std::string & var_name, unsigned int comp) const
738 : {
739 17 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::SOLUTION_TAG, comp);
740 :
741 34 : return Moose::Kokkos::VectorVariableGradient(variable);
742 17 : }
743 :
744 : Moose::Kokkos::VectorVariableValue
745 0 : Coupleable::kokkosCoupledVectorNodalValue(const std::string & var_name, unsigned int comp) const
746 : {
747 0 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::SOLUTION_TAG, comp);
748 :
749 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
750 0 : }
751 :
752 : Moose::Kokkos::VectorVariableValue
753 0 : Coupleable::kokkosCoupledVectorDofValue(const std::string & var_name, unsigned int comp) const
754 : {
755 0 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::SOLUTION_TAG, comp);
756 :
757 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
758 0 : }
759 :
760 : Moose::Kokkos::VectorVariableValue
761 0 : Coupleable::kokkosCoupledVectorValues(const std::string & var_name) const
762 : {
763 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::SOLUTION_TAG);
764 :
765 0 : return Moose::Kokkos::VectorVariableValue(variable, _c_nodal);
766 0 : }
767 :
768 : Moose::Kokkos::VectorVariableGradient
769 0 : Coupleable::kokkosCoupledVectorGradients(const std::string & var_name) const
770 : {
771 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::SOLUTION_TAG);
772 :
773 0 : return Moose::Kokkos::VectorVariableGradient(variable);
774 0 : }
775 :
776 : Moose::Kokkos::VectorVariableValue
777 0 : Coupleable::kokkosCoupledVectorNodalValues(const std::string & var_name) const
778 : {
779 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::SOLUTION_TAG);
780 :
781 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
782 0 : }
783 :
784 : Moose::Kokkos::VectorVariableValue
785 0 : Coupleable::kokkosCoupledVectorDofValues(const std::string & var_name) const
786 : {
787 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::SOLUTION_TAG);
788 :
789 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
790 0 : }
791 :
792 : Moose::Kokkos::VectorVariableValue
793 0 : Coupleable::kokkosCoupledVectorValueOld(const std::string & var_name, unsigned int comp) const
794 : {
795 0 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::OLD_SOLUTION_TAG, comp);
796 :
797 0 : return Moose::Kokkos::VectorVariableValue(variable, _c_nodal);
798 0 : }
799 :
800 : Moose::Kokkos::VectorVariableGradient
801 17 : Coupleable::kokkosCoupledVectorGradientOld(const std::string & var_name, unsigned int comp) const
802 : {
803 17 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::OLD_SOLUTION_TAG, comp);
804 :
805 34 : return Moose::Kokkos::VectorVariableGradient(variable);
806 17 : }
807 :
808 : Moose::Kokkos::VectorVariableValue
809 0 : Coupleable::kokkosCoupledVectorNodalValueOld(const std::string & var_name, unsigned int comp) const
810 : {
811 0 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::OLD_SOLUTION_TAG, comp);
812 :
813 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
814 0 : }
815 :
816 : Moose::Kokkos::VectorVariableValue
817 0 : Coupleable::kokkosCoupledVectorDofValueOld(const std::string & var_name, unsigned int comp) const
818 : {
819 0 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::OLD_SOLUTION_TAG, comp);
820 :
821 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
822 0 : }
823 :
824 : Moose::Kokkos::VectorVariableValue
825 0 : Coupleable::kokkosCoupledVectorValuesOld(const std::string & var_name) const
826 : {
827 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::OLD_SOLUTION_TAG);
828 :
829 0 : return Moose::Kokkos::VectorVariableValue(variable, _c_nodal);
830 0 : }
831 :
832 : Moose::Kokkos::VectorVariableGradient
833 0 : Coupleable::kokkosCoupledVectorGradientsOld(const std::string & var_name) const
834 : {
835 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::OLD_SOLUTION_TAG);
836 :
837 0 : return Moose::Kokkos::VectorVariableGradient(variable);
838 0 : }
839 :
840 : Moose::Kokkos::VectorVariableValue
841 0 : Coupleable::kokkosCoupledVectorNodalValuesOld(const std::string & var_name) const
842 : {
843 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::OLD_SOLUTION_TAG);
844 :
845 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
846 0 : }
847 :
848 : Moose::Kokkos::VectorVariableValue
849 0 : Coupleable::kokkosCoupledVectorDofValuesOld(const std::string & var_name) const
850 : {
851 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::OLD_SOLUTION_TAG);
852 :
853 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
854 0 : }
855 :
856 : Moose::Kokkos::VectorVariableValue
857 0 : Coupleable::kokkosCoupledVectorValueOlder(const std::string & var_name, unsigned int comp) const
858 : {
859 0 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::OLDER_SOLUTION_TAG, comp);
860 :
861 0 : return Moose::Kokkos::VectorVariableValue(variable, _c_nodal);
862 0 : }
863 :
864 : Moose::Kokkos::VectorVariableGradient
865 17 : Coupleable::kokkosCoupledVectorGradientOlder(const std::string & var_name, unsigned int comp) const
866 : {
867 17 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::OLDER_SOLUTION_TAG, comp);
868 :
869 34 : return Moose::Kokkos::VectorVariableGradient(variable);
870 17 : }
871 :
872 : Moose::Kokkos::VectorVariableValue
873 0 : Coupleable::kokkosCoupledVectorNodalValueOlder(const std::string & var_name,
874 : unsigned int comp) const
875 : {
876 0 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::OLDER_SOLUTION_TAG, comp);
877 :
878 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
879 0 : }
880 :
881 : Moose::Kokkos::VectorVariableValue
882 0 : Coupleable::kokkosCoupledVectorDofValueOlder(const std::string & var_name, unsigned int comp) const
883 : {
884 0 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::OLDER_SOLUTION_TAG, comp);
885 :
886 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
887 0 : }
888 :
889 : Moose::Kokkos::VectorVariableValue
890 0 : Coupleable::kokkosCoupledVectorValuesOlder(const std::string & var_name) const
891 : {
892 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::OLDER_SOLUTION_TAG);
893 :
894 0 : return Moose::Kokkos::VectorVariableValue(variable, _c_nodal);
895 0 : }
896 :
897 : Moose::Kokkos::VectorVariableGradient
898 0 : Coupleable::kokkosCoupledVectorGradientsOlder(const std::string & var_name) const
899 : {
900 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::OLDER_SOLUTION_TAG);
901 :
902 0 : return Moose::Kokkos::VectorVariableGradient(variable);
903 0 : }
904 :
905 : Moose::Kokkos::VectorVariableValue
906 0 : Coupleable::kokkosCoupledVectorNodalValuesOlder(const std::string & var_name) const
907 : {
908 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::OLDER_SOLUTION_TAG);
909 :
910 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
911 0 : }
912 :
913 : Moose::Kokkos::VectorVariableValue
914 0 : Coupleable::kokkosCoupledVectorDofValuesOlder(const std::string & var_name) const
915 : {
916 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::OLDER_SOLUTION_TAG);
917 :
918 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
919 0 : }
920 :
921 : Moose::Kokkos::VectorVariableValue
922 0 : Coupleable::kokkosCoupledVectorDot(const std::string & var_name, unsigned int comp) const
923 : {
924 0 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::SOLUTION_DOT_TAG, comp);
925 :
926 0 : return Moose::Kokkos::VectorVariableValue(variable, _c_nodal);
927 0 : }
928 :
929 : Moose::Kokkos::VectorVariableValue
930 0 : Coupleable::kokkosCoupledVectorNodalDot(const std::string & var_name, unsigned int comp) const
931 : {
932 0 : auto variable = kokkosCoupledVectorTagVectorVariable(var_name, Moose::SOLUTION_DOT_TAG, comp);
933 :
934 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
935 0 : }
936 :
937 : Moose::Kokkos::VectorVariableValue
938 0 : Coupleable::kokkosCoupledVectorDots(const std::string & var_name) const
939 : {
940 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::SOLUTION_DOT_TAG);
941 :
942 0 : return Moose::Kokkos::VectorVariableValue(variable, _c_nodal);
943 0 : }
944 :
945 : Moose::Kokkos::VectorVariableValue
946 0 : Coupleable::kokkosCoupledVectorNodalDots(const std::string & var_name) const
947 : {
948 0 : auto variable = kokkosCoupledVectorTagVectorVariables(var_name, Moose::SOLUTION_DOT_TAG);
949 :
950 0 : return Moose::Kokkos::VectorVariableValue(variable, true);
951 0 : }
952 :
953 : Moose::Kokkos::ADVariableValue
954 138 : Coupleable::kokkosADCoupledVectorTagValueByName(const std::string & var_name,
955 : const std::string & tag_name,
956 : unsigned int comp) const
957 : {
958 138 : auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
959 :
960 276 : return Moose::Kokkos::ADVariableValue(variable);
961 138 : }
962 :
963 : Moose::Kokkos::ADVariableValue
964 0 : Coupleable::kokkosADCoupledVectorTagValuesByName(const std::string & var_name,
965 : const std::string & tag_name) const
966 : {
967 0 : auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
968 :
969 0 : return Moose::Kokkos::ADVariableValue(variable);
970 0 : }
971 :
972 : Moose::Kokkos::ADVariableGradient
973 0 : Coupleable::kokkosADCoupledVectorTagGradientByName(const std::string & var_name,
974 : const std::string & tag_name,
975 : unsigned int comp) const
976 : {
977 0 : auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
978 :
979 0 : return Moose::Kokkos::ADVariableGradient(variable);
980 0 : }
981 :
982 : Moose::Kokkos::ADVariableGradient
983 0 : Coupleable::kokkosADCoupledVectorTagGradientsByName(const std::string & var_name,
984 : const std::string & tag_name) const
985 : {
986 0 : auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
987 :
988 0 : return Moose::Kokkos::ADVariableGradient(variable);
989 0 : }
990 :
991 : Moose::Kokkos::ADVariableValue
992 0 : Coupleable::kokkosADCoupledVectorTagNodalValueByName(const std::string & var_name,
993 : const std::string & tag_name,
994 : unsigned int comp) const
995 : {
996 0 : auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
997 :
998 0 : if (!variable.nodal())
999 0 : mooseError("Cannot get nodal values from the coupled variable '",
1000 : var_name,
1001 : "', because the associated variable is not nodal.");
1002 :
1003 0 : return Moose::Kokkos::ADVariableValue(variable, true);
1004 0 : }
1005 :
1006 : Moose::Kokkos::ADVariableValue
1007 0 : Coupleable::kokkosADCoupledVectorTagNodalValuesByName(const std::string & var_name,
1008 : const std::string & tag_name) const
1009 : {
1010 0 : auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
1011 :
1012 0 : if (!variable.nodal())
1013 0 : mooseError("Cannot get nodal values from the coupled variable '",
1014 : var_name,
1015 : "', because the associated variable is not nodal.");
1016 :
1017 0 : return Moose::Kokkos::ADVariableValue(variable, true);
1018 0 : }
1019 :
1020 : Moose::Kokkos::ADVariableValue
1021 0 : Coupleable::kokkosADCoupledVectorTagDofValueByName(const std::string & var_name,
1022 : const std::string & tag_name,
1023 : unsigned int comp) const
1024 : {
1025 0 : auto variable = kokkosCoupledVectorTagVariable(var_name, tag_name, comp);
1026 :
1027 0 : return Moose::Kokkos::ADVariableValue(variable, true);
1028 0 : }
1029 :
1030 : Moose::Kokkos::ADVariableValue
1031 0 : Coupleable::kokkosADCoupledVectorTagDofValuesByName(const std::string & var_name,
1032 : const std::string & tag_name) const
1033 : {
1034 0 : auto variable = kokkosCoupledVectorTagVariables(var_name, tag_name);
1035 :
1036 0 : return Moose::Kokkos::ADVariableValue(variable, true);
1037 0 : }
1038 :
1039 : Moose::Kokkos::ADVariableValue
1040 0 : Coupleable::kokkosADCoupledVectorTagValue(const std::string & var_name,
1041 : const std::string & tag_param_name,
1042 : unsigned int comp) const
1043 : {
1044 0 : if (!_c_parameters.isParamValid(tag_param_name))
1045 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
1046 :
1047 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
1048 :
1049 0 : return kokkosADCoupledVectorTagValueByName(var_name, tag_name, comp);
1050 0 : }
1051 :
1052 : Moose::Kokkos::ADVariableValue
1053 0 : Coupleable::kokkosADCoupledVectorTagValues(const std::string & var_name,
1054 : const std::string & tag_param_name) const
1055 : {
1056 0 : if (!_c_parameters.isParamValid(tag_param_name))
1057 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
1058 :
1059 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
1060 :
1061 0 : return kokkosADCoupledVectorTagValuesByName(var_name, tag_name);
1062 0 : }
1063 :
1064 : Moose::Kokkos::ADVariableGradient
1065 0 : Coupleable::kokkosADCoupledVectorTagGradient(const std::string & var_name,
1066 : const std::string & tag_param_name,
1067 : unsigned int comp) const
1068 : {
1069 0 : if (!_c_parameters.isParamValid(tag_param_name))
1070 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
1071 :
1072 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
1073 :
1074 0 : return kokkosADCoupledVectorTagGradientByName(var_name, tag_name, comp);
1075 0 : }
1076 :
1077 : Moose::Kokkos::ADVariableGradient
1078 0 : Coupleable::kokkosADCoupledVectorTagGradients(const std::string & var_name,
1079 : const std::string & tag_param_name) const
1080 : {
1081 0 : if (!_c_parameters.isParamValid(tag_param_name))
1082 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
1083 :
1084 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
1085 :
1086 0 : return kokkosADCoupledVectorTagGradientsByName(var_name, tag_name);
1087 0 : }
1088 :
1089 : Moose::Kokkos::ADVariableValue
1090 0 : Coupleable::kokkosADCoupledVectorTagNodalValue(const std::string & var_name,
1091 : const std::string & tag_param_name,
1092 : unsigned int comp) const
1093 : {
1094 0 : if (!_c_parameters.isParamValid(tag_param_name))
1095 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
1096 :
1097 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
1098 :
1099 0 : return kokkosADCoupledVectorTagNodalValueByName(var_name, tag_name, comp);
1100 0 : }
1101 :
1102 : Moose::Kokkos::ADVariableValue
1103 0 : Coupleable::kokkosADCoupledVectorTagNodalValues(const std::string & var_name,
1104 : const std::string & tag_param_name) const
1105 : {
1106 0 : if (!_c_parameters.isParamValid(tag_param_name))
1107 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
1108 :
1109 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
1110 :
1111 0 : return kokkosADCoupledVectorTagNodalValuesByName(var_name, tag_name);
1112 0 : }
1113 :
1114 : Moose::Kokkos::ADVariableValue
1115 0 : Coupleable::kokkosADCoupledVectorTagDofValue(const std::string & var_name,
1116 : const std::string & tag_param_name,
1117 : unsigned int comp) const
1118 : {
1119 0 : if (!_c_parameters.isParamValid(tag_param_name))
1120 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
1121 :
1122 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
1123 :
1124 0 : return kokkosADCoupledVectorTagDofValueByName(var_name, tag_name, comp);
1125 0 : }
1126 :
1127 : Moose::Kokkos::ADVariableValue
1128 0 : Coupleable::kokkosADCoupledVectorTagDofValues(const std::string & var_name,
1129 : const std::string & tag_param_name) const
1130 : {
1131 0 : if (!_c_parameters.isParamValid(tag_param_name))
1132 0 : mooseError("Tag name parameter '", tag_param_name, "' is invalid");
1133 :
1134 0 : TagName tag_name = _c_parameters.get<TagName>(tag_param_name);
1135 :
1136 0 : return kokkosADCoupledVectorTagDofValuesByName(var_name, tag_name);
1137 0 : }
1138 :
1139 : Moose::Kokkos::ADVariableValue
1140 92 : Coupleable::kokkosADCoupledValue(const std::string & var_name, unsigned int comp) const
1141 : {
1142 92 : return _c_nodal ? kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_TAG, comp)
1143 48 : : kokkosADCoupledVectorTagValueByName(var_name, Moose::SOLUTION_TAG, comp);
1144 : }
1145 :
1146 : Moose::Kokkos::ADVariableValue
1147 0 : Coupleable::kokkosADCoupledValues(const std::string & var_name) const
1148 : {
1149 0 : return _c_nodal ? kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_TAG)
1150 0 : : kokkosADCoupledVectorTagValuesByName(var_name, Moose::SOLUTION_TAG);
1151 : }
1152 :
1153 : Moose::Kokkos::ADVariableGradient
1154 0 : Coupleable::kokkosADCoupledGradient(const std::string & var_name, unsigned int comp) const
1155 : {
1156 0 : return kokkosADCoupledVectorTagGradientByName(var_name, Moose::SOLUTION_TAG, comp);
1157 : }
1158 :
1159 : Moose::Kokkos::ADVariableGradient
1160 0 : Coupleable::kokkosADCoupledGradients(const std::string & var_name) const
1161 : {
1162 0 : return kokkosADCoupledVectorTagGradientsByName(var_name, Moose::SOLUTION_TAG);
1163 : }
1164 :
1165 : Moose::Kokkos::ADVariableValue
1166 0 : Coupleable::kokkosADCoupledNodalValue(const std::string & var_name, unsigned int comp) const
1167 : {
1168 0 : return kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_TAG, comp);
1169 : }
1170 :
1171 : Moose::Kokkos::ADVariableValue
1172 0 : Coupleable::kokkosADCoupledNodalValues(const std::string & var_name) const
1173 : {
1174 0 : return kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_TAG);
1175 : }
1176 :
1177 : Moose::Kokkos::ADVariableValue
1178 0 : Coupleable::kokkosADCoupledDofValue(const std::string & var_name, unsigned int comp) const
1179 : {
1180 0 : return kokkosADCoupledVectorTagDofValueByName(var_name, Moose::SOLUTION_TAG, comp);
1181 : }
1182 :
1183 : Moose::Kokkos::ADVariableValue
1184 0 : Coupleable::kokkosADCoupledDofValues(const std::string & var_name) const
1185 : {
1186 0 : return kokkosADCoupledVectorTagDofValuesByName(var_name, Moose::SOLUTION_TAG);
1187 : }
1188 :
1189 : Moose::Kokkos::ADVariableValue
1190 0 : Coupleable::kokkosADCoupledValueOld(const std::string & var_name, unsigned int comp) const
1191 : {
1192 0 : return _c_nodal
1193 0 : ? kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp)
1194 0 : : kokkosADCoupledVectorTagValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
1195 : }
1196 :
1197 : Moose::Kokkos::ADVariableValue
1198 0 : Coupleable::kokkosADCoupledValuesOld(const std::string & var_name) const
1199 : {
1200 0 : return _c_nodal ? kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::OLD_SOLUTION_TAG)
1201 0 : : kokkosADCoupledVectorTagValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
1202 : }
1203 :
1204 : Moose::Kokkos::ADVariableGradient
1205 0 : Coupleable::kokkosADCoupledGradientOld(const std::string & var_name, unsigned int comp) const
1206 : {
1207 0 : return kokkosADCoupledVectorTagGradientByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
1208 : }
1209 :
1210 : Moose::Kokkos::ADVariableGradient
1211 0 : Coupleable::kokkosADCoupledGradientsOld(const std::string & var_name) const
1212 : {
1213 0 : return kokkosADCoupledVectorTagGradientsByName(var_name, Moose::OLD_SOLUTION_TAG);
1214 : }
1215 :
1216 : Moose::Kokkos::ADVariableValue
1217 0 : Coupleable::kokkosADCoupledNodalValueOld(const std::string & var_name, unsigned int comp) const
1218 : {
1219 0 : return kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
1220 : }
1221 :
1222 : Moose::Kokkos::ADVariableValue
1223 0 : Coupleable::kokkosADCoupledNodalValuesOld(const std::string & var_name) const
1224 : {
1225 0 : return kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
1226 : }
1227 :
1228 : Moose::Kokkos::ADVariableValue
1229 0 : Coupleable::kokkosADCoupledDofValueOld(const std::string & var_name, unsigned int comp) const
1230 : {
1231 0 : return kokkosADCoupledVectorTagDofValueByName(var_name, Moose::OLD_SOLUTION_TAG, comp);
1232 : }
1233 :
1234 : Moose::Kokkos::ADVariableValue
1235 0 : Coupleable::kokkosADCoupledDofValuesOld(const std::string & var_name) const
1236 : {
1237 0 : return kokkosADCoupledVectorTagDofValuesByName(var_name, Moose::OLD_SOLUTION_TAG);
1238 : }
1239 :
1240 : Moose::Kokkos::ADVariableValue
1241 0 : Coupleable::kokkosADCoupledValueOlder(const std::string & var_name, unsigned int comp) const
1242 : {
1243 0 : return _c_nodal
1244 0 : ? kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp)
1245 0 : : kokkosADCoupledVectorTagValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
1246 : }
1247 :
1248 : Moose::Kokkos::ADVariableValue
1249 0 : Coupleable::kokkosADCoupledValuesOlder(const std::string & var_name) const
1250 : {
1251 0 : return _c_nodal ? kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::OLDER_SOLUTION_TAG)
1252 0 : : kokkosADCoupledVectorTagValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
1253 : }
1254 :
1255 : Moose::Kokkos::ADVariableGradient
1256 0 : Coupleable::kokkosADCoupledGradientOlder(const std::string & var_name, unsigned int comp) const
1257 : {
1258 0 : return kokkosADCoupledVectorTagGradientByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
1259 : }
1260 :
1261 : Moose::Kokkos::ADVariableGradient
1262 0 : Coupleable::kokkosADCoupledGradientsOlder(const std::string & var_name) const
1263 : {
1264 0 : return kokkosADCoupledVectorTagGradientsByName(var_name, Moose::OLDER_SOLUTION_TAG);
1265 : }
1266 :
1267 : Moose::Kokkos::ADVariableValue
1268 0 : Coupleable::kokkosADCoupledNodalValueOlder(const std::string & var_name, unsigned int comp) const
1269 : {
1270 0 : return kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
1271 : }
1272 :
1273 : Moose::Kokkos::ADVariableValue
1274 0 : Coupleable::kokkosADCoupledNodalValuesOlder(const std::string & var_name) const
1275 : {
1276 0 : return kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
1277 : }
1278 :
1279 : Moose::Kokkos::ADVariableValue
1280 0 : Coupleable::kokkosADCoupledDofValueOlder(const std::string & var_name, unsigned int comp) const
1281 : {
1282 0 : return kokkosADCoupledVectorTagDofValueByName(var_name, Moose::OLDER_SOLUTION_TAG, comp);
1283 : }
1284 :
1285 : Moose::Kokkos::ADVariableValue
1286 0 : Coupleable::kokkosADCoupledDofValuesOlder(const std::string & var_name) const
1287 : {
1288 0 : return kokkosADCoupledVectorTagDofValuesByName(var_name, Moose::OLDER_SOLUTION_TAG);
1289 : }
1290 :
1291 : Moose::Kokkos::ADVariableValue
1292 46 : Coupleable::kokkosADCoupledDot(const std::string & var_name, unsigned int comp) const
1293 : {
1294 46 : return _c_nodal
1295 24 : ? kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp)
1296 24 : : kokkosADCoupledVectorTagValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp);
1297 : }
1298 :
1299 : Moose::Kokkos::ADVariableValue
1300 0 : Coupleable::kokkosADCoupledDots(const std::string & var_name) const
1301 : {
1302 0 : return _c_nodal ? kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_DOT_TAG)
1303 0 : : kokkosADCoupledVectorTagValuesByName(var_name, Moose::SOLUTION_DOT_TAG);
1304 : }
1305 :
1306 : Moose::Kokkos::ADVariableValue
1307 0 : Coupleable::kokkosADCoupledNodalDot(const std::string & var_name, unsigned int comp) const
1308 : {
1309 0 : return kokkosADCoupledVectorTagNodalValueByName(var_name, Moose::SOLUTION_DOT_TAG, comp);
1310 : }
1311 :
1312 : Moose::Kokkos::ADVariableValue
1313 0 : Coupleable::kokkosADCoupledNodalDots(const std::string & var_name) const
1314 : {
1315 0 : return kokkosADCoupledVectorTagNodalValuesByName(var_name, Moose::SOLUTION_DOT_TAG);
1316 : }
1317 :
1318 : Moose::Kokkos::Scalar<const Real>
1319 29 : Coupleable::kokkosCoupledDotDu(const std::string & var_name, unsigned int comp) const
1320 : {
1321 29 : const auto var = getVar(var_name, comp);
1322 :
1323 29 : if (!var)
1324 0 : return Moose::Kokkos::Scalar<const Real>(_kokkos_default_value_zero);
1325 : else
1326 29 : return Moose::Kokkos::Scalar<const Real>(var->sys().duDotDu(var->number() + comp));
1327 : }
1328 :
1329 : Moose::Kokkos::VariableValue
1330 306 : Coupleable::kokkosZeroValue() const
1331 : {
1332 306 : auto variable = kokkosZeroVariable();
1333 :
1334 612 : return Moose::Kokkos::VariableValue(variable);
1335 306 : }
1336 :
1337 : Moose::Kokkos::VariableGradient
1338 0 : Coupleable::kokkosZeroGradient() const
1339 : {
1340 0 : auto variable = kokkosZeroVariable();
1341 :
1342 0 : return Moose::Kokkos::VariableGradient(variable);
1343 0 : }
1344 :
1345 : Moose::Kokkos::VariableValue
1346 0 : Coupleable::kokkosZeroNodalValue() const
1347 : {
1348 0 : auto variable = kokkosZeroVariable();
1349 :
1350 0 : return Moose::Kokkos::VariableValue(variable, true);
1351 0 : }
|