Cardinal
NekRSSeparateDomainProblem.h
Go to the documentation of this file.
1 /********************************************************************/
2 /* SOFTWARE COPYRIGHT NOTIFICATION */
3 /* Cardinal */
4 /* */
5 /* (c) 2021 UChicago Argonne, LLC */
6 /* ALL RIGHTS RESERVED */
7 /* */
8 /* Prepared by UChicago Argonne, LLC */
9 /* Under Contract No. DE-AC02-06CH11357 */
10 /* With the U. S. Department of Energy */
11 /* */
12 /* Prepared by Battelle Energy Alliance, LLC */
13 /* Under Contract No. DE-AC07-05ID14517 */
14 /* With the U. S. Department of Energy */
15 /* */
16 /* See LICENSE for full restrictions */
17 /********************************************************************/
18 
19 #pragma once
20 
21 #include "NekRSProblemBase.h"
22 #include "NekTimeStepper.h"
23 #include "NekRSMesh.h"
24 #include "Transient.h"
25 
26 #include <memory>
27 
36 {
37 public:
38  NekRSSeparateDomainProblem(const InputParameters & params);
39 
40  static InputParameters validParams();
41 
43 
44  virtual void initialSetup() override;
45 
48 
51 
54  const int scalarId,
55  const double scalarValue);
56 
57  virtual void syncSolutions(ExternalProblem::Direction direction) override;
58 
59  virtual void addExternalVariables() override;
60 
61 protected:
68  void velocity(const nek_mesh::NekMeshEnum pp_mesh, const int elem_id, const double velocity);
69 
76  void temperature(const nek_mesh::NekMeshEnum pp_mesh, const int elem_id, const double temperature);
77 
85  void scalar(const nek_mesh::NekMeshEnum pp_mesh, const int elem_id, const int scalarId, const double scalarValue);
86 
88  const MultiMooseEnum _coupling_type;
89 
91  const std::vector<int> & _outlet_boundary;
92 
94  const std::vector<int> & _inlet_boundary;
95 
98 
101 
103  const MultiMooseEnum _coupled_scalars;
104 
109 
111  const PostprocessorValue * _toNekRS_velocity = nullptr;
112 
114  const PostprocessorValue * _toNekRS_temp = nullptr;
115 
117  const PostprocessorValue * _toNekRS_scalar01 = nullptr;
118  const PostprocessorValue * _toNekRS_scalar02 = nullptr;
119  const PostprocessorValue * _toNekRS_scalar03 = nullptr;
120 
122  const PostprocessorValue * _transfer_in = nullptr;
123 
126 };
NekRSSeparateDomainProblem::_scalar03_coupling
bool _scalar03_coupling
Definition: NekRSSeparateDomainProblem.h:108
NekRSSeparateDomainProblem::_toNekRS_velocity
const PostprocessorValue * _toNekRS_velocity
Velocity boundary condition coming from external App to NekRS.
Definition: NekRSSeparateDomainProblem.h:111
NekRSSeparateDomainProblem::sendBoundaryVelocityToNek
void sendBoundaryVelocityToNek(const nek_mesh::NekMeshEnum pp_mesh)
Send boundary velocity to nekRS.
NekRSSeparateDomainProblem::scalar
void scalar(const nek_mesh::NekMeshEnum pp_mesh, const int elem_id, const int scalarId, const double scalarValue)
NekRSSeparateDomainProblem::_toNekRS_temp
const PostprocessorValue * _toNekRS_temp
Temperature boundary condition coming from external App to NekRS.
Definition: NekRSSeparateDomainProblem.h:114
NekRSSeparateDomainProblem::sendBoundaryScalarToNek
void sendBoundaryScalarToNek(const nek_mesh::NekMeshEnum pp_mesh, const int scalarId, const double scalarValue)
Send scalar to NekRS.
NekRSSeparateDomainProblem::_pp_mesh
const nek_mesh::NekMeshEnum _pp_mesh
Which NekRS mesh to act on (always the fluid mesh)
Definition: NekRSSeparateDomainProblem.h:125
NekRSSeparateDomainProblem::_outlet_coupling
bool _outlet_coupling
Whether the NekRS outlet boundary feeds BCs to a coupled MOOSE app.
Definition: NekRSSeparateDomainProblem.h:100
NekTimeStepper.h
NekRSSeparateDomainProblem::velocity
void velocity(const nek_mesh::NekMeshEnum pp_mesh, const int elem_id, const double velocity)
NekRSSeparateDomainProblem::_transfer_in
const PostprocessorValue * _transfer_in
Postprocessor containing the signal of when a synchronization has occurred.
Definition: NekRSSeparateDomainProblem.h:122
NekRSSeparateDomainProblem::_toNekRS_scalar02
const PostprocessorValue * _toNekRS_scalar02
Definition: NekRSSeparateDomainProblem.h:118
NekRSSeparateDomainProblem::_coupled_scalars
const MultiMooseEnum _coupled_scalars
Scalars coupled to NekRS.
Definition: NekRSSeparateDomainProblem.h:103
NekRSSeparateDomainProblem::_outlet_boundary
const std::vector< int > & _outlet_boundary
Boundary ID for NekRS outlet.
Definition: NekRSSeparateDomainProblem.h:91
NekRSSeparateDomainProblem::initialSetup
virtual void initialSetup() override
NekRSSeparateDomainProblem::addExternalVariables
virtual void addExternalVariables() override
NekRSSeparateDomainProblem::_toNekRS_scalar03
const PostprocessorValue * _toNekRS_scalar03
Definition: NekRSSeparateDomainProblem.h:119
nek_mesh::NekMeshEnum
NekMeshEnum
Definition: CardinalEnums.h:44
NekRSSeparateDomainProblem::temperature
void temperature(const nek_mesh::NekMeshEnum pp_mesh, const int elem_id, const double temperature)
NekRSSeparateDomainProblem
Solve NekRS coupled to 1d thermal hydraulic code.
Definition: NekRSSeparateDomainProblem.h:35
nek_mesh::fluid
@ fluid
Definition: CardinalEnums.h:46
NekRSSeparateDomainProblem::sendBoundaryTemperatureToNek
void sendBoundaryTemperatureToNek(const nek_mesh::NekMeshEnum pp_mesh)
Send boundary temperature to nekRS.
NekRSSeparateDomainProblem::_inlet_coupling
bool _inlet_coupling
Whether the NekRS inlet boundary is fed BCs from a coupled MOOSE app.
Definition: NekRSSeparateDomainProblem.h:97
NekRSProblemBase.h
NekRSMesh.h
NekRSSeparateDomainProblem::validParams
static InputParameters validParams()
NekRSSeparateDomainProblem::_scalar01_coupling
bool _scalar01_coupling
Whether the NekRS scalar01-03 are coupled to MOOSE app.
Definition: NekRSSeparateDomainProblem.h:106
NekRSSeparateDomainProblem::syncSolutions
virtual void syncSolutions(ExternalProblem::Direction direction) override
NekRSSeparateDomainProblem::NekRSSeparateDomainProblem
NekRSSeparateDomainProblem(const InputParameters &params)
NekRSSeparateDomainProblem::_scalar02_coupling
bool _scalar02_coupling
Definition: NekRSSeparateDomainProblem.h:107
NekRSSeparateDomainProblem::_inlet_boundary
const std::vector< int > & _inlet_boundary
Boundary ID for NekRS inlet.
Definition: NekRSSeparateDomainProblem.h:94
NekRSProblemBase
Definition: NekRSProblemBase.h:40
NekRSSeparateDomainProblem::_coupling_type
const MultiMooseEnum _coupling_type
Type of coupling to apply to NekRS.
Definition: NekRSSeparateDomainProblem.h:88
NekRSSeparateDomainProblem::~NekRSSeparateDomainProblem
~NekRSSeparateDomainProblem()
NekRSSeparateDomainProblem::_toNekRS_scalar01
const PostprocessorValue * _toNekRS_scalar01
Scalar01-03 boundary condition coming from external App to NekRS.
Definition: NekRSSeparateDomainProblem.h:117