21 #include "MooseMesh.h" 53 NekRSMesh(
const InputParameters & parameters);
59 virtual std::unique_ptr<MooseMesh>
safeClone()
const override;
340 int boundary_id(
const int elem_id,
const int face_id);
484 std::vector<double>
_x;
492 std::vector<double>
_y;
500 std::vector<double>
_z;
std::vector< double > _z
coordinates of the current GLL points (which can move in time), for this rank
Definition: NekRSMesh.h:500
const int & numElems() const
Get the number of NekRS elements we rebuild in the MOOSE mesh.
Definition: NekRSMesh.h:161
NekRSMesh(const InputParameters ¶meters)
int nekNumQuadraturePoints1D() const
const int & numSurfaceElems() const
Definition: NekRSMesh.h:186
NekVolumeCoupling _volume_coupling
Data structure holding mapping information for volume coupling.
Definition: NekRSMesh.h:574
virtual void printMeshInfo() const
Print diagnostic information related to the mesh.
int boundaryNodeIndex(const int gll_index) const
Definition: NekRSMesh.h:261
int _nek_n_surface_elems
Total number of surface elements in the nekRS problem.
Definition: NekRSMesh.h:464
int _n_vertices_per_surface
Number of vertices per surface.
Definition: NekRSMesh.h:395
NekWriteEnum
Enumeration of possible fields to write in nekRS.
Definition: CardinalEnums.h:105
const unsigned int & _fluid_block_id
Block ID for the fluid portion of the mesh mirror.
Definition: NekRSMesh.h:416
const bool & volume() const
Definition: NekRSMesh.h:228
Elem * volumeElem() const
Create a new element for a volume mesh.
const int & numVerticesPerVolume() const
Definition: NekRSMesh.h:216
Definition: NekRSMesh.h:50
int numQuadraturePoints1D() const
virtual std::unique_ptr< MooseMesh > safeClone() const override
const NekVolumeCoupling & volumeCoupling() const
Definition: NekRSMesh.h:131
std::vector< int > _side_index
Mapping of side indices to libMesh side indices.
Definition: NekRSMesh.h:565
const NekBoundaryCoupling & boundaryCoupling() const
Definition: NekRSMesh.h:125
void updateDisplacement(const int e, const double *src, const field::NekWriteEnum field)
int _n_vertices_per_volume
Number of vertices per volume element.
Definition: NekRSMesh.h:398
std::vector< int > _vol_node_index
Mapping of volume GLL indices to MooseMesh node indices.
Definition: NekRSMesh.h:555
void initializeMeshParams()
Initialize members for the mesh and determine the GLL-to-node mapping.
const std::vector< int > * _boundary
Boundary ID(s) through which to couple Nek to MOOSE.
Definition: NekRSMesh.h:368
int nBuildPerSurfaceElem() const
Definition: NekRSMesh.h:83
const std::vector< double > & nek_initial_z() const
Definition: NekRSMesh.h:101
int facesOnBoundary(const int elem_id) const
std::vector< double > _initial_z
coordinates of the initial GLL points, for this rank
Definition: NekRSMesh.h:524
const int & numVolumeElems() const
Definition: NekRSMesh.h:204
int(NekRSMesh::* _elem_processor_id)(const int elem_id)
Function returning the processor id which should own each element.
Definition: NekRSMesh.h:455
Definition: CardinalEnums.h:86
const int & numVerticesPerSurface() const
Definition: NekRSMesh.h:198
std::vector< int > * _node_index
Mapping of GLL nodes to libMesh nodes, which depends on whether building a boundary/volume mesh.
Definition: NekRSMesh.h:461
void initializePreviousDisplacements()
Initialize previous displacement values to zero for boundary mirror-based moving mesh problems.
const int & numVerticesPerElem() const
Get the number of vertices per element in MOOSE's representation of nekRS's mesh.
Definition: NekRSMesh.h:170
int _nek_polynomial_order
Order of the nekRS solution.
Definition: NekRSMesh.h:422
int nMoosePerNek() const
Definition: NekRSMesh.h:314
NekOrderEnum
Enumeration of possible surface order reconstructions for nekRS solution transfer.
Definition: CardinalEnums.h:69
const std::vector< double > & nek_initial_y() const
Definition: NekRSMesh.h:95
int boundary_id(const int elem_id, const int face_id)
std::vector< double > _prev_disp_z
Definition: NekRSMesh.h:533
int volumeElemProcessorID(const int elem_id)
std::vector< double > _prev_disp_y
Definition: NekRSMesh.h:532
void storeVolumeCoupling()
Store the rank-local element and rank ownership for volume coupling.
const std::vector< int > * boundary() const
Definition: NekRSMesh.h:222
virtual void buildMesh() override
const Real & scaling() const
Definition: NekRSMesh.h:274
void saveInitialVolMesh()
Save the initial volumetric mesh for volume mirror-based moving mesh problems.
std::vector< double > & prev_disp_y()
Definition: NekRSMesh.h:113
int _n_build_per_volume_elem
Number of MOOSE volume elements to build per NekRS volume element.
Definition: NekRSMesh.h:440
NekBoundaryCoupling _boundary_coupling
Data structure holding mapping information for boundary coupling.
Definition: NekRSMesh.h:571
int volumeNodeIndex(const int gll_index) const
Definition: NekRSMesh.h:268
std::vector< double > _initial_x
coordinates of the initial GLL points, for this rank
Definition: NekRSMesh.h:508
int _n_surface_elems
Definition: NekRSMesh.h:428
void storeBoundaryCoupling()
std::vector< double > & prev_disp_z()
Definition: NekRSMesh.h:119
int _n_moose_per_nek
Definition: NekRSMesh.h:452
virtual void extractVolumeMesh()
const unsigned int & _solid_block_id
Block ID for the solid portion of the mesh mirror.
Definition: NekRSMesh.h:419
int nBuildPerVolumeElem() const
Definition: NekRSMesh.h:77
int nekPolynomialOrder() const
Definition: NekRSMesh.h:71
NekRSMesh & operator=(const NekRSMesh &other_mesh)=delete
std::vector< std::vector< int > > _corner_indices
Corner indices for GLL points of mesh mirror elements.
Definition: NekRSMesh.h:580
std::vector< double > _y
coordinates of the current GLL points (which can move in time), for this rank
Definition: NekRSMesh.h:492
const bool & _volume
Whether nekRS is coupled through volumes to MOOSE.
Definition: NekRSMesh.h:365
Definition: NekBoundaryCoupling.h:29
std::vector< double > _initial_y
coordinates of the initial GLL points, for this rank
Definition: NekRSMesh.h:516
int _n_elems
Definition: NekRSMesh.h:446
int _n_vertices_per_elem
Number of vertices per element, which depends on whether building a boundary/volume mesh.
Definition: NekRSMesh.h:458
int _n_build_per_surface_elem
Number of MOOSE surface elements to build per NekRS surface element.
Definition: NekRSMesh.h:431
int _n_volume_elems
Definition: NekRSMesh.h:437
std::vector< double > _prev_disp_x
Definition: NekRSMesh.h:531
const order::NekOrderEnum & order() const
Definition: NekRSMesh.h:140
int boundaryElemProcessorID(const int elem_id)
virtual void addElems()
Add all the elements in the mesh to the MOOSE data structures.
const bool & _exact
Definition: NekRSMesh.h:392
static InputParameters validParams()
int _nek_n_volume_elems
Total number of volume elements in the nekRS problem.
Definition: NekRSMesh.h:467
std::vector< double > & prev_disp_x()
Definition: NekRSMesh.h:107
Elem *(NekRSMesh::* _new_elem)() const
Function pointer to the type of new element to add.
Definition: NekRSMesh.h:568
std::vector< std::vector< int > > cornerIndices() const
Definition: NekRSMesh.h:308
const int & nekNumSurfaceElems() const
Definition: NekRSMesh.h:192
mesh_t * _nek_internal_mesh
Pointer to NekRS's internal mesh data structure.
Definition: NekRSMesh.h:577
virtual void extractSurfaceMesh()
int nodeIndex(const int gll_index) const
Get the libMesh node index from nekRS's GLL index ordering.
Definition: NekRSMesh.h:180
const Real & _scaling
Spatial scaling factor to apply to the mesh.
Definition: NekRSMesh.h:413
const int & nekNumVolumeElems() const
Definition: NekRSMesh.h:210
std::vector< int > _phase
"Phase" for each element (fluid = 0, solid = 1)
Definition: NekRSMesh.h:476
const order::NekOrderEnum _order
Order of the surface interpolation between nekRS and MOOSE.
Definition: NekRSMesh.h:380
Definition: NekVolumeCoupling.h:29
const std::vector< double > & nek_initial_x() const
Definition: NekRSMesh.h:89
std::vector< int > _bnd_node_index
Mapping of boundary GLL indices to MooseMesh node indices.
Definition: NekRSMesh.h:544
virtual void buildDummyMesh()
bool exactMirror() const
Definition: NekRSMesh.h:302
Elem * boundaryElem() const
Create a new element for a boundary mesh.
std::vector< double > _x
coordinates of the current GLL points (which can move in time), for this rank
Definition: NekRSMesh.h:484