22#include "MooseTypes.h"
34#include "libmesh/point.h"
93std::vector<dfloat>
yPlus(
const std::vector<int> & boundary_id);
100std::vector<dfloat>
viscousDrag(
const std::vector<int> & boundary);
167 const std::string & prefix,
170 const bool & write_coords);
364void allgatherv(
const std::vector<int> & base_counts,
367 const int multiplier = 1);
379 const int multiplier);
400 double * scratch,
const double * I,
double * x,
int N,
double * Ix,
int M);
424Point
gllPoint(
int local_elem_id,
int local_node_id);
434Point
gllPointFace(
int local_elem_id,
int local_face_id,
int local_node_id);
444 const std::vector<int> & boundary,
527 const std::vector<int> & boundary_id,
543 const Function * function,
558 const Function * function,
582 const Function * function,
658 const Function * function,
754validBoundaryIDs(
const std::vector<int> & boundary_id,
int & first_invalid_id,
int & n_boundaries);
865double get_zero(
const int id,
const int surf_offset);
1005template <
typename T>
1015template <
typename T>
1017allgatherv(
const std::vector<int> & base_counts,
const T * input, T *
output,
const int multiplier)
1019 int * recvCounts = (
int *)calloc(
commSize(),
sizeof(int));
1020 int * displacement = (
int *)calloc(
commSize(),
sizeof(int));
1023 MPI_Allgatherv(input,
Definition CardinalEnums.h:93
NekFieldEnum
Enumeration of possible fields to read from nekRS.
Definition CardinalEnums.h:96
NekWriteEnum
Enumeration of possible fields to write in nekRS.
Definition CardinalEnums.h:119
NekMeshEnum
Definition CardinalEnums.h:52
Cardinal-specific nekRS API.
Definition NekUility.C:22
double get_velocity_x(const int id, const int surf_offset)
void computeWallDistance(const std::vector< int > &boundary_id)
void write_field_file(const std::string &prefix, const dfloat time, const int &step)
void limitTemperature(const double *min_T, const double *max_T)
void interpolateVolumeHex3D(const double *I, double *x, int N, double *Ix, int M)
double get_velocity_z(const int id, const int surf_offset)
Real scratchUnits(const int slot)
bool hasTemperatureVariable()
void allgatherv(const std::vector< int > &base_counts, const T *input, T *output, const int multiplier=1)
Definition NekInterface.h:1017
Point gllPoint(int local_elem_id, int local_node_id)
void dimensionalizeSideIntegral(const field::NekFieldEnum &integrand, const Real &area, double &integral)
Real nondimensionalAdditive(const field::NekFieldEnum &field)
void setAbsoluteTol(double tol)
void storeBoundaryCoupling(const std::vector< int > &boundary_id, int &N)
void setStartTime(const double &start)
double get_temperature(const int id, const int surf_offset)
Point gllPointFace(int local_elem_id, int local_face_id, int local_node_id)
double get_zero(const int id, const int surf_offset)
double get_usrwrk00(const int id, const int surf_offset)
double get_velocity_x_squared(const int id, const int surf_offset)
void interpolateSurfaceFaceHex3D(double *scratch, const double *I, double *x, int N, double *Ix, int M)
double get_velocity(const int id, const int surf_offset)
void gradient(const int offset, const int e, const double *f, double *grad_f, const nek_mesh::NekMeshEnum pp_mesh)
bool hasTemperatureSolve()
double get_unity(const int id, const int surf_offset)
bool endControlNumSteps()
int velocityFieldOffset()
mesh_t * getMesh(const nek_mesh::NekMeshEnum pp_mesh)
void initializeDimensionalScales(const double U, const double T, const double dT, const double L, const double rho, const double Cp, const double s01, const double ds01, const double s02, const double ds02, const double s03, const double ds03)
std::vector< dfloat > & host_U()
void setNekSetupTime(const double &time)
double volumeIntegral(const field::NekFieldEnum &integrand, const double &volume, const nek_mesh::NekMeshEnum pp_mesh, const Function *function, const Real &time)
void initializeNekHostArrays()
double volumeNorm(const field::NekFieldEnum &integrand, const nek_mesh::NekMeshEnum pp_mesh, const Function *function, const Real &time, const Real &N)
double sideMassFluxWeightedIntegral(const std::vector< int > &boundary_id, const field::NekFieldEnum &integrand, const nek_mesh::NekMeshEnum pp_mesh)
bool endControlElapsedTime()
double sideIntegral(const std::vector< int > &boundary_id, const field::NekFieldEnum &integrand, const nek_mesh::NekMeshEnum pp_mesh)
std::tuple< dfloat *, dfloat *, dfloat * > host_xyz()
void dimensionalizeVolumeIntegral(const field::NekFieldEnum &integrand, const Real &volume, double &integral)
void dimensionalizeArea(double &integral)
std::vector< dfloat > yPlus(const std::vector< int > &boundary_id)
const std::string temperatureBoundaryType(const int boundary)
void scaleUsrwrk(const unsigned int &slot, const dfloat &value)
int NfaceVertices()
Number of vertices required to define an element face Vertices refer to the points required to place ...
double get_velocity_y_squared(const int id, const int surf_offset)
double(*)(int, int) solutionPointer(const field::NekFieldEnum &field)
Definition NekInterface.h:794
void interpolationMatrix(double *I, int starting_points, int ending_points)
bool isHeatFluxBoundary(const int boundary)
std::vector< dfloat > viscousDrag(const std::vector< int > &boundary)
int scalarSlot(const int id)
double get_usrwrk02(const int id, const int surf_offset)
double get_scalar02(const int id, const int surf_offset)
MPI_Datatype resolveType()
std::vector< double > usrwrkSideIntegral(const unsigned int &slot, const std::vector< int > &boundary, const nek_mesh::NekMeshEnum pp_mesh)
void initializeScratch(const unsigned int &n_slots)
void updateHostMeshParameters()
Update the mesh parameters on host.
double heatFluxIntegral(const std::vector< int > &boundary_id, const nek_mesh::NekMeshEnum pp_mesh)
std::vector< dfloat > & host_P()
double volumeExtremeValue(const field::NekFieldEnum &field, const nek_mesh::NekMeshEnum pp_mesh, const Function *function, const Real &time, const bool max)
double area(const std::vector< int > &boundary_id, const nek_mesh::NekMeshEnum pp_mesh)
double get_scalar03(const int id, const int surf_offset)
Point centroidFace(int local_elem_id, int local_face_id)
double get_scalar01(const int id, const int surf_offset)
Point centroid(int local_elem_id)
double evaluateFunctionOnMesh(const Function *f, const Real time, const int id)
void dimensionalizeVolume(double &integral)
bool isTemperatureBoundary(const int boundary)
mesh_t * createMesh2(mesh_t *_mesh, int Nc)
double get_velocity_z_squared(const int id, const int surf_offset)
bool validBoundaryIDs(const std::vector< int > &boundary_id, int &first_invalid_id, int &n_boundaries)
bool hasScalarVariable(int scalarId)
void copyDeformationToDevice()
Copy the deformation from host to device.
double massFlowrate(const std::vector< int > &boundary_id, const nek_mesh::NekMeshEnum pp_mesh)
void checkFieldValidity(const field::NekFieldEnum &field)
double usrwrkVolumeIntegral(const unsigned int &slot, const nek_mesh::NekMeshEnum pp_mesh)
bool hasHeatSourceKernel()
double volume(const nek_mesh::NekMeshEnum pp_mesh)
void nondimensional(const bool n)
bool isMovingMeshBoundary(const int boundary)
double get_pressure(const int id, const int surf_offset)
double get_usrwrk01(const int id, const int surf_offset)
Real nondimensionalDivisor(const field::NekFieldEnum &field)
Return the reference divisor scale that defines the non-dimensional field.
std::vector< dfloat > & host_S()
void setRelativeTol(double tol)
void freeScratch()
Free the scratch space.
double pressureSurfaceForce(const std::vector< int > &boundary_id, const Point &direction, const nek_mesh::NekMeshEnum pp_mesh)
double get_velocity_y(const int id, const int surf_offset)
double sideExtremeValue(const std::vector< int > &boundary_id, const field::NekFieldEnum &field, const nek_mesh::NekMeshEnum pp_mesh, const bool max)
double functionVolumeIntegral(const field::NekFieldEnum &integrand, const double &volume, const nek_mesh::NekMeshEnum pp_mesh, const Function *function, const Real &time)
void initializeHostMeshParameters()
Allocate memory for the host mesh parameters.
mesh_t * temperatureMesh()
void write_usrwrk_field_file(const int &size, const int &index, const int &slot, const std::string &prefix, const dfloat &time, const int &step, const bool &write_coords)
void displacementAndCounts(const std::vector< int > &base_counts, int *counts, int *displacement, const int multiplier)
Definition CardinalEnums.h:132
Definition NekInterface.h:768
double A_ref
Definition NekInterface.h:774
double flux_ref
Definition NekInterface.h:778
double s02_ref
Definition NekInterface.h:783
double source_ref
Definition NekInterface.h:779
double Cp_ref
Definition NekInterface.h:777
double dT_ref
Definition NekInterface.h:771
double ds03_ref
Definition NekInterface.h:786
double T_ref
Definition NekInterface.h:770
double P_ref
Definition NekInterface.h:772
double V_ref
Definition NekInterface.h:775
double L_ref
Definition NekInterface.h:773
double t_ref
Definition NekInterface.h:780
double s01_ref
Definition NekInterface.h:781
double ds02_ref
Definition NekInterface.h:784
double ds01_ref
Definition NekInterface.h:782
double rho_ref
Definition NekInterface.h:776
double s03_ref
Definition NekInterface.h:785
double U_ref
Definition NekInterface.h:769