Newer
Older
// Uncertainity.h
#pragma once
#include "MatData.h"
#include "UncertainityOptions.h"
#include "AbstractRandom.h"
#include "AbstractParam.h"
#include "KernelDensity.h"
#include <cstdlib>
namespace math1d_cl
{
class Uncertainity
{
// Methods
public:
Uncertainity(std::string config_xml, std::shared_ptr<math1d_cl::MatData> matData, uint32_t mcCount);
void Initialize();
void CreateModels(size_t modelsNumber);
void RunMC(size_t threadsNumber);
void CollectResults();
private:
std::vector<double> GetQuantile(std::vector<double> &input, std::vector<double> quantiles);
math1d_cl::UncertainityOptions SetOptions(std::string fileName);
// Members
// Holds rank of current process and total number of processes
int m_rank = -1;
int m_numProc = -1;
int m_master = -1;
//std::std::vector<int> m_threadsPerProcess;
UncertainityOptions m_options;
std::shared_ptr<MatData> m_matData;
std::vector<Hydrograph> m_origHydrographs;
size_t m_timeSteps;
size_t m_stationsCount;
std::vector<std::shared_ptr<math1d_cl::AbstractParam>> m_uncertainParameters; // Holds an array of parameters to be included in uncertaninty simulation
// Number of values in hydrographs per process
std::vector<int> m_qChunkSizes;
std::vector<int> m_qChunkDispl;
//std::vector<int> m_hChunkSizes;
//std::vector<int> m_hChunkDispl;
// Local data
std::vector<double> m_localQ;
std::vector<math1d_cl::MatData> m_models;