include/deal.II/grid/grid_generator.h

00001 //---------------------------------------------------------------------------
00002 //    @f$Id: grid_generator.h 25345 2012-03-31 08:37:04Z bangerth @f$
00003 //
00004 //    Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 by the deal.II authors
00005 //
00006 //    This file is subject to QPL and may not be  distributed
00007 //    without copyright and license information. Please refer
00008 //    to the file deal.II/doc/license.html for the  text  and
00009 //    further information on this license.
00010 //
00011 //---------------------------------------------------------------------------
00012 #ifndef __deal2__grid_generator_h
00013 #define __deal2__grid_generator_h
00014 
00015 
00016 #include <deal.II/base/config.h>
00017 #include <deal.II/base/exceptions.h>
00018 #include <deal.II/base/point.h>
00019 #include <deal.II/base/table.h>
00020 #include <deal.II/grid/tria.h>
00021 #include <map>
00022 
00023 DEAL_II_NAMESPACE_OPEN
00024 
00025 template <int dim, int spacedim> class Triangulation;
00026 template <typename number> class Vector;
00027 template <typename number> class SparseMatrix;
00028 
00029 
00051 class GridGenerator
00052 {
00053   public:
00085     template <int dim, int spacedim>
00086     static void hyper_cube (Triangulation<dim,spacedim>  &tria,
00087                             const double        left = 0.,
00088                             const double        right= 1.);
00089 
00116     template <int dim>
00117     static void subdivided_hyper_cube (Triangulation<dim>  &tria,
00118                                        const unsigned int  repetitions,
00119                                        const double        left = 0.,
00120                                        const double        right= 1.);
00121 
00152     template <int dim, int spacedim>
00153     static void hyper_rectangle (Triangulation<dim,spacedim> &tria,
00154                                  const Point<spacedim>       &p1,
00155                                  const Point<spacedim>       &p2,
00156                                  const bool                  colorize = false);
00157 
00215     template <int dim>
00216     static
00217     void
00218     subdivided_hyper_rectangle (Triangulation<dim>              &tria,
00219                                 const std::vector<unsigned int> &repetitions,
00220                                 const Point<dim>                &p1,
00221                                 const Point<dim>                &p2,
00222                                 const bool                      colorize=false);
00223 
00254     template <int dim>
00255     static
00256     void
00257     subdivided_hyper_rectangle(Triangulation<dim>                      &tria,
00258                                const std::vector<std::vector<double> > &step_sizes,
00259                                const Point<dim>                        &p_1,
00260                                const Point<dim>                        &p_2,
00261                                const bool                              colorize);
00262 
00277     template <int dim>
00278     static
00279     void
00280     subdivided_hyper_rectangle (Triangulation<dim>                       &tria,
00281                                 const std::vector< std::vector<double> > &spacing,
00282                                 const Point<dim>                         &p,
00283                                 const Table<dim,types::material_id_t>           &material_id,
00284                                 const bool                               colorize=false);
00285 
00305     template <int dim>
00306     static void
00307     parallelogram(Triangulation<dim>&  tria,
00308                   const Tensor<2,dim>& corners,
00309                   const bool           colorize=false);
00310 
00311 
00339     template <int dim>
00340     static void enclosed_hyper_cube (Triangulation<dim> &tria,
00341                                      const double      left = 0.,
00342                                      const double      right= 1.,
00343                                      const double      thickness = 1.,
00344                                      const bool        colorize = false);
00345 
00373     template <int dim>
00374     static void hyper_ball (Triangulation<dim> &tria,
00375                             const Point<dim>   &center = Point<dim>(),
00376                             const double      radius = 1.);
00377 
00399     template <int dim>
00400     static void half_hyper_ball (Triangulation<dim> &tria,
00401                                  const Point<dim>   &center = Point<dim>(),
00402                                  const double      radius = 1.);
00403 
00431     template <int dim>
00432     static void cylinder (Triangulation<dim> &tria,
00433                           const double      radius = 1.,
00434                           const double      half_length = 1.);
00435 
00483     template <int dim>
00484     static void
00485     truncated_cone (Triangulation<dim> &tria,
00486                     const double radius_0 = 1.0,
00487                     const double radius_1 = 0.5,
00488                     const double half_length = 1.0);
00489 
00516     template <int dim>
00517     static void hyper_L (Triangulation<dim> &tria,
00518                          const double      left = -1.,
00519                          const double      right= 1.);
00520 
00552     template <int dim>
00553     static void hyper_cube_slit (Triangulation<dim> &tria,
00554                                  const double      left = 0.,
00555                                  const double      right= 1.,
00556                                  const bool colorize = false);
00557 
00639     template <int dim>
00640     static void hyper_shell (Triangulation<dim>   &tria,
00641                              const Point<dim>     &center,
00642                              const double        inner_radius,
00643                              const double        outer_radius,
00644                              const unsigned int  n_cells = 0,
00645                              bool colorize = false);
00646 
00688     template <int dim>
00689     static void half_hyper_shell (Triangulation<dim>   &tria,
00690                                   const Point<dim>     &center,
00691                                   const double        inner_radius,
00692                                   const double        outer_radius,
00693                                   const unsigned int  n_cells = 0,
00694                                   const bool colorize = false);
00695 
00696 
00722     template <int dim>
00723     static void quarter_hyper_shell (Triangulation<dim>   &tria,
00724                                   const Point<dim>     &center,
00725                                   const double        inner_radius,
00726                                   const double        outer_radius,
00727                                   const unsigned int  n_cells = 0,
00728                                   const bool colorize = false);
00729 
00752     template <int dim>
00753     static void cylinder_shell (Triangulation<dim>   &tria,
00754                                 const double        length,
00755                                 const double        inner_radius,
00756                                 const double        outer_radius,
00757                                 const unsigned int  n_radial_cells = 0,
00758                                 const unsigned int  n_axial_cells = 0);
00759 
00760 
00761 
00782     static void torus (Triangulation<2,3>&  tria,
00783                        const double         R,
00784                        const double         r);
00785 
00786 
00816     template<int dim>
00817     static void hyper_cube_with_cylindrical_hole (Triangulation<dim> &triangulation,
00818                                                 const double inner_radius = .25,
00819                                                 const double outer_radius = .5,
00820                                                 const double L = .5,
00821                                                 const unsigned int repetition = 1,
00822                                                 const bool colorize = false);
00823 
00836     static void moebius (Triangulation<3,3>&  tria,
00837                          const unsigned int   n_cells,
00838                          const unsigned int   n_rotations,
00839                          const double         R,
00840                          const double         r);
00841 
00896     template <int dim, int spacedim>
00897     static
00898     void
00899     merge_triangulations (const Triangulation<dim, spacedim> &triangulation_1,
00900                           const Triangulation<dim, spacedim> &triangulation_2,
00901                           Triangulation<dim, spacedim>       &result);
00902 
00925     template <int dim>
00926     static void laplace_transformation (Triangulation<dim> &tria,
00927                                         const std::map<unsigned int,Point<dim> > &new_points);
00928 
00932     DeclException0 (ExcInvalidRadii);
00936     DeclException1 (ExcInvalidRepetitions,
00937                     int,
00938                     << "The number of repetitions " << arg1
00939                     << " must be >=1.");
00943     DeclException1 (ExcInvalidRepetitionsDimension,
00944                     int,
00945                     << "The vector of repetitions  must have "
00946                     << arg1 <<" elements.");
00947 
00948   private:
00955     template <int dim, int spacedim>
00956     static
00957     void
00958     colorize_hyper_rectangle (Triangulation<dim,spacedim> &tria);
00959 
00970     template <int dim>
00971     static
00972     void
00973     colorize_subdivided_hyper_rectangle (Triangulation<dim> &tria,
00974                                          const Point<dim>   &p1,
00975                                          const Point<dim>   &p2,
00976                                          const double        epsilon);
00977 
00983     template<int dim>
00984     static
00985     void
00986     colorize_hyper_shell (Triangulation<dim>& tria,
00987                           const Point<dim>& center,
00988                           const double inner_radius,
00989                           const double outer_radius);
00990 
00991 
00999     template<int dim>
01000     static
01001     void
01002     colorize_quarter_hyper_shell(Triangulation<dim> & tria,
01003                                  const Point<dim>& center,
01004                                  const double inner_radius,
01005                                  const double outer_radius);
01006 
01016     static
01017     void
01018     laplace_solve (const SparseMatrix<double>          &S,
01019                    const std::map<unsigned int,double> &m,
01020                    Vector<double>                      &u);
01021 };
01022 
01023 
01024 
01025 DEAL_II_NAMESPACE_CLOSE
01026 
01027 #endif
01028 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

deal.II documentation generated on Tue May 22 2012 12:06:09 by doxygen 1.7.3