Skip to content
Snippets Groups Projects
example2.cc 1.15 KiB
Newer Older
  • Learn to ignore specific revisions
  • Praetorius, Simon's avatar
    Praetorius, Simon committed
    /**
     * Example 2
     * =========
     * In this example we read a piecewise flat grid from a mesh file and use a simple projection
     * in order to generate a curved surface grid. This is demonstrated with the sphere parametrization.
     **/
    
    #ifdef HAVE_CONFIG_H
    # include "config.h"
    #endif
    
    
    #include <type_traits>
    
    #include <dune/common/parallel/mpihelper.hh>
    
    #include <dune/curvedgrid/curvedgrid.hh>
    
    #include <dune/grid/io/file/gmshreader.hh>
    
    using namespace Dune;
    
    
    Praetorius, Simon's avatar
    Praetorius, Simon committed
    #if HAVE_ALBERTA
      #include <dune/grid/albertagrid.hh>
      using GridType = AlbertaGrid<2,3>;
    #elif HAVE_DUNE_FOAMGRID
    
      #include <dune/foamgrid/foamgrid.hh>
      using GridType = FoamGrid<2,3>;
    #elif HAVE_DUNE_ALUGRID
      #include <dune/alugrid/grid.hh>
      using GridType = Dune::ALUGrid<2,3,Dune::simplex,Dune::conforming>;
    #endif
    
    int main(int argc, char** argv)
    {
      using namespace Dune;
      MPIHelper::instance(argc, argv);
    
      // Construct a reference grid
      auto refGrid = GmshReader<GridType>::read(DUNE_GRID_PATH "sphere.msh");
    
      // Define the geometry mapping
      auto sphere = [](const auto& x) { return x / x.two_norm(); };
    
      // Wrap the reference grid to build a curved grid
    
      CurvedGrid grid{*refGrid, sphere, 3};