33 assert(
argc==2 &&
"YOU MUST PASS EXACTLY ONE ARGUMENT (quadraturePowerMax).");
35 const int quadraturePowerMax(atoi(
argv[1]));
36 assert(quadraturePowerMax>0 &&
"quadraturePowerMax MUST BE > 0.");
38 std::cout<<
"quadraturePowerMax="<<quadraturePowerMax<<std::endl;
42 std::string includeFileName(
"../includeGaussLegendre1D.h");
43 std::ofstream includeFile(includeFileName.c_str(), std::ios::out);
44 assert(includeFile.good() &&
"includeFile is not good.");
47 includeFile <<
"/*** This file is automatically generated by generateGaussLegendre.cpp ***/\n";
48 includeFile <<
"#ifndef model_INCLUDEGAUSSLEGENDRE_"<<dim<<
"_H_ \n";
49 includeFile <<
"#define model_INCLUDEGAUSSLEGENDRE_"<<dim<<
"_H_ \n\n";
53 for (
int p=0;
p<quadraturePowerMax;++
p)
55 const int p0=std::pow(2.0,
p);
56 const int p1=std::pow(2.0,
p+1);
57 for (
int d=1;d<=div;d++)
59 orders.emplace(p0+d/div*(
p1-p0));
65 for(
const int& qOrder : orders)
76 std::ostringstream filestream;
77 filestream <<
"../dim1/GaussLegendre_1_" << qOrder <<
".h";
78 std::string filename=filestream.str();
79 std::cout<<
"Writing file "<<filestream.str()<<std::endl;
80 remove(filename.c_str());
81 std::ofstream file(filename.c_str(), std::ios::out);
82 assert(file.good() &&
"file is not good.");
85 file <<
"/*** This file is automatically generated by generateGaussLegendre.cpp ***/\n";
86 file <<
"#ifndef model_GAUSSLEGENDRE_"<<dim<<
"_"<<qOrder<<
"_H_ \n";
87 file <<
"#define model_GAUSSLEGENDRE_"<<dim<<
"_"<<qOrder<<
"_H_ \n\n";
88 file <<
"namespace model\n{\n\n";
89 file <<
" template<>\n";
90 file <<
" struct GaussLegendre<"<<dim<<
","<<qOrder<<
">\n";
92 file <<
" static Eigen::Matrix<double,"<<dim+1<<
","<<qOrder<<
"> abcsissasAndWeights()\n";
94 file <<
" Eigen::Matrix<double,"<<qOrder<<
","<<dim+1<<
"> aw;\n";
96 for (
int q=0;
q<qOrder;++
q)
98 for (
int d=0;d<dim+1;++d)
100 if (d==dim &&
q==qOrder-1)
102 file <<std::setprecision(15)<<std::scientific<<abcsissasAndWeights(d,
q) <<
"; ";
106 file <<std::setprecision(15)<<std::scientific<<abcsissasAndWeights(d,
q) <<
", ";
113 file <<
" return aw.transpose();\n";
116 file <<
"/*************************************************/\n";
118 file <<
"#endif \n"<<std::endl;
122 includeFile <<
"#include <model/Quadrature/GaussLegendre/dim1/GaussLegendre_1_"<<qOrder<<
".h>\n";
126 includeFile <<
" \n";
127 includeFile <<
"#endif \n"<<std::endl;