/**
 *  \brief     Numerics class.
 *  \details   Acts as container for numerical parameters, like tolerance, algorithms, etc.
 *  \author    vadims
 *  \date      Dec 5, 2019
 *  \bug       Not all memory is freed when deleting an object of this class.
 *  \warning   Improper use can crash your application
 *  \copyright CENOS LLC
 */

#ifndef NUMERICS_HPP_
#define NUMERICS_HPP_

#include "nlohmann/json.hpp"
using json = nlohmann::json;

class Numerics
{
public:
	Numerics();
	~Numerics();
	enum ALGO
	{
		Fast = 0,
		Accurate = 1,
		Automatic = 2
	};
	void readInput(json);
	ALGO getAlgorithm();
	unsigned int getMaxIterations();
	float getRelaxationFactor();
	float getTolerance();
private:

	ALGO algorithm;
	unsigned int maxIterations;
	float relaxationFactor;
	float tolerance;


};

#endif // NUMERICS_HPP_