22#include "MooseTypes.h"
33#include "libmesh/point.h"
135void write_usrwrk_field_file(
const int & slot,
const std::string & prefix,
const dfloat & time,
const int & step,
const bool & write_coords);
329void allgatherv(
const std::vector<int> & base_counts,
332 const int multiplier = 1);
344 const int multiplier);
365 double * scratch,
const double * I,
double * x,
int N,
double * Ix,
int M);
389Point
gllPoint(
int local_elem_id,
int local_node_id);
399Point
gllPointFace(
int local_elem_id,
int local_face_id,
int local_node_id);
409 const std::vector<int> & boundary,
437 const std::vector<int> & boundary,
438 const std::vector<double> & moose_integral,
439 std::vector<double> & nek_integral,
440 double & normalized_nek_integral);
452 const std::vector<int> & boundary,
453 const double moose_integral,
455 double & normalized_nek_integral);
522 const std::vector<int> & boundary_id,
591void gradient(
const int offset,
const double * f,
double * grad_f,
697validBoundaryIDs(
const std::vector<int> & boundary_id,
int & first_invalid_id,
int & n_boundaries);
899void flux(
const int id,
const dfloat value);
1015template <
typename T>
1025template <
typename T>
1027allgatherv(
const std::vector<int> & base_counts,
const T * input, T * output,
const int multiplier)
1029 int * recvCounts = (
int *)calloc(
commSize(),
sizeof(int));
1030 int * displacement = (
int *)calloc(
commSize(),
sizeof(int));
1033 MPI_Allgatherv(input,
1027allgatherv(
const std::vector<int> & base_counts,
const T * input, T * output,
const int multiplier) {
…}
Definition NekBoundaryCoupling.h:30
Definition CardinalEnums.h:89
NekFieldEnum
Enumeration of possible fields to read from nekRS.
Definition CardinalEnums.h:92
NekWriteEnum
Enumeration of possible fields to write in nekRS.
Definition CardinalEnums.h:114
NekMeshEnum
Definition CardinalEnums.h:48
Cardinal-specific nekRS API.
Definition NekUility.C:22
double usrwrk02(const int 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)
double volumeExtremeValue(const field::NekFieldEnum &field, const nek_mesh::NekMeshEnum pp_mesh, const bool max)
void interpolateVolumeHex3D(const double *I, double *x, int N, double *Ix, int M)
Real scratchUnits(const int slot)
bool hasTemperatureVariable()
double referenceVelocity()
double velocity_x(const int id)
void allgatherv(const std::vector< int > &base_counts, const T *input, T *output, const int multiplier=1)
Definition NekInterface.h:1027
Point gllPoint(int local_elem_id, int local_node_id)
void dimensionalizeSideIntegral(const field::NekFieldEnum &integrand, const Real &area, double &integral)
double velocity_y(const int id)
Real referenceAdditiveScale(const field::NekFieldEnum &field)
void setAbsoluteTol(double tol)
void storeBoundaryCoupling(const std::vector< int > &boundary_id, int &N)
void setStartTime(const double &start)
double scalar03(const int id)
void write_usrwrk_field_file(const int &slot, const std::string &prefix, const dfloat &time, const int &step, const bool &write_coords)
Point gllPointFace(int local_elem_id, int local_face_id, int local_node_id)
void gradient(const int offset, const double *f, double *grad_f, const nek_mesh::NekMeshEnum pp_mesh)
void dimensionalize(const field::NekFieldEnum &field, double &value)
Dimensionalize a field by multiplying the nondimensional form by the reference.
void interpolateSurfaceFaceHex3D(double *scratch, const double *I, double *x, int N, double *Ix, int M)
double referencePressure()
bool hasTemperatureSolve()
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)
void setNekSetupTime(const double &time)
void heat_source(const int id, const dfloat value)
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)
double velocity_x_squared(const int id)
void dimensionalizeVolumeIntegral(const field::NekFieldEnum &integrand, const Real &volume, double &integral)
double volumeIntegral(const field::NekFieldEnum &integrand, const double &volume, const nek_mesh::NekMeshEnum pp_mesh)
bool normalizeFluxBySideset(const NekBoundaryCoupling &nek_boundary_coupling, const std::vector< int > &boundary, const std::vector< double > &moose_integral, std::vector< double > &nek_integral, double &normalized_nek_integral)
double scalar02(const int id)
void dimensionalizeArea(double &integral)
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 ...
void x_displacement(const int id, const dfloat value)
void interpolationMatrix(double *I, int starting_points, int ending_points)
double(*)(int) solutionPointer(const field::NekFieldEnum &field)
Definition NekInterface.h:774
bool isHeatFluxBoundary(const int boundary)
double unity(const int id)
double temperature(const int id)
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)
double area(const std::vector< int > &boundary_id, const nek_mesh::NekMeshEnum pp_mesh)
Point centroidFace(int local_elem_id, int local_face_id)
bool normalizeFlux(const NekBoundaryCoupling &nek_boundary_coupling, const std::vector< int > &boundary, const double moose_integral, double nek_integral, double &normalized_nek_integral)
Point centroid(int local_elem_id)
void dimensionalizeVolume(double &integral)
bool isTemperatureBoundary(const int boundary)
double pressure(const int id)
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)
double usrwrk00(const int id)
void nondimensional(const bool n)
bool isMovingMeshBoundary(const int boundary)
double velocity_z(const int id)
void setRelativeTol(double tol)
double usrwrk01(const int id)
void freeScratch()
Free the scratch space.
double pressureSurfaceForce(const std::vector< int > &boundary_id, const Point &direction, const nek_mesh::NekMeshEnum pp_mesh)
void y_displacement(const int id, const dfloat value)
double sideExtremeValue(const std::vector< int > &boundary_id, const field::NekFieldEnum &field, const nek_mesh::NekMeshEnum pp_mesh, const bool max)
double velocity_z_squared(const int id)
void initializeHostMeshParameters()
Allocate memory for the host mesh parameters.
double velocity(const int id)
mesh_t * temperatureMesh()
void flux(const int id, const dfloat value)
double scalar01(const int id)
void z_displacement(const int id, const dfloat value)
void displacementAndCounts(const std::vector< int > &base_counts, int *counts, int *displacement, const int multiplier)
double velocity_y_squared(const int id)
Definition NekInterface.h:748
double A_ref
Definition NekInterface.h:754
double flux_ref
Definition NekInterface.h:758
double s02_ref
Definition NekInterface.h:763
double source_ref
Definition NekInterface.h:759
double Cp_ref
Definition NekInterface.h:757
double dT_ref
Definition NekInterface.h:751
double ds03_ref
Definition NekInterface.h:766
double T_ref
Definition NekInterface.h:750
double P_ref
Definition NekInterface.h:752
double V_ref
Definition NekInterface.h:755
double L_ref
Definition NekInterface.h:753
double t_ref
Definition NekInterface.h:760
double s01_ref
Definition NekInterface.h:761
double ds02_ref
Definition NekInterface.h:764
double ds01_ref
Definition NekInterface.h:762
double rho_ref
Definition NekInterface.h:756
double s03_ref
Definition NekInterface.h:765
double U_ref
Definition NekInterface.h:749
Definition NekInterface.h:711
int boundary_temperature
boundary temperature (for separate domain coupling)
Definition NekInterface.h:731
int mesh_velocity_z
z-velocity of moving boundary (for mesh blending solver)
Definition NekInterface.h:725
int flux
boundary heat flux (for conjugate heat transfer)
Definition NekInterface.h:713
int mesh_velocity_y
y-velocity of moving boundary (for mesh blending solver)
Definition NekInterface.h:722
int heat_source
volumetric heat source (for volumetric heating)
Definition NekInterface.h:716
int boundary_velocity
boundary velocity (for separate domain coupling)
Definition NekInterface.h:728
int boundary_scalar03
boundary scalar03 (for separate domain coupling)
Definition NekInterface.h:740
int boundary_scalar01
boundary scalar01 (for separate domain coupling)
Definition NekInterface.h:734
int mesh_velocity_x
x-velocity of moving boundary (for mesh blending solver)
Definition NekInterface.h:719
int boundary_scalar02
boundary scalar02 (for separate domain coupling)
Definition NekInterface.h:737