23#ifndef DATAREDUCTIONOPERATOR_H
24#define DATAREDUCTIONOPERATOR_H
28#include <vlsv_writer.h>
59 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const = 0;
60 virtual bool getUnitMetadata(std::string& _unit,std::string& _unitLaTeX,std::string& _variableLaTeX,std::string& _unitConversion) {
67 virtual bool setUnitMetadata(std::string& _unit,std::string& _unitLaTeX,std::string& _variableLaTeX,std::string& _unitConversion) {
105 virtual std::string
getName()
const;
106 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
111 vlsv::Writer& vlsvWriter,
const bool writeAsFloat =
false);
124 virtual std::string
getName()
const;
125 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
142 virtual std::string
getName()
const;
143 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
160 virtual std::string
getName()
const;
161 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
179 virtual std::string
getName()
const;
180 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
192 virtual std::string
getName()
const;
221 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
222 virtual std::string
getName()
const;
235 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
236 virtual std::string
getName()
const;
251 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
252 virtual std::string
getName()
const;
269 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
270 virtual std::string
getName()
const;
283 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
284 virtual std::string
getName()
const;
297 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
298 virtual std::string
getName()
const;
314 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
315 virtual std::string
getName()
const;
329 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
330 virtual std::string
getName()
const;
343 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
344 virtual std::string
getName()
const;
360 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
361 virtual std::string
getName()
const;
377 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
391 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
405 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
406 virtual std::string
getName()
const;
422 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
423 virtual std::string
getName()
const;
439 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
440 virtual std::string
getName()
const;
456 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
457 virtual std::string
getName()
const;
473 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
474 virtual std::string
getName()
const;
491 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
492 virtual std::string
getName()
const;
509 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
510 virtual std::string
getName()
const;
527 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
528 virtual std::string
getName()
const;
545 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
546 virtual std::string
getName()
const;
561 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
562 virtual std::string
getName()
const;
582 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
583 virtual std::string
getName()
const;
604 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
605 virtual std::string
getName()
const;
622 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
623 virtual std::string
getName()
const;
641 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
642 virtual std::string
getName()
const;
659 virtual bool getDataVectorInfo(std::string& dataType,
unsigned int& dataSize,
unsigned int& vectorSize)
const;
660 virtual std::string
getName()
const;
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual std::string getName() const
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual bool reduceDiagnostic(const SpatialCell *cell, Real *buffer)
virtual std::string getName() const
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual std::string getName() const
virtual bool setSpatialCell(const SpatialCell *cell)
DataReductionOperatorBVOLDerivatives(const std::string &name, const unsigned int parameterIndex, const unsigned int vectorSize)
virtual bool setSpatialCell(const SpatialCell *cell)
DataReductionOperatorCellParams(const std::string &name, const unsigned int parameterIndex, const unsigned int vectorSize)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual std::string getName() const
virtual ~DataReductionOperatorCellParams()
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual bool reduceDiagnostic(const SpatialCell *cell, Real *result)
DataReductionOperatorDerivatives(const std::string &name, const unsigned int parameterIndex, const unsigned int vectorSize)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual bool reduceDiagnostic(const SpatialCell *cell, Real *result)
virtual bool setSpatialCell(const SpatialCell *cell)
DataReductionOperatorFsGrid(const std::string &name, ReductionLambda l)
std::function< std::vector< double >(const FieldSolverData &fieldSolverData)> ReductionLambda
virtual bool writeFsGridData(const FieldSolverData &fieldSolverData, const std::string &meshName, vlsv::Writer &vlsvWriter, const bool writeAsFloat=false)
virtual std::string getName() const
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool writeParameters(vlsv::Writer &vlsvWriter)=0
DataReductionOperatorHasParameters()
virtual bool setSpatialCell(const SpatialCell *cell)=0
virtual bool reduceDiagnostic(const SpatialCell *cell, Real *result)
virtual std::string getName() const =0
std::string variableLaTeX
virtual ~DataReductionOperator()
std::string unitConversion
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool setUnitMetadata(std::string &_unit, std::string &_unitLaTeX, std::string &_variableLaTeX, std::string &_unitConversion)
virtual bool getUnitMetadata(std::string &_unit, std::string &_unitLaTeX, std::string &_variableLaTeX, std::string &_unitConversion)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const =0
DataReductionOperatorIonosphereElement(const std::string &name, ReductionLambda l)
virtual bool writeIonosphereData(SBC::SphericalTriGrid &grid, vlsv::Writer &vlsvWriter)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual std::string getName() const
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual bool reduceDiagnostic(const SpatialCell *cell, Real *result)
std::function< std::vector< Real >(SBC::SphericalTriGrid &grid)> ReductionLambda
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual std::string getName() const
DataReductionOperatorIonosphereNode(const std::string &name, ReductionLambda l)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual bool reduceDiagnostic(const SpatialCell *cell, Real *result)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual bool writeIonosphereData(SBC::SphericalTriGrid &grid, vlsv::Writer &vlsvWriter)
std::function< std::vector< Real >(SBC::SphericalTriGrid &grid)> ReductionLambda
std::function< std::vector< int >(SBC::SphericalTriGrid &grid)> ReductionLambda
virtual std::string getName() const
DataReductionOperatorIonosphereNodeInt(const std::string &name, ReductionLambda l)
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool reduceDiagnostic(const SpatialCell *cell, Real *result)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual bool writeIonosphereData(SBC::SphericalTriGrid &grid, vlsv::Writer &vlsvWriter)
std::function< std::vector< Real >(const SpatialCell *cell)> ReductionLambda
virtual std::string getName() const
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual bool reduceDiagnostic(const SpatialCell *cell, Real *result)
DataReductionOperatorMPIGridCell(const std::string &name, int numFloats, ReductionLambda l)
virtual ~DiagnosticFluxB()
virtual bool reduceDiagnostic(const SpatialCell *cell, Real *result)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual std::string getName() const
virtual ~DiagnosticFluxE()
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual std::string getName() const
virtual bool setSpatialCell(const SpatialCell *cell)
virtual bool reduceDiagnostic(const SpatialCell *cell, Real *result)
virtual bool reduceDiagnostic(const SpatialCell *cell, Real *buffer)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual std::string getName() const
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual std::string getName() const
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool reduceDiagnostic(const SpatialCell *cell, Real *buffer)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual bool setSpatialCell(const SpatialCell *cell)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual std::string getName() const
virtual bool setSpatialCell(const SpatialCell *cell)
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual std::string getName() const
virtual bool reduceDiagnostic(const spatial_cell::SpatialCell *cell, Real *result)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual ~VariableEffectiveSparsityThreshold()
VariableEffectiveSparsityThreshold(cuint popID)
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual std::string getName() const
virtual std::string getName() const
virtual bool writeParameters(vlsv::Writer &vlsvWriter)
virtual bool setSpatialCell(const SpatialCell *cell)
VariableEnergyDensity(cuint popID)
Energy density Calculates the energy density of particles in three bins: total energy density,...
virtual ~VariableEnergyDensity()
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual std::string getName() const
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual ~VariableHeatFluxVector()
VariableHeatFluxVector(cuint popID)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual std::string getName() const
VariableMuSpace(cuint popID)
V-space flatten into 1D mu distribution.
virtual bool setSpatialCell(const SpatialCell *cell)
virtual ~VariableMuSpace()
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool writeParameters(vlsv::Writer &vlsvWriter)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual bool setSpatialCell(const SpatialCell *cell)
virtual ~VariableNonMaxwellianity()
virtual std::string getName() const
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual bool reduceData(const SpatialCell *cell, char *buffer)
VariableNonMaxwellianity(cuint popID)
Non-Maxwellianity Calculates for a population the dimensionless parameter defined by Graham et al....
virtual bool setSpatialCell(const SpatialCell *cell)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual std::string getName() const
virtual ~VariablePTensorDiagonal()
virtual bool reduceData(const SpatialCell *cell, char *buffer)
VariablePTensorDiagonal(cuint popID)
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual std::string getName() const
VariablePTensorNonthermalDiagonal(cuint popID)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual ~VariablePTensorNonthermalDiagonal()
virtual bool setSpatialCell(const SpatialCell *cell)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual std::string getName() const
VariablePTensorNonthermalOffDiagonal(cuint popID)
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual ~VariablePTensorNonthermalOffDiagonal()
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual bool reduceData(const SpatialCell *cell, char *buffer)
VariablePTensorOffDiagonal(cuint popID)
virtual ~VariablePTensorOffDiagonal()
virtual bool setSpatialCell(const SpatialCell *cell)
virtual std::string getName() const
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual std::string getName() const
VariablePTensorThermalDiagonal(cuint popID)
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual ~VariablePTensorThermalDiagonal()
virtual ~VariablePTensorThermalOffDiagonal()
virtual bool setSpatialCell(const SpatialCell *cell)
VariablePTensorThermalOffDiagonal(cuint popID)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual std::string getName() const
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool writeParameters(vlsv::Writer &vlsvWriter)
std::vector< Real > channels
std::vector< Real > dataDiffFlux
virtual bool setSpatialCell(const SpatialCell *cell)
VariablePrecipitationDiffFlux(cuint popID)
Precipitation directional differential number flux (within loss cone) Evaluation of the precipitating...
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual std::string getName() const
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual ~VariablePrecipitationDiffFlux()
virtual std::string getName() const
std::vector< Real > channels
virtual ~VariablePrecipitationLineDiffFlux()
virtual bool setSpatialCell(const SpatialCell *cell)
std::vector< Real > dataLineDiffFlux
VariablePrecipitationLineDiffFlux(cuint popID)
Precipitation directional differential number flux (along line) Evaluation of the precipitating diffe...
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool writeParameters(vlsv::Writer &vlsvWriter)
virtual std::string getName() const
virtual ~VariablePressureSolver()
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
VariableRhoNonthermal(cuint popID)
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual std::string getName() const
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual ~VariableRhoNonthermal()
virtual bool setSpatialCell(const SpatialCell *cell)
virtual std::string getName() const
virtual ~VariableRhoThermal()
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
VariableRhoThermal(cuint popID)
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual bool setSpatialCell(const SpatialCell *cell)
virtual ~VariableVNonthermal()
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
VariableVNonthermal(cuint popID)
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual std::string getName() const
virtual bool getDataVectorInfo(std::string &dataType, unsigned int &dataSize, unsigned int &vectorSize) const
virtual std::string getName() const
virtual bool reduceData(const SpatialCell *cell, char *buffer)
virtual ~VariableVThermal()
virtual bool setSpatialCell(const SpatialCell *cell)
VariableVThermal(cuint popID)