Newer
Older
// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
#include <config.h>
#include <iostream>
#include <dune/common/exceptions.hh>
#include <dune/common/parallel/mpihelper.hh>
#include <dune/grid/yaspgrid.hh>
#include <dune/grid/uggrid.hh>
#include <dune/grid/io/file/gmshreader.hh>
#include <dune/grid/onedgrid.hh>
#include <dune/grid/io/file/vtk/subsamplingvtkwriter.hh>
#include <dune/grid/utility/structuredgridfactory.hh>
#include <dune/functions/functionspacebases/lagrangebasis.hh>

Porrmann, Maik
committed
#include <dune/functions/functionspacebases/hermitebasis.hh>
#include <dune/functions/functionspacebases/test/basistest.hh>
#include <dune/functions/gridfunctions/discreteglobalbasisfunction.hh>

Porrmann, Maik
committed
// #include <dune/functions/functionspacebases/test/enablec1continuitycheck.hh>
using namespace Dune;
using namespace Dune::Functions;
Dune::TestSuite test_1d("1d"), test_2d("2d"), test_3d("3d");
using namespace Dune::Functions::BasisFactory;
std::cout << "Hermite test in 1d" << std::endl;
std::unique_ptr<OneDGrid> grid = StructuredGridFactory<OneDGrid>::createSimplexGrid({0.}, {1.}, {10});

Porrmann, Maik
committed
auto basis = makeBasis(gridView, hermite());
test_1d.subTest(checkBasis(basis, EnableContinuityCheck(), EnableDifferentiabilityCheck(), EnableVertexDifferentiabilityCheck()));
std::cout << "Hermite test in 2d" << std::endl;
auto grid = StructuredGridFactory<UGGrid<2>>::createSimplexGrid(
// using Reader = GmshReader<Grid>;
// std::unique_ptr<Grid> grid(Reader::read("gridfile.msh"));
// auto gridFactory = GridFactory<Grid>();
// gridFactory.insertVertex({0.,0.});
// gridFactory.insertVertex({1., 0.});
// gridFactory.insertVertex({1., 1.});
// gridFactory.insertVertex({0., 1.});
// gridFactory.insertElement(GeometryTypes::simplex(2),{0,1,2});
// gridFactory.insertElement(GeometryTypes::simplex(2),{0,2,3});
// auto grid = gridFactory.createGrid();
std::cout << "Grid has " << gridView.size(0) << " elementes and " << gridView.size(1) << " facettes and " << gridView.size(2) << " vertices" << std::endl;
auto basis = makeBasis(gridView, hermite());
std::cout << "Basis has " << basis.size() << " Dofs" << std::endl;

Porrmann, Maik
committed
test_2d.subTest(checkBasis(basis, EnableContinuityCheck(), EnableVertexDifferentiabilityCheck()));
{ // 3d
std::cout << "Hermite test in 3d" << std::endl;
auto grid = StructuredGridFactory<UGGrid<3>>::createSimplexGrid({0., 0., 0.}, {1., 1., 1.},
{{3, 3, 3}});
auto gridView = grid->leafGridView();
std::cout << "Grid has " << gridView.size(0) << " elementes and " << gridView.size(1)
<< " facettes and " << gridView.size(2) << " edges and " << gridView.size(3)
<< " vertices " << std::endl;
{
using namespace Dune::Functions::BasisFactory;
auto basis = makeBasis(gridView, hermite());
std::cout << "Basis has " << basis.size() << " Dofs" << std::endl;
test_3d.subTest(
checkBasis(basis, EnableContinuityCheck(), EnableVertexDifferentiabilityCheck()));
}
}
return test_1d.exit() + test_2d.exit() + test_3d.exit();