https://mooseframework.inl.gov
Loading...
Searching...
No Matches
NeighborCoupleable.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
10#pragma once
11
12#include "MooseVariableBase.h"
13#include "Coupleable.h"
14
15#define usingNeighborCoupleableMembers usingCoupleableMembers
16
22{
23public:
30 NeighborCoupleable(const MooseObject * moose_object,
31 bool nodal,
32 bool neighbor_nodal,
33 bool is_fv = false);
34
35 // neighbor
36 virtual const VariableValue & coupledNeighborValue(const std::string & var_name,
37 unsigned int comp = 0) const;
38
39 std::vector<const VariableValue *> coupledNeighborValues(const std::string & var_name) const;
40 std::vector<const VariableValue *> coupledNeighborValuesOld(const std::string & var_name) const;
41 std::vector<const VariableValue *> coupledNeighborValuesOlder(const std::string & var_name) const;
42
47 virtual const ADVariableValue & adCoupledNeighborValue(const std::string & var_name,
48 unsigned int comp = 0) const;
49
53 template <bool is_ad>
54 const auto & coupledGenericNeighborValue(const std::string & var_name,
55 unsigned int comp = 0) const;
56
60 template <bool is_ad>
61 const auto & coupledGenericNeighborGradient(const std::string & var_name,
62 unsigned int comp = 0) const;
63
68 virtual const ADVariableValue & adCoupledNeighborValueDot(const std::string & var_name,
69 unsigned int comp = 0) const;
70
71 std::vector<const ADVariableValue *> adCoupledNeighborValues(const std::string & var_name) const;
72
77 virtual const ADVectorVariableValue & adCoupledVectorNeighborValue(const std::string & var_name,
78 unsigned int comp = 0) const;
79 virtual const VariableValue & coupledNeighborValueDot(const std::string & var_name,
80 unsigned int comp = 0) const;
81 virtual const VariableValue & coupledNeighborValueDotDu(const std::string & var_name,
82 unsigned int comp = 0) const;
83 virtual const VariableValue & coupledNeighborValueOld(const std::string & var_name,
84 unsigned int comp = 0) const;
85 virtual const VariableValue & coupledNeighborValueOlder(const std::string & var_name,
86 unsigned int comp = 0) const;
87
88 virtual const VariableGradient & coupledNeighborGradient(const std::string & var_name,
89 unsigned int comp = 0) const;
90 virtual std::vector<const VariableGradient *>
91 coupledNeighborGradients(const std::string & var_name) const;
92 virtual const VariableGradient & coupledNeighborGradientOld(const std::string & var_name,
93 unsigned int comp = 0) const;
94 virtual const VariableGradient & coupledNeighborGradientOlder(const std::string & var_name,
95 unsigned int comp = 0) const;
96
101 virtual const ADVariableGradient & adCoupledNeighborGradient(const std::string & var_name,
102 unsigned int comp = 0) const;
103
104 virtual const VectorVariableGradient & coupledVectorNeighborGradient(const std::string & var_name,
105 unsigned int comp = 0) const;
106 virtual const VectorVariableGradient &
107 coupledVectorNeighborGradientOld(const std::string & var_name, unsigned int comp = 0) const;
108 virtual const VectorVariableGradient &
109 coupledVectorNeighborGradientOlder(const std::string & var_name, unsigned int comp = 0) const;
110
111 virtual const ArrayVariableValue & coupledArrayNeighborValue(const std::string & var_name,
112 unsigned int comp = 0) const;
113 virtual const ArrayVariableGradient & coupledArrayNeighborGradient(const std::string & var_name,
114 unsigned int comp = 0) const;
115 virtual const ArrayVariableGradient &
116 coupledArrayNeighborGradientOld(const std::string & var_name, unsigned int comp = 0) const;
117 virtual const ArrayVariableGradient &
118 coupledArrayNeighborGradientOlder(const std::string & var_name, unsigned int comp = 0) const;
119
120 virtual const VariableSecond & coupledNeighborSecond(const std::string & var_name,
121 unsigned int i = 0) const;
122
123 virtual const VariableValue & coupledNeighborDofValues(const std::string & var_name,
124 unsigned int comp = 0) const;
125 virtual const VariableValue & coupledNeighborDofValuesOld(const std::string & var_name,
126 unsigned int comp = 0) const;
127 virtual const VariableValue & coupledNeighborDofValuesOlder(const std::string & var_name,
128 unsigned int comp = 0) const;
129
130protected:
132};
133
134template <bool is_ad>
135const auto &
137 const unsigned int comp) const
138{
139 if constexpr (is_ad)
140 return adCoupledNeighborValue(var_name, comp);
141 else
142 return coupledNeighborValue(var_name, comp);
143}
144
145template <bool is_ad>
146const auto &
148 const unsigned int comp) const
149{
150 if constexpr (is_ad)
151 return adCoupledNeighborGradient(var_name, comp);
152 else
153 return coupledNeighborGradient(var_name, comp);
154}
OutputTools< Real >::VariableGradient VariableGradient
Definition MooseTypes.h:349
OutputTools< RealEigenVector >::VariableValue ArrayVariableValue
Definition MooseTypes.h:382
OutputTools< Real >::VariableValue VariableValue
Definition MooseTypes.h:348
OutputTools< RealEigenVector >::VariableGradient ArrayVariableGradient
Definition MooseTypes.h:384
OutputTools< Real >::VariableSecond VariableSecond
Definition MooseTypes.h:350
OutputTools< RealVectorValue >::VariableGradient VectorVariableGradient
Definition MooseTypes.h:366
Interface for objects that needs coupling capabilities.
Definition Coupleable.h:53
Every object that can be built by the factory should be derived from this class.
Definition MooseObject.h:31
Enhances Coupleable interface to also couple the values from neighbor elements.
virtual std::vector< const VariableGradient * > coupledNeighborGradients(const std::string &var_name) const
virtual const VariableValue & coupledNeighborDofValuesOlder(const std::string &var_name, unsigned int comp=0) const
std::vector< const ADVariableValue * > adCoupledNeighborValues(const std::string &var_name) const
virtual const ADVariableGradient & adCoupledNeighborGradient(const std::string &var_name, unsigned int comp=0) const
Get the coupled neighbor variable gradient for var_name with derivative information for automatic dif...
virtual const ArrayVariableGradient & coupledArrayNeighborGradientOlder(const std::string &var_name, unsigned int comp=0) const
virtual const VariableValue & coupledNeighborValue(const std::string &var_name, unsigned int comp=0) const
virtual const ADVariableValue & adCoupledNeighborValue(const std::string &var_name, unsigned int comp=0) const
Get the coupled neighbor variable value for var_name with derivative information for automatic differ...
virtual const ArrayVariableGradient & coupledArrayNeighborGradient(const std::string &var_name, unsigned int comp=0) const
virtual const VariableValue & coupledNeighborDofValuesOld(const std::string &var_name, unsigned int comp=0) const
virtual const VariableValue & coupledNeighborValueOld(const std::string &var_name, unsigned int comp=0) const
std::vector< const VariableValue * > coupledNeighborValuesOld(const std::string &var_name) const
const auto & coupledGenericNeighborGradient(const std::string &var_name, unsigned int comp=0) const
Retrieve the coupled neighbor variable gradient whether AD or not.
virtual const ADVariableValue & adCoupledNeighborValueDot(const std::string &var_name, unsigned int comp=0) const
Get the time derivative of the coupled neighbor variable value for var_name with derivative informati...
virtual const VariableValue & coupledNeighborValueOlder(const std::string &var_name, unsigned int comp=0) const
std::vector< const VariableValue * > coupledNeighborValuesOlder(const std::string &var_name) const
virtual const VectorVariableGradient & coupledVectorNeighborGradientOlder(const std::string &var_name, unsigned int comp=0) const
virtual const VariableGradient & coupledNeighborGradientOld(const std::string &var_name, unsigned int comp=0) const
virtual const ADVectorVariableValue & adCoupledVectorNeighborValue(const std::string &var_name, unsigned int comp=0) const
Get the coupled neighbor vector variable value for var_name with derivative information for automatic...
virtual const VectorVariableGradient & coupledVectorNeighborGradientOld(const std::string &var_name, unsigned int comp=0) const
virtual const ArrayVariableValue & coupledArrayNeighborValue(const std::string &var_name, unsigned int comp=0) const
virtual const ArrayVariableGradient & coupledArrayNeighborGradientOld(const std::string &var_name, unsigned int comp=0) const
virtual const VariableSecond & coupledNeighborSecond(const std::string &var_name, unsigned int i=0) const
virtual const VectorVariableGradient & coupledVectorNeighborGradient(const std::string &var_name, unsigned int comp=0) const
const auto & coupledGenericNeighborValue(const std::string &var_name, unsigned int comp=0) const
Retrieve the coupled neighbor variable value whether AD or not.
virtual const VariableValue & coupledNeighborValueDotDu(const std::string &var_name, unsigned int comp=0) const
virtual const VariableGradient & coupledNeighborGradientOlder(const std::string &var_name, unsigned int comp=0) const
std::vector< const VariableValue * > coupledNeighborValues(const std::string &var_name) const
virtual const VariableValue & coupledNeighborDofValues(const std::string &var_name, unsigned int comp=0) const
virtual const VariableValue & coupledNeighborValueDot(const std::string &var_name, unsigned int comp=0) const
virtual const VariableGradient & coupledNeighborGradient(const std::string &var_name, unsigned int comp=0) const