22 #include "MooseTypes.h" 33 #include "libmesh/point.h" 48 static int build_only;
135 void write_usrwrk_field_file(
const int & slot,
const std::string & prefix,
const dfloat & time,
const int & step,
const bool & write_coords);
143 void write_field_file(
const std::string & prefix,
const dfloat time,
const int & step);
328 template <
typename T>
329 void 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);
374 Point
centroidFace(
int local_elem_id,
int local_face_id);
389 Point
gllPoint(
int local_elem_id,
int local_node_id);
399 Point
gllPointFace(
int local_elem_id,
int local_face_id,
int local_node_id);
409 const std::vector<int> & boundary,
425 void scaleUsrwrk(
const unsigned int & slot,
const dfloat & value);
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,
543 double massFlowrate(
const std::vector<int> & boundary_id,
591 void gradient(
const int offset,
const double * f,
double * grad_f,
697 validBoundaryIDs(
const std::vector<int> & boundary_id,
int & first_invalid_id,
int & n_boundaries);
843 double unity(
const int id);
899 void flux(
const int id,
const dfloat value);
906 void heat_source(
const int id,
const dfloat value);
1015 template <
typename T>
1025 template <
typename T>
1027 allgatherv(
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,
1037 (
const int *)recvCounts,
1038 (
const int *)displacement,
1040 platform->comm.mpiComm);
double unity(const int id)
Cardinal-specific nekRS API.
Definition: NekUility.C:21
MPI_Datatype resolveType()
void setStartTime(const double &start)
double velocity_x(const int id)
double usrwrk00(const int id)
int mesh_velocity_z
z-velocity of moving boundary (for mesh blending solver)
Definition: NekInterface.h:725
Definition: NekInterface.h:747
double sideMassFluxWeightedIntegral(const std::vector< int > &boundary_id, const field::NekFieldEnum &integrand, const nek_mesh::NekMeshEnum pp_mesh)
bool endControlNumSteps()
double ds03_ref
Definition: NekInterface.h:766
void storeBoundaryCoupling(const std::vector< int > &boundary_id, int &N)
void initializeScratch(const unsigned int &n_slots)
double velocity(const int id)
double massFlowrate(const std::vector< int > &boundary_id, const nek_mesh::NekMeshEnum pp_mesh)
NekWriteEnum
Enumeration of possible fields to write in nekRS.
Definition: CardinalEnums.h:116
double P_ref
Definition: NekInterface.h:752
double A_ref
Definition: NekInterface.h:754
void dimensionalizeVolume(double &integral)
double velocity_z(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 centroidFace(int local_elem_id, int local_face_id)
double volumeExtremeValue(const field::NekFieldEnum &field, const nek_mesh::NekMeshEnum pp_mesh, const bool max)
int boundary_temperature
boundary temperature (for separate domain coupling)
Definition: NekInterface.h:731
double V_ref
Definition: NekInterface.h:755
bool isMovingMeshBoundary(const int boundary)
double volumeIntegral(const field::NekFieldEnum &integrand, const double &volume, const nek_mesh::NekMeshEnum pp_mesh)
void flux(const int id, const dfloat value)
int heat_source
volumetric heat source (for volumetric heating)
Definition: NekInterface.h:716
void displacementAndCounts(const std::vector< int > &base_counts, int *counts, int *displacement, const int multiplier)
double scalar03(const int id)
double pressure(const int id)
double usrwrk02(const int id)
void heat_source(const int id, const dfloat value)
double referenceVelocity()
double source_ref
Definition: NekInterface.h:759
Definition: CardinalEnums.h:91
double T_ref
Definition: NekInterface.h:750
bool isTemperatureBoundary(const int boundary)
void copyDeformationToDevice()
Copy the deformation from host to device.
void setRelativeTol(double tol)
void dimensionalizeArea(double &integral)
void interpolateSurfaceFaceHex3D(double *scratch, const double *I, double *x, int N, double *Ix, int M)
void y_displacement(const int id, const dfloat value)
int mesh_velocity_x
x-velocity of moving boundary (for mesh blending solver)
Definition: NekInterface.h:719
bool hasTemperatureSolve()
NekMeshEnum
Definition: CardinalEnums.h:50
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)
int boundary_scalar03
boundary scalar03 (for separate domain coupling)
Definition: NekInterface.h:740
void scaleUsrwrk(const unsigned int &slot, const dfloat &value)
bool hasHeatSourceKernel()
int boundary_velocity
boundary velocity (for separate domain coupling)
Definition: NekInterface.h:728
bool normalizeFlux(const NekBoundaryCoupling &nek_boundary_coupling, const std::vector< int > &boundary, const double moose_integral, double nek_integral, double &normalized_nek_integral)
Real referenceAdditiveScale(const field::NekFieldEnum &field)
double L_ref
Definition: NekInterface.h:753
void dimensionalize(const field::NekFieldEnum &field, double &value)
Dimensionalize a field by multiplying the nondimensional form by the reference.
Definition: CardinalEnums.h:134
double volume(const nek_mesh::NekMeshEnum pp_mesh)
void limitTemperature(const double *min_T, const double *max_T)
int boundary_scalar01
boundary scalar01 (for separate domain coupling)
Definition: NekInterface.h:734
double sideIntegral(const std::vector< int > &boundary_id, const field::NekFieldEnum &integrand, const nek_mesh::NekMeshEnum pp_mesh)
double scalar02(const int id)
const std::string temperatureBoundaryType(const int boundary)
double ds02_ref
Definition: NekInterface.h:764
double(*)(int) solutionPointer(const field::NekFieldEnum &field)
Definition: NekInterface.h:774
double pressureSurfaceForce(const std::vector< int > &boundary_id, const Point &direction, const nek_mesh::NekMeshEnum pp_mesh)
double velocity_y_squared(const int id)
void write_field_file(const std::string &prefix, const dfloat time, const int &step)
double flux_ref
Definition: NekInterface.h:758
bool hasTemperatureVariable()
void allgatherv(const std::vector< int > &base_counts, const T *input, T *output, const int multiplier=1)
Definition: NekInterface.h:1027
Point gllPointFace(int local_elem_id, int local_face_id, int local_node_id)
bool isHeatFluxBoundary(const int boundary)
double area(const std::vector< int > &boundary_id, const nek_mesh::NekMeshEnum pp_mesh)
double usrwrk01(const int id)
mesh_t * temperatureMesh()
Point gllPoint(int local_elem_id, int local_node_id)
int velocityFieldOffset()
int NfaceVertices()
Number of vertices required to define an element face Vertices refer to the points required to place ...
double t_ref
Definition: NekInterface.h:760
double Cp_ref
Definition: NekInterface.h:757
NekFieldEnum
Enumeration of possible fields to read from nekRS.
Definition: CardinalEnums.h:94
Definition: NekInterface.h:710
double temperature(const int id)
Definition: NekBoundaryCoupling.h:29
double s01_ref
Definition: NekInterface.h:761
void buildOnly(int buildOnly)
double ds01_ref
Definition: NekInterface.h:762
void updateHostMeshParameters()
Update the mesh parameters on host.
Real scratchUnits(const int slot)
void freeScratch()
Free the scratch space.
void dimensionalizeVolumeIntegral(const field::NekFieldEnum &integrand, const Real &volume, double &integral)
double s02_ref
Definition: NekInterface.h:763
void checkFieldValidity(const field::NekFieldEnum &field)
double heatFluxIntegral(const std::vector< int > &boundary_id, const nek_mesh::NekMeshEnum pp_mesh)
void interpolationMatrix(double *I, int starting_points, int ending_points)
void initializeHostMeshParameters()
Allocate memory for the host mesh parameters.
double scalar01(const int id)
double U_ref
Definition: NekInterface.h:749
double velocity_y(const int id)
double velocity_x_squared(const int id)
void setNekSetupTime(const double &time)
int boundary_scalar02
boundary scalar02 (for separate domain coupling)
Definition: NekInterface.h:737
void setAbsoluteTol(double tol)
bool validBoundaryIDs(const std::vector< int > &boundary_id, int &first_invalid_id, int &n_boundaries)
double referencePressure()
int flux
boundary heat flux (for conjugate heat transfer)
Definition: NekInterface.h:713
double s03_ref
Definition: NekInterface.h:765
void x_displacement(const int id, const dfloat value)
void nondimensional(const bool n)
bool endControlElapsedTime()
mesh_t * getMesh(const nek_mesh::NekMeshEnum pp_mesh)
void gradient(const int offset, const double *f, double *grad_f, const nek_mesh::NekMeshEnum pp_mesh)
double rho_ref
Definition: NekInterface.h:756
bool hasScalarVariable(int scalarId)
void z_displacement(const int id, const dfloat value)
std::vector< double > usrwrkSideIntegral(const unsigned int &slot, const std::vector< int > &boundary, const nek_mesh::NekMeshEnum pp_mesh)
double dT_ref
Definition: NekInterface.h:751
double usrwrkVolumeIntegral(const unsigned int &slot, const nek_mesh::NekMeshEnum pp_mesh)
double velocity_z_squared(const int id)
Point centroid(int local_elem_id)
int mesh_velocity_y
y-velocity of moving boundary (for mesh blending solver)
Definition: NekInterface.h:722
void interpolateVolumeHex3D(const double *I, double *x, int N, double *Ix, int M)
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)
void dimensionalizeSideIntegral(const field::NekFieldEnum &integrand, const Real &area, double &integral)
double sideExtremeValue(const std::vector< int > &boundary_id, const field::NekFieldEnum &field, const nek_mesh::NekMeshEnum pp_mesh, const bool max)