Line data Source code
1 : //* This file is part of the MOOSE framework 2 : //* https://mooseframework.inl.gov 3 : //* 4 : //* All rights reserved, see COPYRIGHT for full restrictions 5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT 6 : //* 7 : //* Licensed under LGPL 2.1, please see LICENSE for details 8 : //* https://www.gnu.org/licenses/lgpl-2.1.html 9 : 10 : #include "CoupleableMooseVariableDependencyIntermediateInterface.h" 11 : 12 : #include "FEProblemBase.h" 13 : 14 306472 : CoupleableMooseVariableDependencyIntermediateInterface:: 15 : CoupleableMooseVariableDependencyIntermediateInterface(const MooseObject * moose_object, 16 : bool nodal, 17 306472 : bool is_fv) 18 : : Coupleable(moose_object, nodal, is_fv), 19 : ScalarCoupleable(moose_object), 20 306472 : MooseVariableDependencyInterface(moose_object) 21 : { 22 369242 : for (MooseVariableFEBase * coupled_var : getCoupledMooseVars()) 23 62778 : addMooseVariableDependency(coupled_var); 24 306464 : } 25 : 26 : #ifdef MOOSE_KOKKOS_ENABLED 27 162146 : CoupleableMooseVariableDependencyIntermediateInterface:: 28 : CoupleableMooseVariableDependencyIntermediateInterface( 29 : const CoupleableMooseVariableDependencyIntermediateInterface & object, 30 162146 : const Moose::Kokkos::FunctorCopy & key) 31 : : Coupleable(object, key), 32 : ScalarCoupleable(object, key), 33 162146 : MooseVariableDependencyInterface(object, key) 34 : { 35 162146 : } 36 : #endif 37 : 38 : const VariableValue & 39 14 : CoupleableMooseVariableDependencyIntermediateInterface::coupledValueByName( 40 : const std::string & var_name) 41 : { 42 14 : MooseVariableFieldBase * moose_var = &_c_fe_problem.getVariable( 43 14 : _c_tid, var_name, Moose::VarKindType::VAR_ANY, Moose::VarFieldType::VAR_FIELD_ANY); 44 14 : _coupled_moose_vars.push_back(moose_var); 45 14 : MooseVariable * var = &_c_fe_problem.getStandardVariable(_c_tid, var_name); 46 14 : _coupled_standard_moose_vars.push_back(var); 47 : 48 14 : addMooseVariableDependency(moose_var); 49 : 50 14 : if (!_coupleable_neighbor) 51 : { 52 14 : if (_c_nodal) 53 0 : return (_c_is_implicit) ? var->dofValues() : var->dofValuesOld(); 54 : else 55 14 : return (_c_is_implicit) ? var->sln() : var->slnOld(); 56 : } 57 : else 58 : { 59 0 : if (_c_nodal) 60 0 : return (_c_is_implicit) ? var->dofValuesNeighbor() : var->dofValuesOldNeighbor(); 61 : else 62 0 : return (_c_is_implicit) ? var->slnNeighbor() : var->slnOldNeighbor(); 63 : } 64 : } 65 : 66 : const ArrayVariableValue & 67 14 : CoupleableMooseVariableDependencyIntermediateInterface::coupledArrayValueByName( 68 : const std::string & var_name) 69 : { 70 14 : MooseVariableFieldBase * moose_var = &_c_fe_problem.getVariable( 71 14 : _c_tid, var_name, Moose::VarKindType::VAR_ANY, Moose::VarFieldType::VAR_FIELD_ANY); 72 14 : _coupled_moose_vars.push_back(moose_var); 73 14 : ArrayMooseVariable * var = &_c_fe_problem.getArrayVariable(_c_tid, var_name); 74 14 : _coupled_array_moose_vars.push_back(var); 75 : 76 14 : addMooseVariableDependency(moose_var); 77 : 78 14 : if (!_coupleable_neighbor) 79 : { 80 14 : if (_c_nodal) 81 0 : return (_c_is_implicit) ? var->dofValues() : var->dofValuesOld(); 82 : else 83 14 : return (_c_is_implicit) ? var->sln() : var->slnOld(); 84 : } 85 : else 86 : { 87 0 : if (_c_nodal) 88 0 : return (_c_is_implicit) ? var->dofValuesNeighbor() : var->dofValuesOldNeighbor(); 89 : else 90 0 : return (_c_is_implicit) ? var->slnNeighbor() : var->slnOldNeighbor(); 91 : } 92 : }