Cardinal
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
NekSpatialBinUserObject Class Referenceabstract

#include <NekSpatialBinUserObject.h>

Inheritance diagram for NekSpatialBinUserObject:
[legend]

Public Member Functions

 NekSpatialBinUserObject (const InputParameters &parameters)
 
virtual ~NekSpatialBinUserObject ()
 
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::NekFieldEnumfield () 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 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...
 

Detailed Description

Class that performs various postprocessing operations on the NekRS solution with a spatial binning formed as the product of an arbitrary number of combined single-set bins.

Constructor & Destructor Documentation

◆ NekSpatialBinUserObject()

NekSpatialBinUserObject::NekSpatialBinUserObject ( const InputParameters &  parameters)

◆ ~NekSpatialBinUserObject()

virtual NekSpatialBinUserObject::~NekSpatialBinUserObject ( )
virtual

Member Function Documentation

◆ bin()

virtual const unsigned int NekSpatialBinUserObject::bin ( const Point &  p) const
virtual

◆ computeBinVolumes()

virtual void NekSpatialBinUserObject::computeBinVolumes ( )
finalvirtual

Compute the volume of each bin and check for zero contributions.

◆ computePoints1D()

void NekSpatialBinUserObject::computePoints1D ( )
protected

Get the output points for a single bin.

◆ computePoints2D()

void NekSpatialBinUserObject::computePoints2D ( )
protected

Get the output points for two combined bins.

◆ computePoints3D()

void NekSpatialBinUserObject::computePoints3D ( )
protected

Get the output points for three combined bins.

◆ execute()

virtual void NekUserObject::execute ( )
overridevirtualinherited

◆ executeUserObject()

virtual void NekUserObject::executeUserObject ( )
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.

◆ field()

const field::NekFieldEnum& NekSpatialBinUserObject::field ( ) const
inline

Get the integrating field

Returns
field

◆ fillCoordinates()

void NekSpatialBinUserObject::fillCoordinates ( const std::vector< unsigned int > &  indices,
Point &  p 
) const
protected

Get the coordinates for a point at the given indices for the bins

Parameters
[in]indicesindices of the bin distributions to combine
[out]ppoint at the (i, j, k) indices of the combined bins

◆ finalize()

virtual void NekUserObject::finalize ( )
inlinevirtualinherited

◆ getBinVolumes()

virtual void NekSpatialBinUserObject::getBinVolumes ( )
pure virtual

Get the volume of each bin, used for normalizing in derived classes.

Implemented in NekBinnedVolumeIntegral, NekBinnedPlaneIntegral, and NekBinnedSideIntegral.

◆ initialize()

virtual void NekUserObject::initialize ( )
inlinevirtualinherited

◆ nekPoint()

Point NekSpatialBinUserObject::nekPoint ( const int &  local_elem_id,
const int &  local_node_id 
) const

Get the point at which to evaluate the user object

Parameters
[in]local_elem_idlocal element ID on the Nek rank
[in]local_node_idlocal node ID on the element
Returns
point, in dimensional form

◆ num_bins()

virtual const unsigned int NekSpatialBinUserObject::num_bins ( ) const
virtual

◆ resetPartialStorage()

void NekSpatialBinUserObject::resetPartialStorage ( )
protected

Reset the scratch space storage to zero values.

◆ spatialPoints()

virtual const std::vector<Point> NekSpatialBinUserObject::spatialPoints ( ) const
inlineoverridevirtual

◆ spatialValue() [1/2]

virtual Real NekSpatialBinUserObject::spatialValue ( const Point &  p) const
finaloverridevirtual

◆ spatialValue() [2/2]

virtual Real NekSpatialBinUserObject::spatialValue ( const Point &  p,
const unsigned int &  component 
) const
pure virtual

When using 'field = velocity_component', get the spatial value for a particular component

Parameters
[in]ppoint
[in]componentcomponent
Returns
value along direction of component

Implemented in NekBinnedPlaneIntegral, NekBinnedSideIntegral, and NekBinnedVolumeIntegral.

◆ unrolledBin()

const std::vector<unsigned int> NekSpatialBinUserObject::unrolledBin ( const unsigned int &  total_bin_index) const

Get the individual bin indices given a total combined bin

Parameters
[in]total_bin_indextotal combined bin index
Returns
indices into each of the individual bin distributions

◆ validParams()

static InputParameters NekSpatialBinUserObject::validParams ( )
static

Member Data Documentation

◆ _bin_counts

int* NekSpatialBinUserObject::_bin_counts
protected

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

◆ _bin_names

const std::vector<UserObjectName>& NekSpatialBinUserObject::_bin_names
protected

Names of the userobjects providing the bins.

◆ _bin_partial_counts

int* NekSpatialBinUserObject::_bin_partial_counts
protected

Partial-sum of bin count per Nek rank.

◆ _bin_partial_values

double* NekSpatialBinUserObject::_bin_partial_values
protected

Partial-sum of bin value per Nek rank.

◆ _bin_providing_direction

std::vector<unsigned int> NekSpatialBinUserObject::_bin_providing_direction
protected

For each x, y, z direction, which bin provides that direction.

◆ _bin_values

double* NekSpatialBinUserObject::_bin_values
protected

values of the userobject in each bin

◆ _bin_values_x

double* NekSpatialBinUserObject::_bin_values_x
protected

temporary storage space to hold the results of component-wise evaluations

◆ _bin_values_y

double* NekSpatialBinUserObject::_bin_values_y
protected

◆ _bin_values_z

double* NekSpatialBinUserObject::_bin_values_z
protected

◆ _bin_volumes

double* NekSpatialBinUserObject::_bin_volumes
protected

Volumes of each bin.

◆ _bins

std::vector<const SpatialBinUserObject *> NekSpatialBinUserObject::_bins
protected

Userobjects providing the bins.

◆ _check_zero_contributions

const bool& NekSpatialBinUserObject::_check_zero_contributions
protected

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)

◆ _field

const field::NekFieldEnum NekSpatialBinUserObject::_field
protected

field to postprocess with the bins

◆ _fixed_mesh

bool NekUserObject::_fixed_mesh
protectedinherited

Whether the mesh this userobject operates on is fixed, allowing caching of volumes and areas.

◆ _has_direction

std::vector<bool> NekSpatialBinUserObject::_has_direction
protected

For each x, y, z direction, whether the combined distribution covers that direction.

◆ _interval

const unsigned int& NekUserObject::_interval
protectedinherited

Interval with which to evaluate the user object.

◆ _map_space_by_qp

const bool& NekSpatialBinUserObject::_map_space_by_qp
protected

Whether to map the NekRS space to bins by element centroid (false) or quadrature point (true).

◆ _n_bins

unsigned int NekSpatialBinUserObject::_n_bins
protected

total number of bins

◆ _nek_problem

const NekRSProblemBase* NekUserObject::_nek_problem
protectedinherited

Underlying problem object.

◆ _points

std::vector<Point> NekSpatialBinUserObject::_points
protected

points at which to output the user object to give unique values

◆ _velocity_bin_directions

std::vector<Point> NekSpatialBinUserObject::_velocity_bin_directions
protected

velocity direction to use for each bin

◆ _velocity_component

component::BinnedVelocityComponentEnum NekSpatialBinUserObject::_velocity_component
protected

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)


The documentation for this class was generated from the following file: