www.mooseframework.org
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
JvarMapKernelInterface< T > Class Template Reference

Interface class ("Veneer") for Kernel to provide a mapping from 'jvar' in computeQpOffDiagJacobian into the _coupled_moose_vars array. More...

#include <JvarMapInterface.h>

Inheritance diagram for JvarMapKernelInterface< T >:
[legend]

Public Types

typedef std::vector< intJvarMap
 

Public Member Functions

 JvarMapKernelInterface (const InputParameters &parameters)
 
virtual void computeOffDiagJacobian (unsigned int jvar) override
 
unsigned int mapJvarToCvar (unsigned int jvar)
 Return index into the _coupled_moose_vars array for a given jvar. More...
 
int mapJvarToCvar (unsigned int jvar, const JvarMap &jvar_map)
 Return an index into a specific coupled variable vector for a given jvar. More...
 
bool mapJvarToCvar (unsigned int jvar, unsigned int &cvar)
 Set the cvar value to the mapped jvar value and return true if the mapping exists. More...
 
const JvarMapgetJvarMap ()
 Obtain the map connecting libmesh variable ID number to its position in the _coupled_moose_vars vector. More...
 
const JvarMapgetParameterJvarMap (std::string parameter_name)
 Make a specific map for a given parameter name representing a couple variable (vector) More...
 

Static Public Member Functions

static InputParameters validParams ()
 

Protected Attributes

const unsigned int _n_args
 number of coupled moose variables More...
 

Detailed Description

template<class T>
class JvarMapKernelInterface< T >

Interface class ("Veneer") for Kernel to provide a mapping from 'jvar' in computeQpOffDiagJacobian into the _coupled_moose_vars array.

This class is useful in conjunction with DerivativeMaterialInterface, where vectors of material property derivatives with respect to all coupled variables (iterating over _coupled_moose_vars array) are generated. The mapping enabled the look up of the correct material property derivatives for the current jvar.

Definition at line 30 of file JvarMapInterface.h.

Member Typedef Documentation

◆ JvarMap

template<class T>
typedef std::vector<int> JvarMapInterfaceBase< T >::JvarMap
inherited

Definition at line 63 of file JvarMapInterface.h.

Constructor & Destructor Documentation

◆ JvarMapKernelInterface()

template<class T >
JvarMapKernelInterface< T >::JvarMapKernelInterface ( const InputParameters parameters)

Definition at line 188 of file JvarMapInterface.h.

189  : JvarMapInterfaceBase<T>(parameters)
190 {
191 }
Base class ("Veneer") that implements the actual mapping from &#39;jvar&#39; in into the _coupled_moose_vars ...

Member Function Documentation

◆ computeOffDiagJacobian()

template<class T >
void JvarMapKernelInterface< T >::computeOffDiagJacobian ( unsigned int  jvar)
overridevirtual

Definition at line 201 of file JvarMapInterface.h.

202 {
203  // the Kernel is not coupled to the variable; no need to loop over QPs
204  if (this->_jvar_map[jvar] < 0)
205  return;
206 
207  // call the underlying class' off-diagonal Jacobian
208  T::computeOffDiagJacobian(jvar);
209 }
JvarMap _jvar_map
look-up table to determine the _coupled_moose_vars index for the jvar parameter

◆ getJvarMap()

template<class T>
const JvarMap& JvarMapInterfaceBase< T >::getJvarMap ( )
inlineinherited

Obtain the map connecting libmesh variable ID number to its position in the _coupled_moose_vars vector.

Definition at line 80 of file JvarMapInterface.h.

80 { return _jvar_map; }
JvarMap _jvar_map
look-up table to determine the _coupled_moose_vars index for the jvar parameter

◆ getParameterJvarMap()

template<class T >
const JvarMapInterfaceBase< T >::JvarMap & JvarMapInterfaceBase< T >::getParameterJvarMap ( std::string  parameter_name)
inherited

Make a specific map for a given parameter name representing a couple variable (vector)

Definition at line 168 of file JvarMapInterface.h.

169 {
170  auto & jvar_map = _jvar_local_map[parameter_name];
171  jvar_map.assign(_jvar_max_size, -1);
172 
173  // populate local map
174  const auto num = this->coupledComponents(parameter_name);
175  for (std::size_t i = 0; i < num; ++i)
176  {
177  const auto number = this->getVar(parameter_name, i)->number();
178 
179  // skip AuxVars as off-diagonal jacobian entries are not calculated for them
180  if (number < _jvar_max_size)
181  jvar_map[number] = i;
182  }
183 
184  return jvar_map;
185 }
const std::size_t _jvar_max_size
number of nonlinear variables in the system
std::map< std::string, JvarMap > _jvar_local_map
map of local look-up tables for specific parameters

◆ mapJvarToCvar() [1/3]

template<class T >
unsigned int JvarMapInterfaceBase< T >::mapJvarToCvar ( unsigned int  jvar)
inherited

Return index into the _coupled_moose_vars array for a given jvar.

Definition at line 147 of file JvarMapInterface.h.

148 {
149  mooseAssert(jvar < _jvar_max_size,
150  "Calling mapJvarToCvar for an invalid Moose variable number. Maybe an AuxVariable?");
151  int cit = _jvar_map[jvar];
152 
153  mooseAssert(cit >= 0, "Calling mapJvarToCvar for a variable not coupled to this kernel.");
154  return cit;
155 }
const std::size_t _jvar_max_size
number of nonlinear variables in the system
JvarMap _jvar_map
look-up table to determine the _coupled_moose_vars index for the jvar parameter

◆ mapJvarToCvar() [2/3]

template<class T >
int JvarMapInterfaceBase< T >::mapJvarToCvar ( unsigned int  jvar,
const JvarMap jvar_map 
)
inherited

Return an index into a specific coupled variable vector for a given jvar.

A negative return value indicates that the jvar value does not point to a variable in the couple variable vector corresponding to the mapped parameter.

Definition at line 159 of file JvarMapInterface.h.

160 {
161  mooseAssert(jvar < _jvar_max_size,
162  "Calling mapJvarToCvar for an invalid Moose variable number. Maybe an AuxVariable?");
163  return jvar_map[jvar];
164 }
const std::size_t _jvar_max_size
number of nonlinear variables in the system

◆ mapJvarToCvar() [3/3]

template<class T>
bool JvarMapInterfaceBase< T >::mapJvarToCvar ( unsigned int  jvar,
unsigned int cvar 
)
inherited

Set the cvar value to the mapped jvar value and return true if the mapping exists.

Otherwise return false.

Parameters
[in]jvarVariable number passed as argument to computeQpOffDiagJacobian
[out]cvarCorresponding index into the _coupled_moose_vars array
Returns
true if the requested variable is coupled, false otherwise

◆ validParams()

template<class T >
InputParameters JvarMapInterfaceBase< T >::validParams ( )
staticinherited

Definition at line 115 of file JvarMapInterface.h.

116 {
117  auto params = T::validParams();
118  params.addCoupledVar("args", "Vector of nonlinear variable arguments this object depends on");
119  params.deprecateCoupledVar("args", "coupled_variables", "02/07/2024");
120 
121  return params;
122 }
InputParameters validParams()

Member Data Documentation

◆ _n_args

template<class T>
const unsigned int JvarMapInterfaceBase< T >::_n_args
protectedinherited

number of coupled moose variables

Definition at line 97 of file JvarMapInterface.h.


The documentation for this class was generated from the following file: