示例#1
0
文件: test.cpp 项目: hecomi/Xml2dfa
int main(int argc, char const* argv[])
{
	XML2dfa x2d("input.xml");
	x2d.mk_gram_voca();

	return 0;
}
示例#2
0
int main (int argc, char *argv[]) {
#ifdef TESTING
	input_map inmap;
	std::string prefix;
	symbolic_function<1> f; 
	symbolic_function<2> e1 ,e2, e4, dhdx0;
	blitz::TinyVector<double,2>  x2d(1.0, 0.75), x2da(0.5, 0.25);
		
	inmap["Re"] = "100.0";
	inmap["l1"] = "37.0";
	inmap["f"] = "exp(-x/l1*Re)";
	inmap["e1"] = "sin(-x0/l1*Re+x1)";
	inmap["e2"] = "x0*e1";
	inmap["dhdx0"] = "2*h*ke^2*x0*exp(-ke^2*x0^2)*cos(k*x0-w*t)-h*(1-exp(-ke^2*x0^2))*sin(k*x0-w*t)*k-2*s*(x0-ex0)/denom^2*exp(-(x0-ex0)^2/denom^2)*(1+(2*h*ke^2*x0*exp(-ke^2*x0^2)*cos(k*x0-w*t)-h*(1-exp(-ke^2*x0^2))*sin(k*x0-w*t)*k)^2)^(1/2)-s*(1-exp(-(x0-ex0)^2/denom^2))/(1+(2*h*ke^2*x0*exp(-ke^2*x0^2)*cos(k*x0-w*t)-h*(1-exp(-ke^2*x0^2))*sin(k*x0-w*t)*k)^2)^(1/2)*(2*h*ke^2*x0*exp(-ke^2*x0^2)*cos(k*x0-w*t)-h*(1-exp(-ke^2*x0^2))*sin(k*x0-w*t)*k)*(2*h*ke^2*exp(-ke^2*x0^2)*cos(k*x0-w*t)-4*h*ke^4*x0^2*exp(-ke^2*x0^2)*cos(k*x0-w*t)-4*h*ke^2*x0*exp(-ke^2*x0^2)*sin(k*x0-w*t)*k-h*(1-exp(-ke^2*x0^2))*cos(k*x0-w*t)*k^2)";
	inmap["e4"] = "cos(2*_pi*x1)";
	std::cout << inmap << std::endl;
	inmap.echo = true;

	f.init(inmap,"f");
	std::cout << "f " << f.Eval(1.0) << ' ' << exp(-1.0/37.0*100.0) << std::endl;
 
	e1.init(inmap,"e1");
	std::cout << " e1 eval " << e1.Eval(x2d) << ' ' << sin(-x2d(0)/37.0*100.0 +x2d(1)) << std::endl;
	
	e2.init(inmap,"e2");
	std::cout << " e2 eval " << e2.Eval(x2d) << ' ' << x2d(0)*sin(-x2d(0)/37.0*100.0 +x2d(1)) << std::endl;
	
	symbolic_function<2> e3(e2);
	
	std::cout << " e3 eval " << e3.Eval(x2da) << ' ' << x2da(0)*sin(-x2da(0)/37.0*100.0 +x2da(1)) << std::endl;
	
	e1 = e2;
	std::cout << " = eval " << e1.Eval(x2d) << ' ' << x2d(0)*sin(-x2d(0)/37.0*100.0 +x2d(1)) << std::endl;
	
	
//	dhdx0.init(inmap,"dhdx0");
//	std::cout << "dhdx0 " << dhdx0.Eval(x2d,1.0) << std::endl;
	
	
	/* Vector Function Testing */
	blitz::Array<std::string,1> names;
	blitz::Array<int,1> dims;
	names.resize(3);
	dims.resize(3);
	names(0) = "x";
	names(1) = "u";
	names(2) = "n";
	dims(0) = 2;
	dims(1) = 4;
	dims(2) = 2;
	vector_function vf(3,dims,names);
	
	inmap["Vfunc"] = "V3*u2";
	inmap["V2"] = "u3*x0";
	inmap["V3"] = "n1*t*V2";
	// t*u2*u3*x0
	
	vf.init(inmap,"Vfunc");
	blitz::Array<double,1> x(2);
	x(0) = 0.1;
	x(1) = 0.3;
	double t = 0.7;
	blitz::Array<double,1> u(4);
	u(0) = 1.9;
	u(1) = 2.9;
	u(2) = 3.34;
	u(3) = 5;
	blitz::Array<double,1> n(2);
	n(0) = -100;
	n(1) = -200;
	std::cout << vf.Eval(x,u,n,t) << ' ' << t*u(2)*u(3)*x(0)*n(1) << std::endl;
	

#else
    input_map mymap;
	  
    mymap.input(argv[1]);
	
	symbolic_function<3> f;
	f.init(mymap,"formula");
	
	blitz::TinyVector<double,3> x;
	mymap.get("position",x.data(),3);
	
	double t;
	mymap.getwdefault("time",t,0.0);
	
	std::cout << f.Eval(x) << std::endl;
	
#endif

	return(0);
}