Skip to content
Snippets Groups Projects
Uncertainity.h 1.49 KiB
Newer Older
  • Learn to ignore specific revisions
  • Radim Vavřík's avatar
    Radim Vavřík committed
    // 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;
    
    
    Radim Vavřík's avatar
    Radim Vavřík committed
    			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;
    
        		int m_samplesProcessed = 0;