21 #include "GeneralUserObject.h" 42 virtual void execute()
override;
51 virtual Real
spatialValue(
const Point & p)
const override final;
62 virtual const unsigned int bin(
const Point & p)
const;
64 virtual const unsigned int num_bins()
const;
79 const std::vector<
unsigned int>
unrolledBin(const
unsigned int & total_bin_index) const;
87 Point
nekPoint(const
int & local_elem_id, const
int & local_node_id) const;
107 void fillCoordinates(const std::vector<
unsigned int> & indices, Point & p) const;
std::vector< unsigned int > _bin_providing_direction
For each x, y, z direction, which bin provides that direction.
Definition: NekSpatialBinUserObject.h:138
NekSpatialBinUserObject(const InputParameters ¶meters)
double * _bin_values_y
Definition: NekSpatialBinUserObject.h:154
bool _fixed_mesh
Whether the mesh this userobject operates on is fixed, allowing caching of volumes and areas.
Definition: NekSpatialBinUserObject.h:113
double * _bin_volumes
Volumes of each bin.
Definition: NekSpatialBinUserObject.h:158
int * _bin_partial_counts
Partial-sum of bin count per Nek rank.
Definition: NekSpatialBinUserObject.h:170
virtual const unsigned int num_bins() const
virtual Real spatialValue(const Point &p) const override final
Definition: SpatialBinUserObject.h:26
void computePoints1D()
Get the output points for a single bin.
int * _bin_counts
Definition: NekSpatialBinUserObject.h:164
virtual const unsigned int bin(const Point &p) const
virtual void computeBinVolumes() final
Compute the volume of each bin and check for zero contributions.
unsigned int _n_bins
total number of bins
Definition: NekSpatialBinUserObject.h:141
std::vector< bool > _has_direction
For each x, y, z direction, whether the combined distribution covers that direction.
Definition: NekSpatialBinUserObject.h:135
std::vector< const SpatialBinUserObject * > _bins
Userobjects providing the bins.
Definition: NekSpatialBinUserObject.h:132
const bool & _map_space_by_qp
Definition: NekSpatialBinUserObject.h:122
const std::vector< unsigned int > unrolledBin(const unsigned int &total_bin_index) const
static InputParameters validParams()
virtual void getBinVolumes()=0
Get the volume of each bin, used for normalizing in derived classes.
void fillCoordinates(const std::vector< unsigned int > &indices, Point &p) const
const unsigned int & _interval
Interval with which to evaluate the user object.
Definition: NekSpatialBinUserObject.h:110
const std::vector< UserObjectName > & _bin_names
Names of the userobjects providing the bins.
Definition: NekSpatialBinUserObject.h:116
virtual void execute() override
std::vector< Point > _points
points at which to output the user object to give unique values
Definition: NekSpatialBinUserObject.h:144
double * _bin_values_z
Definition: NekSpatialBinUserObject.h:155
std::vector< Point > _velocity_bin_directions
velocity direction to use for each bin
Definition: NekSpatialBinUserObject.h:147
void computePoints3D()
Get the output points for three combined bins.
void computePoints2D()
Get the output points for two combined bins.
virtual const std::vector< Point > spatialPoints() const override
Definition: NekSpatialBinUserObject.h:66
virtual void initialize()
Definition: NekSpatialBinUserObject.h:40
const bool & _check_zero_contributions
Definition: NekSpatialBinUserObject.h:129
Definition: NekSpatialBinUserObject.h:31
virtual void executeUserObject()=0
Definition: NekFieldInterface.h:7
virtual void finalize()
Definition: NekSpatialBinUserObject.h:41
virtual ~NekSpatialBinUserObject()
double * _bin_values_x
temporary storage space to hold the results of component-wise evaluations
Definition: NekSpatialBinUserObject.h:153
double * _bin_values
values of the userobject in each bin
Definition: NekSpatialBinUserObject.h:150
double * _bin_partial_values
Partial-sum of bin value per Nek rank.
Definition: NekSpatialBinUserObject.h:167
void resetPartialStorage()
Reset the scratch space storage to zero values.
Definition: CardinalEnums.h:81
Point nekPoint(const int &local_elem_id, const int &local_node_id) const