Skip to content
Snippets Groups Projects

Remove 1D and 3D to speed up compilation

Merged Dominic Kempf requested to merge feature/simplify-tutorial03 into master
+ 46
182
Compare changes
  • Side-by-side
  • Inline
Files
@@ -86,100 +86,33 @@ int main(int argc, char** argv)
ptreeparser.readOptions(argc,argv,ptree);
// read ini file
const int dim = ptree.get<int>("grid.dim");
const int refinement = ptree.get<int>("grid.refinement");
const int degree = ptree.get<int>("fem.degree");
// in 1d use OneDGrid
if (dim==1)
{
// read grid parameters from input file
typedef Dune::OneDGrid::ctype DF;
const DF a = ptree.get<DF>("grid.oned.a");
const DF b = ptree.get<DF>("grid.oned.b");
const unsigned int N = ptree.get<int>("grid.oned.elements");
// create equidistant intervals
typedef std::vector<DF> Intervals;
Intervals intervals(N+1);
for(unsigned int i=0; i<N+1; ++i)
intervals[i] = a + DF(i)*(b-a)/DF(N);
// Construct grid
typedef Dune::OneDGrid Grid;
Grid grid(intervals);
grid.globalRefine(refinement);
// call generic function
typedef Dune::OneDGrid::LeafGridView GV;
GV gv=grid.leafGridView();
if (degree==1) {
typedef Dune::PDELab::PkLocalFiniteElementMap<GV,DF,double,1> FEM;
FEM fem(gv);
driver(gv,fem,ptree);
}
if (degree==2) {
typedef Dune::PDELab::PkLocalFiniteElementMap<GV,DF,double,2> FEM;
FEM fem(gv);
driver(gv,fem,ptree);
}
}
// YaspGrid section
if (dim==2)
{
const int dim=2;
typedef Dune::YaspGrid<dim> Grid;
typedef Grid::ctype DF;
Dune::FieldVector<DF,dim> L;
L[0] = ptree.get("grid.structured.LX",(double)1.0);
L[1] = ptree.get("grid.structured.LY",(double)1.0);
std::array<int,dim> N;
N[0] = ptree.get("grid.structured.NX",(int)10);
N[1] = ptree.get("grid.structured.NY",(int)10);
std::shared_ptr<Grid> gridp = std::shared_ptr<Grid>(new Grid(L,N));
gridp->globalRefine(refinement);
typedef Grid::LeafGridView GV;
GV gv=gridp->leafGridView();
if (degree==1) {
typedef Dune::PDELab::QkLocalFiniteElementMap<GV,DF,double,1> FEM;
FEM fem(gv);
driver(gv,fem,ptree);
}
if (degree==2) {
typedef Dune::PDELab::QkLocalFiniteElementMap<GV,DF,double,2> FEM;
FEM fem(gv);
driver(gv,fem,ptree);
}
}
if (dim==3)
{
const int dim=3;
typedef Dune::YaspGrid<dim> Grid;
typedef Grid::ctype DF;
Dune::FieldVector<DF,dim> L;
L[0] = ptree.get("grid.structured.LX",(double)1.0);
L[1] = ptree.get("grid.structured.LY",(double)1.0);
L[2] = ptree.get("grid.structured.LZ",(double)1.0);
std::array<int,dim> N;
N[0] = ptree.get("grid.structured.NX",(int)1);
N[1] = ptree.get("grid.structured.NY",(int)1);
N[2] = ptree.get("grid.structured.NZ",(int)1);
std::shared_ptr<Grid> gridp = std::shared_ptr<Grid>(new Grid(L,N));
gridp->globalRefine(refinement);
typedef Grid::LeafGridView GV;
GV gv=gridp->leafGridView();
if (degree==1) {
typedef Dune::PDELab::QkLocalFiniteElementMap<GV,DF,double,1> FEM;
FEM fem(gv);
driver(gv,fem,ptree);
}
if (degree==2) {
typedef Dune::PDELab::QkLocalFiniteElementMap<GV,DF,double,2> FEM;
FEM fem(gv);
driver(gv,fem,ptree);
}
}
const int dim=2;
typedef Dune::YaspGrid<dim> Grid;
typedef Grid::ctype DF;
Dune::FieldVector<DF,dim> L;
L[0] = ptree.get("grid.structured.LX",(double)1.0);
L[1] = ptree.get("grid.structured.LY",(double)1.0);
std::array<int,dim> N;
N[0] = ptree.get("grid.structured.NX",(int)10);
N[1] = ptree.get("grid.structured.NY",(int)10);
std::shared_ptr<Grid> gridp = std::shared_ptr<Grid>(new Grid(L,N));
gridp->globalRefine(refinement);
typedef Grid::LeafGridView GV;
GV gv=gridp->leafGridView();
if (degree==1) {
typedef Dune::PDELab::QkLocalFiniteElementMap<GV,DF,double,1> FEM;
FEM fem(gv);
driver(gv,fem,ptree);
}
if (degree==2) {
typedef Dune::PDELab::QkLocalFiniteElementMap<GV,DF,double,2> FEM;
FEM fem(gv);
driver(gv,fem,ptree);
}
}
catch (Dune::Exception &e){
std::cerr << "Dune reported error: " << e << std::endl;
Loading