Nektar++
CompressibleFlowSystemImplicit.h
Go to the documentation of this file.
1 ///////////////////////////////////////////////////////////////////////////////
2 //
3 // File CompressibleFlowSystemImplicit.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: Auxiliary functions for the incompressible
32 // compressible flow system
33 //
34 ///////////////////////////////////////////////////////////////////////////////
35 
36 #ifndef NEKTAR_SOLVERS_COMPRESSIBLEFLOWSOLVER_COMPRESSIBLEFLOWSYSTEMIMPLICIT_H
37 #define NEKTAR_SOLVERS_COMPRESSIBLEFLOWSOLVER_COMPRESSIBLEFLOWSYSTEMIMPLICIT_H
38 
39 #include <boost/core/ignore_unused.hpp>
41 
42 namespace Nektar
43 {
44  /**
45  *
46  */
47  class CFSImplicit: virtual public CompressibleFlowSystem
48 
49  {
50  public:
54 
55  virtual ~CFSImplicit();
56 
57  virtual void v_InitObject();
58 
60 
62  const Array<OneD, const NekDouble> &inarray,
64  const bool &flag);
65 
67  const Array<OneD, const NekDouble> &inarray,
69  const bool &flag = true,
70  const Array<OneD, const NekDouble> &source =
72 
74  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
76  const Array<OneD, const Array<OneD, NekDouble>> &source =
78 
79  void DoOdeRhsCoeff(
80  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
81  Array<OneD, Array<OneD, NekDouble>> &outarray,
82  const NekDouble time);
83 
84  void DoAdvectionCoeff(
85  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
86  Array<OneD, Array<OneD, NekDouble>> &outarray,
87  const NekDouble time,
88  const Array<OneD, const Array<OneD, NekDouble>> &pFwd,
89  const Array<OneD, const Array<OneD, NekDouble>> &pBwd);
90 
91  void DoImplicitSolve(
92  const Array<OneD, const Array<OneD, NekDouble>> &inpnts,
94  const NekDouble time,
95  const NekDouble lambda);
96 
98  const Array<OneD, const Array<OneD, NekDouble>> &inpnts,
99  const Array<OneD, const NekDouble> &inarray,
101  const NekDouble time,
102  const NekDouble lambda);
103 
104  void CalcRefValues(
105  const Array<OneD, const NekDouble> &inarray);
106 
107  protected:
110 
111  int m_nPadding = 1;
112 
114 
117 
120 
122 
124 
125  void PreconCoeff(
126  const Array<OneD, NekDouble> &inarray,
127  Array<OneD, NekDouble> &outarray,
128  const bool &flag);
129 
130  template<typename DataType, typename TypeNekBlkMatSharedPtr>
131  void AddMatNSBlkDiagVol(
132  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
133  const Array<OneD, const TensorOfArray2D<NekDouble>> &qfield,
135  TensorOfArray4D<DataType> &StdMatDataDBB,
136  TensorOfArray5D<DataType> &StdMatDataDBDB);
137 
138  template<typename DataType>
139  void CalcVolJacStdMat(
140  TensorOfArray4D<DataType> &StdMatDataDBB,
141  TensorOfArray5D<DataType> &StdMatDataDBDB);
142 
143  template<typename DataType, typename TypeNekBlkMatSharedPtr>
144  void AddMatNSBlkDiagBnd(
145  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
150  Array<OneD, Array<OneD, DataType>> &TraceJacDerivSign,
151  TensorOfArray5D<DataType> &TraceIPSymJacArray);
152 
153  template<typename DataType, typename TypeNekBlkMatSharedPtr>
154  void ElmtVarInvMtrx(
156  TypeNekBlkMatSharedPtr &gmtVar,
157  const DataType &tmpDatatype);
158 
159  template<typename DataType, typename TypeNekBlkMatSharedPtr>
160  void GetTraceJac(
161  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
165  Array<OneD, Array<OneD, DataType>> &TraceJacDerivSign,
166  TensorOfArray5D<DataType> &TraceIPSymJacArray);
167 
168  template<typename DataType, typename TypeNekBlkMatSharedPtr>
169  void NumCalcRiemFluxJac(
170  const int nConvectiveFields,
172  const Array<OneD, const Array<OneD, NekDouble>> &AdvVel,
173  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
175  const NekDouble &time,
176  const Array<OneD, const Array<OneD, NekDouble>> &Fwd,
177  const Array<OneD, const Array<OneD, NekDouble>> &Bwd,
178  TypeNekBlkMatSharedPtr &FJac,
179  TypeNekBlkMatSharedPtr &BJac,
180  TensorOfArray5D<DataType> &TraceIPSymJacArray);
181 
183  const Array<OneD, NekDouble> &Fwd,
184  const Array<OneD, NekDouble> &normals,
185  DNekMatSharedPtr &FJac,
186  const NekDouble efix, const NekDouble fsw);
187 
188  template<typename DataType, typename TypeNekBlkMatSharedPtr>
190  const TypeNekBlkMatSharedPtr &BlkMat,
191  TensorOfArray3D<DataType> &MatArray);
192 
193  template<typename DataType, typename TypeNekBlkMatSharedPtr>
195  const Array<OneD, TypeNekBlkMatSharedPtr> &TraceJac,
196  const Array<OneD, TypeNekBlkMatSharedPtr> &TraceJacDeriv,
197  TensorOfArray4D<DataType> &TraceJacArray,
198  TensorOfArray4D<DataType> &TraceJacDerivArray);
199 
200  template<typename DataType, typename TypeNekBlkMatSharedPtr>
203  const DataType valu);
204 
205  template<typename DataType, typename TypeNekBlkMatSharedPtr>
208  const DataType valu);
209 
210  inline void AllocateNekBlkMatDig(
211  SNekBlkMatSharedPtr &mat,
212  const Array<OneD, unsigned int> nrow,
213  const Array<OneD, unsigned int> ncol)
214  {
216  ::AllocateSharedPtr(nrow, ncol, eDIAGONAL);
217  SNekMatSharedPtr loc_matNvar;
218  for(int nelm = 0; nelm < nrow.size(); ++nelm)
219  {
220  int nrowsVars = nrow[nelm];
221  int ncolsVars = ncol[nelm];
222 
223  loc_matNvar = MemoryManager<SNekMat>::
224  AllocateSharedPtr(nrowsVars,ncolsVars,0.0);
225  mat->SetBlock(nelm,nelm,loc_matNvar);
226  }
227  }
228 
230  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
232  SNekBlkMatSharedPtr &gmtVar,
234  Array<OneD, SNekBlkMatSharedPtr> &TraceJacDeriv,
235  Array<OneD, Array<OneD, NekSingle>> &TraceJacDerivSign,
236  TensorOfArray4D<NekSingle> &TraceJacArray,
237  TensorOfArray4D<NekSingle> &TraceJacDerivArray,
238  TensorOfArray5D<NekSingle> &TraceIPSymJacArray);
239 
240  template<typename DataType, typename TypeNekBlkMatSharedPtr>
243  const NekDouble dtlamda,
244  const DataType tmpDataType);
245 
247  const int nConvectiveFields,
248  const int nElmtPnt,
249  const Array<OneD, const Array<OneD, NekDouble>> &locVars,
250  const Array<OneD, NekDouble> &normals,
251  DNekMatSharedPtr &wspMat,
252  Array<OneD, Array<OneD, NekDouble>> &PntJacArray);
253 
255  const int nConvectiveFields,
256  const Array<OneD, NekDouble> &conservVar,
257  const Array<OneD, NekDouble> &normals,
258  DNekMatSharedPtr &fluxJac);
259 
261  const int nConvectiveFields,
262  const int nDim,
263  const int nPts,
264  const int nTracePts,
265  const NekDouble PenaltyFactor2,
267  const Array<OneD, const Array<OneD, NekDouble>> &AdvVel,
268  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
269  const NekDouble time,
271  const Array<OneD, const Array<OneD, NekDouble>> &vFwd,
272  const Array<OneD, const Array<OneD, NekDouble>> &vBwd,
273  const Array<OneD, const TensorOfArray2D<NekDouble>> &qFwd,
274  const Array<OneD, const TensorOfArray2D<NekDouble>> &qBwd,
275  const Array<OneD, NekDouble > &MuVarTrace,
276  Array<OneD, int > &nonZeroIndex,
277  Array<OneD, Array<OneD, NekDouble>> &traceflux);
278 
280  const int nConvectiveFields,
281  const int nElmtPnt,
282  const Array<OneD, const Array<OneD, NekDouble>> &locVars,
283  const TensorOfArray3D<NekDouble> &locDerv,
284  const Array<OneD, NekDouble> &locmu,
285  const Array<OneD, NekDouble> &locDmuDT,
286  const Array<OneD, NekDouble> &normals,
287  DNekMatSharedPtr &wspMat,
288  Array<OneD, Array<OneD, NekDouble>> &PntJacArray)
289  {
290  v_MinusDiffusionFluxJacPoint(nConvectiveFields,nElmtPnt,
291  locVars,locDerv,locmu,locDmuDT,normals,wspMat,PntJacArray);
292  }
293 
295  const MultiRegions::ExpListSharedPtr &explist,
296  const Array<OneD, const Array<OneD, NekDouble>> &normals,
297  const int nDervDir,
298  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
299  TensorOfArray5D<NekDouble> &ElmtJacArray,
300  const int nFluxDir)
301  {
302  v_GetFluxDerivJacDirctn(explist,normals,nDervDir,inarray,
303  ElmtJacArray,nFluxDir);
304  }
305 
307  const int nConvectiveFields,
308  const int nElmtPnt,
309  const int nDervDir,
310  const Array<OneD, const Array<OneD, NekDouble>> &locVars,
311  const Array<OneD, NekDouble> &locmu,
312  const Array<OneD, const Array<OneD, NekDouble>> &locnormal,
313  DNekMatSharedPtr &wspMat,
314  Array<OneD, Array<OneD, NekDouble>> &PntJacArray)
315  {
316  v_GetFluxDerivJacDirctnElmt(nConvectiveFields,nElmtPnt,nDervDir,
317  locVars,locmu,locnormal,wspMat,PntJacArray);
318  }
319 
321  const MultiRegions::ExpListSharedPtr &explist,
322  const Array<OneD, const Array<OneD, NekDouble>> &normals,
323  const int nDervDir,
324  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
326  {
327  v_GetFluxDerivJacDirctn(explist,normals,nDervDir,inarray,ElmtJac);
328  }
329 
331  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
333  {
334  v_CalcPhysDeriv(inarray, qfield);
335  }
336 
337  void DoDiffusionCoeff(
338  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
339  Array<OneD, Array<OneD, NekDouble>> &outarray,
340  const Array<OneD, const Array<OneD, NekDouble>> &pFwd,
341  const Array<OneD, const Array<OneD, NekDouble>> &pBwd);
343  const Array<OneD, const NekDouble> &inarray,
345  const bool &flag = false);
346 
348  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
350  Array<OneD, NekDouble> &DmuDT)
351  {
352  v_CalcMuDmuDT(inarray,mu,DmuDT);
353  }
354 
355  virtual void v_DoDiffusionCoeff(
356  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
357  Array<OneD, Array<OneD, NekDouble>> &outarray,
358  const Array<OneD, const Array<OneD, NekDouble>> &pFwd,
359  const Array<OneD, const Array<OneD, NekDouble>> &pBwd)
360  {
361  boost::ignore_unused(inarray, outarray, pFwd, pBwd);
362  }
363 
364  virtual void v_CalcMuDmuDT(
365  const Array<OneD, const Array<OneD, NekDouble> > &inarray,
367  Array<OneD, NekDouble> &DmuDT)
368  {
369  boost::ignore_unused(inarray, mu, DmuDT);
370  }
371 
372  virtual void v_CalcPhysDeriv(
373  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
375  {
376  boost::ignore_unused(inarray, qfield);
377  }
378 
379  virtual void v_MinusDiffusionFluxJacPoint(
380  const int nConvectiveFields,
381  const int nElmtPnt,
382  const Array<OneD, const Array<OneD, NekDouble>> &locVars,
383  const TensorOfArray3D<NekDouble> &locDerv,
384  const Array<OneD, NekDouble> &locmu,
385  const Array<OneD, NekDouble> &locDmuDT,
386  const Array<OneD, NekDouble> &normals,
387  DNekMatSharedPtr &wspMat,
388  Array<OneD, Array<OneD, NekDouble>> &PntJacArray);
389 
390  virtual void v_GetFluxDerivJacDirctn(
391  const MultiRegions::ExpListSharedPtr &explist,
392  const Array<OneD, const Array<OneD, NekDouble>> &normals,
393  const int nDervDir,
394  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
395  TensorOfArray5D<NekDouble> &ElmtJacArray,
396  const int nFluxDir);
397 
398  virtual void v_GetFluxDerivJacDirctnElmt(
399  const int nConvectiveFields,
400  const int nElmtPnt,
401  const int nDervDir,
402  const Array<OneD, const Array<OneD, NekDouble>> &locVars,
403  const Array<OneD, NekDouble> &locmu,
404  const Array<OneD, const Array<OneD, NekDouble>> &locnormal,
405  DNekMatSharedPtr &wspMat,
406  Array<OneD, Array<OneD, NekDouble>> &PntJacArray);
407 
409  const MultiRegions::ExpListSharedPtr &explist,
410  const Array<OneD, const Array<OneD, NekDouble>> &normals,
411  const int nDervDir,
412  const Array<OneD, const Array<OneD, NekDouble>> &inarray,
414 
415  virtual bool UpdateTimeStepCheck();
416 
417  };
418 }
419 #endif
void DoDiffusionCoeff(const Array< OneD, const Array< OneD, NekDouble >> &inarray, Array< OneD, Array< OneD, NekDouble >> &outarray, const Array< OneD, const Array< OneD, NekDouble >> &pFwd, const Array< OneD, const Array< OneD, NekDouble >> &pBwd)
Add the diffusions terms to the right-hand side Similar to DoDiffusion() but with outarray in coeffic...
void CalcVolJacStdMat(TensorOfArray4D< DataType > &StdMatDataDBB, TensorOfArray5D< DataType > &StdMatDataDBDB)
void ElmtVarInvMtrx(Array< OneD, Array< OneD, TypeNekBlkMatSharedPtr >> &gmtxarray, TypeNekBlkMatSharedPtr &gmtVar, const DataType &tmpDatatype)
void DoAdvectionCoeff(const Array< OneD, const Array< OneD, NekDouble >> &inarray, Array< OneD, Array< OneD, NekDouble >> &outarray, const NekDouble time, const Array< OneD, const Array< OneD, NekDouble >> &pFwd, const Array< OneD, const Array< OneD, NekDouble >> &pBwd)
Compute the advection terms for the right-hand side.
virtual void v_DoDiffusionCoeff(const Array< OneD, const Array< OneD, NekDouble >> &inarray, Array< OneD, Array< OneD, NekDouble >> &outarray, const Array< OneD, const Array< OneD, NekDouble >> &pFwd, const Array< OneD, const Array< OneD, NekDouble >> &pBwd)
LibUtilities::NekNonlinSysSharedPtr m_nonlinsol
void AddMatNSBlkDiagVol(const Array< OneD, const Array< OneD, NekDouble >> &inarray, const Array< OneD, const TensorOfArray2D< NekDouble >> &qfield, Array< OneD, Array< OneD, TypeNekBlkMatSharedPtr >> &gmtxarray, TensorOfArray4D< DataType > &StdMatDataDBB, TensorOfArray5D< DataType > &StdMatDataDBDB)
virtual void v_CalcMuDmuDT(const Array< OneD, const Array< OneD, NekDouble > > &inarray, Array< OneD, NekDouble > &mu, Array< OneD, NekDouble > &DmuDT)
void PointFluxJacobianPoint(const Array< OneD, NekDouble > &Fwd, const Array< OneD, NekDouble > &normals, DNekMatSharedPtr &FJac, const NekDouble efix, const NekDouble fsw)
CFSImplicit(const LibUtilities::SessionReaderSharedPtr &pSession, const SpatialDomains::MeshGraphSharedPtr &pGraph)
void PreconCoeff(const Array< OneD, NekDouble > &inarray, Array< OneD, NekDouble > &outarray, const bool &flag)
virtual void v_GetFluxDerivJacDirctn(const MultiRegions::ExpListSharedPtr &explist, const Array< OneD, const Array< OneD, NekDouble >> &normals, const int nDervDir, const Array< OneD, const Array< OneD, NekDouble >> &inarray, Array< OneD, Array< OneD, DNekMatSharedPtr >> &ElmtJac)
void MultiplyElmtInvMassPlusSource(Array< OneD, Array< OneD, TypeNekBlkMatSharedPtr >> &gmtxarray, const NekDouble dtlamda, const DataType tmpDataType)
void NonlinSysEvaluatorCoeff1D(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out, const bool &flag)
void CalcRefValues(const Array< OneD, const NekDouble > &inarray)
virtual void v_CalcPhysDeriv(const Array< OneD, const Array< OneD, NekDouble >> &inarray, TensorOfArray3D< NekDouble > &qfield)
virtual void v_GetFluxDerivJacDirctn(const MultiRegions::ExpListSharedPtr &explist, const Array< OneD, const Array< OneD, NekDouble >> &normals, const int nDervDir, const Array< OneD, const Array< OneD, NekDouble >> &inarray, TensorOfArray5D< NekDouble > &ElmtJacArray, const int nFluxDir)
void GetFluxDerivJacDirctn(const MultiRegions::ExpListSharedPtr &explist, const Array< OneD, const Array< OneD, NekDouble >> &normals, const int nDervDir, const Array< OneD, const Array< OneD, NekDouble >> &inarray, TensorOfArray5D< NekDouble > &ElmtJacArray, const int nFluxDir)
void GetFluxVectorJacDirElmt(const int nConvectiveFields, const int nElmtPnt, const Array< OneD, const Array< OneD, NekDouble >> &locVars, const Array< OneD, NekDouble > &normals, DNekMatSharedPtr &wspMat, Array< OneD, Array< OneD, NekDouble >> &PntJacArray)
void Fill2DArrayOfBlkDiagonalMat(Array< OneD, Array< OneD, TypeNekBlkMatSharedPtr >> &gmtxarray, const DataType valu)
void DoImplicitSolveCoeff(const Array< OneD, const Array< OneD, NekDouble >> &inpnts, const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out, const NekDouble time, const NekDouble lambda)
void CalcTraceNumericalFlux(const int nConvectiveFields, const int nDim, const int nPts, const int nTracePts, const NekDouble PenaltyFactor2, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, const Array< OneD, NekDouble >> &AdvVel, const Array< OneD, const Array< OneD, NekDouble >> &inarray, const NekDouble time, TensorOfArray3D< NekDouble > &qfield, const Array< OneD, const Array< OneD, NekDouble >> &vFwd, const Array< OneD, const Array< OneD, NekDouble >> &vBwd, const Array< OneD, const TensorOfArray2D< NekDouble >> &qFwd, const Array< OneD, const TensorOfArray2D< NekDouble >> &qBwd, const Array< OneD, NekDouble > &MuVarTrace, Array< OneD, int > &nonZeroIndex, Array< OneD, Array< OneD, NekDouble >> &traceflux)
Array< OneD, Array< OneD, NekDouble > > m_solutionPhys
void AllocateNekBlkMatDig(SNekBlkMatSharedPtr &mat, const Array< OneD, unsigned int > nrow, const Array< OneD, unsigned int > ncol)
TensorOfArray4D< NekSingle > m_stdSMatDataDBB
void NonlinSysEvaluatorCoeff(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out, const bool &flag=true, const Array< OneD, const NekDouble > &source=NullNekDouble1DArray)
void TranSamesizeBlkDiagMatIntoArray(const TypeNekBlkMatSharedPtr &BlkMat, TensorOfArray3D< DataType > &MatArray)
void NumCalcRiemFluxJac(const int nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, const Array< OneD, NekDouble >> &AdvVel, const Array< OneD, const Array< OneD, NekDouble >> &inarray, TensorOfArray3D< NekDouble > &qfield, const NekDouble &time, const Array< OneD, const Array< OneD, NekDouble >> &Fwd, const Array< OneD, const Array< OneD, NekDouble >> &Bwd, TypeNekBlkMatSharedPtr &FJac, TypeNekBlkMatSharedPtr &BJac, TensorOfArray5D< DataType > &TraceIPSymJacArray)
virtual ~CFSImplicit()
Destructor for CFSImplicit class.
void DoOdeRhsCoeff(const Array< OneD, const Array< OneD, NekDouble >> &inarray, Array< OneD, Array< OneD, NekDouble >> &outarray, const NekDouble time)
Compute the right-hand side.
virtual void v_InitObject()
Initialization object for CFSImplicit class.
void GetTraceJac(const Array< OneD, const Array< OneD, NekDouble >> &inarray, TensorOfArray3D< NekDouble > &qfield, Array< OneD, TypeNekBlkMatSharedPtr > &TraceJac, Array< OneD, TypeNekBlkMatSharedPtr > &TraceJacDeriv, Array< OneD, Array< OneD, DataType >> &TraceJacDerivSign, TensorOfArray5D< DataType > &TraceIPSymJacArray)
void GetFluxVectorJacPoint(const int nConvectiveFields, const Array< OneD, NekDouble > &conservVar, const Array< OneD, NekDouble > &normals, DNekMatSharedPtr &fluxJac)
TensorOfArray5D< NekSingle > m_stdSMatDataDBDB
void GetFluxDerivJacDirctnElmt(const int nConvectiveFields, const int nElmtPnt, const int nDervDir, const Array< OneD, const Array< OneD, NekDouble >> &locVars, const Array< OneD, NekDouble > &locmu, const Array< OneD, const Array< OneD, NekDouble >> &locnormal, DNekMatSharedPtr &wspMat, Array< OneD, Array< OneD, NekDouble >> &PntJacArray)
void MatrixMultiplyMatrixFreeCoeff(const Array< OneD, const NekDouble > &inarray, Array< OneD, NekDouble > &out, const bool &flag=false)
virtual void v_MinusDiffusionFluxJacPoint(const int nConvectiveFields, const int nElmtPnt, const Array< OneD, const Array< OneD, NekDouble >> &locVars, const TensorOfArray3D< NekDouble > &locDerv, const Array< OneD, NekDouble > &locmu, const Array< OneD, NekDouble > &locDmuDT, const Array< OneD, NekDouble > &normals, DNekMatSharedPtr &wspMat, Array< OneD, Array< OneD, NekDouble >> &PntJacArray)
void CalcPreconMatBRJCoeff(const Array< OneD, const Array< OneD, NekDouble >> &inarray, Array< OneD, Array< OneD, SNekBlkMatSharedPtr >> &gmtxarray, SNekBlkMatSharedPtr &gmtVar, Array< OneD, SNekBlkMatSharedPtr > &TraceJac, Array< OneD, SNekBlkMatSharedPtr > &TraceJacDeriv, Array< OneD, Array< OneD, NekSingle >> &TraceJacDerivSign, TensorOfArray4D< NekSingle > &TraceJacArray, TensorOfArray4D< NekSingle > &TraceJacDerivArray, TensorOfArray5D< NekSingle > &TraceIPSymJacArray)
void GetFluxDerivJacDirctn(const MultiRegions::ExpListSharedPtr &explist, const Array< OneD, const Array< OneD, NekDouble >> &normals, const int nDervDir, const Array< OneD, const Array< OneD, NekDouble >> &inarray, Array< OneD, Array< OneD, DNekMatSharedPtr >> &ElmtJac)
void TransTraceJacMatToArray(const Array< OneD, TypeNekBlkMatSharedPtr > &TraceJac, const Array< OneD, TypeNekBlkMatSharedPtr > &TraceJacDeriv, TensorOfArray4D< DataType > &TraceJacArray, TensorOfArray4D< DataType > &TraceJacDerivArray)
void AddMatNSBlkDiagBnd(const Array< OneD, const Array< OneD, NekDouble >> &inarray, TensorOfArray3D< NekDouble > &qfield, TensorOfArray2D< TypeNekBlkMatSharedPtr > &gmtxarray, Array< OneD, TypeNekBlkMatSharedPtr > &TraceJac, Array< OneD, TypeNekBlkMatSharedPtr > &TraceJacDeriv, Array< OneD, Array< OneD, DataType >> &TraceJacDerivSign, TensorOfArray5D< DataType > &TraceIPSymJacArray)
void CalcPhysDeriv(const Array< OneD, const Array< OneD, NekDouble >> &inarray, TensorOfArray3D< NekDouble > &qfield)
void MinusDiffusionFluxJacPoint(const int nConvectiveFields, const int nElmtPnt, const Array< OneD, const Array< OneD, NekDouble >> &locVars, const TensorOfArray3D< NekDouble > &locDerv, const Array< OneD, NekDouble > &locmu, const Array< OneD, NekDouble > &locDmuDT, const Array< OneD, NekDouble > &normals, DNekMatSharedPtr &wspMat, Array< OneD, Array< OneD, NekDouble >> &PntJacArray)
void DoImplicitSolve(const Array< OneD, const Array< OneD, NekDouble >> &inpnts, Array< OneD, Array< OneD, NekDouble >> &outpnt, const NekDouble time, const NekDouble lambda)
void Fill1DArrayOfBlkDiagonalMat(Array< OneD, TypeNekBlkMatSharedPtr > &gmtxarray, const DataType valu)
void CalcMuDmuDT(const Array< OneD, const Array< OneD, NekDouble >> &inarray, Array< OneD, NekDouble > &mu, Array< OneD, NekDouble > &DmuDT)
virtual void v_GetFluxDerivJacDirctnElmt(const int nConvectiveFields, const int nElmtPnt, const int nDervDir, const Array< OneD, const Array< OneD, NekDouble >> &locVars, const Array< OneD, NekDouble > &locmu, const Array< OneD, const Array< OneD, NekDouble >> &locnormal, DNekMatSharedPtr &wspMat, Array< OneD, Array< OneD, NekDouble >> &PntJacArray)
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< NekNonlinSys > NekNonlinSysSharedPtr
Definition: NekNonlinSys.h:46
std::shared_ptr< ExpList > ExpListSharedPtr
Shared pointer to an ExpList object.
std::shared_ptr< MeshGraph > MeshGraphSharedPtr
Definition: MeshGraph.h:174
The above copyright notice and this permission notice shall be included.
Definition: CoupledSolver.h:1
std::shared_ptr< SNekBlkMat > SNekBlkMatSharedPtr
std::shared_ptr< SNekMat > SNekMatSharedPtr
static Array< OneD, Array< OneD, NekDouble > > NullNekDoubleArrayOfArray
static Array< OneD, NekDouble > NullNekDouble1DArray
std::shared_ptr< PreconCfsOp > PreconCfsOpSharedPtr
Definition: PreconCfsOp.h:152
std::shared_ptr< DNekMat > DNekMatSharedPtr
Definition: NekTypeDefs.hpp:69
double NekDouble