Nalu
Nalu: a generalized unstructured massively parallel low Mach flow code designed to support a variety of energy applications of interest (most notably Wind ECP) built on the Sierra Toolkit and Trilinos solver Tpetra/Epetra stack. The open source BSD, clause 3 license model has been chosen for the code base. See LICENSE for more information. http://NaluCFD.org
RadTransFemElemSuppAlg.h
Go to the documentation of this file.
1 /*------------------------------------------------------------------------*/
2 /* Copyright 2014 Sandia Corporation. */
3 /* This software is released under the license detailed */
4 /* in the file, LICENSE, which is located in the top-level Nalu */
5 /* directory structure */
6 /*------------------------------------------------------------------------*/
7 
8 
9 #ifndef RadTransFemElemSuppAlg_h
10 #define RadTransFemElemSuppAlg_h
11 
12 #include <SupplementalAlgorithm.h>
13 #include <FieldTypeDef.h>
14 
15 #include <stk_mesh/base/BulkData.hpp>
16 #include <stk_mesh/base/Entity.hpp>
17 
18 namespace sierra{
19 namespace nalu{
20 
21 class RadiativeTransportEquationSystem;
22 class Realm;
23 class MasterElement;
24 class Hex8FEM;
25 
27 {
28 public:
29 
31  Realm &realm,
33 
34  virtual ~RadTransFemElemSuppAlg();
35 
36  virtual void setup();
37 
38  virtual void elem_resize(
39  MasterElement *meSCS,
40  MasterElement *meSCV);
41 
42  virtual void elem_execute(
43  double *lhs,
44  double *rhs,
45  stk::mesh::Entity element,
46  MasterElement *meSCS,
47  MasterElement *meSCV);
48 
50 
51  const stk::mesh::BulkData *bulkData_;
52 
59 
60  // master element
62  double *ipWeight_;
63  const double invPi_;
64  const int nDim_;
65  const double rowSumLump_;
66  const double consistentMass_;
67  const bool linearNorm_;
68  const bool useUpper_;
69 
70  // fixed space
71  std::vector<double> ws_Sk_;
72 
73  // scratch space; geometry
74  std::vector<double> ws_dndx_;
75  std::vector<double> ws_deriv_;
76  std::vector<double> ws_det_j_;
77  std::vector<double> ws_shape_function_;
78  std::vector<double> ws_gUpper_;
79  std::vector<double> ws_gLower_;
80 
81  // scratch space; fields
82  std::vector<double> ws_intensity_;
83  std::vector<double> ws_absorption_;
84  std::vector<double> ws_scattering_;
85  std::vector<double> ws_scalarFlux_;
86  std::vector<double> ws_radiationSource_;
87  std::vector<double> ws_coordinates_;
88 };
89 
90 } // namespace nalu
91 } // namespace Sierra
92 
93 #endif
Definition: Hex8FEM.h:18
const RadiativeTransportEquationSystem * radEqSystem_
Definition: RadTransFemElemSuppAlg.h:49
std::vector< double > ws_scattering_
Definition: RadTransFemElemSuppAlg.h:84
Definition: ABLForcingAlgorithm.C:26
Definition: MasterElement.h:53
RadTransFemElemSuppAlg(Realm &realm, RadiativeTransportEquationSystem *radEqSystem)
Definition: RadTransFemElemSuppAlg.C:33
std::vector< double > ws_intensity_
Definition: RadTransFemElemSuppAlg.h:82
virtual void setup()
Definition: RadTransFemElemSuppAlg.C:121
virtual ~RadTransFemElemSuppAlg()
Definition: RadTransFemElemSuppAlg.C:81
std::vector< double > ws_det_j_
Definition: RadTransFemElemSuppAlg.h:76
const double consistentMass_
Definition: RadTransFemElemSuppAlg.h:66
Definition: RadTransFemElemSuppAlg.h:26
ScalarFieldType * scattering_
Definition: RadTransFemElemSuppAlg.h:55
ScalarFieldType * radiationSource_
Definition: RadTransFemElemSuppAlg.h:57
const double rowSumLump_
Definition: RadTransFemElemSuppAlg.h:65
std::vector< double > ws_gLower_
Definition: RadTransFemElemSuppAlg.h:79
std::vector< double > ws_scalarFlux_
Definition: RadTransFemElemSuppAlg.h:85
std::vector< double > ws_dndx_
Definition: RadTransFemElemSuppAlg.h:74
stk::mesh::Field< double, stk::mesh::Cartesian > VectorFieldType
Definition: FieldTypeDef.h:24
ScalarFieldType * absorption_
Definition: RadTransFemElemSuppAlg.h:54
std::vector< double > ws_shape_function_
Definition: RadTransFemElemSuppAlg.h:77
std::vector< double > ws_coordinates_
Definition: RadTransFemElemSuppAlg.h:87
Hex8FEM * meFEM_
Definition: RadTransFemElemSuppAlg.h:61
static constexpr double lhs[8][8]
Definition: UnitTestContinuityAdvElem.C:25
const int nDim_
Definition: RadTransFemElemSuppAlg.h:64
const double invPi_
Definition: RadTransFemElemSuppAlg.h:63
ScalarFieldType * intensity_
Definition: RadTransFemElemSuppAlg.h:53
std::vector< double > ws_radiationSource_
Definition: RadTransFemElemSuppAlg.h:86
stk::mesh::Field< double > ScalarFieldType
Definition: FieldTypeDef.h:19
static constexpr double rhs[8]
Definition: UnitTestContinuityAdvElem.C:18
Definition: RadiativeTransportEquationSystem.h:29
const bool useUpper_
Definition: RadTransFemElemSuppAlg.h:68
virtual void elem_resize(MasterElement *meSCS, MasterElement *meSCV)
Definition: RadTransFemElemSuppAlg.C:90
ScalarFieldType * scalarFlux_
Definition: RadTransFemElemSuppAlg.h:56
Definition: UnitTestMasterElements.C:367
std::vector< double > ws_gUpper_
Definition: RadTransFemElemSuppAlg.h:78
double * ipWeight_
Definition: RadTransFemElemSuppAlg.h:62
std::vector< double > ws_Sk_
Definition: RadTransFemElemSuppAlg.h:71
const bool linearNorm_
Definition: RadTransFemElemSuppAlg.h:67
virtual void elem_execute(double *lhs, double *rhs, stk::mesh::Entity element, MasterElement *meSCS, MasterElement *meSCV)
Definition: RadTransFemElemSuppAlg.C:132
Definition: Realm.h:82
Definition: SupplementalAlgorithm.h:24
std::vector< double > ws_absorption_
Definition: RadTransFemElemSuppAlg.h:83
VectorFieldType * coordinates_
Definition: RadTransFemElemSuppAlg.h:58
std::vector< double > ws_deriv_
Definition: RadTransFemElemSuppAlg.h:75
const stk::mesh::BulkData * bulkData_
Definition: RadTransFemElemSuppAlg.h:51