Cardinal
|
#include <NekPlaneSpatialBinUserObject.h>
Public Member Functions | |
NekPlaneSpatialBinUserObject (const InputParameters ¶meters) | |
virtual Real | distanceFromGap (const Point &point, const unsigned int &gap_index) const |
virtual unsigned int | gapIndex (const Point &point) const |
virtual void | gapIndexAndDistance (const Point &point, unsigned int &index, Real &distance) const |
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. More... | |
virtual void | getBinVolumes ()=0 |
Get the volume of each bin, used for normalizing in derived classes. More... | |
const std::vector< unsigned int > | unrolledBin (const unsigned int &total_bin_index) const |
const field::NekFieldEnum & | field () const |
Point | nekPoint (const int &local_elem_id, const int &local_node_id) const |
virtual void | initialize () |
virtual void | finalize () |
virtual void | execute () override |
virtual void | executeUserObject ()=0 |
Static Public Member Functions | |
static InputParameters | validParams () |
Protected Member Functions | |
void | computePoints1D () |
Get the output points for a single bin. More... | |
void | computePoints2D () |
Get the output points for two combined bins. More... | |
void | computePoints3D () |
Get the output points for three combined bins. More... | |
void | resetPartialStorage () |
Reset the scratch space storage to zero values. More... | |
void | fillCoordinates (const std::vector< unsigned int > &indices, Point &p) const |
Protected Attributes | |
const Real & | _gap_thickness |
Width of region enclosing gap for which points contribute to gap integral. More... | |
const PlaneSpatialBinUserObject * | _side_bin |
The user object providing the side binning. More... | |
unsigned int | _side_index |
The index into the _bins that represents the side bin object. More... | |
const std::vector< UserObjectName > & | _bin_names |
Names of the userobjects providing the bins. More... | |
const field::NekFieldEnum | _field |
field to postprocess with the bins More... | |
const bool & | _map_space_by_qp |
const bool & | _check_zero_contributions |
std::vector< const SpatialBinUserObject * > | _bins |
Userobjects providing the bins. More... | |
std::vector< bool > | _has_direction |
For each x, y, z direction, whether the combined distribution covers that direction. More... | |
std::vector< unsigned int > | _bin_providing_direction |
For each x, y, z direction, which bin provides that direction. More... | |
component::BinnedVelocityComponentEnum | _velocity_component |
unsigned int | _n_bins |
total number of bins More... | |
std::vector< Point > | _points |
points at which to output the user object to give unique values More... | |
std::vector< Point > | _velocity_bin_directions |
velocity direction to use for each bin More... | |
double * | _bin_values |
values of the userobject in each bin More... | |
double * | _bin_values_x |
temporary storage space to hold the results of component-wise evaluations More... | |
double * | _bin_values_y |
double * | _bin_values_z |
double * | _bin_volumes |
Volumes of each bin. More... | |
int * | _bin_counts |
double * | _bin_partial_values |
Partial-sum of bin value per Nek rank. More... | |
int * | _bin_partial_counts |
Partial-sum of bin count per Nek rank. More... | |
const unsigned int & | _interval |
Interval with which to evaluate the user object. More... | |
const NekRSProblemBase * | _nek_problem |
Underlying problem object. More... | |
bool | _fixed_mesh |
Whether the mesh this userobject operates on is fixed, allowing caching of volumes and areas. More... | |
Class that performs various postprocessing operations on the NekRS solution with a spatial binning formed as the product of two bin distributions, one a surface distribution and the other a volume distribution.
NekPlaneSpatialBinUserObject::NekPlaneSpatialBinUserObject | ( | 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.
|
virtual |
|
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 NekBinnedVolumeIntegral, NekBinnedPlaneAverage, NekBinnedPlaneIntegral, NekBinnedSideAverage, NekBinnedSideIntegral, and NekBinnedVolumeAverage.
|
inlineinherited |
Get the integrating 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 |
|
virtual |
|
virtual |
|
pure virtualinherited |
Get the volume of each bin, used for normalizing in derived classes.
Implemented in NekBinnedVolumeIntegral, NekBinnedPlaneIntegral, and NekBinnedSideIntegral.
|
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 |
field to postprocess with the bins
|
protectedinherited |
Whether the mesh this userobject operates on is fixed, allowing caching of volumes and areas.
|
protected |
Width of region enclosing gap for which points contribute to gap integral.
|
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 |
Underlying problem object.
|
protectedinherited |
points at which to output the user object to give unique values
|
protected |
The user object providing the side binning.
|
protected |
The index into the _bins that represents the side bin object.
|
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 the gap planes, only valid for side bin user objects)