67    const std::shared_ptr<SolverUtils::EquationSystem> &pEquation,
 
   68    const std::map<std::string, std::string> &pParams)
 
   72    auto it = pParams.find(
"SampleFrequency");
 
   73    if (it == pParams.end())
 
   84    it = pParams.find(
"MovingAverage");
 
   85    if (it == pParams.end())
 
   91        std::string sOption = it->second.c_str();
 
   92        m_movAvg            = (boost::iequals(sOption, 
"true")) ||
 
   93                   (boost::iequals(sOption, 
"yes"));
 
  102    it = pParams.find(
"alpha");
 
  103    if (it == pParams.end())
 
  105        it = pParams.find(
"tau");
 
  106        if (it == pParams.end())
 
  108            ASSERTL0(
false, 
"MovingAverage needs either alpha or tau.");
 
  117            m_session->LoadParameter(
"TimeStep", dT);
 
  128        it = pParams.find(
"tau");
 
  129        if (it != pParams.end())
 
  132                     "Cannot define both alpha and tau in MovingAverage.");
 
  143    size_t dim          = pFields.size() - 1;
 
  144    size_t nExtraFields = (dim + 1) * dim / 2;
 
  145    size_t origFields   = pFields.size();
 
  146    size_t nqtot        = pFields[0]->GetTotPoints();
 
  149    m_fields.resize(origFields + nExtraFields);
 
  152    for (
size_t n = 0; n < 
m_fields.size(); ++n)
 
  156    for (
size_t n = 0; n < 
m_delta.size(); ++n)
 
  167        for (
size_t j = 0; j < 
m_fields.size(); ++j)
 
  170            if (pFields[0]->GetWaveSpace())
 
  172                pFields[0]->HomogeneousBwdTrans(nqtot, 
m_fields[j],
 
  182    size_t dim        = pFields.size() - 1;
 
  183    size_t origFields = pFields.size();
 
  186    for (
size_t n = 0; n < origFields; ++n)
 
  188        m_variables.push_back(pFields[n]->GetSession()->GetVariable(n));
 
  190    for (
int i = 0; i < dim; ++i)
 
  192        for (
int j = i; j < dim; ++j)
 
  194            std::string var = pFields[i]->GetSession()->GetVariable(i) +
 
  195                              pFields[j]->GetSession()->GetVariable(j);
 
  207    size_t nq          = pFields[0]->GetTotPoints();
 
  208    size_t dim         = pFields.size() - 1;
 
  209    bool waveSpace     = pFields[0]->GetWaveSpace();
 
  220    NekDouble facOld, facAvg, facStress, facDelta;
 
  223        facOld    = 1.0 - alpha;
 
  232        facStress = nSamples / (nSamples - 1);
 
  233        facDelta  = 1.0 / nSamples;
 
  240    for (n = 0; n < dim; ++n)
 
  244            pFields[n]->HomogeneousBwdTrans(nq, pFields[n]->GetPhys(), vel);
 
  248            vel = pFields[n]->GetPhys();
 
  265    for (i = 0, n = dim + 1; i < dim; ++i)
 
  267        for (j = i; j < dim; ++j, ++n)
 
  280    size_t dim = pFields.size() - 1;
 
  285    bool waveSpace = pFields[0]->GetWaveSpace();
 
  286    pFields[0]->SetWaveSpace(
false);
 
  289    for (
size_t i = 0; i < 
m_fields.size(); ++i)
 
  298    pFields[0]->SetWaveSpace(waveSpace);
 
#define ASSERTL0(condition, msg)
NekDouble Evaluate() const
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
unsigned int m_sampleFrequency
std::vector< std::string > m_variables
unsigned int m_numSamples
LibUtilities::FieldMetaDataMap m_fieldMetaData
std::vector< Array< OneD, NekDouble > > m_outFields
SOLVER_UTILS_EXPORT void v_Initialise(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time) override
LibUtilities::SessionReaderSharedPtr m_session
NekDouble v_GetScale() override
FilterReynoldsStresses(const LibUtilities::SessionReaderSharedPtr &pSession, const std::shared_ptr< SolverUtils::EquationSystem > &pEquation, const std::map< std::string, std::string > &pParams)
static std::string className
Name of the class.
std::vector< Array< OneD, NekDouble > > m_delta
void v_Initialise(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time) override
void v_FillVariablesName(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields) override
static FilterSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession, const std::shared_ptr< SolverUtils::EquationSystem > &pEquation, const std::map< std::string, std::string > &pParams)
Creates an instance of this class.
std::vector< Array< OneD, NekDouble > > m_fields
void v_PrepareOutput(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, const NekDouble &time) override
void v_ProcessSample(const Array< OneD, const MultiRegions::ExpListSharedPtr > &pFields, std::vector< Array< OneD, NekDouble > > &fieldcoeffs, const NekDouble &time) override
std::shared_ptr< SessionReader > SessionReaderSharedPtr
FilterFactory & GetFilterFactory()
void Svtsvtp(int n, const T alpha, const T *x, int incx, const T beta, const T *y, int incy, T *z, int incz)
Svtsvtp (scalar times vector plus scalar times vector):
void Vmul(int n, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Multiply vector z = x*y.
void Svtvm(int n, const T alpha, const T *x, const int incx, const T *y, const int incy, T *z, const int incz)
Svtvm (scalar times vector minus vector): z = alpha*x - y.