Nektar++
Diffusion.h
Go to the documentation of this file.
1///////////////////////////////////////////////////////////////////////////////
2//
3// File: Diffusion.h
4//
5// For more information, please see: http://www.nektar.info
6//
7// The MIT License
8//
9// Copyright (c) 2006 Division of Applied Mathematics, Brown University (USA),
10// Department of Aeronautics, Imperial College London (UK), and Scientific
11// Computing and Imaging Institute, University of Utah (USA).
12//
13// Permission is hereby granted, free of charge, to any person obtaining a
14// copy of this software and associated documentation files (the "Software"),
15// to deal in the Software without restriction, including without limitation
16// the rights to use, copy, modify, merge, publish, distribute, sublicense,
17// and/or sell copies of the Software, and to permit persons to whom the
18// Software is furnished to do so, subject to the following conditions:
19//
20// The above copyright notice and this permission notice shall be included
21// in all copies or substantial portions of the Software.
22//
23// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29// DEALINGS IN THE SOFTWARE.
30//
31// Description: Abstract base class for diffusion.
32//
33///////////////////////////////////////////////////////////////////////////////
34
35#ifndef NEKTAR_SOLVERUTILS_DIFFUSION
36#define NEKTAR_SOLVERUTILS_DIFFUSION
37
38#include <functional>
39#include <string>
40
48
49namespace Nektar::SolverUtils
50{
51
52class Diffusion;
53
54/// A shared pointer to an EquationSystem object
55typedef std::shared_ptr<Diffusion> DiffusionSharedPtr;
56
57/// Datatype of the NekFactory used to instantiate classes derived
58/// from the Diffusion class.
62
63typedef std::function<void(const Array<OneD, Array<OneD, NekDouble>> &,
67
68typedef std::function<void(const Array<OneD, Array<OneD, NekDouble>> &,
72
73typedef std::function<void(const Array<OneD, Array<OneD, NekDouble>> &,
77
78/**
79 * Parameter list meaning:
80 * 1st: field conservative variables
81 * 2th: Devrivatives of field conservative varialbes
82 * 3rd: the current time for time-dependent boundary
83 * 4th: Fwd of field conservative variables optional
84 * 5th: Fwd of Devrivatives(2nd) optional
85 *
86 * a null pointer need to be passed for optional parameters
87 */
88typedef std::function<void(
89 const Array<OneD, const Array<OneD, NekDouble>> &,
91 const Array<OneD, const Array<OneD, NekDouble>> &,
92 const Array<OneD, const Array<OneD, Array<OneD, NekDouble>>> &)>
94
95/**
96 * Parameter list meaning:
97 * 1st: nvariables
98 * 2nd: nspaceDimension
99 * 3rd: field conservative variables
100 * 4th: Devrivatives of field conservative varialbes
101 * 5th: nonzero flux index array, optional
102 * 6th: normal vectors optional
103 *
104 * a null pointer need to be passed for optional parameters
105 */
106typedef std::function<void(
107 const int, const Array<OneD, Array<OneD, NekDouble>> &,
111
112/**
113 * Parameter list meaning:
114 * 1st: nvariables
115 * 2nd: nspaceDimension
116 * 3rd: trace conservative variables for Diffusion Flux Jacobian
117 * 4th: trace conservative variables( usually the jump of trace value)
118 * 5th: trace symmetric flux
119 * 6th: nonzero flux index array, optional
120 *
121 * a null pointer need to be passed for optional parameters
122 */
123typedef std::function<void(
124 const int, const Array<OneD, Array<OneD, NekDouble>> &,
128
129/**
130 * Parameter list meaning:
131 * 1rd: trace conservative variables
132 */
133typedef std::function<void(Array<OneD, Array<OneD, NekDouble>> &)>
135
137{
138public:
140
144
146 const std::size_t nConvectiveFields,
148 const Array<OneD, Array<OneD, NekDouble>> &inarray,
150 const Array<OneD, Array<OneD, NekDouble>> &pFwd =
152 const Array<OneD, Array<OneD, NekDouble>> &pBwd =
154 {
155 v_Diffuse(nConvectiveFields, fields, inarray, outarray, pFwd, pBwd);
156 }
157
159 const std::size_t nConvectiveFields,
161 const Array<OneD, Array<OneD, NekDouble>> &inarray,
162 Array<OneD, Array<OneD, NekDouble>> &outarray, NekDouble time,
163 const Array<OneD, Array<OneD, NekDouble>> &pFwd =
165 const Array<OneD, Array<OneD, NekDouble>> &pBwd =
167 {
168 m_time = time;
169 v_Diffuse(nConvectiveFields, fields, inarray, outarray, pFwd, pBwd);
170 }
171
173 const std::size_t nConvectiveFields,
175 const Array<OneD, Array<OneD, NekDouble>> &inarray,
177 const Array<OneD, Array<OneD, NekDouble>> &pFwd =
179 const Array<OneD, Array<OneD, NekDouble>> &pBwd =
181 {
182 v_DiffuseCoeffs(nConvectiveFields, fields, inarray, outarray, pFwd,
183 pBwd);
184 }
185
187 const std::size_t nConvectiveFields,
189 const Array<OneD, Array<OneD, NekDouble>> &inarray,
190 Array<OneD, Array<OneD, NekDouble>> &outarray, NekDouble time,
191 const Array<OneD, Array<OneD, NekDouble>> &pFwd =
193 const Array<OneD, Array<OneD, NekDouble>> &pBwd =
195 {
196 m_time = time;
197 v_DiffuseCoeffs(nConvectiveFields, fields, inarray, outarray, pFwd,
198 pBwd);
199 }
200
201 // Diffusion Calculate the physical derivatives
204 const Array<OneD, Array<OneD, NekDouble>> &inarray,
206 const Array<OneD, Array<OneD, NekDouble>> &pFwd =
208 const Array<OneD, Array<OneD, NekDouble>> &pBwd =
210 {
211 v_DiffuseCalcDerivative(fields, inarray, qfields, pFwd, pBwd);
212 }
213
214 /// Diffusion Volume FLux
217 const Array<OneD, Array<OneD, NekDouble>> &inarray,
219 TensorOfArray3D<NekDouble> &VolumeFlux,
220 Array<OneD, int> &nonZeroIndex = NullInt1DArray)
221 {
222 v_DiffuseVolumeFlux(fields, inarray, qfields, VolumeFlux, nonZeroIndex);
223 }
224
225 /// Diffusion term Trace Flux
228 const Array<OneD, Array<OneD, NekDouble>> &inarray,
230 TensorOfArray3D<NekDouble> &VolumeFlux,
231 Array<OneD, Array<OneD, NekDouble>> &TraceFlux,
232 const Array<OneD, Array<OneD, NekDouble>> &pFwd =
234 const Array<OneD, Array<OneD, NekDouble>> &pBwd =
236 Array<OneD, int> &nonZeroIndex = NullInt1DArray)
237 {
238 v_DiffuseTraceFlux(fields, inarray, qfields, VolumeFlux, TraceFlux,
239 pFwd, pBwd, nonZeroIndex);
240 }
241
244 {
245 v_SetHomoDerivs(deriv);
246 }
247
249 {
250 return v_GetFluxTensor();
251 }
252
253 /// Get trace normal
256 {
257 return v_GetTraceNormal();
258 }
259
260 template <typename FuncPointerT, typename ObjectPointerT>
261 void SetFluxVector(FuncPointerT func, ObjectPointerT obj)
262 {
263 m_fluxVector = std::bind(func, obj, std::placeholders::_1,
264 std::placeholders::_2, std::placeholders::_3);
265 }
266
268 {
269 m_fluxVector = fluxVector;
270 }
271
272 template <typename FuncPointerT, typename ObjectPointerT>
273 void SetFluxVectorNS(FuncPointerT func, ObjectPointerT obj)
274 {
276 std::bind(func, obj, std::placeholders::_1, std::placeholders::_2,
277 std::placeholders::_3);
278 }
279
281 {
282 m_fluxVectorNS = fluxVector;
283 }
284
285 template <typename FuncPointerT, typename ObjectPointerT>
286 void SetFluxPenaltyNS(FuncPointerT func, ObjectPointerT obj)
287 {
289 std::bind(func, obj, std::placeholders::_1, std::placeholders::_2,
290 std::placeholders::_3);
291 }
292
294 {
295 m_fluxPenaltyNS = flux;
296 }
297
298 template <typename FuncPointerT, typename ObjectPointerT>
299 void SetDiffusionFluxCons(FuncPointerT func, ObjectPointerT obj)
300 {
302 std::bind(func, obj, std::placeholders::_1, std::placeholders::_2,
303 std::placeholders::_3, std::placeholders::_4,
304 std::placeholders::_5, std::placeholders::_6);
305 }
306
308 {
310 }
311
312 template <typename FuncPointerT, typename ObjectPointerT>
313 void SetDiffusionFluxConsTrace(FuncPointerT func, ObjectPointerT obj)
314 {
316 std::bind(func, obj, std::placeholders::_1, std::placeholders::_2,
317 std::placeholders::_3, std::placeholders::_4,
318 std::placeholders::_5, std::placeholders::_6);
319 }
320
322 {
324 }
325
326 template <typename FuncPointerT, typename ObjectPointerT>
327 void SetSpecialBndTreat(FuncPointerT func, ObjectPointerT obj)
328 {
329 m_SpecialBndTreat = std::bind(func, obj, std::placeholders::_1);
330 }
331
332 template <typename FuncPointerT, typename ObjectPointerT>
333 void SetDiffusionSymmFluxCons(FuncPointerT func, ObjectPointerT obj)
334 {
336 std::bind(func, obj, std::placeholders::_1, std::placeholders::_2,
337 std::placeholders::_3, std::placeholders::_4,
338 std::placeholders::_5, std::placeholders::_6);
339 }
340
342 Array<OneD, Array<OneD, NekDouble>> &gridVelocityTrace)
343 {
344 m_gridVelocityTrace = gridVelocityTrace;
345 }
346
347protected:
348 /// Params for Ducros sensor
352
362
366
368 const std::size_t nConvectiveFields,
370 const Array<OneD, Array<OneD, NekDouble>> &inarray,
372 const Array<OneD, Array<OneD, NekDouble>> &pFwd,
373 const Array<OneD, Array<OneD, NekDouble>> &pBwd) = 0;
374
376 const std::size_t nConvectiveFields,
378 const Array<OneD, Array<OneD, NekDouble>> &inarray,
380 const Array<OneD, Array<OneD, NekDouble>> &pFwd,
381 const Array<OneD, Array<OneD, NekDouble>> &pBwd);
382
383 /// Diffusion Flux, calculate the physical derivatives
386 const Array<OneD, Array<OneD, NekDouble>> &inarray,
388 const Array<OneD, Array<OneD, NekDouble>> &pFwd,
389 const Array<OneD, Array<OneD, NekDouble>> &pBwd);
390
391 /// Diffusion Volume Flux
394 const Array<OneD, Array<OneD, NekDouble>> &inarray,
396 TensorOfArray3D<NekDouble> &VolumeFlux, Array<OneD, int> &nonZeroIndex);
397
398 /// Diffusion term Trace Flux
401 const Array<OneD, Array<OneD, NekDouble>> &inarray,
403 TensorOfArray3D<NekDouble> &VolumeFlux,
404 Array<OneD, Array<OneD, NekDouble>> &TraceFlux,
405 const Array<OneD, Array<OneD, NekDouble>> &pFwd,
406 const Array<OneD, Array<OneD, NekDouble>> &pBwd,
407 Array<OneD, int> &nonZeroIndex);
408
409 virtual void v_SetHomoDerivs(
410 [[maybe_unused]] Array<OneD, Array<OneD, NekDouble>> &deriv)
411 {
412 }
413
415 {
417 return tmp;
418 }
419
420 SOLVER_UTILS_EXPORT virtual const Array<OneD,
423};
424
425} // namespace Nektar::SolverUtils
426
427#endif
#define SOLVER_UTILS_EXPORT
Provides a generic Factory class.
Array< OneD, NekDouble > m_divVelSquare
Definition: Diffusion.h:350
void SetFluxVectorNS(DiffusionFluxVecCBNS fluxVector)
Definition: Diffusion.h:280
void SetSpecialBndTreat(FuncPointerT func, ObjectPointerT obj)
Definition: Diffusion.h:327
SOLVER_UTILS_EXPORT void DiffuseCalcDerivative(const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, TensorOfArray3D< NekDouble > &qfields, const Array< OneD, Array< OneD, NekDouble > > &pFwd=NullNekDoubleArrayOfArray, const Array< OneD, Array< OneD, NekDouble > > &pBwd=NullNekDoubleArrayOfArray)
Definition: Diffusion.h:202
SOLVER_UTILS_EXPORT const Array< OneD, const Array< OneD, NekDouble > > & GetTraceNormal()
Get trace normal.
Definition: Diffusion.h:255
void SetFluxPenaltyNS(FuncPointerT func, ObjectPointerT obj)
Definition: Diffusion.h:286
DiffusionFluxCons m_FunctorDiffusionfluxConsTrace
Definition: Diffusion.h:357
virtual SOLVER_UTILS_EXPORT void v_DiffuseCoeffs(const std::size_t nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const Array< OneD, Array< OneD, NekDouble > > &pFwd, const Array< OneD, Array< OneD, NekDouble > > &pBwd)
Definition: Diffusion.cpp:57
Array< OneD, Array< OneD, NekDouble > > m_gridVelocityTrace
Definition: Diffusion.h:360
virtual SOLVER_UTILS_EXPORT void v_Diffuse(const std::size_t nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const Array< OneD, Array< OneD, NekDouble > > &pFwd, const Array< OneD, Array< OneD, NekDouble > > &pBwd)=0
void SetFluxPenaltyNS(DiffusionFluxPenaltyNS flux)
Definition: Diffusion.h:293
SOLVER_UTILS_EXPORT void SetHomoDerivs(Array< OneD, Array< OneD, NekDouble > > &deriv)
Definition: Diffusion.h:242
Array< OneD, NekDouble > m_divVel
Params for Ducros sensor.
Definition: Diffusion.h:349
virtual SOLVER_UTILS_EXPORT void v_DiffuseVolumeFlux(const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, TensorOfArray3D< NekDouble > &qfields, TensorOfArray3D< NekDouble > &VolumeFlux, Array< OneD, int > &nonZeroIndex)
Diffusion Volume Flux.
Definition: Diffusion.cpp:84
SOLVER_UTILS_EXPORT void Diffuse(const std::size_t nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const Array< OneD, Array< OneD, NekDouble > > &pFwd=NullNekDoubleArrayOfArray, const Array< OneD, Array< OneD, NekDouble > > &pBwd=NullNekDoubleArrayOfArray)
Definition: Diffusion.h:145
virtual SOLVER_UTILS_EXPORT ~Diffusion()
Definition: Diffusion.h:139
SOLVER_UTILS_EXPORT void SetGridVelocityTrace(Array< OneD, Array< OneD, NekDouble > > &gridVelocityTrace)
Definition: Diffusion.h:341
SOLVER_UTILS_EXPORT void Diffuse(const std::size_t nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, NekDouble time, const Array< OneD, Array< OneD, NekDouble > > &pFwd=NullNekDoubleArrayOfArray, const Array< OneD, Array< OneD, NekDouble > > &pBwd=NullNekDoubleArrayOfArray)
Definition: Diffusion.h:158
Array< OneD, NekDouble > m_curlVelSquare
Definition: Diffusion.h:351
SOLVER_UTILS_EXPORT void DiffuseVolumeFlux(const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, TensorOfArray3D< NekDouble > &qfields, TensorOfArray3D< NekDouble > &VolumeFlux, Array< OneD, int > &nonZeroIndex=NullInt1DArray)
Diffusion Volume FLux.
Definition: Diffusion.h:215
DiffusionFluxVecCBNS m_fluxVectorNS
Definition: Diffusion.h:354
void SetFluxVectorNS(FuncPointerT func, ObjectPointerT obj)
Definition: Diffusion.h:273
void SetDiffusionFluxConsTrace(FuncPointerT func, ObjectPointerT obj)
Definition: Diffusion.h:313
void SetFluxVector(FuncPointerT func, ObjectPointerT obj)
Definition: Diffusion.h:261
void SetDiffusionFluxCons(DiffusionFluxCons flux)
Definition: Diffusion.h:307
SOLVER_UTILS_EXPORT void InitObject(LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields)
Definition: Diffusion.cpp:45
SOLVER_UTILS_EXPORT TensorOfArray3D< NekDouble > & GetFluxTensor()
Definition: Diffusion.h:248
SOLVER_UTILS_EXPORT void DiffuseTraceFlux(const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, TensorOfArray3D< NekDouble > &qfields, TensorOfArray3D< NekDouble > &VolumeFlux, Array< OneD, Array< OneD, NekDouble > > &TraceFlux, const Array< OneD, Array< OneD, NekDouble > > &pFwd=NullNekDoubleArrayOfArray, const Array< OneD, Array< OneD, NekDouble > > &pBwd=NullNekDoubleArrayOfArray, Array< OneD, int > &nonZeroIndex=NullInt1DArray)
Diffusion term Trace Flux.
Definition: Diffusion.h:226
DiffusionFluxCons m_FunctorDiffusionfluxCons
Definition: Diffusion.h:356
void SetDiffusionSymmFluxCons(FuncPointerT func, ObjectPointerT obj)
Definition: Diffusion.h:333
SpecialBndTreat m_SpecialBndTreat
Definition: Diffusion.h:358
virtual void v_SetHomoDerivs(Array< OneD, Array< OneD, NekDouble > > &deriv)
Definition: Diffusion.h:409
SOLVER_UTILS_EXPORT void DiffuseCoeffs(const std::size_t nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, NekDouble time, const Array< OneD, Array< OneD, NekDouble > > &pFwd=NullNekDoubleArrayOfArray, const Array< OneD, Array< OneD, NekDouble > > &pBwd=NullNekDoubleArrayOfArray)
Definition: Diffusion.h:186
virtual SOLVER_UTILS_EXPORT void v_DiffuseCalcDerivative(const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, TensorOfArray3D< NekDouble > &qfields, const Array< OneD, Array< OneD, NekDouble > > &pFwd, const Array< OneD, Array< OneD, NekDouble > > &pBwd)
Diffusion Flux, calculate the physical derivatives.
Definition: Diffusion.cpp:74
void SetDiffusionFluxCons(FuncPointerT func, ObjectPointerT obj)
Definition: Diffusion.h:299
virtual SOLVER_UTILS_EXPORT void v_InitObject(LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields)=0
DiffusionSymmFluxCons m_FunctorSymmetricfluxCons
Definition: Diffusion.h:359
DiffusionFluxPenaltyNS m_fluxPenaltyNS
Definition: Diffusion.h:355
virtual SOLVER_UTILS_EXPORT void v_DiffuseTraceFlux(const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, TensorOfArray3D< NekDouble > &Qfields, TensorOfArray3D< NekDouble > &VolumeFlux, Array< OneD, Array< OneD, NekDouble > > &TraceFlux, const Array< OneD, Array< OneD, NekDouble > > &pFwd, const Array< OneD, Array< OneD, NekDouble > > &pBwd, Array< OneD, int > &nonZeroIndex)
Diffusion term Trace Flux.
Definition: Diffusion.cpp:94
virtual TensorOfArray3D< NekDouble > & v_GetFluxTensor()
Definition: Diffusion.h:414
virtual SOLVER_UTILS_EXPORT const Array< OneD, const Array< OneD, NekDouble > > & v_GetTraceNormal()
Definition: Diffusion.cpp:68
void SetDiffusionFluxConsTrace(DiffusionFluxCons flux)
Definition: Diffusion.h:321
DiffusionFluxVecCB m_fluxVector
Definition: Diffusion.h:353
SOLVER_UTILS_EXPORT void DiffuseCoeffs(const std::size_t nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const Array< OneD, Array< OneD, NekDouble > > &pFwd=NullNekDoubleArrayOfArray, const Array< OneD, Array< OneD, NekDouble > > &pBwd=NullNekDoubleArrayOfArray)
Definition: Diffusion.h:172
SOLVER_UTILS_EXPORT void SetFluxVector(DiffusionFluxVecCB fluxVector)
Definition: Diffusion.h:267
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< Diffusion > DiffusionSharedPtr
A shared pointer to an EquationSystem object.
Definition: Diffusion.h:55
std::function< void(Array< OneD, Array< OneD, NekDouble > > &)> SpecialBndTreat
Definition: Diffusion.h:134
std::function< void(const int, const Array< OneD, Array< OneD, NekDouble > > &, const TensorOfArray3D< NekDouble > &, TensorOfArray3D< NekDouble > &, Array< OneD, int > &, const Array< OneD, Array< OneD, NekDouble > > &)> DiffusionFluxCons
Definition: Diffusion.h:110
DiffusionFactory & GetDiffusionFactory()
Definition: Diffusion.cpp:39
std::function< void(const Array< OneD, Array< OneD, NekDouble > > &, const Array< OneD, Array< OneD, NekDouble > > &, Array< OneD, Array< OneD, NekDouble > > &)> DiffusionFluxPenaltyNS
Definition: Diffusion.h:76
LibUtilities::NekFactory< std::string, Diffusion, std::string > DiffusionFactory
Datatype of the NekFactory used to instantiate classes derived from the Diffusion class.
Definition: Diffusion.h:60
std::function< void(const Array< OneD, const Array< OneD, NekDouble > > &, const Array< OneD, const Array< OneD, Array< OneD, NekDouble > > > &, NekDouble, const Array< OneD, const Array< OneD, NekDouble > > &, const Array< OneD, const Array< OneD, Array< OneD, NekDouble > > > &)> FunctorDerivBndCond
Definition: Diffusion.h:93
std::function< void(const Array< OneD, Array< OneD, NekDouble > > &, const TensorOfArray3D< NekDouble > &, TensorOfArray3D< NekDouble > &)> DiffusionFluxVecCB
Definition: Diffusion.h:66
std::function< void(const Array< OneD, Array< OneD, NekDouble > > &, TensorOfArray3D< NekDouble > &, TensorOfArray3D< NekDouble > &)> DiffusionFluxVecCBNS
Definition: Diffusion.h:71
std::function< void(const int, const Array< OneD, Array< OneD, NekDouble > > &, const Array< OneD, Array< OneD, NekDouble > > &, TensorOfArray3D< NekDouble > &, Array< OneD, int > &, const Array< OneD, Array< OneD, NekDouble > > &)> DiffusionSymmFluxCons
Definition: Diffusion.h:127
static Array< OneD, int > NullInt1DArray
static Array< OneD, Array< OneD, NekDouble > > NullNekDoubleArrayOfArray
double NekDouble