#include <NekVolumeSpatialBinUserObject.h>
Public Member Functions | |
NekVolumeSpatialBinUserObject (const InputParameters ¶meters) | |
virtual void | initialize () |
virtual void | finalize () |
virtual void | execute () override |
virtual void | executeUserObject ()=0 |
virtual Real | spatialValue (const Point &p) const override final |
virtual Real | spatialValue (const Point &p, const unsigned int &component) const =0 |
virtual const unsigned int | bin (const Point &p) const |
virtual const unsigned int | num_bins () const |
virtual const std::vector< Point > | spatialPoints () const override |
virtual void | computeBinVolumes () final |
Compute the volume of each bin and check for zero contributions. | |
virtual void | getBinVolumes ()=0 |
Get the volume of each bin, used for normalizing in derived classes. | |
const std::vector< unsigned int > | unrolledBin (const unsigned int &total_bin_index) const |
Point | nekPoint (const int &local_elem_id, const int &local_node_id) const |
const field::NekFieldEnum & | field () const |
Static Public Member Functions | |
static InputParameters | validParams () |
Protected Member Functions | |
void | computePoints1D () |
Get the output points for a single bin. | |
void | computePoints2D () |
Get the output points for two combined bins. | |
void | computePoints3D () |
Get the output points for three combined bins. | |
void | resetPartialStorage () |
Reset the scratch space storage to zero values. | |
void | fillCoordinates (const std::vector< unsigned int > &indices, Point &p) const |
Protected Attributes | |
const unsigned int & | _interval |
Interval with which to evaluate the user object. | |
bool | _fixed_mesh |
Whether the mesh this userobject operates on is fixed, allowing caching of volumes and areas. | |
const std::vector< UserObjectName > & | _bin_names |
Names of the userobjects providing the bins. | |
const bool & | _map_space_by_qp |
const bool & | _check_zero_contributions |
std::vector< const SpatialBinUserObject * > | _bins |
Userobjects providing the bins. | |
std::vector< bool > | _has_direction |
For each x, y, z direction, whether the combined distribution covers that direction. | |
std::vector< unsigned int > | _bin_providing_direction |
For each x, y, z direction, which bin provides that direction. | |
unsigned int | _n_bins |
total number of bins | |
std::vector< Point > | _points |
points at which to output the user object to give unique values | |
std::vector< Point > | _velocity_bin_directions |
velocity direction to use for each bin | |
double * | _bin_values |
values of the userobject in each bin | |
double * | _bin_values_x |
temporary storage space to hold the results of component-wise evaluations | |
double * | _bin_values_y |
double * | _bin_values_z |
double * | _bin_volumes |
Volumes of each bin. | |
int * | _bin_counts |
double * | _bin_partial_values |
Partial-sum of bin value per Nek rank. | |
int * | _bin_partial_counts |
Partial-sum of bin count per Nek rank. | |
const NekRSProblemBase * | _nek_problem |
The NekRSProblemBase required by all objects which inherit from NekBase. | |
const NekRSMesh * | _nek_mesh |
Underlying NekRSMesh, if present. | |
const field::NekFieldEnum | _field |
NekRS solution field. | |
component::BinnedVelocityComponentEnum | _velocity_component |
Point | _velocity_direction |
Direction in which to evaluate velocity, when field = velocity_component. | |
Class that performs various postprocessing operations on the NekRS solution with a spatial binning formed as the product of volume binning distributions.
NekVolumeSpatialBinUserObject::NekVolumeSpatialBinUserObject | ( | const InputParameters & | parameters | ) |
|
virtualinherited |
|
finalvirtualinherited |
Compute the volume of each bin and check for zero contributions.
|
protectedinherited |
Get the output points for a single bin.
|
protectedinherited |
Get the output points for two combined bins.
|
protectedinherited |
Get the output points for three combined bins.
|
overridevirtualinherited |
|
pure virtualinherited |
Execute the user object; separating this call from execute() allows all derived classes to leverage this base class's 'interval' parameter to decide when to call the user object
Implemented in NekBinnedPlaneAverage, NekBinnedPlaneIntegral, NekBinnedSideAverage, NekBinnedSideIntegral, NekBinnedVolumeAverage, and NekBinnedVolumeIntegral.
|
inlineinherited |
Get the field
|
protectedinherited |
Get the coordinates for a point at the given indices for the bins
[in] | indices | indices of the bin distributions to combine |
[out] | p | point at the (i, j, k) indices of the combined bins |
|
inlinevirtualinherited |
|
pure virtualinherited |
Get the volume of each bin, used for normalizing in derived classes.
Implemented in NekBinnedPlaneIntegral, NekBinnedSideIntegral, and NekBinnedVolumeIntegral.
|
inlinevirtualinherited |
|
inherited |
Get the point at which to evaluate the user object
[in] | local_elem_id | local element ID on the Nek rank |
[in] | local_node_id | local node ID on the element |
|
virtualinherited |
|
protectedinherited |
Reset the scratch space storage to zero values.
|
inlineoverridevirtualinherited |
|
finaloverridevirtualinherited |
|
pure virtualinherited |
When using 'field = velocity_component', get the spatial value for a particular component
[in] | p | point |
[in] | component | component |
Implemented in NekBinnedPlaneIntegral, NekBinnedSideIntegral, and NekBinnedVolumeIntegral.
|
inherited |
Get the individual bin indices given a total combined bin
[in] | total_bin_index | total combined bin index |
|
static |
|
protectedinherited |
Number of GLL points (for 'map_space_by_qp = true') or elements (for 'map_space_by_qp = false') that contribute to each bin, for error checking
|
protectedinherited |
Names of the userobjects providing the bins.
|
protectedinherited |
Partial-sum of bin count per Nek rank.
|
protectedinherited |
Partial-sum of bin value per Nek rank.
|
protectedinherited |
For each x, y, z direction, which bin provides that direction.
|
protectedinherited |
values of the userobject in each bin
|
protectedinherited |
temporary storage space to hold the results of component-wise evaluations
|
protectedinherited |
|
protectedinherited |
|
protectedinherited |
Volumes of each bin.
|
protectedinherited |
Userobjects providing the bins.
|
protectedinherited |
Whether to throw an error if no GLL points or elements map to each bin (which would indicate that the binning is probably way too fine relative to the NekRS solution)
|
protectedinherited |
NekRS solution field.
|
protectedinherited |
Whether the mesh this userobject operates on is fixed, allowing caching of volumes and areas.
|
protectedinherited |
For each x, y, z direction, whether the combined distribution covers that direction.
|
protectedinherited |
Interval with which to evaluate the user object.
|
protectedinherited |
Whether to map the NekRS space to bins by element centroid (false) or quadrature point (true).
|
protectedinherited |
total number of bins
|
protectedinherited |
The NekRSProblemBase required by all objects which inherit from NekBase.
|
protectedinherited |
points at which to output the user object to give unique values
|
protectedinherited |
velocity direction to use for each bin
|
protectedinherited |
Direction in which to evaluate velocity, if using 'field = velocity_component'. Options: user (then provide a general vector direction with the 'velocity_direction' parameter normal (normal to an interface, context dependent on daughter class)
|
protectedinherited |
Direction in which to evaluate velocity, when field = velocity_component.