/** \file wang2012_model.hpp \brief Jingying Wang's model \author Jingying Wang */ #ifndef WANG2012_MODEL #define WANG2012_MODEL #define OPT_HEADER #include #include namespace opt_utilities { template class wang2012_model :public model,std::string> { private: model >* do_clone()const { return new wang2012_model(*this); } const char* do_get_type_name()const { return "1d power law"; } public: wang2012_model() { this->push_param_info(param_info >("A",5,0,500)); this->push_param_info(param_info >("n",1.66,0,10)); this->push_param_info(param_info >("xi",0.45,0,1)); this->push_param_info(param_info >("a2",1500,0,1e8)); this->push_param_info(param_info >("a3",50,0,1e8)); this->push_param_info(param_info >("beta",0.49,0.1,0.7)); this->push_param_info(param_info >("T0",0,0,10)); } T do_eval(const T& x,const std::vector& param) { T A=param[0]; T n=param[1]; T xi=param[2]; T a2=param[3]; T a3=param[4]; T beta=param[5]; T T0=param[6]; return A*(pow(x,n)+xi*a2)/(pow(x,n)+a2)/pow(1+x*x/a3/a3,beta)+T0; //return A*(pow(x,n)+a1)/(pow(x,n)+1)/pow(1+x*x/a3/a3,beta)+T0; } private: std::string do_get_information()const { return ""; } }; } #endif //EOF