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
MomentumMassElemKernel.h
Go to the documentation of this file.
1 /*------------------------------------------------------------------------*/
2 /* Copyright 2014 National Renewable Energy Laboratory. */
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 #ifndef MOMENTUMMASSELEMKERNEL_H
9 #define MOMENTUMMASSELEMKERNEL_H
10 
11 #include "Kernel.h"
12 #include "FieldTypeDef.h"
13 
14 #include <stk_mesh/base/BulkData.hpp>
15 #include <stk_mesh/base/Entity.hpp>
16 
17 #include <Kokkos_Core.hpp>
18 
19 namespace sierra {
20 namespace nalu {
21 
22 class TimeIntegrator;
23 class SolutionOptions;
24 class MasterElement;
25 class ElemDataRequests;
26 
29 template<typename AlgTraits>
31 {
32 public:
34  const stk::mesh::BulkData&,
35  const SolutionOptions&,
37  const bool);
38 
39  virtual ~MomentumMassElemKernel();
40 
43  virtual void setup(const TimeIntegrator&);
44 
48  virtual void execute(
52 
53 private:
54  MomentumMassElemKernel() = delete;
55 
62  VectorFieldType *Gjp_{nullptr};
64 
65  double dt_{0.0};
66  double gamma1_{0.0};
67  double gamma2_{0.0};
68  double gamma3_{0.0};
69  const bool lumpedMass_;
70 
72  const int* ipNodeMap_;
73 
75  Kokkos::View<DoubleType[AlgTraits::numScvIp_][AlgTraits::nodesPerElement_]> v_shape_function_ {"view_shape_func"};
76 };
77 
78 } // nalu
79 } // sierra
80 
81 #endif /* MOMENTUMMASSELEMKERNEL_H */
virtual void setup(const TimeIntegrator &)
Perform pre-timestep work for the computational kernel.
Definition: MomentumMassElemKernel.C:90
Definition: TimeIntegrator.h:26
Definition: ABLForcingAlgorithm.C:26
VectorFieldType * velocityNm1_
Definition: MomentumMassElemKernel.h:56
ScalarFieldType * densityNm1_
Definition: MomentumMassElemKernel.h:59
double gamma3_
Definition: MomentumMassElemKernel.h:68
Definition: ElemDataRequests.h:66
double dt_
Definition: MomentumMassElemKernel.h:65
Definition: SolutionOptions.h:38
VectorFieldType * velocityNp1_
Definition: MomentumMassElemKernel.h:58
stk::mesh::Field< double, stk::mesh::Cartesian > VectorFieldType
Definition: FieldTypeDef.h:24
const int * ipNodeMap_
Integration point to node mapping.
Definition: MomentumMassElemKernel.h:72
VectorFieldType * velocityN_
Definition: MomentumMassElemKernel.h:57
const bool lumpedMass_
Definition: MomentumMassElemKernel.h:69
stk::mesh::Field< double > ScalarFieldType
Definition: FieldTypeDef.h:19
double gamma1_
Definition: MomentumMassElemKernel.h:66
virtual ~MomentumMassElemKernel()
Definition: MomentumMassElemKernel.C:85
Kokkos::View< DoubleType[AlgTraits::numScvIp_][AlgTraits::nodesPerElement_]> v_shape_function_
Shape functions.
Definition: MomentumMassElemKernel.h:75
virtual void execute(SharedMemView< DoubleType ** > &, SharedMemView< DoubleType * > &, ScratchViews< DoubleType > &)
Execute the kernel within a Kokkos loop and populate the LHS and RHS for the linear solve...
Definition: MomentumMassElemKernel.C:100
Definition: UnitTestMasterElements.C:367
Base class for computational kernels in Nalu.
Definition: Kernel.h:63
VectorFieldType * coordinates_
Definition: MomentumMassElemKernel.h:63
CMM (BDF2/BE) for momentum equation (velocity DOF)
Definition: MomentumMassElemKernel.h:30
ScalarFieldType * densityN_
Definition: MomentumMassElemKernel.h:60
Kokkos::View< T, Kokkos::LayoutRight, DeviceShmem, Kokkos::MemoryUnmanaged > SharedMemView
Definition: KokkosInterface.h:25
double gamma2_
Definition: MomentumMassElemKernel.h:67
ScalarFieldType * densityNp1_
Definition: MomentumMassElemKernel.h:61
VectorFieldType * Gjp_
Definition: MomentumMassElemKernel.h:62
Definition: ScratchViews.h:82